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

下載本文檔

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

文檔簡介

1、單片機課程設計報告電子音調(diào)發(fā)生器 1 課程設計總體目標1.1 總體結(jié)構(gòu)圖1 總體結(jié)構(gòu)1.2 設計要求 利用JD51開發(fā)板上的按鍵S1S4和蜂鳴器設計電子音調(diào)發(fā)生器,要求:(1)利用JD51開發(fā)板上的按鍵S1S4進行音調(diào)選擇,即按下不同的開關(guān)產(chǎn)生不同的音調(diào),依次按動S1S4 及組合按鍵,蜂鳴器發(fā)出i八個音調(diào);并在數(shù)碼管上顯示。(2)編寫2支歌曲,并可進行選擇播放。1.3 設計目的(1) 了解計算機發(fā)聲原理。(2) 熟悉定時器和鍵盤掃描電路的工作原理及編程方法。1.4 設計原理(1)音節(jié)由不同頻率的方波產(chǎn)生,音節(jié)與頻率的關(guān)系如表1所示。要產(chǎn)生音頻方波,只要算出某一音頻的周期(1/頻率),然后將此周

2、期除以2,即為半周期的時間。利用計時器計時此半周期時間,每當計時到后就將輸出方波的I/O反相,然后重復計時此半周期時間再對I/O反相,就可在I/O腳得到此頻率的方波。在JD51單片機上,產(chǎn)生方波的I/O腳選用P2.4,通過跳線選擇器將單片機的P2.4與蜂鳴器的驅(qū)動電路相連。這樣P2.4輸出不同頻率的方波,蜂鳴器便會發(fā)出不同的聲音。另外,音樂的節(jié)拍是由延時實現(xiàn)的,如果1拍為0.4秒,1/4拍是0.1秒。只要設定延時時間,就可求得節(jié)拍的時間。延時作為基本延時時間,節(jié)拍值只能是它的整數(shù)倍。 每個音節(jié)相應的定時器初值X可按下法計算: (1) 即 (2) 其中f:音調(diào)頻率,當晶振fose=11.0592

3、MHz時,音節(jié)“1”相應的定時器初值為x,則可得x=63777D=F921H 其它的可同樣求得。 音調(diào)低音頻率(Hz)低音計數(shù)初值X(HEX)中音頻率(Hz)中音計數(shù)初值X(HEX)高音頻率(Hz)高音計數(shù)初值X(HEX)1131F242262F921522FC8F2147F3C1294F9E1587FCEF3165F517330FA8C659FD454175F5B7349FAD8700FD6E5196F6D1392FB68784FDB26220F7D1440FBE9880FDEA7247F8B6494FC5B988FE2Ei/523FC8F/表一曲調(diào)值DELAY調(diào)4/4125ms調(diào)3/418

4、7ms調(diào)2/4250ms表二(2)音樂程序查表原理: 樂譜格式:每字節(jié)的高字節(jié)為音符代碼,低字節(jié)為節(jié)拍代碼 音符代碼 1 2 3 4 5 6 7 8 9 A B C D E F 0 音節(jié) .5 .6 .7 1 2 3 4 5 6 7 1 2 3 4 5 休止 節(jié)拍代碼 1 2 3 4 5 6 8 A C F 節(jié)拍 1/4 2/4 3/4 1 1(1/4) 1(1/2) 2 2(1/2) 3 3(3/4)(3)定時器的使用及時間延遲,首先對定時器進行初始化圖2門控位:GATE0,TR=1啟動計數(shù)(軟件啟動); GATE1,TR=1 且 INT=1啟動計數(shù)(硬件啟動)。 C/T: 定時或計數(shù)方式選

5、擇位。 C/T0,定時工作方式;C/T1,計數(shù)工作方式。M1M0:工作方式選擇位。 M1M000,方式0:13位計數(shù)(TL0-4、TH0-7)M1M001,方式1:16位計數(shù)(TL0-7、TH0-7)M1M010,方式2:8位計數(shù),有自動裝入功能M1M011,方式3:T0分為兩個8位計數(shù)器,TL0可工作為定時或計數(shù)方式,TH0只能工作為定時方式。圖3TR0/TR1:啟動計數(shù)。為1啟動計數(shù);為0停止計數(shù)。TF0/TF1:計數(shù)溢出。當加”1”計數(shù)結(jié)束時為1。本實驗采用定時器T0,工作在方式1 (16位計數(shù)),無自動裝入功能。2 硬件設計2.1 總體框圖圖4 硬件圖2.2 蜂鳴電路 模塊鳴器驅(qū)動電路

