單片機八音盒設(shè)計_第1頁
單片機八音盒設(shè)計_第2頁
單片機八音盒設(shè)計_第3頁
單片機八音盒設(shè)計_第4頁
單片機八音盒設(shè)計_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

...wd......wd......wd...黑龍江工業(yè)學(xué)院單片機綜合實訓(xùn)報告院系:電氣與信息工程系專業(yè)班級:電氣工程及自動化本〔三〕姓名:陳強學(xué)號:04991303037指導(dǎo)教師:魏喜雯報告成績:1、設(shè)計目的〔1〕加強對單片機和匯編語言的認識,充分掌握和理解設(shè)計各局部的工作原理、設(shè)計過程、芯片選擇、模塊化編程等多項知識?!?〕用單片機模擬實現(xiàn)具體應(yīng)用,使個人設(shè)計系統(tǒng)能夠真正使用。〔3〕把原理和實踐相結(jié)合,充分發(fā)揮個人和團體的合作能力,并在實踐中得到鍛煉?!?〕提高利用已學(xué)知識分析和解決問題的能力?!?〕利用AT89C51單片機結(jié)合內(nèi)部定時器設(shè)計一個八音盒,按下單鍵可以演奏預(yù)先設(shè)置的歌曲旋律。2、設(shè)計任務(wù)要求本設(shè)計利用AT89C51單片機結(jié)合內(nèi)部定時器設(shè)計一個八音盒,按下單鍵可以演奏預(yù)先設(shè)置的歌曲旋律。本設(shè)計可以學(xué)習(xí)AT89C51定時器程設(shè)計,按鍵掃描及歌曲旋律簡單直覺式輸入法的設(shè)計方法。其基本功能為:〔1〕使用數(shù)碼顯示管來顯示目前演奏的歌曲編號;〔2〕具有8個按鍵操作來選擇演奏哪一首歌曲;〔3〕內(nèi)建8首歌曲旋律,按下單鍵可以演奏歌曲。3、設(shè)計方案選取與論證〔1〕選用Keil軟件和Protues軟件,選用AT89C51單片機,它有4kB內(nèi)部ROM,2個定時/計數(shù)器,5個中斷源?!?〕通過中斷實現(xiàn)歌曲的播放和暫停?!?〕通過定時實現(xiàn)LED閃爍和音樂頻率的變化?!?〕通過按鍵實現(xiàn)歌曲的選擇。3.1八音盒的發(fā)音原理一段音樂需要的是兩個元素,一個是音調(diào),另一個是音符。首先要了解對應(yīng)的音調(diào),音調(diào)主要由聲音的頻率決定,同時也與聲音強度有關(guān)。對一定強度的純音,音調(diào)隨頻率的升降而升降;對一定頻率的純音、低頻純音的音調(diào)隨聲強增加而下降,高頻純音的音調(diào)卻隨強度增加而上升。另外,音符的頻率有所不同?;谏厦娴膬?nèi)容,這樣就對發(fā)音的原理有了一些初步的了解。音符的發(fā)音主要靠不同的音頻脈沖。利用單片機的內(nèi)部定時器/計數(shù)器0,使其工作在模式1,定時中斷,然后控制P3.7引腳的輸出音樂。只要算出某一音頻的周期〔1/頻率〕,然后將此周期除以2,即為半周期的時間,利用定時器計時這個半周期時間,每當(dāng)計時到后就將輸出脈沖的I/O反相,然后重復(fù)計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。3.2音符頻率的產(chǎn)生3.2.1音符及定時器初始值:例如:中音1〔do〕的音頻=523HZ,周期T=1/523s=1912。定時器/計數(shù)器0的定時時間為:T/2=1912/2=956。定時器956的計數(shù)值=定時時間/機器周期=956/1=956(時鐘頻率=12MHZ)。裝入T0計數(shù)器初值為65536-956=64580。將64580裝入T0存放器中,啟動T0工作后,每計數(shù)956次時將產(chǎn)生溢出中斷,進入中斷服務(wù)時,每次對P3.0引腳的輸出值進展取反,就可得到中音DO〔523HZ〕的音符音頻。將51單片機內(nèi)部定時器工作在計數(shù)器模式1下,改變計數(shù)初值TH0,TL0以產(chǎn)生不同的頻率。下表2-1是C調(diào)各音符頻率與計數(shù)初值T的對照表:表2-1C調(diào)各音符頻率與計數(shù)初值T的對照表音符頻率〔Hz〕/初值()音符頻率〔Hz〕/初值()低1DO262/63627中1DO523/64580高1DO1042/65056低2RE294/63835中2RE589/64687高2RE1245/65134低3M330/64021中3M661/64780高3M1318/65157低4FA350/64107中4FA700/64822高4FA1397/65178低5SO393/64264中5SO786/64900高5SO1568/65217低6LA441/64402中6LA882/64969高6LA1760/65252低7SI495/64526中7SI990/65031高7SI1967/652823.2.2音符、音符編碼及定時器初始值:為了產(chǎn)生音符,必須求出音符低音5—高音5的計數(shù)初值。例如C調(diào)的低1DO的THTL=65536-50000/262=63627,中音DO的THTL=65536-500000/523=64580,高音DO的THTL=65536-500000/1042=65056。為了方便寫譜,對其進展簡單的編碼,在編程時,根據(jù)音符編碼查找對應(yīng)的計數(shù)初值。比方說音樂是C調(diào)的,那么出現(xiàn)低音的5SO,直接將代碼寫為1;出現(xiàn)低音6LA,直接寫一個2的代碼;出現(xiàn)低音7SI,直接寫一個3代碼。表2-2音符編碼表音符音符編碼音符音符編碼不發(fā)音0低5SO1低6LA2低7SI3中1DO4中2RE5中3M6中4FA7中5SO8中6LA9中7SIA高1DOB高2REC高3MD高4FAE高5SOF高6LAG3.2.3節(jié)拍頻率的產(chǎn)生、節(jié)拍的產(chǎn)生與編碼:音樂中的節(jié)拍用延時時間產(chǎn)生。例如,1拍=0.4s,1/4拍=0.1s,以此類推。假設(shè)1/4拍執(zhí)行一次延時程序,那么1/2拍就執(zhí)行兩次延時程序,所以只要求出1/4拍的延時時間,其余節(jié)拍就是它的倍數(shù)。為了方便,將節(jié)拍數(shù)也進展了編碼,并且計算了樂譜節(jié)拍編程時的延時時間,如表2-3和表2-4所示。表2-3節(jié)拍數(shù)編碼表按1/4拍為一個延時時間的節(jié)拍編碼與節(jié)拍對應(yīng)的表按1/8拍為一個延時時間的節(jié)拍編碼與節(jié)拍對應(yīng)的表節(jié)拍編碼節(jié)拍節(jié)拍編碼節(jié)拍節(jié)拍編碼節(jié)拍節(jié)拍編碼節(jié)拍11/466/411/866/822/488/422/888/833/4A10/433/8A10/844/4C12/444/8C12/855/4F15/455/8表2-4樂譜節(jié)拍編程時的時間延時表樂譜節(jié)拍1/4拍的延時時間樂譜節(jié)拍1/8拍的延時時間4/4125ms4/462ms3/4187ms3/494ms2/4250ms2/4125ms音符編碼和節(jié)拍編碼完成后,在編程時,每個音符占一個字節(jié),高四位是音符編碼,低四位是節(jié)拍編碼。4、硬件電路設(shè)計4.1總體設(shè)計框圖數(shù)碼管AT89C51鍵盤輸入數(shù)碼管AT89C51鍵盤輸入揚聲器復(fù)位電路揚聲器復(fù)位電路本設(shè)計中用到了AT89C51單片機,8個開關(guān),揚聲器,數(shù)碼管等硬件電路常用元器件。4.2晶振與復(fù)位電路晶振電路為系統(tǒng)提供基本的時鐘頻率信號,它結(jié)合單片機內(nèi)部電路產(chǎn)生所需的時鐘頻率。復(fù)位電路由單片機XTAL1、XTAL2引腳外接晶振〔12MHz〕及起振電容C1、C2〔均為30pf〕組成。當(dāng)復(fù)位按鈕按下時,內(nèi)存和相關(guān)的存放器,計數(shù)器,計時器所具有狀態(tài)表示的器件全部被復(fù)位,回到初始狀態(tài)?!踩缫砸韵聢D所示〕4.3按鍵輸入電路按鍵輸入電路由8個開關(guān)組成,P1口作為輸入控制按鍵。4.4輸出顯示電路用P0.0~P0.7作為數(shù)碼管的D0~D7的控制信號。由于P0口作為輸出,應(yīng)加上拉電阻。用P2.0口控制發(fā)光二極管以及揚聲器。5、仿真過程及仿真結(jié)果6、心得體會7、程序#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlongsbitSPEAK=P2^0;//接蜂鳴器管腳ucharth0_f;uchartl0_f;ucharcodeSEG[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};ucharcodejie8[8]={12,14,16,17,19,21,23,24};/************************中斷函數(shù)*******************************************/timer0()interrupt1{ TL0=tl0_f;TH0=th0_f; SPEAK=~SPEAK;//取反音樂輸出IO}ucharcodefreq[36*2]={ 0xA9,0xEF,//00220HZ,1//0 0x93,0xF0,//00233HZ,1# 0x73,0xF1,//00247HZ,2 0x49,0xF2,//00262HZ,2# 0x07,0xF3,//00277HZ,3 0xC8,0xF3,//00294HZ,4 0x73,0xF4,//00311HZ,4# 0x1E,0xF5,//00330HZ,5 0xB6,0xF5,//00349HZ,5# 0x4C,0xF6,//00370HZ,6 0xD7,0xF6,//00392HZ,6# 0x5A,0xF7,//00415HZ,7 0xD8,0xF7,//00440HZ1//12 0x4D,0xF8,//00466HZ1#//13 0xBD,0xF8,//00494HZ2//14 0x24,0xF9,//00523HZ2#//15 0x87,0xF9,//00554HZ3//16 0xE4,0xF9,//00587HZ4//17 0x3D,0xFA,//00622HZ4#//18 0x90,0xFA,//00659HZ5//19 0xDE,0xFA,//00698HZ5#//20 0x29,0xFB,//00740HZ6//21 0x6F,0xFB,//00784HZ6#//22 0xB1,0xFB,//00831HZ7//23 0xEF,0xFB,//00880HZ`1 0x2A,0xFC,//00932HZ`1# 0x62,0xFC,//00988HZ`2 0x95,0xFC,//01046HZ`2# 0xC7,0xFC,//01109HZ`3 0xF6,0xFC,//01175HZ`4 0x22,0xFD,//01244HZ`4# 0x4B,0xFD,//01318HZ`5 0x73,0xFD,//01397HZ`5# 0x98,0xFD,//01480HZ`6 0xBB,0xFD,//01568HZ`6# 0xDC,0xFD,//01661HZ`7//35 };changedata(uchar*song,uchar*diao,uchar*jie){ uchari,i1,j; chargaodi;//上下+/-12音階 ucharbanyin;//有沒有半個升音階 ucharyinchang;//音長 ucharcodejie7[8]={0,12,14,16,17,19,21,23};//C調(diào)的7個值 *diao=*song; for(i=0,i1=0;;) { gaodi=0;//上下=0 banyin=0;//半音=0 yinchang=4;//音長1拍 if((*(song+i)=='|')||(*(song+i)==''))i++;//拍子間隔和一個空格過濾 switch(*(song+i)) { case',':gaodi=-12;i++;//低音 break; case'`':gaodi=12;i++;//高音 break; } if(*(song+i)==0)//遇到0完畢 { *(diao+i1)=0;//參加完畢標(biāo)志0 *(jie+i1)=0; return; } j=*(song+i)-0x30;i++;//取出基準音 j=jie7[j]+gaodi;//加上上下音 yinc:switch(*(song+i)) { case'#'://有半音j加一個音階 i++;j++; gotoyinc; case'-'://有一個音節(jié)加長 yinchang+=4; i++; gotoyinc; case'_'://有一個音節(jié)縮短 yinchang/=2; i++; gotoyinc; case'.'://有一個加半拍 yinchang=yinchang+yinchang/2; i++; gotoyinc; } *(diao+i1)=j;//記錄音符 *(jie+i1)=yinchang;//記錄音長 i1++; }}voidplay(uchar*songdata){ uchari,c,j=0; uintn; uchardiaodata[48];//音調(diào)緩沖 ucharjiedata[48];//音長緩沖 changedata(songdata,diaodata,jiedata);//解釋音樂符號串 TR0=1; while(P1=0xff) { for(i=0;diaodata[i]!=0;i++)//逐個符號演奏 { tl0_f=freq[diaodata[i]*2];//取出對應(yīng)的定時值送給T0 th0_f=freq[diaodata[i]*2+1]; for(c=0;c<jiedata[i];c++)//按照音長延時 { for(n=0;n<29500;n++);//29500 if(P1!=0xff)//((!K1)||(!K2)||(!K3)||(!K4))//發(fā)現(xiàn)按鍵,立即退出播放 { TR0=0; return; } } TR0=0; for(n=0;n<460;n++);//音符間延時 TR0=1; } } TR0=0;}//茉莉花ucharcodemolihua[]={"33_5_6_`1_`1_6_|55_6_5-|33_5_6_`1_`1_6_|55_6_5-|""5553_5_|665-|32_3_53_2_|11_2_1|"http://"3_2_1_3_2.3_|56_`1_5-|23_5_2_3_1_,6_|,5-,61|"http://"2.3_1_2-1_,6_|,5--" };//世上只有媽媽好ucharcodemamahao[]={"6.5_35|`16_5_6-|35_6_53_2_|1_,6_5_3_2-|""2.3_55_6_|321-|5.3_2_1_,6_1_|,5--"};//小毛驢ucharcodexiaomaolv[]={"1_1_1_3_|5_5_5_5_|6_6_6_`1|5-|""4_4_4_6_|3_3_3_3_|2_2_2_2_|5-"};//我是一只菠蘿ucharcodeboluo[]={ "1-|2_4_3_2_55|5_6_3_4_22|2_4_3_2_1_`1_7_6_|5_4_2_3_11|" "2_4_3_2_55|5_6_3_4_22|2_4_3_2_1_5_2_3_|1---|"};//小星星ucharcodexiaoxingxing[]={"1155|665-|4433|221-|""5544|332-|5544|332-|""1155|665-|4433|221-|"};//春天在哪里ucharcodechuntian[]={"3_3_3_1_|,5,5_|3_3_3_1_|3-|5_5_3_1_|,5_,5_,5|,6_,7_1_3_|2-|""3_3_3_1_|,5,5_|3_3_3_1_|3-|5_6_5_6_|5_4_3_1_|,5_3_|2_1_"};//兩只老虎ucharcodelaohu[]={"1231|1231|345-|345-|""5_6_5_4_31|5_6_5_4_31|""151-|151-"};//就是愛你ucharcodejiushiaini[]={"3_2_3_4_5,7_1_|1`1_7_75_6_|66_5_5_3_2_1_3_|4_,6_,7_1_32|""3_2_3_4_5,7_1_|1`1_7_7_`3_|3-6_|5_4_.4_5_5-|4_,6_,7_1_32._1_|"};//黑白配ucharcodeheibai[]={"32345-|1,7123-|3,5,611-|"};//找朋友ucharcodezhaopeng[]={"5_6_5_6_|5_6_5|5_`1_7_6_|5_6_5"};//數(shù)鴨子ucharcodeshuya[]={"313_3_1|3_3_5_6_5-|6_6_5_5_4_4_4|2_3_2_1_2"};//歡樂頌ucharcodehuanle[]={"3345|5432|1123|322-|3345|5432|1123|211-|"};//一分錢ucharcodeyifen[]={"5`1|6_`1_5|3_5_2_3_|5|3_5_6_`1_|5_6_5_3_|5_13_2"};//樂譜方式輸入的音樂播放/*******************************主函數(shù)****************************************/voidmain(void){ P1=0xff; P0=SEG[0]; TMOD=0x01;//使用定時器0的16位工作模式 TR0=0; ET0=1; EA=1; while(1) { switch(P1) { case0xfe: while(P1==0xfe) { ; } P0=SEG[1]; play(molihua); SPEAK=0; break;//0按下相應(yīng)的鍵顯示相對應(yīng)的碼值 case0xfd: while(P1==0xfd) {

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論