電子音調(diào)發(fā)生器_第1頁
電子音調(diào)發(fā)生器_第2頁
電子音調(diào)發(fā)生器_第3頁
電子音調(diào)發(fā)生器_第4頁
電子音調(diào)發(fā)生器_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)課程設(shè)計單片機(jī)課程設(shè)計電子音調(diào)發(fā)生器實(shí)驗報告班級:目錄1. 設(shè)計目的- 1 -2. 設(shè)計要求- 1 -3.設(shè)計原理- 1 -4.設(shè)計方案及思路- 2 -4.1 總體框圖- 2 -4.2蜂鳴電路- 3 -5.軟件設(shè)計流程及描述- 3 -5.1軟件設(shè)計思路- 4 -5.2各部分功能介紹- 4 -5.2.1鍵盤鍵值讀取程序- 4 -5.2.2中斷計時- 4 -5.2.3音樂播放- 4 -5.2.4主程序- 4 -6.實(shí)驗源程序- 5 -7.實(shí)驗結(jié)果- 11 -8.實(shí)驗總結(jié)及體會- 11 -附:參考文獻(xiàn)- 11 -1. 設(shè)計目的1.了解計算機(jī)發(fā)聲原理。2.熟悉定時器和鍵盤掃描電路的工作原理及編程

2、方法。2. 設(shè)計要求利用JD51開發(fā)板上的按鍵S1S4和蜂鳴器設(shè)計電子音調(diào)發(fā)生器,要求:1.利用JD51開發(fā)板上的按鍵S1S4進(jìn)行音調(diào)選擇,即按下不同的開關(guān)產(chǎn)生不同的音調(diào),依次按動S1S4 及組合按鍵,蜂鳴器發(fā)出1234567i八個音調(diào);并在數(shù)碼管上顯示。2.編寫2支歌曲,并可進(jìn)行選擇播放。3.設(shè)計原理音節(jié)由不同頻率的方波產(chǎn)生,音節(jié)與頻率的關(guān)系通過查表可得。要產(chǎn)生音頻方波,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用計時器計時此半周期時間,每當(dāng)計時到后就將輸出方波的I/O反相,然后重復(fù)計時此半周期時間再對I/O反相,就可在I/O腳得到此頻率的方波。 在JD51