6、和89C51組成。 選擇一只壓電式蜂鳴器,壓電式蜂鳴器工作時約需要100MA驅(qū)動電流。當89C51輸出為低電平時蜂鳴器產(chǎn)生蜂鳴音,89C51 輸出為高電平時,蜂鳴器不發(fā)聲。2.3 硬件電路圖5 電路圖3 軟件設計3.1 軟件設計流程及描述 根據(jù)要實現(xiàn)的功能,流程圖如下: 熟悉定時器和鍵盤掃描電路的工作原理及編程方法。圖6 流程圖圖73.2 軟件設計思路 電子音調(diào)發(fā)生器主要的工作是將按鍵的信息讀取,然后根據(jù)按鍵的數(shù)字,用計數(shù)器輸出相對應的頻率,實現(xiàn)電子音調(diào)發(fā)生器的音調(diào)。程序主要為5部分,鍵盤掃描、中斷計時、數(shù)碼顯示、音樂播放、主程序,他們分別執(zhí)行不同的功能。3.3 各部分功能介紹(1)鍵盤鍵值讀

7、取程序鍵盤鍵值讀取程序包括鍵盤掃描、消除抖動、鍵譯碼等內(nèi)容。按鍵的識別主要有兩種方法:行反轉(zhuǎn)法和行掃描法。因為鍵盤為機械開關(guān),容易引入抖動。為了消除抖動干擾,在程序中要加入消除抖動的部分。(2)中斷計時中斷部分,中斷定時器1主要負責輸出不同頻率的方波,產(chǎn)生聲音,中斷定時器1主要是計時按鍵時間及按鍵間隔時間的功能,在播放音樂的時候,還擔任著播放音樂的節(jié)拍的任務。(3)音樂播放音樂播放部分主要是播放音樂,實現(xiàn)按鍵重播和播放程序里面的音樂的功能。(4)主程序主程序主要是隨時發(fā)出按鍵的聲音功能,并且通過不同P口的掃描,判斷是否是播放按鍵聲音還是播放音樂,還是繼續(xù)發(fā)出按鍵聲音。3.4 實驗程序/*SB1

8、 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 SETB 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,#200MAIN

9、01: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 MOV A,#B 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 ;

10、寫入計數(shù)初值 MOV TH0,#0F9H SETB TR0WAIT2:JNB TF0,WAIT2 CLR TF0 CPL P2.4 ;蜂鳴器響 CLR P2.3 ;數(shù)碼管顯示2 MOV A,#B MOV P0,A DJNZ R3,MAIN02LJMP 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 P

11、2.3 MOV A,#B MOV P0,A DJNZ R3,MAIN03LJMP KEYP0KEYPO4:CJNE R0,#0DFH,KEYPO5 ; 輸入4音,非4音跳轉(zhuǎn)SETB P2.4MOV R3,#200MAIN04:MOV TMOD,#01H MOV TL0,#0D8H MOV TH0,#0FAH SETB TR0WAIT4:JNB TF0,WAIT4 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#B MOV P0,A DJNZ R3,MAIN04LJMP KEYP0KEYPO5:CJNE R0,#0F3H,KEYPO6 ; 輸入5音,非5音跳轉(zhuǎn)SETB P2.4

12、MOV R3,#200 MAIN05:MOV TMOD,#01H MOV TL0,#068H MOV TH0,#0FBH SETB TR0WAIT5:JNB TF0,WAIT5 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#B 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 T

13、F0 CPL P2.4 CLR P2.3 MOV A,#B MOV P0,A DJNZ R3,MAIN06LJMP KEYP0KEYPO7:CJNE R0,#0CFH,KEYPO8 ; 輸入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,#B MOV P0,A DJNZ R3,MAIN07LJMP KEYP0KEYPO8:CJNE R0,#0DBH,KEYPO9 ; 輸

14、入i音,非i音跳轉(zhuǎn) SETB P2.4 MOV R3,#200 MAIN08:MOV TMOD,#01H MOV TL0,#08FH MOV TH0,#0FCH SETB TR0WAIT8:JNB TF0,WAIT8 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#B 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 ;返

15、回主程序MUSTART1: ;歌曲1的播放程序 MOV R0,#00H ;節(jié)拍表指針置零 MOV R1,#00H ;音符表指針置零RTAB:MOV A,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 ;輸出相應音調(diào)的方波LOOP:MOV R5,#3

16、BHMAIN:MOV TMOD,#01H MOV TL0,R4 MOV TH0,R3 SETB TR0WAIT:JNB TF0,WAIT CLR TF0 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,LOOPI

17、NC R0 ;兩個表的指針都加1INC R1CJNE R1,#88,RTAB ;判斷是否取完LJMP KEYP0TONE:DB 0FBH,68H,0FAH,8CH,0FBH,68H,0F9H,0E1H,0FAH,8CH,0F9H,0E1H,0F9H,21HDB 0F9H,21H,0F8H,0B6H,0F7H,0D1H,0F8H,0B6H,0F9H,21H,0F8H,0B6H,0F9H,21H,0F9H,0E1H,0FAH,8CHDB 0FBH,68H,0FAH,8CH,0FBH,68H,0F9H,0E1H,0FAH,8CH,0F9H,0E1H,0F9H,21HDB 0F9H,21H,0F8H,

18、0B6H,0F7H,0D1H,0F8H,0B6H,0F9H,21H,0F8H,0B6H,0F9H,21H,0F9H,0E1H,0F9H,21HDB 0FBH,68H,0FBH,0E9H,0FCH,5BH,0FCH,8FH,0FCH,5BH,0FCH,8FH,0FCH,0EFH,0FCH,8FH,0FCH,0EFH,0FDH,45H,0FBH,68HDB 0F9H,21H,0F9H,0E1H,0FAH,8CH,0FAH,0D8H,0FAH,8CH,0FAH,0D8H,0FAH,0D8H,0FBH,68H,0F9H,21H,0F9H,0E1H,0FAH,8CH,0FAH,8CHDB 0FBH,68

19、H,0FBH,0E9H,0FCH,5BH,0FCH,8FH,0FCH,5BH,0FCH,8FH,0FCH,0EFH,0FCH,8FH,0FCH,0EFH,0FDH,45H,0FBH,68HDB 0F9H,21H,0F9H,0E1H,0FAH,8CH,0FAH,0D8H,0FAH,8CH,0FAH,0D8H,0FAH,8CH,0F9H,0E1H,0F9H,21H,0F8H,0B6H,0F9H,21HRYTH:DB 04,09,04,09,04,08,09DB 04,04,04,04,04,12,04,09,09DB 04,09,04,09,04,08,09DB 04,04,04,04,04,12

20、,04,09,09DB 04,04,04,08,04,04,04,08,08DB 04,04,04,08,04,04,04,08,08DB 04,04,04,08,04,04,04,08,08DB 04,04,04,08,04,04,04,08,08MUSTART2: MOV R0,#00H MOV R1,#00HRTAB2: MOV A,R1 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

21、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 LJMP RBMAYB1:JB P3.2,BACK JB P3.4,BACK LJMP MUSTART1BACK:LJMP JIELIRB: DJNZ R5,MAIN2 DJNZ R2,LOOP2 INC R0INC R1CJNE R1,#64,RTAB2L

22、JMP KEYP0TONE2:DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,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,0D8H,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68HDB 0FBH,0E9H,0FBH,0E9H

23、,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BHDB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFHTABLE1:DB 04,04,04,04,04,04,04,04,04,04DB 04,06,04,04,04,04,04,04,04,04DB 04,04,04,04,04,04,04,07,04,04DB 04,04,04,06,04,04,04,07,04,04DB 04,04,04,04 END4 實驗結(jié)果用pro

溫馨提示

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

評論

0/150

提交評論