

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課程設計報告書</b></p><p> 課程名稱:單 片 機</p><p> 課題名稱:電子音樂盒</p><p> 2013 年 01月01日</p><p><b> 目 錄</b></p><p> 1.設計目的………
2、…………………………………..1</p><p> 2.設計要求和設計指標1</p><p><b> 3.設計內容1</b></p><p> 3.1硬件部分1</p><p><b> 3.1.1 …1</b></p><p> 3.2 軟件部分1&
3、lt;/p><p> 4.本設計改進建議3</p><p> 5.總結(感想和心得等)3</p><p> 6.主要參考文獻3</p><p><b> 附錄4</b></p><p><b> 1.設計目的</b></p><p>
4、通過學習單片機課程,對單片機的硬件設計,軟件設計掌握有了不少了解,學習了protel 99 SE 和keil軟件,鍛煉了自己的編程能力,對單片機硬件和軟件的設計都有了進一步的認識和提高。為以后的學習也打下了很好的基礎。</p><p> 2.設計要求和設計指標</p><p> (1)利用I/O口產生一定頻率的方波,驅動蜂鳴器,發(fā)出不同的音調,從而演樂曲(內存兩首樂曲)。</p&
5、gt;<p> (2) 可通過功能鍵選擇樂曲,播放不同音樂。</p><p> (3)要產生音頻脈沖,只要算出某一音頻的周期(1/音頻),然后將此周期除以2,即為半周期的時間,利用定時器計時這個半周期時間,每當計時到后就將輸出脈沖的I/O反相,然后重復計時此半周期時間再對I/O口反相,就可在I/O腳上得到此頻率的脈沖</p><p> (4)利用8051的內部定時器使其
6、工作在計數器模式MODE1下,改變記數值TH0及TL0以產生不同頻率的方法。例如頻率為523HZ,其周期T=1/523=1912微秒,因此只要令計數器定時956/1=956在每記數9次時將I/O口反相,就可得到中音D0(523HZ)。</p><p> 記數脈沖值與頻率的關系公式如下:</p><p> N=Fi/2/Fr N:記數值</p><p>
7、Fi:內部計時一次為1微秒.故其頻率為1MHZ</p><p><b> Fr;要產生的頻率</b></p><p> (5):起記數值的求法如下:</p><p> T=65536-N=65536-Fi/2/Fr</p><p> 例如:設K=65536,F=1000000=Fi=1MHZ,求低音D0(523H
8、Z),高音的D0(1046HZ)的記數值。</p><p> T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr</p><p> 低音D0的T=65536-500000/262=63627</p><p> 中音D0的T=65536-500000/523=64580</p>&l
9、t;p> 低音D0的T=65536-500000/1047=65059</p><p><b> 3.設計內容</b></p><p><b> 3.1 硬件部分</b></p><p> 本設計中用到89C51單片機,蜂鳴器,獨立式按鍵。(硬件電路原理圖如圖1所示)</p><p>
10、;<b> 3.11 原理說明</b></p><p> 當鍵盤有鍵按下時,判斷鍵值,啟動計數器T0,產生一定頻率的脈沖,驅動蜂鳴器,放出樂曲。</p><p> ?。?)硬件電路中用K1, K2, K3, K4分別接P0.0, P0.1, P0.2, P0.3作為對應歌曲按鍵。</p><p> ?。?)用P1.0口接蜂鳴器。<
11、;/p><p> ?。?)電路為12MHZ晶振頻率工作。 </p><p><b> 音樂盒原理圖</b></p><p><b> 3.2.軟件部分</b></p><p> 本程序可以實現課程設計的基本要求,并可以通過按鍵播放兩首歌曲,程序流程圖如下:</p>
12、<p><b> 4.本設計改進建議</b></p><p> ?。?) 有時會出現程序一點錯誤也沒有,但就是不能正常運行的現象,最后我們發(fā)現是因為程序中有的指令書寫得不規(guī)范導致的,例如有的RET返回指令一定要按正確格式書寫或在兩行指令間最好不要留空行。</p><p> (2) 程序中的跳轉指令的運用很重要,為保險起見,都用LJMP,我們就遇到過跳轉
13、指令用錯程序無法正常運行的現象。當用JNZ指令時,跳轉范圍比較少,這時要用一個標號中轉。</p><p> (3) 編程時要注意,在程序開始時,要寫入各定時器中斷的入口地址。</p><p> ?。?) 編程過程中要注意加注釋或分割線,否則,在程序過長時容易變得很亂,不便于查找或更改。</p><p><b> 5.收獲與體會</b><
14、;/p><p> (1)學習單片機的課時不多,對單片機的硬件設計,軟件設計掌握的深度不夠,但通過此次課程設計,明顯的改善了,首先對于硬件電路的工作原理有了進一步的學習,同時有了一個提升;軟件方面,在程序的設計,程序的調試方面都有了很大的進步。</p><p> (3) 通過這次課程設計,我體會到了成功的喜悅,聽著自己設計的程序下載到單片機中播放出音樂,心理非常自豪。這次的課程設計在一定程度
15、上改變了我學習單片機這門課程的態(tài)度,從最初的認為學它沒有什么實際意義,到如今愛上單片機學習,并希望能將理論運用到實踐,設計出更好更完整的系統(tǒng)。我明白了一個人要想做好一件事,就必須具備自信心,耐心,還要有毅力,要膽大心細,要勇于嘗試,要手腦并用,最后才能交出一份令人滿意的答卷。</p><p><b> 6. 主要參考文獻</b></p><p> [1] 單片機
16、原理及應用 清華大學出版社</p><p> [2] Protel 99 SE 印刷電路板設計教程 機械工業(yè)出版社</p><p> [3] 王為青,程國鋼.單片機Keil Cx51應用開發(fā)技術[M]. 北京:人民郵電出版社,2007.02</p><p> [4] 閻石.數字電子技術基礎[M].北京:高等教育出版社,1998.12,第4版</p
17、><p> [5] 鄧元慶.數字電路與邏輯設計[M].北京:電子工業(yè)出版社,2001</p><p><b> 附件1:元件清單</b></p><p><b> 附件2:音樂程序</b></p><p> K1 EQU P0.0;定義引腳</p><p> K2
18、 EQU P0.1</p><p> K3 EQU P0.2</p><p> K4 EQU P0.3</p><p> SPK EQU P1.0 ;定義蜂鳴器引腳</p><p> ORG 0000H</p><p> LJMP MAIN</p><p> ORG 001B
19、H</p><p> LJMP T1SER </p><p> ORG 0030H</p><p> MAIN: JNB K1,G1</p><p><b> JNB K2,G2</b></p><p><b> JNB K3,G3</b></p&g
20、t;<p><b> JNB K4,G4</b></p><p><b> LJMP MAIN</b></p><p> G1: LCALL GQ1</p><p> G2: LCALL GQ2</p><p> G3: LCALL GQ3</p><p&
21、gt; G4: LCALL GQ4</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> GQ1:</b></p><p> MOV SP,#30H</p
22、><p> MOV TMOD,#10H;設T1工作方式1</p><p> MOV IE,#88H;允許中斷</p><p> LOOP1:MOV 40H,#00H;簡譜碼指針清0</p><p> LOOP2:MOV A, 40H;簡譜碼指針放入A</p><p> MOV DPTR, #TABLE
23、1</p><p> MOVC A,@A+DPTR;到表格TABLE1中取簡譜碼</p><p> MOV R1,A;取到的簡譜碼暫存于R1</p><p> JZ FINISH;簡譜碼是00H(結束碼),轉移</p><p> ANL A,#0FH;不是00H,取低4位(節(jié)拍碼)</p><p>
24、 MOV R2,A;將節(jié)拍碼存入R2中</p><p> MOV A,R1;將取到的簡譜碼再放入A</p><p> SWAP A;高低4位交換</p><p> ANL A,#0FH;取低4位(唱名碼)</p><p> JNZ SING;唱名碼不是00H,轉移</p><p> CLR T
25、R1;唱名碼是00H,則不發(fā)音</p><p> SJMP WY;轉移至WY</p><p> SING:DEC A;唱名碼減1</p><p> MOV 50H,A;唱名碼存入50H</p><p><b> RL A;乘2</b></p><p> MOV DPT
26、R, #TABLE2</p><p> MOVC A,@A+DPTR;到表格TABLE2取計數值高8位</p><p> MOV TH1, A;計數值高8位存入TH1</p><p> MOV 51H, A;計數值高8位存入51H</p><p> MOV A, 50H;將取到的唱名碼再放入A</p>
27、<p><b> RL A;乘2</b></p><p> INC A;唱名碼加1</p><p> MOVC A,@A+DPTR;到表格TABLE2取計數值低8位</p><p> MOV TL1, A;計數值低8位存入TL1</p><p> MOV 52H, A;計數值低8
28、位存入52H</p><p> SETB TR1;啟動T1</p><p> WY:LCALL DELAY;調用基本單位時間(1/4拍)</p><p> INC 40H;簡譜碼指針加1</p><p> SJMP LOOP2;取下一個簡譜碼</p><p> FINISH:CLR TR1;
29、停止T1</p><p> LJMP MAIN;重復播放</p><p> T1SER:PUSH ACC;將A的值暫存于堆棧</p><p> PUSH PSW;將PSW的值暫存于堆棧</p><p> MOV TL1, 52H;重置定時器初值</p><p> MOV TH1, 51H</
30、p><p> CPL SPK;將SPK取反</p><p> POP PSW;至堆棧取回PSW值</p><p> POP ACC;至堆棧取回A值</p><p> RETI;返回主程序</p><p> TABLE1:DB 84H,62H,82H,0B6H,02H;簡譜碼表</p>
31、<p> DB 94H,0B4H,86H,02H</p><p> DB 84H,42H,52H,64H,52H,42H</p><p> DB 58H,04H,04H</p><p> DB 84H,62H,82H,0B6H,0A2H</p><p> DB 94H,0B4H,86H,02H</p><
32、;p> DB 84H,52H,62H,76H,32H</p><p> DB 48H,04H,04H</p><p> DB 94H,0B4H,0B6H,02H</p><p> DB 0A4H,92H,0A2H,0B6H,02H</p><p> DB 92H,0A2H,0B2H,92H,92H,82H,62H,42H<
33、;/p><p> DB 58H,04H,04H</p><p> DB 84H,62H,82H,0B6H,0A2H</p><p> DB 94H,0B4H,86H,02H</p><p> DB 84H,52H,62H,76H,32H</p><p> DB 48H,04H,04H</p><
34、;p><b> DB 00H</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> GQ2: </b></p>
35、;<p> MOV SP,#30H</p><p> MOV TMOD,#10H;設T1工作方式1</p><p> MOV IE,#88H;允許中斷</p><p> LOOP12:MOV 40H,#00H;簡譜碼指針清0</p><p> LOOP22:MOV A, 40H;簡譜碼指針放入A</
36、p><p> MOV DPTR, #TAB2</p><p> MOVC A,@A+DPTR;到表格TAB2中取簡譜碼</p><p> MOV R1,A;取到的簡譜碼暫存于R1</p><p> JZ FINISH2;簡譜碼是00H(結束碼),轉移</p><p> ANL A,#0FH;不是00H,
37、取低4位(節(jié)拍碼)</p><p> MOV R2,A;將節(jié)拍碼存入R2中</p><p> MOV A,R1;將取到的簡譜碼再放入A</p><p> SWAP A;高低4位交換</p><p> ANL A,#0FH;取低4位(唱名碼)</p><p> JNZ SING2;唱名碼不是00H
38、,轉移</p><p> CLR TR1;唱名碼是00H,則不發(fā)音</p><p> SJMP WY2;轉移至WY2</p><p> SING2:DEC A;唱名碼減1</p><p> MOV 50H,A;唱名碼存入50H</p><p><b> RL A;乘2</
39、b></p><p> MOV DPTR, #TABLE2</p><p> MOVC A,@A+DPTR;到表格TABLE2取計數值高8位</p><p> MOV TH1, A;計數值高8位存入TH1</p><p> MOV 51H, A;計數值高8位存入51H</p><p> M
40、OV A, 50H;將取到的唱名碼再放入A</p><p><b> RL A;乘2</b></p><p> INC A;唱名碼加1</p><p> MOVC A,@A+DPTR;到表格TABLE2取計數值低8位</p><p> MOV TL1, A;計數值低8位存入TL1</p
41、><p> MOV 52H, A;計數值低8位存入52H</p><p> SETB TR1;啟動T1</p><p> WY2: LCALL DELAY;調用基本單位時間(1/4拍)</p><p> INC 40H;簡譜碼指針加1</p><p> SJMP LOOP22;取下一個簡譜碼<
42、;/p><p> FINISH2:CLR TR1;停止T1</p><p><b> LJMP MAIN</b></p><p> TAB2:DB 64H,62H,52H,64H,04H;簡譜碼表</p><p> DB 62H,82H,62H,52H,64H,04H</p><p&g
43、t; DB 44H,42H,52H,62H,82H,64H</p><p> DB 54H,52H,42H,54H,04H</p><p> DB 66H,81H,61H,92H,86H</p><p> DB 92H,82H,82H,62H,86H,12H</p><p> DB 64H,52H,52H,84H,6
44、2H,52H</p><p> DB 54H,52H,42H,54H,04H</p><p> DB 64H,62H,52H,64H,04H</p><p> DB 62H,82H,62H,52H,64H,04H</p><p> DB 44H,42H,52H,62H,82H,64H</p><p>
45、 DB 54H,52H,42H,54H,04H</p><p> DB 66H,81H,61H,92H,86H</p><p> DB 92H,82H,82H,62H,84H,04H</p><p> DB 02H,62H,52H,62H,84H,62H,52H</p><p> DB 52H,46H,44H,04H&l
46、t;/p><p> DB 42H,52H</p><p> DB 64H,62H,82H,94H,92H,0D2H</p><p> DB 0D2H,0C2H,0B2H,92H,84H,04H</p><p> DB 92H,82H,62H,52H,44H,22H,42H</p><p> DB 54H,52H,
47、42H,54H,42H,52H</p><p> DB 64H,62H,82H,94H,92H,0D2H</p><p> DB 0C2H,0B2H,0B2H,0C2H,0B4H,04H</p><p> DB 84H,82H,62H,0A2H,0B2H,42H,52H</p><p> DB 64H,04H,54H,04H</
48、p><p> DB 44H,04H,04H,04H</p><p><b> DB 00H</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
49、;;;;;;;;;</p><p><b> GQ3:</b></p><p> MOV SP,#30H</p><p> MOV TMOD,#10H;設T1工作方式1</p><p> MOV IE,#88H;允許中斷</p><p> LOOP13:MOV 40H,#00H
50、;簡譜碼指針清0</p><p> LOOP23:MOV A, 40H;簡譜碼指針放入A</p><p> MOV DPTR, #TAB3</p><p> MOVC A,@A+DPTR;到表格TAB3中取簡譜碼</p><p> MOV R1,A;取到的簡譜碼暫存于R1</p><p> JZ F
51、INISH3;簡譜碼是00H(結束碼),轉移</p><p> ANL A,#0FH;不是00H,取低4位(節(jié)拍碼)</p><p> MOV R2,A;將節(jié)拍碼存入R2中</p><p> MOV A,R1;將取到的簡譜碼再放入A</p><p> SWAP A;高低4位交換</p><p> A
52、NL A,#0FH;取低4位(唱名碼)</p><p> JNZ SING3;唱名碼不是00H,轉移</p><p> CLR TR1;唱名碼是00H,則不發(fā)音</p><p> SJMP WY3;轉移至WY3</p><p> SING3:DEC A;唱名碼減1</p><p> MO
53、V 50H,A;唱名碼存入50H</p><p><b> RL A;乘2</b></p><p> MOV DPTR, #TABLE2</p><p> MOVC A,@A+DPTR;到表格TABLE2取計數值高8位</p><p> MOV TH1, A;計數值高8位存入TH1</p&
54、gt;<p> MOV 51H, A;計數值高8位存入51H</p><p> MOV A, 50H;將取到的唱名碼再放入A</p><p><b> RL A;乘2</b></p><p> INC A;唱名碼加1</p><p> MOVC A,@A+DPTR;到表格TAB
55、LE2取計數值低8位</p><p> MOV TL1, A;計數值低8位存入TL1</p><p> MOV 52H, A;計數值低8位存入52H</p><p> SETB TR1;啟動T1</p><p> WY3:LCALL DELAY;調用基本單位時間(1/4拍)</p><p>
56、 INC 40H;簡譜碼指針加1</p><p> SJMP LOOP23;取下一個簡譜碼</p><p> FINISH3: CLR TR1;停止T1</p><p><b> LJMP MAIN</b></p><p> TAB3:DB 82H,62H,64H;簡譜碼表</p>&
57、lt;p> DB 72H,52H,54H</p><p> DB 42H,52H,62H,72H</p><p> DB 82H,82H,84H</p><p> DB 82H,62H,64H</p><p> DB 72H,52H,54H</p><p> DB 42H,62H,82
58、H,82H</p><p> DB 64H,04H</p><p> DB 52H,52H,52H,52H</p><p> DB 52H,62H,74H</p><p> DB 62H,62H,62H,62H</p><p> DB 62H,72H,84H</p><p
59、> DB 82H,62H,64H</p><p> DB 72H,52H,54H</p><p> DB 42H,62H,82H,82H</p><p> DB 44H,04H</p><p><b> DB 00H</b></p><p> ;;;;;;;;;
60、;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> GQ4: </b></p><p> MOV SP,#30H</p><p> MOV
61、TMOD,#10H;設T1工作方式1</p><p> MOV IE,#88H;允許中斷</p><p> LOOP14:MOV 40H,#00H;簡譜碼指針清0</p><p> LOOP24:MOV A, 40H;簡譜碼指針放入A</p><p> MOV DPTR, #TAB4</p><p&g
62、t; MOVC A,@A+DPTR;到表格TAB4中取簡譜碼</p><p> MOV R1,A;取到的簡譜碼暫存于R1</p><p> JZ FINISH4;簡譜碼是00H(結束碼),轉移</p><p> ANL A,#0FH;不是00H,取低4位(節(jié)拍碼)</p><p> MOV R2,A;將節(jié)拍碼存入R2中&l
63、t;/p><p> MOV A,R1;將取到的簡譜碼再放入A</p><p> SWAP A;高低4位交換</p><p> ANL A,#0FH;取低4位(唱名碼)</p><p> JNZ SING4;唱名碼不是00H,轉移</p><p> CLR TR1;唱名碼是00H,則不發(fā)音</
64、p><p> SJMP WY4;轉移至WY4</p><p> SING4:DEC A;唱名碼減1</p><p> MOV 50H,A;唱名碼存入50H</p><p><b> RL A;乘2</b></p><p> MOV DPTR, #TABLE2</p&
65、gt;<p> MOVC A,@A+DPTR;到表格TABLE2取計數值高8位</p><p> MOV TH1, A;計數值高8位存入TH1</p><p> MOV 51H, A;計數值高8位存入51H</p><p> MOV A, 50H;將取到的唱名碼再放入A</p><p><b>
66、 RL A;乘2</b></p><p> INC A;唱名碼加1</p><p> MOVC A,@A+DPTR;到表格TABLE2取計數值低8位</p><p> MOV TL1, A;計數值低8位存入TL1</p><p> MOV 52H, A;計數值低8位存入52H</p>
67、<p> SETB TR1;啟動T1</p><p> WY4:LCALL DELAY;調用基本單位時間(1/4拍)</p><p> INC 40H;簡譜碼指針加1</p><p> SJMP LOOP24;取下一個簡譜碼</p><p> FINISH4:CLR TR1;停止T1</p>
68、<p><b> LJMP MAIN</b></p><p> TAB4:DB 42H,42H,44H,14H;簡譜碼表</p><p> DB 62H,62H,64H,44H</p><p> DB 42H,62H,84H,84H</p><p> DB 72H,62H,54H,04H
69、</p><p> DB 52H,62H,74H,74H</p><p> DB 62H,52H,64H,44H</p><p> DB 42H,62H,54H,14H</p><p> DB 32H,52H,44H,04H</p><p><b> DB </b>&
70、lt;/p><p><b> DB </b></p><p><b> DB </b></p><p><b> DB </b></p><p><b> DB </b></p><p><b> DB
71、 </b></p><p><b> DB </b></p><p><b> DB </b></p><p><b> DB 00H</b></p><p> TABLE2:DW 0FD82H,0FDC8H,0FE06H ;唱名碼表<
72、/p><p> DW 0FE22H,0FE56H,0FE85H</p><p> DW 0FE9AH,0FEB2H,0FEE4H</p><p> DW 0FF03H,0FF11H,0FF2BH</p><p> DW 0FF42H,0FF4DH,0FF61H</p><p> DELAY:MOV R4
73、,#250;延時187ms的循環(huán)次數</p><p> LP1:MOV R5,#0;延時0.935ms的循環(huán)次數</p><p> DJNZ R5,$</p><p> DJNZ R4,LP1</p><p> DJNZ R2,DELAY;節(jié)拍數未到,轉移</p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計--音樂盒
- 音樂盒單片機課程設計
- 單片機音樂盒課程設計
- 單片機音樂盒課程設計
- 單片機課程設計報告 音樂盒設計
- 單片機課程設計---數字音樂盒
- 單片機課程設計--- 數字音樂盒
- 基于51單片機音樂盒課程設計
- 單片機原理課程設計---音樂盒的設計
- 單片機課程設計-數字音樂盒設計
- 電子音樂盒(單片機課程設計)
- 電子音樂盒(單片機課程設計)
- 單片機課程設計--基于單片機的數字音樂盒
- 單片機課程設計-基于單片機的數字音樂盒設計
- 電子音樂盒單片機課程設計
- 單片機音樂盒設計
- 課程設計-基于單片機的音樂盒的設計
- 單片機課程設計《數字音樂盒的設計》
- 單片機課程設計--數字音樂盒的設計
- 單片機課程設計---電子音樂盒的設計
評論
0/150
提交評論