2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  《硬件課程設(shè)計》</b></p><p>  課題名稱 可存儲式電子琴</p><p><b>  院(系) </b></p><p><b>  班 級 </b></p><p><b>  學(xué) 號 </b>

2、;</p><p><b>  姓 名 </b></p><p><b>  摘要</b></p><p>  關(guān)鍵詞:可存儲式電子琴;8255;8253;門控信號:匯編語言程序設(shè)計</p><p>  此次硬件課程設(shè)計是利用微機原理與接口技術(shù)課程中所學(xué)8253,8255芯片,設(shè)計可存儲式電

3、子琴。在匯編語言環(huán)境下,利用上述兩種芯片,編程讓8255通過識別鍵盤鍵值,8253識別發(fā)聲從而實現(xiàn)計算機按照的不同而發(fā)出不同頻率的聲音。我們利用學(xué)習(xí)的微機原理與接口技術(shù)這門課程課上我們學(xué)到的一些計算機硬件工作的基本原理,匯編語言程序設(shè)計方法,微型計算機接口技術(shù)建立了微型計算機系統(tǒng)的整體概念,初步形成了微機系統(tǒng)軟硬件開發(fā)的能力??纱鎯κ诫娮忧倌軌?qū)崿F(xiàn)彈奏、演奏的功能,當按下彈奏鍵時,實現(xiàn)彈奏功能,發(fā)出音符對應(yīng)頻率的聲音,按下彈奏鍵時,實現(xiàn)

4、演奏功能,播放預(yù)存音樂,按下指定的音調(diào)選擇按鍵后,選擇低音,中音或者高音,則分別用低音,中音或者高音進行彈奏或演奏??纱鎯κ诫娮忧倏捎糜谠O(shè)計小型發(fā)聲玩具,由于本電子琴設(shè)計簡單,稍加修改便可用于其它地方,如報警防盜部件,音樂門鈴等,具有一定的商業(yè)價值。</p><p><b>  目錄</b></p><p>  1 設(shè)計任務(wù)與要求-------------------

5、------------------------------1</p><p>  1.1選題報告---------------------------------------------------1</p><p>  1.2提出問題----------------------------------------------------1</p><p>  1

6、.3 設(shè)計思想---------------------------------------------------1</p><p>  2 需求分析-------------------------------------------------------1</p><p>  3 硬件方案-----------------------------------------------

7、--------2</p><p>  3.1設(shè)備器材----------------------------------------------------2</p><p>  3.2硬件的選擇以及芯片說明--------------------------------------2</p><p>  3.2.1硬件選擇--------------------

8、----------------------------2</p><p>  3.2.2可編程計數(shù)器/定時器8253---------------------------------2</p><p>  3.2.3可編程外圍接口芯片8255----------------------------------3</p><p>  3.3硬件電路---------

9、--------------------------------------------4</p><p>  3.4實驗連線圖---------------------------------------------------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ù)定音樂子程序流程----------------------------------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鍵盤檢測子程序流程圖------------------------------------10</p><p>  5 源程序清單和注釋--

14、---------------------------------------------11</p><p>  6 運行結(jié)果-------------------------------------------------------17</p><p>  7 問題分析與解決方案---------------------------------------------18</p

15、><p>  7.1實驗設(shè)計前的問題與解決方案----------------------------------18</p><p>  7.2實驗過程中的問題與解決方案---------------------------------18</p><p>  8 結(jié)論與體會-----------------------------------------------

16、-------18</p><p>  8.1結(jié)論-------------------------------------------------------18</p><p>  8.2體會-------------------------------------------------------19</p><p>  參考文 --------------

17、------------------------------------------19</p><p><b>  1設(shè)計任務(wù)與要求</b></p><p><b>  1.1選題報告</b></p><p>  此次硬件課程選題為可存儲式電子琴。在微機原理與接口技術(shù)這門課程課上,學(xué)到了一些計算機硬件工作的基本原理,匯編

18、語言程序設(shè)計方法,微型計算機接口技術(shù)等,建立了微型計算機系統(tǒng)的整體概念,初步形成了微機系統(tǒng)軟硬件開發(fā)的能力。這是一個很好的課題,實現(xiàn)這一課題的過程中充滿趣味性,并且這一課題具有一定難度,實現(xiàn)起來很有挑戰(zhàn)性。</p><p><b>  1.2提出問題</b></p><p>  問題一:如何產(chǎn)生聲音?</p><p>  問題二:如何發(fā)出不同頻

19、率表的聲音?</p><p>  問題三:如何播放預(yù)定音樂?</p><p>  問題四:如何播放彈奏的音符?</p><p>  問題五:如何發(fā)出不同音階的音?</p><p><b>  1.3設(shè)計思想</b></p><p>  本次硬件課程設(shè)計是要銅鼓給予8255A芯片和8253芯片上的電

