《音樂門鈴(3)》由會(huì)員分享,可在線閱讀,更多相關(guān)《音樂門鈴(3)(19頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、音樂門鈴門鈴效果描述:按下按鍵K1,定時(shí)器中斷程序?qū)⒖刂品澍Q模擬發(fā)出“?!薄斑恕钡拈T鈴聲,其中“?!薄斑恕钡穆曇舻拈L短通過不同的定時(shí)形成高低頻率?!岸!保河幂^短的聲音形成高頻率;“咚”:用較長的聲音形成低頻率;AT89C51:3.8元;Mega16:6元;MSP430系列芯片:10元以上;具體的控制如程序所示原理電路圖:按下按鍵效果:程序代碼:/-音樂門鈴/-/說明:按下按鍵時(shí)蜂鳴器發(fā)出叮咚的門鈴聲/-#include#include#define INT8U unsigned char#define INT16U unsigned intsbit Key=P17;sbit Doorbell=
2、P30;INT16U p=0;/延時(shí)函數(shù)/-void delay_ms(INT16U x)INT8U t;while(x-)for(t=0;t 120;t+);/-/T0中斷void Timer0_ISR()interrupt 1 Doorbell=Doorbell;p+;if(p400)/高音/時(shí)間拖長的話:調(diào)節(jié)400和800 TH0=(8192-700)/32;TL0=(8192-700)%32;else if(p800)/低音 TH0=(8192-1000)/32;TL0=(8192-1000)%32;else/關(guān)閉 TR0=0;p=0;/主程序void main()IE=0 x82;/
3、使能T0中斷 TMOD=0 x00;/T0工作于方式0 TH0=(8192-700)/32;/初始值定時(shí)700us TL0=(8192-700)%32;while(1)if(Key=0)/按下K1鍵時(shí)啟動(dòng)定時(shí)器 delay_ms(10);/延時(shí)消抖 if(Key=0)/按鍵按下,按鍵釋放后啟動(dòng)T1 while(!Key);TR0=1;其它的效果:按下按鍵后播放音樂后,隨著按下次數(shù)不同,播放不同的音樂;代碼如下:/說明:內(nèi)置三段音樂曲目,K1可啟停音樂播放(常開),K2用于選擇音樂段.#include#include#define INT8U unsigned charchang#define
4、INT16U unsigned int/當(dāng)前曲目索引,音符索引INT8U Song_idx=0,Tone_idx=0;/曲目,音符sbit SPK=P37;/蜂鳴器sbit K1 =P10;/播放和停止鍵K1(曲目選擇鍵K2由INT0中斷控制)/14個(gè)音符在TIMER0模式0下的定時(shí)/計(jì)數(shù)寄存器值初值表INT8U code HI_LIST=0,226,229,232,234,236,238,240,241,243,244,245,246,247,248;INT8U code LO_LIST=0,4,12,9,20,2,8,6,2,22,5,26,1,4,2;/三段曲目音符(可以自行修改)INT
5、8U code Song50=1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,6,5,3,5,3,2,1,2,1,-1,3,3,3,4,5,5,5,5,6,5,3,5,3,2,1,5,6,5,3,3,2,1,1,-1,3,2,1,3,2,1,1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,3,2,1,3,2,1,1,-1;/三段曲目節(jié)拍INT8U code Len50=1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,2,-1,1,1,1,1,1,1,2,1,1,1,1,1,1,1
6、,2,1,1,1,1,1,1,2,2,-1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,2,1,1,2,2,-1;/延時(shí)子程序 void delay_ms(INT16U ms)INT8U i;while(ms-)for(i=0;i 120;i+);void main()/主程序 IE=0 x01;/允許TIMER0與INT0中斷;TMOD=0 x00;IT0=1;/外部中斷觸發(fā)方式:下降沿觸發(fā) IP=0 x01;/將INT0設(shè)為最高優(yōu)先級 while(1)while(K1=1);/等待按下播放鍵 while(K1=0);/等待釋放
7、播放鍵 Tone_idx=0;/從第0個(gè)音符開始 TR0=1;/開始播放 while(SongSong_idxTone_idx!=-1&K1=1&TR0=1)delay_ms(300*SongSong_idxTone_idx);/音符的播放延時(shí)形成節(jié)拍 Tone_idx+;/下一個(gè)音符TR0=0;/停止播放while(K1=0);/外部中斷0(K2)void EX0_INT()interrupt 0 TR0=0;if(+Song_idx=3)Song_idx=0;Tone_idx=0;/定時(shí)器0中斷函數(shù)/SPK輸出脈沖,并根據(jù)曲目索引及音符索引設(shè)置新的定時(shí)初值void T0_INT()inte
8、rrupt 1 SPK=!SPK;TH0=HI_LISTSongSong_idxTone_idx;TL0=LO_LISTSongSong_idxTone_idx;變壓整流濾波電路(交流220V轉(zhuǎn)6V直流電源):濾波穩(wěn)壓電路器件參數(shù):AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個(gè)芯片中,ATMEL
9、的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。外形及引腳排列如圖2-1所示。具有與MCS-51 兼容,有4K字節(jié)可編程閃爍存儲器,全靜態(tài)工作:0Hz-24MHz,三級程序存儲器鎖定,1288位內(nèi)部RAM,32可編程I/O線,兩個(gè)16位定時(shí)器/計(jì)數(shù)器,5個(gè)中斷源,可編程串行通道,低功耗的閑置和掉電模式,片內(nèi)振蕩器和時(shí)鐘電路的特性。器件參數(shù):LM7805簡介LM7805是常用的三端穩(wěn)壓器,一般使用的是TO-220封裝,能提供DC 5V的輸出電壓,應(yīng)用范圍廣,內(nèi)含過流和過載保護(hù)電路。帶散熱片時(shí)能持續(xù)提供1A的電流,如果使用外圍器件,它還能提供不通的電壓和電流。制PCB板: