版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
...wd......wd......wd...黑龍江工業(yè)學(xué)院單片機(jī)綜合實(shí)訓(xùn)報(bào)告院系:電氣與信息工程系專業(yè)班級:電氣工程及自動(dòng)化本〔三〕姓名:陳強(qiáng)學(xué)號:04991303037指導(dǎo)教師:魏喜雯報(bào)告成績:1、設(shè)計(jì)目的〔1〕加強(qiáng)對單片機(jī)和匯編語言的認(rèn)識,充分掌握和理解設(shè)計(jì)各局部的工作原理、設(shè)計(jì)過程、芯片選擇、模塊化編程等多項(xiàng)知識?!?〕用單片機(jī)模擬實(shí)現(xiàn)具體應(yīng)用,使個(gè)人設(shè)計(jì)系統(tǒng)能夠真正使用。〔3〕把原理和實(shí)踐相結(jié)合,充分發(fā)揮個(gè)人和團(tuán)體的合作能力,并在實(shí)踐中得到鍛煉?!?〕提高利用已學(xué)知識分析和解決問題的能力。〔5〕利用AT89C51單片機(jī)結(jié)合內(nèi)部定時(shí)器設(shè)計(jì)一個(gè)八音盒,按下單鍵可以演奏預(yù)先設(shè)置的歌曲旋律。2、設(shè)計(jì)任務(wù)要求本設(shè)計(jì)利用AT89C51單片機(jī)結(jié)合內(nèi)部定時(shí)器設(shè)計(jì)一個(gè)八音盒,按下單鍵可以演奏預(yù)先設(shè)置的歌曲旋律。本設(shè)計(jì)可以學(xué)習(xí)AT89C51定時(shí)器程設(shè)計(jì),按鍵掃描及歌曲旋律簡單直覺式輸入法的設(shè)計(jì)方法。其基本功能為:〔1〕使用數(shù)碼顯示管來顯示目前演奏的歌曲編號;〔2〕具有8個(gè)按鍵操作來選擇演奏哪一首歌曲;〔3〕內(nèi)建8首歌曲旋律,按下單鍵可以演奏歌曲。3、設(shè)計(jì)方案選取與論證〔1〕選用Keil軟件和Protues軟件,選用AT89C51單片機(jī),它有4kB內(nèi)部ROM,2個(gè)定時(shí)/計(jì)數(shù)器,5個(gè)中斷源?!?〕通過中斷實(shí)現(xiàn)歌曲的播放和暫停。〔3〕通過定時(shí)實(shí)現(xiàn)LED閃爍和音樂頻率的變化?!?〕通過按鍵實(shí)現(xiàn)歌曲的選擇。3.1八音盒的發(fā)音原理一段音樂需要的是兩個(gè)元素,一個(gè)是音調(diào),另一個(gè)是音符。首先要了解對應(yīng)的音調(diào),音調(diào)主要由聲音的頻率決定,同時(shí)也與聲音強(qiáng)度有關(guān)。對一定強(qiáng)度的純音,音調(diào)隨頻率的升降而升降;對一定頻率的純音、低頻純音的音調(diào)隨聲強(qiáng)增加而下降,高頻純音的音調(diào)卻隨強(qiáng)度增加而上升。另外,音符的頻率有所不同?;谏厦娴膬?nèi)容,這樣就對發(fā)音的原理有了一些初步的了解。音符的發(fā)音主要靠不同的音頻脈沖。利用單片機(jī)的內(nèi)部定時(shí)器/計(jì)數(shù)器0,使其工作在模式1,定時(shí)中斷,然后控制P3.7引腳的輸出音樂。只要算出某一音頻的周期〔1/頻率〕,然后將此周期除以2,即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)這個(gè)半周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。3.2音符頻率的產(chǎn)生3.2.1音符及定時(shí)器初始值:例如:中音1〔do〕的音頻=523HZ,周期T=1/523s=1912。定時(shí)器/計(jì)數(shù)器0的定時(shí)時(shí)間為:T/2=1912/2=956。定時(shí)器956的計(jì)數(shù)值=定時(shí)時(shí)間/機(jī)器周期=956/1=956(時(shí)鐘頻率=12MHZ)。裝入T0計(jì)數(shù)器初值為65536-956=64580。將64580裝入T0存放器中,啟動(dòng)T0工作后,每計(jì)數(shù)956次時(shí)將產(chǎn)生溢出中斷,進(jìn)入中斷服務(wù)時(shí),每次對P3.0引腳的輸出值進(jìn)展取反,就可得到中音DO〔523HZ〕的音符音頻。將51單片機(jī)內(nèi)部定時(shí)器工作在計(jì)數(shù)器模式1下,改變計(jì)數(shù)初值TH0,TL0以產(chǎn)生不同的頻率。下表2-1是C調(diào)各音符頻率與計(jì)數(shù)初值T的對照表:表2-1C調(diào)各音符頻率與計(jì)數(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音符、音符編碼及定時(shí)器初始值:為了產(chǎn)生音符,必須求出音符低音5—高音5的計(jì)數(shù)初值。例如C調(diào)的低1DO的THTL=65536-50000/262=63627,中音DO的THTL=65536-500000/523=64580,高音DO的THTL=65536-500000/1042=65056。為了方便寫譜,對其進(jìn)展簡單的編碼,在編程時(shí),根據(jù)音符編碼查找對應(yīng)的計(jì)數(shù)初值。比方說音樂是C調(diào)的,那么出現(xiàn)低音的5SO,直接將代碼寫為1;出現(xiàn)低音6LA,直接寫一個(gè)2的代碼;出現(xiàn)低音7SI,直接寫一個(gè)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é)拍用延時(shí)時(shí)間產(chǎn)生。例如,1拍=0.4s,1/4拍=0.1s,以此類推。假設(shè)1/4拍執(zhí)行一次延時(shí)程序,那么1/2拍就執(zhí)行兩次延時(shí)程序,所以只要求出1/4拍的延時(shí)時(shí)間,其余節(jié)拍就是它的倍數(shù)。為了方便,將節(jié)拍數(shù)也進(jìn)展了編碼,并且計(jì)算了樂譜節(jié)拍編程時(shí)的延時(shí)時(shí)間,如表2-3和表2-4所示。表2-3節(jié)拍數(shù)編碼表按1/4拍為一個(gè)延時(shí)時(shí)間的節(jié)拍編碼與節(jié)拍對應(yīng)的表按1/8拍為一個(gè)延時(shí)時(shí)間的節(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é)拍編程時(shí)的時(shí)間延時(shí)表樂譜節(jié)拍1/4拍的延時(shí)時(shí)間樂譜節(jié)拍1/8拍的延時(shí)時(shí)間4/4125ms4/462ms3/4187ms3/494ms2/4250ms2/4125ms音符編碼和節(jié)拍編碼完成后,在編程時(shí),每個(gè)音符占一個(gè)字節(jié),高四位是音符編碼,低四位是節(jié)拍編碼。4、硬件電路設(shè)計(jì)4.1總體設(shè)計(jì)框圖數(shù)碼管AT89C51鍵盤輸入數(shù)碼管AT89C51鍵盤輸入揚(yáng)聲器復(fù)位電路揚(yáng)聲器復(fù)位電路本設(shè)計(jì)中用到了AT89C51單片機(jī),8個(gè)開關(guān),揚(yáng)聲器,數(shù)碼管等硬件電路常用元器件。4.2晶振與復(fù)位電路晶振電路為系統(tǒng)提供基本的時(shí)鐘頻率信號,它結(jié)合單片機(jī)內(nèi)部電路產(chǎn)生所需的時(shí)鐘頻率。復(fù)位電路由單片機(jī)XTAL1、XTAL2引腳外接晶振〔12MHz〕及起振電容C1、C2〔均為30pf〕組成。當(dāng)復(fù)位按鈕按下時(shí),內(nèi)存和相關(guān)的存放器,計(jì)數(shù)器,計(jì)時(shí)器所具有狀態(tài)表示的器件全部被復(fù)位,回到初始狀態(tài)。〔如以以下圖所示〕4.3按鍵輸入電路按鍵輸入電路由8個(gè)開關(guān)組成,P1口作為輸入控制按鍵。4.4輸出顯示電路用P0.0~P0.7作為數(shù)碼管的D0~D7的控制信號。由于P0口作為輸出,應(yīng)加上拉電阻。用P2.0口控制發(fā)光二極管以及揚(yáng)聲器。5、仿真過程及仿真結(jié)果6、心得體會(huì)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;//有沒有半個(gè)升音階 ucharyinchang;//音長 ucharcodejie7[8]={0,12,14,16,17,19,21,23};//C調(diào)的7個(gè)值 *diao=*song; for(i=0,i1=0;;) { gaodi=0;//上下=0 banyin=0;//半音=0 yinchang=4;//音長1拍 if((*(song+i)=='|')||(*(song+i)==''))i++;//拍子間隔和一個(gè)空格過濾 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++;//取出基準(zhǔn)音 j=jie7[j]+gaodi;//加上上下音 yinc:switch(*(song+i)) { case'#'://有半音j加一個(gè)音階 i++;j++; gotoyinc; case'-'://有一個(gè)音節(jié)加長 yinchang+=4; i++; gotoyinc; case'_'://有一個(gè)音節(jié)縮短 yinchang/=2; i++; gotoyinc; case'.'://有一個(gè)加半拍 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++)//逐個(gè)符號演奏 { tl0_f=freq[diaodata[i]*2];//取出對應(yīng)的定時(shí)值送給T0 th0_f=freq[diaodata[i]*2+1]; for(c=0;c<jiedata[i];c++)//按照音長延時(shí) { 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++);//音符間延時(shí) 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;//使用定時(shí)器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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年冊亨縣事業(yè)單位招聘考試及答案
- 2025年江蘇省銀行招聘線上筆試及答案
- 2025年北京農(nóng)商青鸞科技筆試及答案
- 2025年滄州市人事考試及答案
- 2025年蘇州 人事考試及答案
- 2025年海曙區(qū)事業(yè)單位考試題目及答案
- 2025年上半年教資時(shí)間筆試及答案
- 2026深圳市立數(shù)教育科技有限公司貴州辦事處招聘9人筆試參考題庫及答案解析
- 2025年阿壩州事業(yè)單位遴選考試及答案
- 2025年外國人上北大免筆試及答案
- 2024年度高速公路機(jī)電設(shè)備維護(hù)合同:某機(jī)電公司負(fù)責(zé)某段高速公路的機(jī)電設(shè)備維護(hù)2篇
- 《城鎮(zhèn)液化石油氣加臭技術(shù)規(guī)程》
- 新高考數(shù)學(xué)之圓錐曲線綜合講義第26講外接圓問題(原卷版+解析)
- 癌癥患者生活質(zhì)量量表EORTC-QLQ-C30
- QCT55-2023汽車座椅舒適性試驗(yàn)方法
- 孕產(chǎn)婦妊娠風(fēng)險(xiǎn)評估表
- 消化系統(tǒng)疾病健康教育宣教
- 河南省洛陽市2023-2024學(xué)年九年級第一學(xué)期期末質(zhì)量檢測數(shù)學(xué)試卷(人教版 含答案)
- Unit-3-Reading-and-thinking課文詳解課件-高中英語人教版必修第二冊
- 新版出口報(bào)關(guān)單模板
- 14K118 空調(diào)通風(fēng)管道的加固
評論
0/150
提交評論