20、路設(shè)計和電路接通并通過對它們進行編程,實現(xiàn)一個具有可存儲音樂等功能的電子琴小器件。該器件不僅具有基本的彈奏功能(輸入不同的鍵能發(fā)出不同頻率的聲音即音符),還具有播放預(yù)定音樂,高低中音轉(zhuǎn)換的功能。預(yù)想功能為:按1-8位彈奏功能;按A選擇高音,按B選擇中音,按C選擇低音;按E錄音、D重播剛按下的音符</p><p><b>  2需求分析</b></p><p>  本次

21、硬件課程設(shè)計實驗的任務(wù)和要求是通過居于8255和8253芯片上的電路設(shè)計和電路連接并通過對它們進行編程實現(xiàn)一個電子琴的基本功能的小器件。該器件具有基本的彈奏功能(就是按下不同的鍵就會發(fā)出不同頻率的聲音),并且當還能夠?qū)崿F(xiàn)高低音轉(zhuǎn)換,最終能夠使音準最好,最好是能夠播放一段完整的音樂。</p><p>  電子琴在音樂愛好者群體中,擁有非常寬廣的市場需求;還可用于設(shè)計小型發(fā)聲玩具。由于本電子琴設(shè)計簡單,稍加修改便可用

22、于其它地方,如報警防盜器部件,音樂門鈴等,具有一定的商業(yè)價值。</p><p><b>  3硬件方案</b></p><p><b>  3.1設(shè)備方案</b></p><p>  所用設(shè)備:試驗箱一臺;8253芯片,9255A芯片</p><p>  方案:用試驗箱上的鍵盤數(shù)字對應(yīng)電子琴的8個琴

23、鍵和4個功能鍵;8255A和8253配合構(gòu)成音頻發(fā)聲器。8255A的PC1口施加控制信號給與門用來控制揚聲器的開關(guān)狀態(tài),再利用設(shè)置不用的計數(shù)值,使8254輸出不同頻率的波形,來控制揚聲器的發(fā)聲頻率;8255A門控信號與8253的頻率控制信號經(jīng)與門后驅(qū)動揚聲器發(fā)出各種音頻和音長信息。</p><p>  3.2硬件的選擇以及芯片說明</p><p>  3.2.1硬件選擇:</p>

24、;<p>  8255和8254芯片,4*4鍵盤,喇叭單元。</p><p>  3.2.2可編程計數(shù)器/定時器8253</p><p>  圖3-1 8253的內(nèi)部結(jié)構(gòu)</p><p>  圖3-2 8253的引腳信號</p><p>  本設(shè)計中8253的功能:使用8253的通道0計數(shù)初值的設(shè)置來控制發(fā)音。當某一時刻按下一個

25、鍵的時,可以通過和各鍵的寄存器值比較來判斷按下鍵。每個音階都有一個確定的頻率。計數(shù)初值N=時鐘頻率/音階頻率。</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è)計中8255的功能:使用

26、8255芯片的鍵盤控制器,通過查看寄存器,讀出分別按下不同的鍵時對 應(yīng)的寄存器值。當某一時刻按下一個鍵時,可以通過和各鍵的寄存器值比較來判斷所按下鍵。</p><p>  表3.2鍵盤按鍵對應(yīng)的鍵值</p><p><b>  3.3硬件電路</b></p><p><b>  圖3-4 硬件電路</b></p>

27、;<p><b>  3.4實驗連線圖</b></p><p><b>  圖3-5實驗連線圖</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ù)定音樂子程序流程圖</p><p>  圖4-6播放預(yù)定音樂子程序流程圖</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><p>  圖4-10鍵盤檢測子程序</p><p><b>  5源程序清單和注釋</b></p><p>  ;*******************************; </p><p>  ;* 電子琴實驗 *; </p

32、><p>  ;*******************************; </p><p>  ;此實驗接線如下: </p><p>  ;8254 CLK0接1MHZ時鐘,GATE0接8255的PC1,OUT0接與門輸入端1,CS接280H~287H, </p><p>  ;8255 PC0接與門輸入端2,CS接288H~28FH,

