欢迎来到天天文库
浏览记录
ID:41459717
大小:21.50 KB
页数:3页
时间:2019-08-25
《单片机按键控制蜂鸣器发声程序资料》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、#includetypedefunsignedcharuint8;typedefunsignedintuint16;uint8Count,i;sbitSpeak=P1^2;//蜂鸣器器控制脚 sbitkey1=P3^2;//按键控制引脚sbitkey2=P3^3;sbitkey3=P3^4;/*以下数组是音符编码*/uint8codeSONG[]={0xff,0x39,0x30,0x33,0x30,0xff,0x30,0x30,0x00,};voidTime0_Init()//定时器T0方式1,定时1
2、0ms{TMOD=0x01;IE=0x82;TH0=0xDC;TL0=0x00;}voidTime0_Int()interrupt1{TH0=0xDC;TL0=0x00;Count++;}voiddelay(uint8k)//按键防抖延时{uint8j;while((k--)!=0){for(j=0;j<125;j++){;}}}voidDelay_xMs(uint8x)//发声延时{uint8i,j;for(i=0;i3、蜂鸣器发声函数{uint8Temp1,Temp2;uint8Addr;Count=0;//中断计数器清0Addr=i*3;while(1){Temp1=SONG[Addr++];if(Temp1==0xFF)//休止符{TR0=0;Delay_xMs(100);}elseif(Temp1==0x00)//歌曲结束符{return;}else{Temp2=SONG[Addr++];TR0=1;while(1){Speak=~Speak;Delay_xMs(Temp1);if(Temp2==Count){Count=0;b4、reak;}}}}}voidkeyscan(void)//按键切换声音函数{if(key1==0){delay(10);if(key1==0){i=0;}}if(key2==0){delay(10);if(key2==0){i=1;}}if(key3==0){delay(10);if(key3==0){i=2;}}}voidMain(){Time0_Init();//定时器0中断初始化while(1){keyscan();Play_Song(i);}}
3、蜂鸣器发声函数{uint8Temp1,Temp2;uint8Addr;Count=0;//中断计数器清0Addr=i*3;while(1){Temp1=SONG[Addr++];if(Temp1==0xFF)//休止符{TR0=0;Delay_xMs(100);}elseif(Temp1==0x00)//歌曲结束符{return;}else{Temp2=SONG[Addr++];TR0=1;while(1){Speak=~Speak;Delay_xMs(Temp1);if(Temp2==Count){Count=0;b
4、reak;}}}}}voidkeyscan(void)//按键切换声音函数{if(key1==0){delay(10);if(key1==0){i=0;}}if(key2==0){delay(10);if(key2==0){i=1;}}if(key3==0){delay(10);if(key3==0){i=2;}}}voidMain(){Time0_Init();//定时器0中断初始化while(1){keyscan();Play_Song(i);}}
此文档下载收益归作者所有