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