33、</p><p>  ;與門輸出端接 'LB .JD3用跳線端子接好 </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>  ; 離開 離開 高音 中音 低音

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>  ;用于存儲</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><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ù)定音樂《稻香》</p><p><b>  jz music</b></p><p>  cmp al,0edh ;按鍵為E,存儲</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 ;計數(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 ;計數(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 ;計數(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>  ;存儲功能實現(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 ;計數(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、 ;延時子程序</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計時器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 ;寫計數(shù)初值低字節(jié)</p><p><b>  mov al,ah</b></p><p>  out dx,al ;寫計數(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(開揚聲器)</p><p> 

71、 call delay1 ;延時</p><p><b>  mov al,0h</b></p><p>  out dx,al ;置PC1PC0 = 00(關(guān)揚聲器)</p><p><b>  ret</b></p><p>  sound endp</p><p>  

72、music1 proc near ;音樂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 ;計數(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 ;音樂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 ;計數(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、;讀列,查看所有鍵是否均松開</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(各鍵松開)</p><p>  jne wait_o

83、pen</p><p>  ;各鍵均已松開,再查列是否有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 ;無,等待</p><p>  ;有鍵壓下,延時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 ;已松開,轉(zhuǎn)出等待壓鍵</p><p>  ;鍵仍被壓著,確定哪一個鍵被壓著</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>  ;已找到有一行為低電平,對壓鍵的行列值編碼</p><p>  endcode:mov bx,000FH ;建立地址指針,先指向F鍵對應(yīng)的地址</p><p>  in al,dx ;從B

89、口讀入行列號</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、運行結(jié)果</b></p><p>  7問題分析與解決方案</p><p>  7.1實驗設(shè)計前的問題與解決方案</p><p> ?。?)如何產(chǎn)生聲音:由硬件的連接形式可知,揚聲器的開斷是由8255的PC0和PC1以及8253通道0同時控制的,PC0和PC1同時為高電平時,揚聲器開,發(fā)出聲音。</p><p> ?。?)如何發(fā)出

91、不同頻率的聲音:計數(shù)初值N=時鐘頻率/音階頻率,時鐘頻率為1.19318MHZ=1234DCH,可以將相應(yīng)音調(diào)對應(yīng)的時鐘頻率存入內(nèi)存單元,當選擇相應(yīng)的音調(diào)時,計算計數(shù)初值時,采用對應(yīng)的時鐘頻率值。</p><p>  (3)如何讓播放預(yù)定音樂:調(diào)用音樂播放子程序,音樂播放需用到循環(huán)結(jié)構(gòu),首先將計數(shù)器清零,接著計數(shù)器自增1,求得偏移量,然后通過查表的到相應(yīng)的頻率,再計算計數(shù)初值,將計數(shù)初值送人8253計數(shù)通道,調(diào)用

92、發(fā)音子程序,若計數(shù)器的值大于歌曲長度,則返回。</p><p> ?。?)如何回放彈奏的音符:當按鍵為數(shù)字1-8時,選擇彈奏功能,通過對按鍵的判斷,求得其偏移地址,然后通過查表得其相應(yīng)頻率值,再由上述計算計數(shù)初值的方法求得計數(shù)初值,然后將計數(shù)初值送人8253的通道0,最后調(diào)用發(fā)音子程序即實現(xiàn)彈奏功能。</p><p>  (5)如何發(fā)出不同音階的音:揚聲器發(fā)音的頻率是由8253產(chǎn)生方波的頻

93、率決定的,而方波頻率又是由通道的 計數(shù)初值來決定的,因此可以通過改變通道的計數(shù)初值來實現(xiàn)變調(diào)功能。</p><p>  7.2實驗設(shè)計中的問題與解決方案</p><p>  (1)按下按鍵,發(fā)出相應(yīng)頻率的音階,但一直發(fā)聲,無法停下來</p><p>  解決方案:延時一段時間后,給8253的GATE0門輸入0值</p><p> ?。?)由于

94、編寫的源代碼過長,跳轉(zhuǎn)語句JE,不能順利跳轉(zhuǎn)</p><p>  解決方案:利用二次跳轉(zhuǎn),JE先跳轉(zhuǎn)到一個中間標簽,再用JMP跳轉(zhuǎn)</p><p> ?。?)如何實現(xiàn)存儲:建立一個數(shù)組</p><p><b>  8結(jié)論與體會</b></p><p><b>  8.1結(jié)論</b></p>

95、;<p>  這次實驗,我們使用8254、8255A等芯片來實現(xiàn)可存儲式電子琴的以下功能: (1)基本的彈奏功能:輸入不同的鍵(1~8)能發(fā)出不同頻率的聲音即音符。 </p><p>  (2)播放預(yù)定音樂功能:在輸入指定的鍵(D)后,可以播放出預(yù)先指定的音樂。(3)高低音轉(zhuǎn)換功能:按下A鍵,輸出高音;按下B鍵,輸出中音;按下C鍵,輸出低音。</p><p><b>

96、;  8.2體會</b></p><p>  這次課程設(shè)計,我們的題目聽起來不太復(fù)雜,但是實際操作起來,也并不容易,在通過何種方式存放彈奏的音符這個問題上困擾了很久,用什么樣的方法更簡單效果更好,在老師的耐心指導(dǎo)和同學(xué)的細心幫助下,同時自己也查閱了資料的情況下順利解決了。這次設(shè)計,采用總體思想為化總體為部分,部分到最后再合成,便于各個功能的實現(xiàn)。 </p><p>  本次

97、設(shè)計,我收獲很大。我熟悉了課程設(shè)計的過程,并深刻地掌握了微機原理與接口的基本知識。最主要的是我體會到了課程設(shè)計的方法。雖然老師總是對我們講要把整體問題化為部分問題來解決會更容易找出解決方案,但是如果你不去試驗將會永遠不了解。本次試驗就讓我深刻地感悟到這一點。對問題的處理,方法是最重要的。我們不僅完成了任務(wù),也使自己的專業(yè)知識又得到了提升,還考驗了我們的獨立思考的能力。通過這次設(shè)計,我覺得自己對軟硬件結(jié)合有了新的認識,鞏固了原來所學(xué)的知識

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論