利用單片機驅動蜂鳴器發聲:
C語言源程序:
#include<reg52.h> //包含52單片機的頭文件
#inlcude<intrins.h> //該頭文件包含了各種移位函數
//_crol_ 字符循環左移
//_cror_ 字符循環右移
//_irol_ 整數循環左移
//_iror_ 整數循環右移
//_lrol_ 長整數循環左移
//_lror_ 長整數循環右移
//_nop_ 空操作8051 NOP 指令
//_testbit_ 測試并清零位8051 JBC 指令
#define uint unsigned int //定義uint為無符號整型
#define uchar unsigned char //定義uchar為無符號字符型
uchar temp,num,num1; //定義temp,num,num1為三個無符號字符變量
sbit beep=P3^4; //定義蜂鳴器所在的端口位
void delay(uint); //延時函數原型聲明
void main() //主函數
{
temp=0xfe; //對應二進制11111110 賦值給P1可點亮第一個發光二極管
while(1) //主循環
{
for(num1=0;num1<3;num1++) //子循環循環三次
{
for(num=0;num<8;num++) //子循環循環8次
{
P1=temp; //將temp賦值給P1點亮發光二極管
beep=0; //蜂鳴器發聲
delay(100); //延時
temp=_crol_(temp,1);//將temp字符變量中的值左移一位
P1=0xff; //熄滅所有發光二級管
beep=1; //蜂鳴器停止發聲
delay(100);延時
}
}
for(num1=0;num1<3;num1++) //子循環循環三次
{
for(num=0;num<8;num++) //子循環循環8次
{
P1=temp; //將temp賦值給P1點亮發光二極管
beep=0; //蜂鳴器發聲
delay(100); //延時
temp=_cror_(temp,1);//將temp字符變量中的值右移一位
P1=0xff; //熄滅所有發光二級管
beep=1; //蜂鳴器停止發聲
delay(100);延時
}
}
}
}
void delay(uint a) //延時函數
{
uint x,y; //定義無符號變量X,Y
for(x=a;x>0;x--) //外循環將x的值循環減1 直到小于0
for(y=100;y>0;y--); //內循環將y的值循環減1 直到小于0
}
//程序效果 發光二極管依次從左到右閃亮 每閃亮一次 蜂鳴器發聲 循環3次 然后倒過來再次循環閃亮 每閃亮一次 蜂鳴器發聲
|