欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機電子音調(diào)發(fā)生器設(shè)計 含匯編語言源碼
[打印本頁]
作者:
emu
時間:
2018-6-17 14:03
標題:
單片機電子音調(diào)發(fā)生器設(shè)計 含匯編語言源碼
一、背景單片機自70年代問世以來得到蓬勃發(fā)展,目前單片機功能正日漸完善:單片機集成越來越多資源,內(nèi)部存儲資源日益豐富,用戶不需要擴充資源就可以完成項目開發(fā),不僅是開發(fā)簡單,產(chǎn)品小巧美觀,同時抗干擾能力加強,系統(tǒng)也更加穩(wěn)定,使得它更加適合工業(yè)控制領(lǐng)域,具有更加廣闊的市場前景;提供在線編程能力,加速了產(chǎn)品的開發(fā)進程,為企業(yè)產(chǎn)品上市贏得寶貴時間。此外單片機具有性能高、速度快、體積小、價格低、穩(wěn)定可靠、應(yīng)用廣泛、通用性強等突出優(yōu)點。單片機的設(shè)計目標主要是增強“控制”能力,滿足實時控制(就是快速反應(yīng)) 的需要。無論是從事科學研究工作,還是開辦電子器件的工廠還是經(jīng)營電子廠品的貿(mào)易,不僅要熟練地使用通用微機進行各種數(shù)據(jù)處理,還要把計算機技術(shù)運用到本專業(yè)領(lǐng)域或相關(guān)領(lǐng)域,既具有開發(fā)創(chuàng)新能力。這就要求我們要熟練地掌握單片機。單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的計算機系統(tǒng)。這些電路能在軟件的控制下準確、迅速、高效地完成程序設(shè)計者實現(xiàn)規(guī)定的任務(wù)。二、指標要求利用JD51開發(fā)板上的按鍵S1~S4和蜂鳴器設(shè)計電子音調(diào)發(fā)生器,指標要求為:(1)利用JD51開發(fā)板上的按鍵S1~S4進行音調(diào)選擇,即按下不同的開關(guān)產(chǎn)生不同的音調(diào),依次按動S1~S4 及組合按鍵,蜂鳴器發(fā)出1234567i八個音調(diào);并在數(shù)碼管上顯示。(2)編寫2支歌曲,并可進行選擇播放。三、設(shè)計目的(1)了解計算機發(fā)聲原理。(2)熟悉鍵盤掃描電路的工作原理及編程方法。(3)掌握利用定時器結(jié)合中斷的方法來設(shè)計信號的方波輸出。(4)學會運用計數(shù)器定時器計算初值的方法計算音調(diào)對應(yīng)初值。四、設(shè)計原理音節(jié)由不同頻率的方波產(chǎn)生,音節(jié)與頻率的關(guān)系通過查表可得。要產(chǎn)生音頻方波,需要算出某一音頻的周期(1/頻率),然后利用定時器對半個周期進行計時并通過某個I/0腳輸出,再利用中斷程序反相輸出信號,不斷重復(fù)這個過程就可在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秒。只要設(shè)定延時時間,就可求得節(jié)拍的時間。延時作為基本延時時間,節(jié)拍值只能是它的整數(shù)倍。每個音節(jié)相應(yīng)的定時器初值X可按下法計算: (1/2)*(1/f)=(12/fose)*(216-x)即 x=216-(fose/24f)其中f:音調(diào)頻率,當晶振fose=11.0592MHz時,音節(jié)“1”相應(yīng)的定時器初值為x,則可得x=63777D=F921H其它的可同樣求得。 表1 音調(diào) 頻率(Hz) X(HEX) 1 262 F921 2 294 F9E1 3 330 FA8C 4 349 FAD8 5 392 FB68 6 440 FBE9 7 494 FC5B i 523 FC8F 五、Proteus仿真設(shè)計按鍵一:數(shù)碼管顯示1,同時能聽到蜂鳴器響音調(diào)1按鍵二:數(shù)碼管顯示2,同時能聽到蜂鳴器響音調(diào)2按鍵三:數(shù)碼管顯示3,同時能聽到蜂鳴器響音調(diào)3按鍵四:數(shù)碼管顯示4,同時能聽到蜂鳴器響音調(diào)4 六、設(shè)計方案及思路1總體框圖
2蜂鳴電路模塊鳴器驅(qū)動電路和89C51組成。 選擇一只壓電式蜂鳴器,壓電式蜂鳴器工作時約需要100MA驅(qū)動電流。當89C51輸出為低電平時蜂鳴器產(chǎn)生蜂鳴音,89C51 輸出為高電平時,蜂鳴器不發(fā)聲。七、軟件設(shè)計流程及描述根據(jù)要實現(xiàn)的功能,流程圖如下:熟悉定時器和鍵盤掃描電路的工作原理及編程方法。
1.軟件設(shè)計思路電子琴主要的工作是將按鍵的信息讀取,然后根據(jù)按鍵的數(shù)字,用計數(shù)器輸出相對應(yīng)的頻率,實現(xiàn)電子琴的音調(diào)。程序主要為5部分,鍵盤掃描、中斷計時、數(shù)碼顯示、音樂播放、主程序,他們分別執(zhí)行不同的功能。2.各部分功能介紹(1)鍵盤鍵值讀取程序鍵盤鍵值讀取程序包括鍵盤掃描、消除抖動、鍵譯碼等內(nèi)容。按鍵的識別主要有兩種方法:行反轉(zhuǎn)法和行掃描法。因為鍵盤為機械開關(guān),容易引入抖動。為了消除抖動干擾,在程序中要加入消除抖動的部分。(2)中斷計時中斷部分,中斷定時器1主要負責輸出不同頻率的方波,產(chǎn)生聲音,中斷定時器1主要是計時按鍵時間及按鍵間隔時間的功能,在播放音樂的時候,還擔任著播放音樂的節(jié)拍的任務(wù)。(3)音樂播放音樂播放部分主要是播放音樂,實現(xiàn)按鍵重播和播放程序里面的音樂的功能。(4)數(shù)碼顯示按下不同的按鍵,則數(shù)碼管顯示對應(yīng)的音調(diào)數(shù)字(5)主程序主程序主要是隨時發(fā)出按鍵的聲音功能,并且通過不同P口的掃描,判斷是否是播放按鍵聲音還是播放音樂,還是繼續(xù)發(fā)出按鍵聲音。八、實驗源程序1.匯編程序:
/*SB1 1音 SB2 2音 SB3 3音 SB4 4音 SB1SB2 5音 SB2SB3 6音 SB3SB4 7音 SB1SB4 i音 SB1SB3 第一首歌 SB2SB4 第二首歌 */
ORG 0000H
LJMP KEYP0
KEYP0: 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 WU
KEYPO1:CJNE R0,#0FBH,KEYPO2 ;輸入1音,非1音跳轉(zhuǎn)
SETB P2.4 ;蜂鳴器置于高電平
MOV R3,#200
MAIN01: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,#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 TR0
WAIT2:JNB TF0,WAIT2
CLR TF0
CPL P2.4 ;蜂鳴器響
CLR P2.3 ;數(shù)碼管顯示2
MOV A,#10100100B
MOV P0,A
DJNZ R3,MAIN02
LJMP KEYP0
KEYPO3:CJNE R0,#0EFH,KEYPO4 ; 輸入3音,非3音跳轉(zhuǎn)
SETB P2.4 ;蜂鳴器置于高電平
MOV R3,#200
MAIN03:MOV TMOD,#01H
MOV TL0,#08CH
MOV TH0,#0FAH
SETB TR0
WAIT3:JNB TF0,WAIT3
CLR TF0
CPL P2.4
CLR P2.3
MOV A,#10110000B
MOV P0,A
DJNZ R3,MAIN03
LJMP KEYP0
KEYPO4:
CJNE R0,#0DFH,KEYPO5 ; 輸入4音,非4音跳轉(zhuǎn)
SETB P2.4
MOV R3,#200
MAIN04:MOV TMOD,#01H
MOV TL0,#0D8H
MOV TH0,#0FAH
SETB TR0
WAIT4:JNB TF0,WAIT4
CLR TF0
CPL P2.4
CLR P2.3
MOV A,#10011001B
MOV P0,A
DJNZ R3,MAIN04
LJMP KEYP0
KEYPO5: CJNE R0,#0F3H,KEYPO6 ; 輸入5音,非5音跳轉(zhuǎn)
SETB P2.4
MOV R3,#200
MAIN05:MOV TMOD,#01H
MOV TL0,#068H
MOV TH0,#0FBH
SETB TR0
WAIT5:JNB TF0,WAIT5
CLR TF0
CPL P2.4
CLR P2.3
MOV A,#10010010B
MOV P0,A
DJNZ R3,MAIN05
LJMP KEYP0
KEYPO6:CJNE R0,#0E7H,KEYPO7 ; 輸入6音,非6音跳轉(zhuǎn)
SETB P2.4
MOV R3,#200
MAIN06:MOV TMOD,#01H
MOV TL0,#0E9H
MOV TH0,#0FBH
SETB TR0
WAIT6:JNB TF0,WAIT6
CLR TF0
CPL P2.4
CLR P2.3
MOV A,#10000010B
MOV P0,A
DJNZ R3,MAIN06
LJMP KEYP0
KEYPO7:CJNE R0,#0CFH,KEYPO8 ; 輸入7音,非7音跳轉(zhuǎn)
SETB P2.4
MOV R3,#200
MAIN07:MOV TMOD,#01H
MOV TL0,#05BH
MOV TH0,#0FCH
SETB TR0
WAIT7:JNB TF0,WAIT7
CLR TF0
CPL P2.4
CLR P2.3
MOV A,#11111000B
MOV P0,A
DJNZ R3,MAIN07
LJMP KEYP0
KEYPO8:CJNE R0,#0DBH,KEYPO9 ; 輸入i音,非i音跳轉(zhuǎn)
SETB P2.4
MOV R3,#200
MAIN08:MOV TMOD,#01H
MOV TL0,#08FH
MOV TH0,#0FCH
SETB TR0
WAIT8:JNB TF0,WAIT8
CLR TF0
CPL P2.4
CLR P2.3
MOV A,#10000000B
MOV P0,A
DJNZ R3,MAIN08
LJMP KEYP0
KEYPO9:CJNE R0,#0EBH,KEYPO10 ;跳轉(zhuǎn)到第一首歌程序
LJMP MUSTART1
KEYPO10:CJNE R0,#0D7H,JIELI ;跳轉(zhuǎn)到第二首歌程序
LJMP MUSTART2
JIELI:JMP KEYP0 ;返回主程序
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,A
TTAB: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,#3BH
MAIN:MOV TMOD,#01H
MOV TL0,R4
MOV TH0,R3
SETB TR0
WAIT:JNB TF0,WAIT
CLR TF0
CPL P2.4
MAYA:JB P3.2,MAYB ;判斷P3.2口是否有為1
JB P3.4,MAYB ;判斷P3.4口是否有為1
LJMP RA ;P3.4口為0則跳轉(zhuǎn)到程序RA
MAYB: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,LOOP
INC R0 ;兩個表的指針都加1
INC R1
CJNE R1,#88,RTAB ;判斷是否取完
LJMP KEYP0
TONE:
DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FH
DB 0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68H
DB 0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68H
DB 0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BH
DB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFH
RYTH:
DB 04,04,04,04,04,04,04,04,04,04
DB 04,05,04,04,04,04,04,04,04,04
DB 04,04,04,06,04,04,04,07,04,04
DB 04,04,04,06,04,04,04,07,04,04
DB 04,04,04,04
MUSTART2:
MOV R0,#00H
MOV R1,#00H
RTAB2:
MOV A,R1
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV R2,A
TTAB2: 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.4
LOOP2: MOV R5,#9BH
MAIN2:
MOV TMOD,#01H
MOV TL0,R4
MOV TH0,R3
SETB TR0
WAITR:JNB TF0,WAITR
CLR TF0
CPL P2.4
MAYA1:JB P3.3,MAYB1
JB P3.5,MAYB1
LJMP RB
MAYB1:JB P3.2,BACK
JB P3.4,BACK
LJMP MUSTART1
BACK:LJMP JIELI
RB: DJNZ R5,MAIN2
DJNZ R2,LOOP2
INC R0
INC R1
CJNE R1,#64,RTAB2
LJMP KEYP0
TONE2:
DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FH
DB 0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68H
DB 0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68H
DB 0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BH
DB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFH
TABLE1:
DB 04,04,04,04,04,04,04,04,04,04
DB 04,05,04,04,04,04,04,04,04,04
DB 04,04,04,06,04,04,04,07,04,04
DB 04,04,04,06,04,04,04,07,04,04
DB 04,04,04,04
END
復(fù)制代碼
電子音調(diào)發(fā)生器.rar
2018-6-17 13:58 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
28.32 KB, 下載次數(shù): 13, 下載積分: 黑幣 -5
作者:
admin
時間:
2018-6-20 05:39
word格式文章能分享嗎?
作者:
LI_DORAEMON
時間:
2020-5-30 20:05
有仿真圖嗎?
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1