




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
電子音調(diào)發(fā)生器設(shè)計實驗報告實驗報告 指導(dǎo)老師:付文秀實驗課程:單片機實驗班級:通信0607班姓名:電子音調(diào)發(fā)生器一、實驗?zāi)康牧私庥嬎銠C發(fā)聲原理。熟悉定時器和鍵盤掃描電路的工作原理及編程方法。二、設(shè)計任務(wù)及要求利用實驗平臺上的開關(guān)k0-k7和蜂鳴器設(shè)計電子音調(diào)發(fā)生器,要求:1.利用實驗平臺上開關(guān)k0-k7進行音調(diào)選擇,即撥動不同的開關(guān)產(chǎn)生不同的音調(diào),依次撥動K0~K7,蜂鳴器發(fā)出1234567i八個音調(diào)。2.編寫2支歌曲,并可進行選擇播放。三、工作原理及設(shè)計思路音節(jié)由不同頻率的方波產(chǎn)生,音節(jié)與頻率的關(guān)系如表1所示。要產(chǎn)生音頻方波,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用計時器計時此半周期時間,每當(dāng)計時到后就將輸出方波的I/0反相,然后重復(fù)計時此半周期時間再對I/O反相,就可在I/O腳得到此頻率的方波。在ZKS-03實驗儀上,產(chǎn)生方波的I/O腳選用P1.7,通過跳線選擇器JP1將單片機的P1.7與蜂鳴器的驅(qū)動電路相連。這樣P1.7輸出不同頻率的方波,蜂鳴器便會發(fā)出不同的聲音。另外,音樂的節(jié)拍是由延時實現(xiàn)的,如果1拍為0.4秒,1/4拍是0.1秒。只要設(shè)定延時時間,就可求得節(jié)拍的時間。延時作為基本延時時間,節(jié)拍值只能是它的整數(shù)倍,每個音節(jié)相應(yīng)的定時器初值X可按下法計算:(1/2)*(1/f)=(12/fose)*(216-x)即x=216-(fose/24f)其中f:音調(diào)頻率,當(dāng)晶振fose=11.0592MHz時,音節(jié)“1”相應(yīng)的定時器初值為x,依次可以求得。音調(diào)頻率(Hz)X(HEX),1220EFA9,1#233F093,2247F173,2#262F249,3277F307,4294F3C8,4#311F473,5330F51E,5#349F5B6,6370F64C,6#392F6D7,7415F75A1440F7D81#466F84D2494F8BD2#523F9243554F9874587F9E44#622FA3D5659FA905#698FADE6740FB296#784FB6F7831FBB1`1880FBEF`1#932FC2A`2988FC62`2#1046FC95`31109FCC7`41175FCF6`4#1244FD22`51318FD4B`5#1397FD73`61480FD98`6#1568FDBB`71661FDDC硬件連線電路圖PP0.0P0.1P0.2P0.3P0.4P1.7開關(guān)C51系統(tǒng)功能說明:可以通過開關(guān)K0閉合依次令蜂鳴器發(fā)出相應(yīng)的1234567i這8個音調(diào);可以通過同時按下K1或K2選擇播放兩首歌曲,并通過閉合K3選擇暫停,打開K3繼續(xù)播放,K4結(jié)束一首歌,再次按下K1或K2將重新播放歌曲。(由于最初是在開發(fā)板上進行實驗的,開發(fā)板上一共只有四個開關(guān),所以我就設(shè)置成了一個開關(guān)控制播放8個音階)總體設(shè)計系統(tǒng)總體設(shè)計框架五鍵鍵盤控制P3.2、P3.3、P3.4、P3.1、P3.6狀態(tài)系統(tǒng)功能模塊圖五五鍵鍵盤控制模塊“八音盒”模塊音樂播放器及控制模塊一個開關(guān)順序控制八個音調(diào)兩個開關(guān)分別控制播放兩首歌曲,一個開關(guān)暫停,一個開關(guān)是總開關(guān)鍵硬件電路設(shè)計電路設(shè)計思路在ZKS-03單片機實驗儀中,通過5個開關(guān)用導(dǎo)線分別與P1和P3口5位直接相連。設(shè)計原理利用51單片機的P1和P3口讀取開關(guān)鍵盤狀態(tài),CPU不斷查詢P1和P3口狀態(tài),并以P1和P3口不同狀態(tài)跳轉(zhuǎn)到不同的程序段中執(zhí)行,具體執(zhí)行為1.定時器預(yù)置定時初值,工作在工作方式1,發(fā)出不同頻率的方波;2.播放歌曲,程序段中存儲了兩個表,分別是音符表和節(jié)拍表。音符表中存放的是蜂鳴器發(fā)出音調(diào)的對應(yīng)的頻率所需的定時器的頻率定時初值的高低位;節(jié)拍表存放的是發(fā)出每一個音調(diào)所需要持續(xù)的時間的雙層循環(huán)中的內(nèi)循環(huán)次數(shù)值。通過查表法在一次循環(huán)中通過累加器A連續(xù)取兩個數(shù)據(jù),分別送到定時器的定時初值寄存器TL0,TH0中,接著從節(jié)拍表中將一個對應(yīng)節(jié)拍取出放入內(nèi)循環(huán)的計數(shù)器(R2)中,并控制定時器發(fā)出對應(yīng)方波并循環(huán)對應(yīng)次數(shù)達到合適的節(jié)拍效果。程序流程圖將K0-K將K0-K4開關(guān)狀態(tài)送P3.2、P3.3、P3.4、P3.1、P3.6查詢鍵盤按鍵狀態(tài)查詢鍵盤按鍵狀態(tài)跳轉(zhuǎn)相應(yīng)子程序跳轉(zhuǎn)相應(yīng)子程序令P3.5口發(fā)出相應(yīng)頻率的方波令P3.5口發(fā)出相應(yīng)頻率的方波返回鍵盤查詢返回鍵盤查詢數(shù)據(jù)分析一拍的時長大約為400ms,則當(dāng)以四分音符為節(jié)拍時,四分音符的時長就為400ms,八分音符的時長就為200ms,十六分音符的時長就為100ms。在單片機上控制一個音符唱多長可采用循環(huán)延時的方法來實現(xiàn)。首先,確定一個基本時長的延時程序,若以十六分音符的時長為基本延時時間,那么對于一個音符,如果它為十六分音符,則只需調(diào)用一次延時程序,如果它為八分音符,則只需調(diào)用二次延時程序,如果它為四分音符,則只需調(diào)用四次延時程序,依次類推。由于用的是C語言。僅僅需要通過程序中的定義,“,”為低音,“`”為高音,“_”是1/2拍,“—”是2拍,“.”是一拍半,空格就是空拍。按照這個簡單的轉(zhuǎn)換規(guī)則,就可以輕松的將普通的簡譜轉(zhuǎn)換為程序中需要的程序語句進行播放。實驗過程中遇到問題設(shè)計問題其次是歌曲播放的問題,起初不清楚歌曲應(yīng)該如何播放,如何存儲,但是仔細(xì)復(fù)習(xí)了教材的匯編程序設(shè)計有關(guān)章節(jié),我掌握了查表法。C語言在編寫樂曲方面比匯編語言要簡單很多。硬件問題熟悉了試驗箱后,應(yīng)該先測試開關(guān)的好壞,我在實驗過程中曾遇到開關(guān)壞掉的情況。還要注意在下載完程序后,將下載開關(guān)撥到RUN的位置后還要按一下復(fù)位鍵,這樣才能產(chǎn)生現(xiàn)象。并且還要注意P1口的跳線狀態(tài)不能錯。軟件問題軟件方面是我在實驗過程中遇到的最多的問題。在制作音符高低位初值表時,起初我將音符對應(yīng)的頻率定時初值高低位作為一個數(shù),即多個16位的數(shù)存放在表中,但是發(fā)現(xiàn)16位的寄存器只有DPTR,這是不夠用的。于是改成了將每個初值拆分成高8位和低8位的兩個8位數(shù)存在表里,每個循環(huán)取兩次,這樣就解決了這個問題。K3起初在按下去后時而會發(fā)出“嘀嘀嘀”的聲音,后來發(fā)現(xiàn)是因為程序中忘記設(shè)TRO=0,所以總在判斷按鍵處循環(huán),才導(dǎo)致這樣的情況。為了使開關(guān)更好的工作,在程序中進行判斷,我還在每個開關(guān)判斷都增加了防抖動。K3、K4剛開始還出現(xiàn)了相互干擾的現(xiàn)象,經(jīng)過調(diào)試程序,分清楚了K4、K5不同的功能和它們的優(yōu)先級,邏輯更加明確。學(xué)習(xí)體會與收獲:在這次課程設(shè)計中,我學(xué)會了獨立設(shè)計一個完整的、具有一定綜合性的匯編程序的編寫和硬件實現(xiàn)的基本方法。更深刻的理解了51單片機的設(shè)計思路和概念。掌握了定時器輸出方波,查表法查找數(shù)據(jù),中斷的應(yīng)用和多分支語句的應(yīng)用和編寫。更重要的是學(xué)會了不斷學(xué)習(xí)的態(tài)度,和以前不扎實的調(diào)試狀態(tài)下的操作方式。遇到問題,不再是毫無頭緒無從下手,而是由了清楚的調(diào)試思路,一步一步的運行來檢查,提高了我的實驗效率。最后感謝老師的指導(dǎo)。程序清單:#defineucharunsignedchar//定義一下方便使用#defineuintunsignedint#defineulongunsignedlong#include<reg52.h>//包括一個52標(biāo)準(zhǔn)內(nèi)核的頭文件charcodedx516[3]_at_0x003b;//這是為了仿真設(shè)置的sbitBEEP=P1^7;//喇叭輸出腳sbitP10=P1^0;sbitK1=P3^2;sbitK2=P3^3;sbitK3=P3^4;sbitK4=P3^1;sbitK5=P3^6;ucharth0_f;//在中斷中裝載的T0的值高8位uchartl0_f;//在中斷中裝載的T0的值低8位//T0的值,及輸出頻率對照表ucharcodefreq[36*2]={0xA9,0xEF,//00220HZ,1//00x93,0xF0,//00233HZ,1#0x73,0xF1,//00247HZ,20x49,0xF2,//00262HZ,2#0x07,0xF3,//00277HZ,30xC8,0xF3,//00294HZ,40x73,0xF4,//00311HZ,4#0x1E,0xF5,//00330HZ,50xB6,0xF5,//00349HZ,5#0x4C,0xF6,//00370HZ,60xD7,0xF6,//00392HZ,6#0x5A,0xF7,//00415HZ,70xD8,0xF7,//00440HZ1//120x4D,0xF8,//00466HZ1#//130xBD,0xF8,//00494HZ2//140x24,0xF9,//00523HZ2#//150x87,0xF9,//00554HZ3//160xE4,0xF9,//00587HZ4//170x3D,0xFA,//00622HZ4#//180x90,0xFA,//00659HZ5//190xDE,0xFA,//00698HZ5#//200x29,0xFB,//00740HZ6//210x6F,0xFB,//00784HZ6#//220xB1,0xFB,//00831HZ7//230xEF,0xFB,//00880HZ`10x2A,0xFC,//00932HZ`1#0x62,0xFC,//00988HZ`20x95,0xFC,//01046HZ`2#0xC7,0xFC,//01109HZ`30xF6,0xFC,//01175HZ`40x22,0xFD,//01244HZ`4#0x4B,0xFD,//01318HZ`50x73,0xFD,//01397HZ`5#0x98,0xFD,//01480HZ`60xBB,0xFD,//01568HZ`6#0xDC,0xFD,//01661HZ`7//35};//定時中斷0,用于產(chǎn)生唱歌頻率timer0()interrupt1{TL0=tl0_f;TH0=th0_f;//調(diào)入預(yù)定時值BEEP=~BEEP;//取反音樂輸出IO}//******************************//音樂符號串解釋函數(shù)//入口:要解釋的音樂符號串,輸出的音調(diào)串,輸出的時長串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;//高低=0banyin=0;//半音=0yinchang=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結(jié)束{*(diao+i1)=0;//加入結(jié)束標(biāo)志0*(jie+i1)=0;return;}j=*(song+i)-0x30;i++;//取出基準(zhǔn)音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++;}}//******************************************//奏樂函數(shù)//入口:要演奏的音樂符號串voidplay(uchar*songdata){uchari,c,j=0;uintn;ucharxdatadiaodata[112];//音調(diào)緩沖ucharxdatajiedata[112];//音長緩沖changedata(songdata,diaodata,jiedata);//解釋音樂符號串if(K4){TR0=1;}for(i=0;diaodata[i]!=0;i++)//逐個符號演奏{tl0_f=freq[diaodata[i]*2];//取出對應(yīng)的定時值送給T0th0_f=freq[diaodata[i]*2+1];for(c=0;c<jiedata[i];c++)//按照音長延時{for(n=0;n<32000;n++);if(!K5)//發(fā)現(xiàn)按鍵,立即退出播放{TR0=0; }while(!K5);TR0=1;if(!K4)//發(fā)現(xiàn)按鍵,立即退出播放{TR0=0; return;}}for(n=0;n<500;n++);//音符間延時if(K4&&K5){TR0=1;}}}//送別ucharcodesongbie[]={"53_5_`1-|6`15-|51_2_32_1_|2---|""53_5_`1.7_|6`15-|52_3_4.,7_|1---|""6`1`1-|76_7_`1-|6_7_`1_6_6_5_3_1_|2---|""53_5_`1.7_|6`15-|52_3_4.7_|1---"}; //喀秋莎ucharcodekaqiusha[]={"6.7_|`1.6_|`17_6_|73|7.1_|`2.7_|`2`_2_`1_7_|6-|""`3`6|`5`6_`5_|`4`3_`2_|`36|`4`2|3.1|7_3_`1_7_|6-"};//兩個按鍵選擇播放,,任意一個按鍵停止播放voidmain(void)//主程序{ulongn;uchari;ucharcodejie8[8]={12,14,16,17,19,21,23,24};//1234567`1八個音符在頻率表中的位置TMOD=0x01;//使用定時器0的16位工作模式TR0=0;ET0=1;//定時器0中斷EA
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 買車轉(zhuǎn)訂金合同范本
- 體育訂購合同范本
- 下學(xué)期安全工作總結(jié)
- 分期貸款正規(guī)合同范本
- 三年級班主任工作計劃
- 中醫(yī)基礎(chǔ)學(xué)模擬考試題含參考答案
- 廚房維修合同范本模板
- 產(chǎn)業(yè)調(diào)研合同范本
- 單位安裝鍋爐合同范例
- 廠車出租合同范本
- GB 26920-2024商用制冷器具能效限定值及能效等級
- 2024年江蘇省中等職業(yè)學(xué)校學(xué)生學(xué)業(yè)水平考試機械CAD繪圖試卷(含5張圖)
- 2024年7天雙方無責(zé)任試崗期協(xié)議書模板
- 期末測試模擬卷(試題)-2023-2024學(xué)年五年級下冊數(shù)學(xué)人教版
- 用藥安全課件教學(xué)課件
- 2024智能家居行業(yè)創(chuàng)新發(fā)展與前景展望研究報告
- (人教PEP2024版)英語一年級上冊Unit 5 教學(xué)課件(新教材)
- 腰椎術(shù)后失敗綜合征
- 貴州人民版五年級勞動下冊全冊教案
- 2024年高考英語易錯題 閱讀理解:推理判斷題4大陷阱(教師版新高考專用)
- 《力與形變》教學(xué)課件(一)
評論
0/150
提交評論