版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 《硬件課程設(shè)計(jì)》</b></p><p> 課題名稱(chēng) 可存儲(chǔ)式電子琴</p><p><b> 院(系) </b></p><p><b> 班 級(jí) </b></p><p><b> 學(xué) 號(hào) </b>
2、;</p><p><b> 姓 名 </b></p><p><b> 摘要</b></p><p> 關(guān)鍵詞:可存儲(chǔ)式電子琴;8255;8253;門(mén)控信號(hào):匯編語(yǔ)言程序設(shè)計(jì)</p><p> 此次硬件課程設(shè)計(jì)是利用微機(jī)原理與接口技術(shù)課程中所學(xué)8253,8255芯片,設(shè)計(jì)可存儲(chǔ)式電
3、子琴。在匯編語(yǔ)言環(huán)境下,利用上述兩種芯片,編程讓8255通過(guò)識(shí)別鍵盤(pán)鍵值,8253識(shí)別發(fā)聲從而實(shí)現(xiàn)計(jì)算機(jī)按照的不同而發(fā)出不同頻率的聲音。我們利用學(xué)習(xí)的微機(jī)原理與接口技術(shù)這門(mén)課程課上我們學(xué)到的一些計(jì)算機(jī)硬件工作的基本原理,匯編語(yǔ)言程序設(shè)計(jì)方法,微型計(jì)算機(jī)接口技術(shù)建立了微型計(jì)算機(jī)系統(tǒng)的整體概念,初步形成了微機(jī)系統(tǒng)軟硬件開(kāi)發(fā)的能力??纱鎯?chǔ)式電子琴能夠?qū)崿F(xiàn)彈奏、演奏的功能,當(dāng)按下彈奏鍵時(shí),實(shí)現(xiàn)彈奏功能,發(fā)出音符對(duì)應(yīng)頻率的聲音,按下彈奏鍵時(shí),實(shí)現(xiàn)
4、演奏功能,播放預(yù)存音樂(lè),按下指定的音調(diào)選擇按鍵后,選擇低音,中音或者高音,則分別用低音,中音或者高音進(jìn)行彈奏或演奏??纱鎯?chǔ)式電子琴可用于設(shè)計(jì)小型發(fā)聲玩具,由于本電子琴設(shè)計(jì)簡(jiǎn)單,稍加修改便可用于其它地方,如報(bào)警防盜部件,音樂(lè)門(mén)鈴等,具有一定的商業(yè)價(jià)值。</p><p><b> 目錄</b></p><p> 1 設(shè)計(jì)任務(wù)與要求-------------------
5、------------------------------1</p><p> 1.1選題報(bào)告---------------------------------------------------1</p><p> 1.2提出問(wèn)題----------------------------------------------------1</p><p> 1
6、.3 設(shè)計(jì)思想---------------------------------------------------1</p><p> 2 需求分析-------------------------------------------------------1</p><p> 3 硬件方案-----------------------------------------------
7、--------2</p><p> 3.1設(shè)備器材----------------------------------------------------2</p><p> 3.2硬件的選擇以及芯片說(shuō)明--------------------------------------2</p><p> 3.2.1硬件選擇--------------------
8、----------------------------2</p><p> 3.2.2可編程計(jì)數(shù)器/定時(shí)器8253---------------------------------2</p><p> 3.2.3可編程外圍接口芯片8255----------------------------------3</p><p> 3.3硬件電路---------
9、--------------------------------------------4</p><p> 3.4實(shí)驗(yàn)連線(xiàn)圖---------------------------------------------------4</p><p> 4 軟件方案--------------------------------------------------------5</p
10、><p> 4.1功能模塊----------------------------------------------------5</p><p> 4.2系統(tǒng)各模塊程序流程圖 --------------------------------------5</p><p> 4.2.1主程序流程圖--------------------------------
11、------------5</p><p> 4.2.2高音子程序流程圖----------------------------------------6</p><p> 4.2.3中音子程序流程圖----------------------------------------7</p><p> 4.2.4低音子程序流程圖-----------------
12、-----------------------8</p><p> 4.2.5播放預(yù)定音樂(lè)子程序流程----------------------------------8</p><p> 4.2.6彈奏子程序流程圖----------------------------------------9</p><p> 4.2.7發(fā)音子程序流程圖---------
13、-------------------------------9</p><p> 4.2.8錄音子程序流程圖----------------------------------------9</p><p> 4.2.9鍵盤(pán)檢測(cè)子程序流程圖------------------------------------10</p><p> 5 源程序清單和注釋--
14、---------------------------------------------11</p><p> 6 運(yùn)行結(jié)果-------------------------------------------------------17</p><p> 7 問(wèn)題分析與解決方案---------------------------------------------18</p
15、><p> 7.1實(shí)驗(yàn)設(shè)計(jì)前的問(wèn)題與解決方案----------------------------------18</p><p> 7.2實(shí)驗(yàn)過(guò)程中的問(wèn)題與解決方案---------------------------------18</p><p> 8 結(jié)論與體會(huì)-----------------------------------------------
16、-------18</p><p> 8.1結(jié)論-------------------------------------------------------18</p><p> 8.2體會(huì)-------------------------------------------------------19</p><p> 參考文 --------------
17、------------------------------------------19</p><p><b> 1設(shè)計(jì)任務(wù)與要求</b></p><p><b> 1.1選題報(bào)告</b></p><p> 此次硬件課程選題為可存儲(chǔ)式電子琴。在微機(jī)原理與接口技術(shù)這門(mén)課程課上,學(xué)到了一些計(jì)算機(jī)硬件工作的基本原理,匯編
18、語(yǔ)言程序設(shè)計(jì)方法,微型計(jì)算機(jī)接口技術(shù)等,建立了微型計(jì)算機(jī)系統(tǒng)的整體概念,初步形成了微機(jī)系統(tǒng)軟硬件開(kāi)發(fā)的能力。這是一個(gè)很好的課題,實(shí)現(xiàn)這一課題的過(guò)程中充滿(mǎn)趣味性,并且這一課題具有一定難度,實(shí)現(xiàn)起來(lái)很有挑戰(zhàn)性。</p><p><b> 1.2提出問(wèn)題</b></p><p> 問(wèn)題一:如何產(chǎn)生聲音?</p><p> 問(wèn)題二:如何發(fā)出不同頻
19、率表的聲音?</p><p> 問(wèn)題三:如何播放預(yù)定音樂(lè)?</p><p> 問(wèn)題四:如何播放彈奏的音符?</p><p> 問(wèn)題五:如何發(fā)出不同音階的音?</p><p><b> 1.3設(shè)計(jì)思想</b></p><p> 本次硬件課程設(shè)計(jì)是要銅鼓給予8255A芯片和8253芯片上的電
20、路設(shè)計(jì)和電路接通并通過(guò)對(duì)它們進(jìn)行編程,實(shí)現(xiàn)一個(gè)具有可存儲(chǔ)音樂(lè)等功能的電子琴小器件。該器件不僅具有基本的彈奏功能(輸入不同的鍵能發(fā)出不同頻率的聲音即音符),還具有播放預(yù)定音樂(lè),高低中音轉(zhuǎn)換的功能。預(yù)想功能為:按1-8位彈奏功能;按A選擇高音,按B選擇中音,按C選擇低音;按E錄音、D重播剛按下的音符</p><p><b> 2需求分析</b></p><p> 本次
21、硬件課程設(shè)計(jì)實(shí)驗(yàn)的任務(wù)和要求是通過(guò)居于8255和8253芯片上的電路設(shè)計(jì)和電路連接并通過(guò)對(duì)它們進(jìn)行編程實(shí)現(xiàn)一個(gè)電子琴的基本功能的小器件。該器件具有基本的彈奏功能(就是按下不同的鍵就會(huì)發(fā)出不同頻率的聲音),并且當(dāng)還能夠?qū)崿F(xiàn)高低音轉(zhuǎn)換,最終能夠使音準(zhǔn)最好,最好是能夠播放一段完整的音樂(lè)。</p><p> 電子琴在音樂(lè)愛(ài)好者群體中,擁有非常寬廣的市場(chǎng)需求;還可用于設(shè)計(jì)小型發(fā)聲玩具。由于本電子琴設(shè)計(jì)簡(jiǎn)單,稍加修改便可用
22、于其它地方,如報(bào)警防盜器部件,音樂(lè)門(mén)鈴等,具有一定的商業(yè)價(jià)值。</p><p><b> 3硬件方案</b></p><p><b> 3.1設(shè)備方案</b></p><p> 所用設(shè)備:試驗(yàn)箱一臺(tái);8253芯片,9255A芯片</p><p> 方案:用試驗(yàn)箱上的鍵盤(pán)數(shù)字對(duì)應(yīng)電子琴的8個(gè)琴
23、鍵和4個(gè)功能鍵;8255A和8253配合構(gòu)成音頻發(fā)聲器。8255A的PC1口施加控制信號(hào)給與門(mén)用來(lái)控制揚(yáng)聲器的開(kāi)關(guān)狀態(tài),再利用設(shè)置不用的計(jì)數(shù)值,使8254輸出不同頻率的波形,來(lái)控制揚(yáng)聲器的發(fā)聲頻率;8255A門(mén)控信號(hào)與8253的頻率控制信號(hào)經(jīng)與門(mén)后驅(qū)動(dòng)揚(yáng)聲器發(fā)出各種音頻和音長(zhǎng)信息。</p><p> 3.2硬件的選擇以及芯片說(shuō)明</p><p> 3.2.1硬件選擇:</p>
24、;<p> 8255和8254芯片,4*4鍵盤(pán),喇叭單元。</p><p> 3.2.2可編程計(jì)數(shù)器/定時(shí)器8253</p><p> 圖3-1 8253的內(nèi)部結(jié)構(gòu)</p><p> 圖3-2 8253的引腳信號(hào)</p><p> 本設(shè)計(jì)中8253的功能:使用8253的通道0計(jì)數(shù)初值的設(shè)置來(lái)控制發(fā)音。當(dāng)某一時(shí)刻按下一個(gè)
25、鍵的時(shí),可以通過(guò)和各鍵的寄存器值比較來(lái)判斷按下鍵。每個(gè)音階都有一個(gè)確定的頻率。計(jì)數(shù)初值N=時(shí)鐘頻率/音階頻率。</p><p><b> 表3.1音符頻率表</b></p><p> 3.2.3可編程外圍接口芯片8255</p><p> 圖3-3 8255內(nèi)部結(jié)構(gòu)</p><p> 本設(shè)計(jì)中8255的功能:使用
26、8255芯片的鍵盤(pán)控制器,通過(guò)查看寄存器,讀出分別按下不同的鍵時(shí)對(duì) 應(yīng)的寄存器值。當(dāng)某一時(shí)刻按下一個(gè)鍵時(shí),可以通過(guò)和各鍵的寄存器值比較來(lái)判斷所按下鍵。</p><p> 表3.2鍵盤(pán)按鍵對(duì)應(yīng)的鍵值</p><p><b> 3.3硬件電路</b></p><p><b> 圖3-4 硬件電路</b></p>
27、;<p><b> 3.4實(shí)驗(yàn)連線(xiàn)圖</b></p><p><b> 圖3-5實(shí)驗(yàn)連線(xiàn)圖</b></p><p><b> 4軟件模塊</b></p><p><b> 4.1功能模塊</b></p><p><b>
28、 圖4-1功能模塊圖</b></p><p> 4.2系統(tǒng)各模塊程序流程圖</p><p> 4.2.1主程序流程圖</p><p> 圖4-2主程序流程圖</p><p> 4.2.2高音子程序流程圖</p><p> 圖4-3高音子程序流程圖</p><p> 4.2
29、.3中音子程序流程圖</p><p> 圖4-4中音子程序流程圖</p><p> 4.2.4低音子程序流程圖 </p><p> 圖4-5低音子程序流程圖</p><p> 4.2.5播放預(yù)定音樂(lè)子程序流程圖</p><p> 圖4-6播放預(yù)定音樂(lè)子程序流程圖</p>
30、<p> 4.2.6彈奏子程序流程圖</p><p> 圖4-7彈奏子程序流程圖</p><p> 4.2.7發(fā)音子程序流程圖</p><p> 圖4-8發(fā)音子程序流程圖</p><p> 4.2.8錄音子程序流程圖</p><p> 圖4-9錄音子程序流程圖</p><p&g
31、t; 4.2.9鍵盤(pán)檢測(cè)子程序流程圖</p><p> 圖4-10鍵盤(pán)檢測(cè)子程序</p><p><b> 5源程序清單和注釋</b></p><p> ;*******************************; </p><p> ;* 電子琴實(shí)驗(yàn) *; </p
32、><p> ;*******************************; </p><p> ;此實(shí)驗(yàn)接線(xiàn)如下: </p><p> ;8254 CLK0接1MHZ時(shí)鐘,GATE0接8255的PC1,OUT0接與門(mén)輸入端1,CS接280H~287H, </p><p> ;8255 PC0接與門(mén)輸入端2,CS接288H~28FH,
33、</p><p> ;與門(mén)輸出端接 'LB .JD3用跳線(xiàn)端子接好 </p><p> data segment</p><p> io8253a equ 280h</p><p> io8253ctr equ 283h</p><p> port_A equ 288h</p>&l
34、t;p> port_B equ 289h</p><p> port_C equ 28ah</p><p> port_ctrl equ 28bh </p><p> ; 0 1 2 3 4 5 6 7</p><p> ; do re
35、 mi fa so la si do</p><p> table db 77H, 7BH, 7DH, 7EH, 0B7H,0BBH,0BDH,0BEH</p><p> ; 8 9 A B C D E F</p><p> ; 離開(kāi) 離開(kāi) 高音 中音 低音
36、小星星 錄音 播放</p><p> db 0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEH</p><p> table_high dw 524,588,660,698,784,880,988,1048;高音頻率</p><p> table_mid dw 262,294,330,347,392,440,494,524;中音頻
37、率</p><p> table_low dw 131,147,165,175,196,220,247,262 ;低音低音頻率</p><p><b> ;稻香</b></p><p> song1 dw 347,392,440, 440,440,440, 440,440,440,440, 440,440,440,440, 330
38、,347,330,294</p><p> dw 294,330,347, 347,347,347,347, 347,347,347,347, 330,347,294,494</p><p> dw 494,294,294,294, 294,294,294, 330,330,330, 294,330,347</p><p> dw 347, 26
39、2,347,347,392</p><p> ;.........................................................</p><p> song_save dw 20 dup(?)</p><p> ;mov dx,song_save</p><p><b> mov bx,0&
40、lt;/b></p><p> mov dx:[bx],ax</p><p> song13 dw 262,262,392,392,440,440,392</p><p> dw 347,347,330,330,294,294,262</p><p> dw 392,392,347,347,330,330,294</p&g
41、t;<p> dw 392,392,347,347,330,330,294</p><p> dw 262,262,392,392,440,440,392</p><p> dw 347,347,330,330,294,294,262</p><p><b> ;用于存儲(chǔ)</b></p><p>
42、 song2 dw 10 dup(0)</p><p><b> data ends</b></p><p><b> ;代碼段</b></p><p> code segment</p><p> assume cs:code, ds:data</p><p>
43、 start:mov si,offset song2</p><p> call skim ;掃描鍵盤(pán)</p><p> cmp al,0ddh ;按鍵為A,轉(zhuǎn)高音子程序</p><p> jz highsound</p><p> cmp al,0deh ;按鍵為B,轉(zhuǎn)中音子程序</p><p> jz m
44、idsound</p><p> cmp al,0ebh ;按鍵為D,播放預(yù)定音樂(lè)《稻香》</p><p><b> jz music</b></p><p> cmp al,0edh ;按鍵為E,存儲(chǔ)</p><p><b> jz memory</b></p><p&
45、gt; cmp al,0eeh ;按鍵為F,播放錄音</p><p> jz memory_music</p><p> cmp al,0e7h ;按鍵為C,轉(zhuǎn)低音子程序</p><p> jz lowsound</p><p> music:call music1</p><p><b> jm
46、p start</b></p><p> leave1:call exit_qin</p><p> highSound:</p><p> begin1:call skim</p><p> next_try1:cmp al,table[bx]</p><p><b> jz sing
47、1</b></p><p> cmp al,0deh</p><p> jz midSound</p><p> cmp al,0e7h</p><p> jz lowSound</p><p> cmp al,0ebh</p><p><b> jz musi
48、c</b></p><p> cmp al,0edh</p><p><b> jz memory</b></p><p><b> dec bx</b></p><p> jns next_try1</p><p> sing1:mov al,bl&l
49、t;/p><p> shl al,1 ;轉(zhuǎn)為查表偏移量</p><p> mov bl,al ;保存偏移到bx</p><p><b> mov bh,0</b></p><p> mov ax,4240H ;計(jì)數(shù)初值 = 1000000 / 頻率, </p><p> mov dx,0FH
50、</p><p> div word ptr[table_high+bx]</p><p><b> mov bx,ax</b></p><p> call sound</p><p> jmp begin1</p><p> memory:call mem</p><
51、;p> memory_music:call mem_memory</p><p><b> midSound:</b></p><p> begin2: call skim</p><p> next_try2:cmp al, table[bx]</p><p><b> jz sing2<
52、;/b></p><p> cmp al,0ddh</p><p> jz highSound</p><p> cmp al,0e7h</p><p> jz lowSound</p><p> cmp al,0ebh</p><p><b> jz music&l
53、t;/b></p><p> cmp al,0edh</p><p><b> jz memory</b></p><p><b> dec bx</b></p><p> jns next_try2</p><p> sing2:mov al,bl</
54、p><p> shl al,1 ;轉(zhuǎn)為查表偏移量</p><p> mov bl,al ;保存偏移到bx</p><p><b> mov bh,0</b></p><p> mov ax,4240H ;計(jì)數(shù)初值 = 1000000 / 頻率, 保存到AX </p><p> mov dx,
55、0FH</p><p> div word ptr[table_mid+bx]</p><p><b> mov bx,ax</b></p><p> call sound</p><p> jmp begin2</p><p><b> lowSound:</b>
56、</p><p> begin3: call skim</p><p> next_try3:cmp al, table[bx]</p><p><b> jz sing3</b></p><p> cmp al,0ddh</p><p> jz highSound</p>
57、<p> cmp al,0deh</p><p> jz midSound</p><p> cmp al,0edh</p><p><b> jz memory</b></p><p><b> dec bx</b></p><p> jns nex
58、t_try3</p><p> sing3:mov al,bl</p><p> shl al,1 ;轉(zhuǎn)為查表偏移量</p><p> mov bl,al ;保存偏移到bx</p><p><b> mov bh,0</b></p><p> mov ax,4240H ;計(jì)數(shù)初值 = 1
59、000000 / 頻率,</p><p> mov dx,0FH</p><p> div word ptr[table_low+bx]</p><p><b> mov bx,ax</b></p><p> call sound</p><p> jmp begin3</p>
60、;<p><b> ;存儲(chǔ)功能實(shí)現(xiàn)</b></p><p> mem proc near</p><p> begin4:call skim</p><p> next_try4:</p><p> cmp al,0eeh ;按鍵為F,播放錄音</p><p> jz m
61、emory_music</p><p> cmp al,table[bx]</p><p><b> jz sing4</b></p><p><b> dec bx</b></p><p> jns next_try4</p><p> sing4:mov al,
62、bl</p><p> shl al,1 ;轉(zhuǎn)為查表偏移量</p><p> mov bl,al ;保存偏移到bx</p><p><b> mov bh,0</b></p><p> mov ax,[table_mid+bx]</p><p> mov [si],ax</p>
63、;<p><b> inc si</b></p><p><b> inc si</b></p><p> mov ax,4240H ;計(jì)數(shù)初值 = 1000000 / 頻率, 保存到AX </p><p> mov dx,0FH</p><p> div word ptr
64、[table_mid+bx]</p><p><b> mov bx,ax</b></p><p> call sound</p><p> jmp begin4</p><p><b> mem endp</b></p><p> delay1 proc near
65、 ;延時(shí)子程序</p><p><b> push cx</b></p><p><b> push ax</b></p><p><b> mov ax,40</b></p><p> loop1: mov cx,0ffffh</p><p>
66、 loop2: dec cx</p><p><b> jnz loop2</b></p><p><b> dec ax</b></p><p><b> jnz loop1</b></p><p><b> pop ax</b></p&
67、gt;<p><b> pop cx</b></p><p><b> ;保存到AX</b></p><p><b> ret</b></p><p> delay1 endp</p><p> sound proc near ;發(fā)音子程序</p&
68、gt;<p> mov dx,io8253ctr ;8253初始化設(shè)置8253計(jì)時(shí)器0方式3</p><p> mov al,00110110B</p><p><b> out dx,al</b></p><p> mov dx,io8253a</p><p><b> mov ax,
69、bx</b></p><p> out dx,al ;寫(xiě)計(jì)數(shù)初值低字節(jié)</p><p><b> mov al,ah</b></p><p> out dx,al ;寫(xiě)計(jì)數(shù)初值高字節(jié)</p><p> mov dx,port_ctrl ;8255初始化,設(shè)置8255 C口輸出</p>&
70、lt;p> mov al,10000000B</p><p><b> out dx,al</b></p><p> mov dx,port_C</p><p> mov al,03h</p><p> out dx,al ;置PC1PC0 = 11(開(kāi)揚(yáng)聲器)</p><p>
71、 call delay1 ;延時(shí)</p><p><b> mov al,0h</b></p><p> out dx,al ;置PC1PC0 = 00(關(guān)揚(yáng)聲器)</p><p><b> ret</b></p><p> sound endp</p><p>
72、music1 proc near ;音樂(lè)1播放子程序</p><p><b> mov cl,0</b></p><p> ad1:inc cl</p><p> cmp cl,15 ;primary 15</p><p> je return1</p><p> mov al,cl
73、 </p><p> sub al,1 ;取偏移量</p><p><b> shl al,1</b></p><p> mov bl,al ;保存偏移量</p><p><b> mov bh,0</b></p><p> mov ax,4240H ;計(jì)數(shù)初值
74、 = 1000000 / 頻率, 保存到AX 4240</p><p> mov dx,0FH</p><p> div word ptr[song13+bx];primary song1+bx</p><p><b> mov bx,ax</b></p><p> call sound</p>&
75、lt;p><b> jmp ad1</b></p><p> return1:ret</p><p> music1 endp</p><p> mem_memory proc near ;音樂(lè)1播放子程序</p><p><b> mov cl,0</b></p>&
76、lt;p> ad2:inc cl</p><p><b> cmp cl,15</b></p><p> je return2</p><p> mov al,cl </p><p> sub al,1 ;取偏移量</p><p><b> shl al,1&l
77、t;/b></p><p> mov bl,al ;保存偏移量</p><p><b> mov bh,0</b></p><p> mov ax,4240H ;計(jì)數(shù)初值 = 1000000 / 頻率, 保存到AX</p><p> mov dx,0FH</p><p> div
78、word ptr[song2+bx]</p><p><b> mov bx,ax</b></p><p> call sound</p><p><b> jmp ad2</b></p><p> return2:ret</p><p> mem_memory e
79、ndp</p><p> exit_qin proc near</p><p> mov ax,4c00h</p><p> exit_qin endp</p><p> skim proc near</p><p> mov ax,data</p><p><b> mo
80、v ds,ax</b></p><p> ;初始化8255A,方式0,A口作輸出,B口和C口作輸入</p><p> mov dx,port_ctrl</p><p><b> ;指向控制口</b></p><p> mov al,10000010B ;控制字</p><p>
81、<b> out dx,al</b></p><p><b> ;向所有行輸0</b></p><p> mov dx,port_a</p><p> mov al,00H</p><p> out dx,al ;向A口各位輸出0</p><p>
82、;讀列,查看所有鍵是否均松開(kāi)</p><p> mov dx,port_b</p><p> wait_open:IN al,dx</p><p> and al,0FH ;只查低4位(列值)</p><p> cmp al,0FH ;是否都為1(各鍵松開(kāi))</p><p> jne wait_o
83、pen</p><p> ;各鍵均已松開(kāi),再查列是否有0,即是否有鍵壓下</p><p> wait_pres:in al,dx ;讀B口</p><p> and al,0FH ;只查低四位</p><p> cmp al,0FH ;是否有鍵壓下</p><p> je wait_pr
84、es ;無(wú),等待</p><p> ;有鍵壓下,延時(shí)20ms,消除等待</p><p> mov cx,16EAH</p><p> delay:loop delay</p><p> ;再查列,看鍵是否仍被壓著</p><p><b> in al,dx</b></p>
85、<p> and al,0FH</p><p> cmp al,0FH</p><p> je wait_pres ;已松開(kāi),轉(zhuǎn)出等待壓鍵</p><p> ;鍵仍被壓著,確定哪一個(gè)鍵被壓著</p><p> mov al,0FEH ;先使D0=0</p><p>
86、 mov cl,al ;cl=11111110B</p><p> next_row:mov dx,port_a</p><p> out dx,al ;向一行輸出低電平</p><p> mov dx,port_b;</p><p> in al,dx ;讀入B口狀態(tài)</p&g
87、t;<p> and al,0FH ;只截取列值</p><p> cmp al,0FH ;是否均為1</p><p> jne endcode ;否,表示有鍵壓下,轉(zhuǎn)去編碼</p><p> rol cl,01 ;均為1,使下行輸出0</p><p><b>
88、 mov al,cl</b></p><p> jmp next_row ;查看下行</p><p> ;已找到有一行為低電平,對(duì)壓鍵的行列值編碼</p><p> endcode:mov bx,000FH ;建立地址指針,先指向F鍵對(duì)應(yīng)的地址</p><p> in al,dx ;從B
89、口讀入行列號(hào)</p><p><b> ret</b></p><p><b> skim endp</b></p><p><b> code ends</b></p><p> end start </p><p><b> 6
90、運(yùn)行結(jié)果</b></p><p> 7問(wèn)題分析與解決方案</p><p> 7.1實(shí)驗(yàn)設(shè)計(jì)前的問(wèn)題與解決方案</p><p> ?。?)如何產(chǎn)生聲音:由硬件的連接形式可知,揚(yáng)聲器的開(kāi)斷是由8255的PC0和PC1以及8253通道0同時(shí)控制的,PC0和PC1同時(shí)為高電平時(shí),揚(yáng)聲器開(kāi),發(fā)出聲音。</p><p> (2)如何發(fā)出
91、不同頻率的聲音:計(jì)數(shù)初值N=時(shí)鐘頻率/音階頻率,時(shí)鐘頻率為1.19318MHZ=1234DCH,可以將相應(yīng)音調(diào)對(duì)應(yīng)的時(shí)鐘頻率存入內(nèi)存單元,當(dāng)選擇相應(yīng)的音調(diào)時(shí),計(jì)算計(jì)數(shù)初值時(shí),采用對(duì)應(yīng)的時(shí)鐘頻率值。</p><p> (3)如何讓播放預(yù)定音樂(lè):調(diào)用音樂(lè)播放子程序,音樂(lè)播放需用到循環(huán)結(jié)構(gòu),首先將計(jì)數(shù)器清零,接著計(jì)數(shù)器自增1,求得偏移量,然后通過(guò)查表的到相應(yīng)的頻率,再計(jì)算計(jì)數(shù)初值,將計(jì)數(shù)初值送人8253計(jì)數(shù)通道,調(diào)用
92、發(fā)音子程序,若計(jì)數(shù)器的值大于歌曲長(zhǎng)度,則返回。</p><p> ?。?)如何回放彈奏的音符:當(dāng)按鍵為數(shù)字1-8時(shí),選擇彈奏功能,通過(guò)對(duì)按鍵的判斷,求得其偏移地址,然后通過(guò)查表得其相應(yīng)頻率值,再由上述計(jì)算計(jì)數(shù)初值的方法求得計(jì)數(shù)初值,然后將計(jì)數(shù)初值送人8253的通道0,最后調(diào)用發(fā)音子程序即實(shí)現(xiàn)彈奏功能。</p><p> ?。?)如何發(fā)出不同音階的音:揚(yáng)聲器發(fā)音的頻率是由8253產(chǎn)生方波的頻
93、率決定的,而方波頻率又是由通道的 計(jì)數(shù)初值來(lái)決定的,因此可以通過(guò)改變通道的計(jì)數(shù)初值來(lái)實(shí)現(xiàn)變調(diào)功能。</p><p> 7.2實(shí)驗(yàn)設(shè)計(jì)中的問(wèn)題與解決方案</p><p> (1)按下按鍵,發(fā)出相應(yīng)頻率的音階,但一直發(fā)聲,無(wú)法停下來(lái)</p><p> 解決方案:延時(shí)一段時(shí)間后,給8253的GATE0門(mén)輸入0值</p><p> ?。?)由于
94、編寫(xiě)的源代碼過(guò)長(zhǎng),跳轉(zhuǎn)語(yǔ)句JE,不能順利跳轉(zhuǎn)</p><p> 解決方案:利用二次跳轉(zhuǎn),JE先跳轉(zhuǎn)到一個(gè)中間標(biāo)簽,再用JMP跳轉(zhuǎn)</p><p> (3)如何實(shí)現(xiàn)存儲(chǔ):建立一個(gè)數(shù)組</p><p><b> 8結(jié)論與體會(huì)</b></p><p><b> 8.1結(jié)論</b></p>
95、;<p> 這次實(shí)驗(yàn),我們使用8254、8255A等芯片來(lái)實(shí)現(xiàn)可存儲(chǔ)式電子琴的以下功能: (1)基本的彈奏功能:輸入不同的鍵(1~8)能發(fā)出不同頻率的聲音即音符。 </p><p> (2)播放預(yù)定音樂(lè)功能:在輸入指定的鍵(D)后,可以播放出預(yù)先指定的音樂(lè)。(3)高低音轉(zhuǎn)換功能:按下A鍵,輸出高音;按下B鍵,輸出中音;按下C鍵,輸出低音。</p><p><b>
96、; 8.2體會(huì)</b></p><p> 這次課程設(shè)計(jì),我們的題目聽(tīng)起來(lái)不太復(fù)雜,但是實(shí)際操作起來(lái),也并不容易,在通過(guò)何種方式存放彈奏的音符這個(gè)問(wèn)題上困擾了很久,用什么樣的方法更簡(jiǎn)單效果更好,在老師的耐心指導(dǎo)和同學(xué)的細(xì)心幫助下,同時(shí)自己也查閱了資料的情況下順利解決了。這次設(shè)計(jì),采用總體思想為化總體為部分,部分到最后再合成,便于各個(gè)功能的實(shí)現(xiàn)。 </p><p> 本次
97、設(shè)計(jì),我收獲很大。我熟悉了課程設(shè)計(jì)的過(guò)程,并深刻地掌握了微機(jī)原理與接口的基本知識(shí)。最主要的是我體會(huì)到了課程設(shè)計(jì)的方法。雖然老師總是對(duì)我們講要把整體問(wèn)題化為部分問(wèn)題來(lái)解決會(huì)更容易找出解決方案,但是如果你不去試驗(yàn)將會(huì)永遠(yuǎn)不了解。本次試驗(yàn)就讓我深刻地感悟到這一點(diǎn)。對(duì)問(wèn)題的處理,方法是最重要的。我們不僅完成了任務(wù),也使自己的專(zhuān)業(yè)知識(shí)又得到了提升,還考驗(yàn)了我們的獨(dú)立思考的能力。通過(guò)這次設(shè)計(jì),我覺(jué)得自己對(duì)軟硬件結(jié)合有了新的認(rèn)識(shí),鞏固了原來(lái)所學(xué)的知識(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 硬件課程設(shè)計(jì)--可存儲(chǔ)式電子琴
- 硬件課程設(shè)計(jì)-可存儲(chǔ)式電子琴
- 可存儲(chǔ)式電子琴(硬件課程設(shè)計(jì))
- 硬件課程設(shè)計(jì)報(bào)告--可存儲(chǔ)式電子琴
- 硬件課程設(shè)計(jì)報(bào)告--可存儲(chǔ)式電子琴
- 硬件課程設(shè)計(jì)報(bào)告---可存儲(chǔ)式電子琴
- 可存儲(chǔ)式電子琴__中國(guó)礦業(yè)大學(xué)_硬件課程設(shè)計(jì)
- 單片機(jī)電子琴課程設(shè)計(jì)--基于單片機(jī)的可存儲(chǔ)式電子琴設(shè)計(jì)
- 課程設(shè)計(jì)---基于單片機(jī)的可存儲(chǔ)式電子琴設(shè)計(jì)
- 硬件電子琴課程設(shè)計(jì)報(bào)告
- 電子琴課程設(shè)計(jì)
- 課程設(shè)計(jì)--電子琴
- 電子琴課程設(shè)計(jì)
- 計(jì)算機(jī)硬件課程設(shè)計(jì) 電子琴
- 電子琴課程設(shè)計(jì)---電子琴的設(shè)計(jì)與實(shí)現(xiàn)
- 單片機(jī)電子琴課程設(shè)計(jì)--帶存儲(chǔ)播放功能的簡(jiǎn)易電子琴設(shè)計(jì)
- eda課程設(shè)計(jì)硬件電子琴及自動(dòng)演奏
- 微機(jī)課程設(shè)計(jì)電子琴
- 接口課程設(shè)計(jì)電子琴
- 簡(jiǎn)易電子琴課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論