二、流水燈設計、蜂鳴器發聲
1.簡單延時程式:
- 利用while()循環達到一個延時的效果
#include<reg52.h>
void main()
{
sbit D1=p1^0;//表示聲明變量,令p0口等于D1
int=a;
while(1)//這是一個死循環
{
a=500;//表示時間延遲
D1=0;//表示是低電平即燈滅
while(a--);//表示a自減到0執行下面程式
a=500;
D1=1;
while(a--);
}
}
2. 子程式調用:
- 先設計一個延遲函數,然後直接調用!
#include<reg52.h>
#define uint unsigned char//這是宏定義,以後再用char直接輸入ucahr不用再聲明!
#defne uint unsigned int
sbit D1=P1^0;
void delay();//主函數調用子函數,先聲明函數,沒有參數的函數!
void main()
{
D1=0;
delay();
D1=1;
delay();
}
void delay()//這是一個延時函數控制x,y可以控制延時時間!不帶參數!
{
uint x,y;
for(x=100;x>0;x--)
for(y=200;y>0;y--)
}
- 有參數子函數:比較友善調節。
#include<reg52.h>
#define uint unsigned char//這是宏定義,以後再用char直接輸入ucahr不用再聲明!
#defne uint unsigned int
sbit D1=P1^0;
void delay(uint z);//主函數調用子函數,先聲明函數,有參數的函數!
void main()
{
D1=0;
delay(600);
D1=1;
delay(600);
}
void delay(uint z)//這是一個延時函數控制x,y可以控制延時時間!帶參數!
{
uint x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--)
}
3. 流水燈設計
- 一個流水燈是8個,對應8位,二進制表示:1111 1110 ~1111 1101~1111 1011~~~這樣就形成流水燈了(0是亮)
- 這個時候需要調用左移函數:實作實作上面的流水
#include<reg52.h>
#include “instrins.h//左移函數頭檔案
#define uchar unsigned char//這是宏定義,以後再用char直接輸入ucahr不用再聲明!
#defne uint unsigned int
uchar=temp;//定義一個八位的變量
void delay(uint z);//主函數調用子函數,先聲明函數,有參數的函數!
void main()
{
temp=0xfe;//0xfe即:1111 1110把P1口定義
P1=temp;
while(1)
{
temp=_crol_(temp,1);//調用左移函數
delay(1000);
P1=temp;
}
}
void delay(uint z)//這是一個延時函數控制x,y可以控制延時時間!帶參數!
{
uint x,y;
for(x=z;x>0;x--)
for(y=z;y>0;y--)
}
4. 蜂鳴器設計
- pnp三極管:當b給低電平,此時ec電路同形成壓降,蜂鳴器響。當b給高電平,沒有壓降不響。(b是由單片機控制的)

方法:直接控制蜂鳴器io口即可!
#include<reg52.h>
#include “instrins.h//左移函數頭檔案
#define uchar unsigned char//這是宏定義,以後再用char直接輸入ucahr不用再聲明!
#defne uint unsigned int
uchar=temp;//定義一個八位的變量
sbit feng=P2^3;//P2口的第三位時蜂鳴器口
void main()
{
temp=0xfe;//0xfe即:1111 1110把P1口定義
P1=temp;
feng=0;//此時蜂鳴器一直響,且流水燈走起來!
while(1)
{
temp=_crol_(temp,1);//調用左移函數
delay(60);
P1=temp;
}
}
void delay(uint z)//這是一個延時函數控制x,y可以控制延時時間!帶參數!
{
uint x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--)
}
加油!!!你一定行!