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

下載本文檔

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

文檔簡介

1、單片機課程設(shè)計目錄一、實驗?zāi)康?二、設(shè)計任務(wù)及要求1三、工作原理及設(shè)計思路1四、實驗電路設(shè)計2五、單片機程序設(shè)計41.音樂播放開關(guān)查詢42.音調(diào)開關(guān)查詢43.音調(diào)發(fā)聲54.音樂播放65.暫停及延時子程序7六、實驗設(shè)計中的問題8七、實驗感想8八、參考文獻8附錄9電子音調(diào)發(fā)生器一、實驗?zāi)康? 了解揚聲器發(fā)聲原理。2 熟悉定時器和鍵盤掃描電路的工作原理及編程方法。3 學(xué)會矩陣鍵盤的設(shè)計及編程。二、設(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編寫3支歌曲,

2、并可進行選擇播放。3. 擴展開關(guān)為21個,可以放出低中高頻的1-7的音調(diào)。4. 音樂播放的過程中,可以暫停播放,也可以停止播放。5. 數(shù)碼管在播放音樂及音調(diào)的過程中顯示播放的音階。三、工作原理及設(shè)計思路音階由不同頻率的方波產(chǎn)生,音階與頻率的關(guān)系如表1所示。要產(chǎn)生音頻方波,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用計時器計時此半周期時間,每當計時到后就將輸出方波的I/0反相,然后重復(fù)計時此半周期時間再對I/O反相,就可在I/O腳得到此頻率的方波。在ZKS-03實驗儀上,產(chǎn)生方波的I/O腳選用P1.6,通過跳線選擇器JP1將單片機的P1.6與揚聲器的驅(qū)動電路相連

3、。這樣P1.6輸出不同頻率的方波,揚聲器便會發(fā)出不同的聲音。另外,音樂的節(jié)拍是由延時實現(xiàn)的,如果1拍為0.4秒,1/4拍是0.1秒。只要設(shè)定延時時間,就可求得節(jié)拍的時間。延時作為基本延時時間,節(jié)拍值只能是它的整數(shù)倍。 每個音階相應(yīng)的定時器初值X可按下法計算:當晶振fose=12MHz時,各音階相應(yīng)的定時器初值X如下表1。 表 1音階低頻f/HzX中頻f/HzX高頻f/HzX1262F88CH523FC44H1047FE22H2294F95BH587FCACH1175FE56H3330FA15H659FD09H1319FE85H4349FA67H698FD34H1397FE9AH5392FB04

4、H784FD82H1568FEC1H6440FB90H880FDC8H1760FEE4H7494FC0CH988FE06H1976FF03總體框圖如下: 89C52單片機 矩陣開關(guān)的控制電路音樂播放控制開關(guān)揚聲器發(fā)聲電路數(shù)碼管顯示電路首先,通過矩陣開關(guān)選擇不同的音調(diào),音樂播放開關(guān)選擇不同的音樂;然后,單片機識別出開關(guān)位置并跳到對應(yīng)響應(yīng)處;最后,揚聲器發(fā)聲,同時數(shù)碼管顯示音符。四、實驗電路設(shè)計圖 1 揚聲器發(fā)聲電路圖1中揚聲器工作由P1.6口產(chǎn)生的方波信號經(jīng)NPN將電流放大后驅(qū)動發(fā)聲。在仿真過程中發(fā)現(xiàn),當R1較大一點的時候,聲音會很小,即放大能力不夠,所以我選擇了220的電阻。圖 2 矩陣鍵盤控

5、制電路圖2中的21個開關(guān)分別對應(yīng)低頻的1-7、中頻的1-7及高頻的1-7。,一至三行開關(guān)的左端分別為單片機的P1.3、P1.4和P1.5端口,一至七列開關(guān)的右端分別為單片機的P3.1-P3.7端口。在開關(guān)查詢的過程中,按行查詢,并在查詢每一行的同時,使其左端電平置零,查詢下一行之前再將本行左端清零。在按下不同的開關(guān)的同時使其左右端對應(yīng)端口均為低電平,這樣就能通過不同的組合跳轉(zhuǎn)到不同的響應(yīng)處,即利用10個端口、21個開關(guān)來選擇21個不同的音調(diào)。實際上利用10個端口可以最多控制25個開關(guān),但在本次實驗中只需要擴展為21個就夠了。圖 3 Proteus仿真電路圖從圖3中可以看出,單片機89C52的左

6、側(cè)接了一個12MHz的晶振電路,一個復(fù)位電路,一個揚聲器的驅(qū)動電路,右側(cè)接了數(shù)碼管的顯示電路。在下面為音樂的播放開關(guān)與電子琴的各音階開關(guān)。接上電源后,單片機復(fù)位,數(shù)碼管顯示為0。按下矩陣中的開關(guān)可使揚聲器發(fā)出不同音調(diào)的聲音,按下音樂播放開關(guān)播放音樂,再次按下本開關(guān),暫停播放,再按一下就能繼續(xù)播放;而在音樂播放的過程中,還添加了停止播放的功能,即返回開始查詢處并清零。播放歌曲1時音樂2開關(guān)為停止鍵,播放歌曲2、3時開關(guān)1為停止鍵。五、單片機程序設(shè)計1.音樂播放開關(guān)查詢M1: JB P1.0,M2 ;P1.0口為1時跳轉(zhuǎn) LCALL DELAY ;延時給開關(guān)消抖 JB P1.0,M2 ;消抖后繼續(xù)

7、判斷 LJMP MUSIC1 ;P1.0口為0時播放曲目1 M2: JB P1.1,M3 ;P1.1口為1時跳轉(zhuǎn) LCALL DELAY ;延時給開關(guān)消抖 JB P1.1,M3 LJMP MUSIC2 ;P1.1口為0時播放曲目2 M3: JB P1.2,L ;P1.2口為1時跳轉(zhuǎn) LCALL DELAY ;延時給開關(guān)消抖 JB P1.2,L ;消抖后繼續(xù)判斷 LJMP MUSIC3 ;P1.2口為0時播放曲目32.音調(diào)開關(guān)查詢 L: CLR P1.3 ;查詢第一行之前,使其左端電平置零 K11: JB P1.3,K12 ;判斷開關(guān)左端電平 JB P3.1,K12 ;判斷開關(guān)右端電平 LCAL

8、L DELAY ;延遲消抖 JB P3.1,K12 LJMP KEY11 ;跳轉(zhuǎn)到對應(yīng)音調(diào)發(fā)生處 K12: JB P1.3,K13 JB P3.2,K13 LCALL DELAY JB P3.2,K13 LJMP KEY12 K13: JB P1.3,K14 JB P3.3,K14 LCALL DELAY JB P3.3,K14 LJMP KEY13 K14: JB P1.3,K15 JB P3.4,K15 LCALL DELAY JB P3.4,K15 LJMP KEY14 K15: JB P1.3,K16 JB P3.5,K16 LCALL DELAY JB P3.5,K16 LJMP K

9、EY15 K16: JB P1.3,K17 JB P3.6,K17 LCALL DELAY JB P3.6,K17 LJMP KEY16 K17: JB P1.3,M JB P3.7,M LCALL DELAY JB P3.7,M LJMP KEY17此處只有低音的部分,其余可見附錄。3.音調(diào)發(fā)聲KEY11: SETB P1.6 ;音調(diào)1的方波發(fā)聲 MOV R3,#50 ;設(shè)循環(huán)初值,使音調(diào)1持續(xù)一定時間LOP11: MOV TMOD,#01H ;設(shè)置定時器T0工作方式1 MOV TL0,#8CH MOV TH0,#0F8H ;音調(diào)1對應(yīng)初值F88CH SETB TR0 ;啟動T0工作WT11

10、: JNB TF0,WT11 ;定時未到,循環(huán)等待 CLR TF0 ;定時到,清TF0 CPL P1.6 ;由P1.6輸出,信號取反 DJNZ R3,LOP11 MOV A,#0F9H MOV P2,A ;數(shù)碼管顯示音階 JB P1.3,TT11 ;判斷開關(guān)左端電平 JB P3.1,TT11 ;判斷開關(guān)右端電平 LJMP KEY11 TT11: LJMP START ;跳回開始查詢此處只有低音的音階1的程序,其余可見附錄。4.音樂播放 MUSIC1: MOV R0,#00H ;延時表指針置零 MOV R1,#00H ;音階表指針置零TAB11: MOV A,R0 MOV DPTR,#YANSH

11、I MOVC A,A+DPTR MOV R2,A ;查表法將一個延時數(shù)據(jù)取出放R2計數(shù)器中 CJNE R2,#0,TAB12 ;歌曲播放完結(jié)束標號識別 LJMP START0 TAB12: MOV A,R1 MOV DPTR,#YINJIE MOVC A,A+DPTR ;查表取出音階數(shù)據(jù) MOV R3,A ;取出音階高8位 INC R1 ;指針加1 MOV A,R1 MOV DPTR,#YINJIE MOVC A,A+DPTR MOV R4,A ;取出音階低8位 SETB P1.6 ;輸出相應(yīng)音調(diào)的方波LOOP1: MOV R5,#40HMA1: MOV TMOD,#01H MOV TL0,R

12、4 MOV TH0,R3 SETB TR0WT1: JNB TF0,WT1 CLR TF0 CPL P1.6 JB P1.0,TINGZ1 ;暫停播放判斷 LCALL DELAY JB P1.0,TINGZ1 LCALL PULSE1 ;若為暫停跳到暫停子程序TINGZ1: JB P1.1,LX1 ;停止播放判斷 LCALL DELAY JB P1.1,LX1 LJMP START0 ;若為停止跳到停止子程序LX1: MOV A,R0 MOV DPTR,#LYRIC1 MOVC A,A+DPTR ;查表找到相應(yīng)音階 DEC A MOV DPTR,#CA1 MOVC A,A+DPTR ;查表找到

13、相應(yīng)數(shù)碼管顯示碼 MOV P2,A ;歌詞顯示 DJNZ R5,MA1 DJNZ R2,LOOP1 ;沒結(jié)束則繼續(xù)放第一首歌 INC R0 INC R1 ;兩個表的指針都加1 LJMP TAB11 ;繼續(xù)下一個音階查找 此處歌曲音階、延時等相關(guān)數(shù)據(jù)省略,詳見附錄。5.暫停及延時子程序;延時100ms子程序DELAY: MOV A,R0 MOV R0,#100DL: MOV TMOD,#01H MOV TL0,#18H MOV TH0,#0FCh SETB TR0DL0: JNB TF0,DL0 CLR TF0 DJNZ R0,DL MOV R0,A RET;歌曲1暫停子程序PULSE1: JB

14、 P1.0,PULSE1 LCALL DELAY JB P1.0,PULSE1 RET;歌曲2暫停子程序PULSE2: JB P1.1,PULSE2 LCALL DELAY JB P1.1,PULSE2 RET;歌曲3暫停子程序PULSE3: JB P1.2,PULSE3 LCALL DELAY JB P1.2,PULSE3 RET六、實驗設(shè)計中的問題本次實驗的仿真過程我使用了Proteus仿真軟件,在仿真過程中,主要的問題出在揚聲器的發(fā)聲上,如果不接驅(qū)動電路,揚聲器可以發(fā)聲,蜂鳴器就不行。而在實際焊接過程中,在沒有接驅(qū)動電路部分時揚聲器是無法發(fā)聲的。其次是在按住開關(guān)讓他延長發(fā)聲的時候,會有顫

15、音,后來發(fā)現(xiàn)這是由于它在一次發(fā)聲后跳回開始再次查詢的時間差造成的,只要在發(fā)聲程序中加入電平的判斷,一直讓它循環(huán)發(fā)聲,不跳出即可。最后是在矩陣開關(guān)設(shè)計的過程中,本想著是開關(guān)有一端接地,有兩端接兩個端口,讓開關(guān)在按下時同時給兩端置零,不按接高電平。但對于我所使用的開關(guān)沒法實現(xiàn)此功能,我只好在查詢每一行的時候,通過程序給一端置零,這樣就能滿足實際要求了。七、實驗感想本次單片機課程的設(shè)計過程我主要經(jīng)歷了兩個大的過程,首先是在理論課結(jié)束的時候,那時還不是很忙,就抽出了一些時間去查資料,琢磨電路的設(shè)計與程序匯編的過程。這也是我第一次接觸Proteus與Keil軟件,看了部分基礎(chǔ)教程再加慢慢摸索,終于學(xué)會了

16、它的使用。在設(shè)計完電路、匯編完畢后,發(fā)現(xiàn)揚聲器的聲音會經(jīng)常性的有雜音,試了很多方法都沒能有效的解決,最后再焊完電路板之后發(fā)現(xiàn)是電腦的問題。本課程的理論知識與微機原理還是有不少相同之處,所以理解起來比較容易,但在編寫匯編程序的時候一些語法規(guī)則上有些出入,仔細研究了才弄明白。這一階段基本上解決了基本功能的實現(xiàn)。之后有很多事要忙,一直沒繼續(xù)弄完,到快要交的前一周才弄它的擴展部分,我加入了電子鍵盤與音符顯示的功能,還可以暫停、停止播放音樂??偟氖斋@非常的多。實踐檢驗真理。這次的經(jīng)歷一定會為我今后的學(xué)習(xí)打下良好的基礎(chǔ)。八、參考文獻1單片機原理與應(yīng)用,戴勝華等著,北京:清華大學(xué)出版社、北京交通大學(xué)出版社,

17、2006附錄ORG 0000H MOV A,#0C0H ;開機初始清零顯示 MOV P2,A LJMP STARTSTART0: MOV A,#0C0H ;播放完歌曲或停止時初始清零 MOV P2,A MOV R0,#10 ;延遲 Q: LCALL DELAY DJNZ R0,Q ;音樂開關(guān)查詢START: SETB P1.3SETB P1.4SETB P1.5 M1: JB P1.0,M2 ;P1.0口為1時跳轉(zhuǎn) LCALL DELAY ;延時給開關(guān)消抖 JB P1.0,M2 ;消抖后繼續(xù)判斷 LJMP MUSIC1 ;P1.0口為0時播放曲目1 M2: JB P1.1,M3 ;P1.1口為

18、1時跳轉(zhuǎn) LCALL DELAY ;延時給開關(guān)消抖 JB P1.1,M3 LJMP MUSIC2 ;P1.1口為0時播放曲目2 M3: JB P1.2,L ;P1.2口為1時跳轉(zhuǎn) LCALL DELAY ;延時給開關(guān)消抖 JB P1.2,L ;消抖后繼續(xù)判斷 LJMP MUSIC3 ;P1.2口為0時播放曲目3;低音查詢 L: CLR P1.3 ;查詢第一行之前,使其左端電平置零 K11: JB P1.3,K12 ;判斷開關(guān)左端電平 JB P3.1,K12 ;判斷開關(guān)右端電平 LCALL DELAY ;延遲消抖 JB P3.1,K12 LJMP KEY11 ;跳轉(zhuǎn)到對應(yīng)音調(diào)發(fā)生處 K12: J

19、B P1.3,K13 JB P3.2,K13 LCALL DELAY JB P3.2,K13 LJMP KEY12 K13: JB P1.3,K14 JB P3.3,K14 LCALL DELAY JB P3.3,K14 LJMP KEY13 K14: JB P1.3,K15 JB P3.4,K15 LCALL DELAY JB P3.4,K15 LJMP KEY14 K15: JB P1.3,K16 JB P3.5,K16 LCALL DELAY JB P3.5,K16 LJMP KEY15 K16: JB P1.3,K17 JB P3.6,K17 LCALL DELAY JB P3.6,K

20、17 LJMP KEY16 K17: JB P1.3,M JB P3.7,M LCALL DELAY JB P3.7,M LJMP KEY17 ;中音查詢 M: SETB P1.3 CLR P1.4 K21: JB P1.4,K22 JB P3.1,K22 LCALL DELAY JB P3.1,K22 LJMP KEY21 K22: JB P1.4,K23 JB P3.2,K23 LCALL DELAY JB P3.2,K23 LJMP KEY22 K23: JB P1.4,K24 JB P3.3,K24 LCALL DELAY JB P3.3,K24 LJMP KEY23 K24: JB

21、P1.4,K25 JB P3.4,K25 LCALL DELAY JB P3.4,K25 LJMP KEY24 K25: JB P1.4,K26 JB P3.5,K26 LCALL DELAY JB P3.5,K26 LJMP KEY25 K26: JB P1.4,K27 JB P3.6,K27 LCALL DELAY JB P3.6,K27 LJMP KEY26 K27: JB P1.4,H JB P3.7,H LCALL DELAY JB P3.7,H LJMP KEY27 ;高音查詢 H: SETB P1.4 CLR P1.5 K31: JB P1.5,K32 JB P3.1,K32 L

22、CALL DELAY JB P3.1,K32 LJMP KEY31 K32: JB P1.5,K33 JB P3.2,K33 LCALL DELAY JB P3.2,K33 LJMP KEY32 K33: JB P1.5,K34 JB P3.3,K34 LCALL DELAY JB P3.3,K34 LJMP KEY33 K34: JB P1.5,K35 JB P3.4,K35 LCALL DELAY JB P3.4,K35 LJMP KEY34 K35: JB P1.5,K36 JB P3.5,K36 LCALL DELAY JB P3.5,K36 LJMP KEY35 K36: JB P1

23、.5,K37 JB P3.6,K37 LCALL DELAY JB P3.6,K37 LJMP KEY36 K37: JB P1.5,ST JB P3.7,ST LCALL DELAY JB P3.7,ST LJMP KEY37 ST: SETB P1.5LJMP START ;查詢完所有開關(guān)后返回開始重新查詢;低音發(fā)聲KEY11: SETB P1.6 ;音調(diào)1的方波發(fā)聲 MOV R3,#50 ;設(shè)循環(huán)初值,使音調(diào)1持續(xù)一定時間LOP11: MOV TMOD,#01H ;設(shè)置定時器T0工作方式1 MOV TL0,#8CH MOV TH0,#0F8H ;音調(diào)1對應(yīng)初值F88CH SETB TR0

24、 ;啟動T0工作WT11: JNB TF0,WT11 ;定時未到,循環(huán)等待 CLR TF0 ;定時到,清TF0 CPL P1.6 ;由P1.6輸出,信號取反 DJNZ R3,LOP11 MOV A,#0F9H MOV P2,A ;數(shù)碼管顯示音階 JB P1.3,TT11 ;判斷開關(guān)左端電平 JB P3.1,TT11 ;判斷開關(guān)右端電平 LJMP KEY11 TT11: LJMP START ;跳回開始查詢KEY12: SETB P1.6 MOV R3,#50LOP12: MOV TMOD,#01H MOV TL0,#5BH MOV TH0,#0F9H SETB TR0WT12: JNB TF0

25、,WT12 CLR TF0 CPL P1.6 DJNZ R3,LOP12 MOV A,#0A4H MOV P2,A JB P1.3,TT12 ;判斷開關(guān)左端電平 JB P3.2,TT12 ;判斷開關(guān)右端電平 LJMP KEY12 TT12: LJMP START ;跳回開始查詢KEY13: SETB P1.6 MOV R3,#50 LOP13: MOV TMOD,#01H MOV TL0,#15H MOV TH0,#0FAH SETB TR0WT13: JNB TF0,WT13 CLR TF0 CPL P1.6 DJNZ R3,LOP13 MOV A,#0B0H MOV P2,A JB P1.

26、3,TT13 ;判斷開關(guān)左端電平 JB P3.3,TT13 ;判斷開關(guān)右端電平 LJMP KEY13 TT13: LJMP START ;跳回開始查詢KEY14: SETB P1.6 MOV R3,#50 SETB P1.6LOP14: MOV TMOD,#01H MOV TL0,#67H MOV TH0,#0FAH SETB TR0WT14: JNB TF0,WT14 CLR TF0 CPL P1.6 DJNZ R3,LOP14 MOV A,#99H MOV P2,A JB P1.3,TT14 ;判斷開關(guān)左端電平 JB P3.4,TT14 ;判斷開關(guān)右端電平 LJMP KEY14 TT14:

27、 LJMP START ;跳回開始查詢KEY15: SETB P1.6 MOV R3,#50 LOP15: MOV TMOD,#01H MOV TL0,#04H MOV TH0,#0FBH SETB TR0WT15: JNB TF0,WT15 CLR TF0 CPL P1.6 DJNZ R3,LOP15 MOV A,#92H MOV P2,A JB P1.3,TT15 ;判斷開關(guān)左端電平 JB P3.5,TT15 ;判斷開關(guān)右端電平 LJMP KEY15 TT15: LJMP START ;跳回開始查詢KEY16: SETB P1.6 MOV R3,#50 LOP16: MOV TMOD,#0

28、1H MOV TL0,#90H MOV TH0,#0FBH SETB TR0WT16: JNB TF0,WT16 CLR TF0 CPL P1.6 DJNZ R3,LOP16MOV A,#82H MOV P2,A JB P1.3,TT16 ;判斷開關(guān)左端電平 JB P3.6,TT16 ;判斷開關(guān)右端電平 LJMP KEY16 TT16: LJMP START ;跳回開始查詢KEY17: SETB P1.6 MOV R3,#50 LOP17: MOV TMOD,#01H MOV TL0,#0CH MOV TH0,#0FCH SETB TR0WT17: JNB TF0,WT17 CLR TF0 C

29、PL P1.6 DJNZ R3,LOP17 MOV A,#0F8H MOV P2,A JB P1.3,TT17 ;判斷開關(guān)左端電平 JB P3.7,TT17 ;判斷開關(guān)右端電平 LJMP KEY17 TT17: LJMP START ;跳回開始查詢;中音發(fā)聲KEY21: SETB P1.6 MOV R3,#100 ;設(shè)循環(huán)初值,使音調(diào)1持續(xù)一定時間LOP21: MOV TMOD,#01H ;設(shè)置定時器T0工作方式1 MOV TL0,#44H MOV TH0,#0FCH ;音調(diào)1對應(yīng)初值FC44h SETB TR0 ;啟動T0工作WT21: JNB TF0,WT21 ;定時未到,循環(huán)等待 CLR

30、 TF0 ;定時到,清TF0 CPL P1.6 ;由P1.6輸出,信號取反 DJNZ R3,LOP21 MOV A,#0F9H MOV P2,A JB P1.4,TT21 ;判斷開關(guān)左端電平 JB P3.1,TT21 ;判斷開關(guān)右端電平 LJMP KEY21 TT21: LJMP START ;跳回開始查詢KEY22: SETB P1.6 MOV R3,#100LOP22: MOV TMOD,#01H MOV TL0,#0ACH MOV TH0,#0FCH SETB TR0WT22: JNB TF0,WT22 CLR TF0 CPL P1.6 DJNZ R3,LOP22 MOV A,#0A4H

31、 MOV P2,A JB P1.4,TT22 ;判斷開關(guān)左端電平 JB P3.2,TT22 ;判斷開關(guān)右端電平 LJMP KEY22 TT22: LJMP START ;跳回開始查詢KEY23: SETB P1.6 MOV R3,#100LOP23: MOV TMOD,#01H MOV TL0,#09H MOV TH0,#0FDH SETB TR0WT23: JNB TF0,WT23 CLR TF0 CPL P1.6 DJNZ R3,LOP23 MOV A,#0B0H MOV P2,A JB P1.4,TT23 ;判斷開關(guān)左端電平 JB P3.3,TT23 ;判斷開關(guān)右端電平 LJMP KEY

32、23 TT23: LJMP START ;跳回開始查詢KEY24: SETB P1.6 MOV R3,#100 SETB P1.6LOP24: MOV TMOD,#01H MOV TL0,#034H MOV TH0,#0FDH SETB TR0WT24: JNB TF0,WT24 CLR TF0 CPL P1.6 DJNZ R3,LOP24 MOV A,#99H MOV P2,A JB P1.4,TT24 ;判斷開關(guān)左端電平 JB P3.4,TT24 ;判斷開關(guān)右端電平 LJMP KEY24 TT24: LJMP START ;跳回開始查詢KEY25: SETB P1.6 MOV R3,#10

33、0LOP25: MOV TMOD,#01H MOV TL0,#82H MOV TH0,#0FDH SETB TR0WT25: JNB TF0,WT25 CLR TF0 CPL P1.6 DJNZ R3,LOP25 MOV A,#92H MOV P2,A JB P1.4,TT25 ;判斷開關(guān)左端電平 JB P3.5,TT25 ;判斷開關(guān)右端電平 LJMP KEY25 TT25: LJMP START ;跳回開始查詢KEY26: SETB P1.6 MOV R3,#100LOP26: MOV TMOD,#01H MOV TL0,#0C8H MOV TH0,#0FDH SETB TR0WT26: J

34、NB TF0,WT26 CLR TF0 CPL P1.6 DJNZ R3,LOP26 MOV A,#82H MOV P2,A JB P1.4,TT26 ;判斷開關(guān)左端電平 JB P3.6,TT26 ;判斷開關(guān)右端電平 LJMP KEY26 TT26: LJMP START ;跳回開始查詢KEY27: SETB P1.6 MOV R3,#100LOP27: MOV TMOD,#01H MOV TL0,#06H MOV TH0,#0FEH SETB TR0WT27: JNB TF0,WT27 CLR TF0 CPL P1.6 DJNZ R3,LOP27 MOV A,#0F8H MOV P2,A J

35、B P1.4,TT27 ;判斷開關(guān)左端電平 JB P3.7,TT27 ;判斷開關(guān)右端電平 LJMP KEY27 TT27: LJMP START ;跳回開始查詢;高音發(fā)聲KEY31: SETB P1.6 MOV R3,#0FFH ;設(shè)循環(huán)初值,使音調(diào)1持續(xù)一定時間LOP31:MOV TMOD,#01H ;設(shè)置定時器T0工作方式1 MOV TL0,#22H MOV TH0,#0FEH ;音調(diào)1對應(yīng)初值FE22H SETB TR0 ;啟動T0工作WT31: JNB TF0,WT31 ;定時未到,循環(huán)等待 CLR TF0 ;定時到,清TF0 CPL P1.6 ;由P1.6輸出,信號取反 DJNZ R

36、3,LOP31 MOV A,#0F9H MOV P2,A JB P1.5,TT31 ;判斷開關(guān)左端電平 JB P3.1,TT31 ;判斷開關(guān)右端電平 LJMP KEY31 TT31: LJMP START ;跳回開始查詢KEY32: SETB P1.6 MOV R3,#0FFH LOP32: MOV TMOD,#01H MOV TL0,#056H MOV TH0,#0FEH SETB TR0WT32: JNB TF0,WT32 CLR TF0 CPL P1.6 DJNZ R3,LOP32 MOV A,#0A4H MOV P2,A JB P1.5,TT32 ;判斷開關(guān)左端電平 JB P3.2,T

37、T32 ;判斷開關(guān)右端電平 LJMP KEY32 TT32: LJMP START ;跳回開始查詢KEY33: SETB P1.6 MOV R3,#0FFH LOP33: MOV TMOD,#01H MOV TL0,#85H MOV TH0,#0FEH SETB TR0WT33: JNB TF0,WT33 CLR TF0 CPL P1.6 DJNZ R3,LOP33 MOV A,#0B0H MOV P2,A JB P1.5,TT33 ;判斷開關(guān)左端電平 JB P3.3,TT33 ;判斷開關(guān)右端電平 LJMP KEY33 TT33: LJMP START ;跳回開始查詢KEY34: SETB P

38、1.6 MOV R3,#0FFH SETB P1.6LOP34: MOV TMOD,#01H MOV TL0,#9AH MOV TH0,#0FEH SETB TR0WT34: JNB TF0,WT34 CLR TF0 CPL P1.6 DJNZ R3,LOP34 MOV A,#99H MOV P2,A JB P1.5,TT34 ;判斷開關(guān)左端電平 JB P3.4,TT34 ;判斷開關(guān)右端電平 LJMP KEY34 TT34: LJMP START ;跳回開始查詢KEY35: SETB P1.6 MOV R3,#0FFH LOP35: MOV TMOD,#01H MOV TL0,#0C1H MOV TH0,#0FEH SETB TR0WT35: JNB TF0,WT35 CLR TF0 CPL P1.6 DJNZ R3,LOP35 M

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論