3、單片機(jī)上,產(chǎn)生方波的I/O腳選用P2.4,通過跳線選擇器將單片機(jī)的P2.4與蜂鳴器的驅(qū)動電路相連。這樣P2.4輸出不同頻率的方波,蜂鳴器便會發(fā)出不同的聲音。另外,音樂的節(jié)拍是由延時實(shí)現(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,則可得x=63777D=F921H 其它的可同樣求得。 表1

4、音調(diào)頻率(Hz)X(HEX)1262F9212294F9E13330FA8C4349FAD85392FB686440FBE97494FC5Bi523FC8F4.設(shè)計方案及思路4.1 總體框圖數(shù)碼管顯示電路 矩陣鍵控制 89C51 單片機(jī) 聲音輸出電路按鍵重播控制音樂播放控制 硬件圖4.2蜂鳴電路模塊鳴器驅(qū)動電路和89C51組成。 選擇一只壓電式蜂鳴器,壓電式蜂鳴器工作時約需要100MA驅(qū)動電流。當(dāng)89C51輸出為低電平時蜂鳴器產(chǎn)生蜂鳴音,89C51 輸出為高電平時,蜂鳴器不發(fā)聲。5.軟件設(shè)計流程及描述根據(jù)要實(shí)現(xiàn)的功能,流程圖如下:熟悉定時器和鍵盤掃描電路的工作原理及編程方法。開始系統(tǒng)初始化判斷

5、按鍵判斷按鍵電子琴液晶顯示播放音調(diào)播放音樂功能選擇音樂5.1軟件設(shè)計思路電子琴主要的工作是將按鍵的信息讀取,然后根據(jù)按鍵的數(shù)字,用計數(shù)器輸出相對應(yīng)的頻率,實(shí)現(xiàn)電子琴的音調(diào)。程序主要為5部分,鍵盤掃描、中斷計時、數(shù)碼顯示、音樂播放、主程序,他們分別執(zhí)行不同的功能。5.2各部分功能介紹5.2.1鍵盤鍵值讀取程序鍵盤鍵值讀取程序包括鍵盤掃描、消除抖動、鍵譯碼等內(nèi)容。按鍵的識別主要有兩種方法:行反轉(zhuǎn)法和行掃描法。因為鍵盤為機(jī)械開關(guān),容易引入抖動。為了消除抖動干擾,在程序中要加入消除抖動的部分。5.2.2中斷計時中斷部分,中斷定時器1主要負(fù)責(zé)輸出不同頻率的方波,產(chǎn)生聲音,中斷定時器1主要是計時按鍵時間及

6、按鍵間隔時間的功能,在播放音樂的時候,還擔(dān)任著播放音樂的節(jié)拍的任務(wù)。5.2.3音樂播放音樂播放部分主要是播放音樂,實(shí)現(xiàn)按鍵重播和播放程序里面的音樂的功能。5.2.4主程序主程序主要是隨時發(fā)出按鍵的聲音功能,并且通過不同P口的掃描,判斷是否是播放按鍵聲音還是播放音樂,還是繼續(xù)發(fā)出按鍵聲音。6.實(shí)驗源程序匯編程序:/*SB1 1音 SB2 2音 SB3 3音 SB4 4音 SB1SB2 5音 SB2SB3 6音 SB3SB4 7音 SB1SB4 i音 SB1SB3 第一首歌 SB2SB4 第二首歌 */ORG 0000HLJMP KEYP0KEYP0: MOV R0,#00H CLR TR0 SE

7、TB P2.4 ;關(guān)蜂鳴器 SETB P2.3 ;關(guān)數(shù)碼管WU: MOV R0,P3 ;掃描鍵盤輸入 CJNE R0,#0FFH,KEYPO1 ;有輸入時跳轉(zhuǎn) JMP WUKEYPO1:CJNE R0,#0FBH,KEYPO2 ;輸入1音,非1音跳轉(zhuǎn) SETB P2.4 ;蜂鳴器置于高電平 MOV R3,#200MAIN01:MOV TMOD,#01H ;初始化,工作方式1 MOV TL0,#21H ;寫入計數(shù)初值 MOV TH0,#0F9H SETB TR0 ;啟動計數(shù) WAIT1:JNB TF0,WAIT1 CLR TF0 CPL P2.4 ;蜂鳴器響 CLR P2.3 ;數(shù)碼管顯示1 M

8、OV A,#11111001B MOV P0,A DJNZ R3,MAIN01 LJMP KEYP0 ;返回程序KEYP0 KEYPO2:CJNE R0,#0F7H,KEYPO3 ; 輸入2音,非2音跳轉(zhuǎn)SETB P2.4 ;蜂鳴器置于高電平MOV R3,#200 MAIN02:MOV TMOD,#01H MOV TL0,#0E1H ;寫入計數(shù)初值 MOV TH0,#0F9H SETB TR0WAIT2:JNB TF0,WAIT2 CLR TF0 CPL P2.4 ;蜂鳴器響 CLR P2.3 ;數(shù)碼管顯示2 MOV A,#10100100B MOV P0,A DJNZ R3,MAIN02LJ

9、MP KEYP0KEYPO3:CJNE R0,#0EFH,KEYPO4 ; 輸入3音,非3音跳轉(zhuǎn)SETB P2.4 ;蜂鳴器置于高電平MOV R3,#200MAIN03:MOV TMOD,#01H MOV TL0,#08CH MOV TH0,#0FAH SETB TR0WAIT3:JNB TF0,WAIT3 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#10110000B MOV P0,A DJNZ R3,MAIN03LJMP KEYP0KEYPO4:CJNE R0,#0DFH,KEYPO5 ; 輸入4音,非4音跳轉(zhuǎn)SETB P2.4MOV R3,#200MAIN04:MO

10、V TMOD,#01H MOV TL0,#0D8H MOV TH0,#0FAH SETB TR0WAIT4:JNB TF0,WAIT4 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#10011001B MOV P0,A DJNZ R3,MAIN04LJMP KEYP0KEYPO5:CJNE R0,#0F3H,KEYPO6 ; 輸入5音,非5音跳轉(zhuǎn)SETB P2.4MOV R3,#200 MAIN05:MOV TMOD,#01H MOV TL0,#068H MOV TH0,#0FBH SETB TR0WAIT5:JNB TF0,WAIT5 CLR TF0 CPL P2.4 C

11、LR P2.3 MOV A,#10010010B MOV P0,A DJNZ R3,MAIN05LJMP KEYP0KEYPO6:CJNE R0,#0E7H,KEYPO7 ; 輸入6音,非6音跳轉(zhuǎn)SETB P2.4MOV R3,#200 MAIN06:MOV TMOD,#01H MOV TL0,#0E9H MOV TH0,#0FBH SETB TR0WAIT6:JNB TF0,WAIT6 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#10000010B MOV P0,A DJNZ R3,MAIN06LJMP KEYP0KEYPO7:CJNE R0,#0CFH,KEYPO8

12、; 輸入7音,非7音跳轉(zhuǎn)SETB P2.4MOV R3,#200 MAIN07:MOV TMOD,#01H MOV TL0,#05BH MOV TH0,#0FCH SETB TR0WAIT7:JNB TF0,WAIT7 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#11111000B MOV P0,A DJNZ R3,MAIN07LJMP KEYP0KEYPO8:CJNE R0,#0DBH,KEYPO9 ; 輸入i音,非i音跳轉(zhuǎn) SETB P2.4 MOV R3,#200 MAIN08:MOV TMOD,#01H MOV TL0,#08FH MOV TH0,#0FCH SE

13、TB TR0WAIT8:JNB TF0,WAIT8 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#10000000B MOV P0,A DJNZ R3,MAIN08LJMP KEYP0KEYPO9:CJNE R0,#0EBH,KEYPO10 ;跳轉(zhuǎn)到第一首歌程序 LJMP MUSTART1KEYPO10:CJNE R0,#0D7H,JIELI ;跳轉(zhuǎn)到第二首歌程序 LJMP MUSTART2JIELI:JMP KEYP0 ;返回主程序MUSTART1: ;歌曲1的播放程序 MOV R0,#00H ;節(jié)拍表指針置零 MOV R1,#00H ;音符表指針置零RTAB:MOV A

14、,R0 MOV DPTR,#RYTH MOVC A,A+DPTR ;查表法將一個節(jié)拍數(shù)據(jù)取出放R2計數(shù)器中 MOV R2,ATTAB:MOV A,R1 MOV DPTR,#TONE MOVC A,A+DPTR MOV R3,A ;取出音符表高8位 INC R1 ;指針加1 MOV A,R1 MOV DPTR,#TONE MOVC A,A+DPTR MOV R4,A ;取出低8位 SETB P2.4 ;輸出相應(yīng)音調(diào)的方波LOOP:MOV R5,#3BHMAIN:MOV TMOD,#01H MOV TL0,R4 MOV TH0,R3 SETB TR0WAIT:JNB TF0,WAIT CLR TF

15、0 CPL P2.4MAYA:JB P3.2,MAYB ;判斷P3.2口是否有為1 JB P3.4,MAYB ;判斷P3.4口是否有為1 LJMP RA ;P3.4口為0則跳轉(zhuǎn)到程序RAMAYB:JB P3.3,JIELI ;判斷P3.3口是否有為1 JB P3.5,JIELI ;判斷P3.5口是否有為1 LJMP MUSTART2 ;P3.5口為0則放第二首歌RA: DJNZ R5,MAIN ;無打斷則繼續(xù)放第一首歌 DJNZ R2,LOOPINC R0 ;兩個表的指針都加1INC R1CJNE R1,#88,RTAB ;判斷是否取完LJMP KEYP0TONE:DB 0FBH,68H,0F

16、DH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FHDB 0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68HDB 0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68HDB 0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,

17、0FCH,8FH,0FCH,8FH,0FCH,5BHDB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFHRYTH:DB 04,04,04,04,04,04,04,04,04,04DB 04,05,04,04,04,04,04,04,04,04DB 04,04,04,06,04,04,04,07,04,04DB 04,04,04,06,04,04,04,07,04,04DB 04,04,04,04MUSTART2: MOV R0,#00H MOV R1,#00HRTAB2: MOV A,R1

18、MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV R2,ATTAB2: MOV A,R1 MOV DPTR,#TONE2 MOVC A,A+DPTR MOV R3,A INC R1 MOV A,R1 MOV DPTR,#TONE2 MOVC A,A+DPTR MOV R4,A SETB P2.4LOOP2: MOV R5,#9BHMAIN2: MOV TMOD,#01H MOV TL0,R4 MOV TH0,R3 SETB TR0WAITR:JNB TF0,WAITR CLR TF0 CPL P2.4MAYA1:JB P3.3,MAYB1 JB P3.5,MAYB1 LJM

19、P RBMAYB1:JB P3.2,BACK JB P3.4,BACK LJMP MUSTART1BACK:LJMP JIELIRB: DJNZ R5,MAIN2 DJNZ R2,LOOP2 INC R0INC R1CJNE R1,#64,RTAB2LJMP KEYP0TONE2:DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FHDB 0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68HDB 0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68HDB 0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論