微機原理課程設計---計算機仿真電子琴_第1頁
已閱讀1頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  題目:計算機仿真電子琴</p><p>  一、課程設計的目的與要求</p><p><b>  1、設計目的</b></p><p>  本課程的課程設計是自動化專業(yè)學生學習完《微機原理及應用》課程后,進行的一次以匯編語言為主,硬件設計為輔的綜合訓練。本課程設計的目的在于加深對微機原理基本知識的理解,掌握匯編語言程序設計

2、的基本方法;掌握運用微機原理開發(fā)系統(tǒng)的基本方法。</p><p><b>  2、設計要求</b></p><p>  從課程設計的目的出發(fā),通過設計工作的各個環(huán)節(jié),達到以下要求:</p><p>  掌握匯編語言程序設計的基本方法。</p><p>  進一步理解各種接口電路的應用。例如8255并行接口,8253定時器

3、等。</p><p>  掌握利用PC機揚聲器發(fā)出不同頻率聲音的方法。</p><p><b>  3、主要技術指標</b></p><p><b>  編寫程序</b></p><p>  在程序運行時使PC即成為一架可彈奏的電子琴。當按下數(shù)字鍵1-8時,依次發(fā)出1,2,3,4,5,6,7,I這八

4、個音調(diào)。按下CTRL+C或者回車則退出電子琴狀態(tài)。</p><p>  在程序運行時使PC自動按要求提示演奏樂曲。</p><p>  二、課程設計課題的分析</p><p>  圖1.揚聲器工作原理圖示</p><p>  圖2.主程序工作流程圖</p><p>  圖3.樂曲演奏子程序工作流程圖

5、 圖4.電子琴子程序工作流程圖</p><p>  圖5.揚聲器工作流程圖</p><p><b>  三、課程設計的結果</b></p><p><b>  1、實驗代碼</b></p><p>  DATA SEGMENT</p><p>  INFO1

6、 DB 0AH, 0DH, 'WELCOME YOU TO COME HERE!$' </p><p>  DB 0AH, 0DH, 'THIS IS A MUSIC PROGRAM!$'</p><p>  DB 0AH, 0DH, 'PLEASE SELECLT!$'</p>

7、;<p>  INFO4 DB 0AH, 0DH, 'INPUT ERROR!$'</p><p>  INFO5 DB 0AH, 0DH, 'PLEASE INPUT AGAIN!$'</p><p>  MUSLIST DB 0AH, 0DH, '=========================

8、' </p><p>  DB 0AH, 0DH, 'Press1 HuanLeSong'</p><p>  DB 0AH, 0DH, 'Press2 KaiXin'</p><p>  DB 0AH, 0DH, 'Press3 XiaoBuWuQu'<

9、;/p><p>  DB 0AH, 0DH, 'Press4 Wonderful'</p><p>  DB 0AH, 0DH, 'Press5 SCALE PLAY '</p><p>  DB 0AH, 0DH, 'Press6 EXIT'</p><p>  DB

10、 0AH, 0DH, '========================='</p><p>  DB 0AH, 0DH, '$'</p><p>  MUS_FRQ1 DW 330, 330, 350, 393, 393, 350, 330, 294 </p><p>  DW

11、 262, 262, 294, 330, 330, 294, 294</p><p>  DW 330, 330, 350, 393, 393, 350, 330, 294</p><p>  DW 262, 262, 294, 330, 294, 262, 262</p><p>  DW 294, 294, 330

12、, 262, 294, 330, 350, 330, 262</p><p>  DW 294, 330, 350, 330, 262, 262, 294, 393</p><p>  DW 330, 330, 350, 393, 393, 350, 330, 294</p><p>  DW 262, 262, 2

13、94, 330, 294, 262, 262, -1</p><p>  MUS_TIM1 DW 8 DUP(100) </p><p>  DW 7 DUP(100),200</p><p>  DW 8 DUP(100)</p><p&

14、gt;  DW 7 DUP(100),200</p><p>  DW 5 DUP(100),50,50,2 DUP(100)</p><p>  DW 100,50,50,4 DUP(100),200</p><p>  DW 8 DUP(100)</p><p>  DW 7 DUP(100),200</p>

15、;<p>  MUS_FRQ2 DW 330, 294, 262, 294, 3 DUP(330)</p><p>  DW 3 DUP(294), 330, 392, 392</p><p>  DW 330, 294, 262, 294, 4 DUP(330)</p><p>  DW 294, 294,

16、 330, 294, 262, -1</p><p>  MUS_TIM2 DW 6 DUP(100),200</p><p>  DW 2 DUP(100,100,200)</p><p>  DW 8 DUP(100)</p><p>  DW 4 DUP(100),400</p><p&g

17、t;  MUS_FRQ3 DW 392, 262, 294, 330, 350, 392, 262, 262</p><p>  DW 440, 350, 392, 440, 494, 524, 262, 262</p><p>  DW 350, 392, 350, 330, 294, 330</p><p>

18、;  DW 350, 330, 294, 262, 294, 330, 294, 262, 247, 262,-1</p><p>  MUS_TIM3 DW 200, 4 DUP(100), 200, 200, 200</p><p>  DW 200, 4 DUP(100), 200, 200, 200</p><p&

19、gt;  DW 200, 4 DUP(100), 200</p><p>  DW 4 DUP(100), 200, 4 DUP(100), 400</p><p>  MUS_FRQ4 DW 330, 392, 330, 294, 330, 392, 330, 394, 330</p><p>  DW 330, 392,

20、 330, 294, 262, 294, 330, 392, 294</p><p>  DW 262, 262, 220, 196, 196, 220, 262, 294, 330, 262,-1</p><p>  MUS_TIM4 DW 3 DUP(200), 100, 100, 200, 100, 100, 400</

21、p><p>  DW 2 DUP(200,200,100,100), 400</p><p>  DW 3 DUP(200,100,100), 400</p><p>  TABLE DW 262, 294, 330, 349, 392, 440, 494, 525 </p><p> 

22、 NUMB DB 0AH, 0DH, 'Keyboard number 1~8 keys play notes of the scale' </p><p>  DB 0AH, 0DH, 'Enter or Ctrl+C to exit'</p><p>  DB 0AH, 0DH, '$'</p>

23、<p>  DATA ENDS</p><p>  STACK SEGMENT PARA STACK 'STACK' </p><p>  STA DB 200 DUP('STACK') </p><

24、;p>  STACK ENDS</p><p>  CODE SEGMENT</p><p>  ASSUME DS: DATA, SS: STACK, CS: CODE, ES: DATA</p><p>  START: MOV AX, DATA </p><p>  MO

25、V DS, AX</p><p>  MOV ES, AX</p><p>  MOV AX, STACK </p><p>  MOV SS, AX</p><p>  SHOW MACRO B </p><p>  MOV DX

26、, OFFSET B </p><p>  MOV AH, 09H </p><p><b>  INT 21H</b></p><p><b>  ENDM</b></p><p&g

27、t;  SHOW INFO1 </p><p>  LOP: SHOW MUSLIST </p><p>  MOV AH, 01H </p><p>  INT 21

28、H </p><p>  CMP AL, 36H </p><p>  JZ RETU </p><p>  CMP AL, 31H </p><p><b&g

29、t;  JNZ B0</b></p><p>  CALL MUSIC1</p><p>  JMP EXIT1</p><p>  B0: CMP AL, 32H </p><p><b>  JNZ C0</b></

30、p><p>  CALL MUSIC2</p><p>  JMP EXIT1</p><p>  C0: CMP AL, 33H </p><p><b>  JNZ D0</b></p><p>  CALL

31、 MUSIC3</p><p>  JMP EXIT1</p><p>  D0: CMP AL, 34H </p><p><b>  JNZ E0</b></p><p>  CALL MUSIC4</p>&l

32、t;p>  JMP EXIT1</p><p>  E0: CMP AL, 35H </p><p>  JNZ EXIT</p><p>  SHOW NUMB</p><p>  CALL MUSIC5</p><p>  EXIT1:

33、 SHOW INFO5 </p><p><b>  JMP LOP</b></p><p>  EXIT: SHOW INFO4 </p><p>  SHO

34、W INFO5 </p><p><b>  JMP LOP</b></p><p>  RETU: MOV AX, 4C00H </p><p><b>  INT 2

35、1H</b></p><p>  MUSIC1 PROC </p><p>  LEA SI, MUS_FRQ1</p><p>  LEA BP,DS: MUS_TIM1</p><p>  FREQ1: MOV DI, [

36、SI]</p><p>  CMP DI,-1</p><p>  JE END_MUS1</p><p>  MOV BX, DS: [BP]</p><p>  CALL GENSOUND</p><p>  ADD SI,2</p><p>  ADD BP,2<

37、/p><p>  JMP FREQ1</p><p>  END_MUS1:RET</p><p>  MUSIC1 ENDP</p><p>  MUSIC2 PROC </p><p>  LEA SI, M

38、US_FRQ2</p><p>  LEA BP,DS: MUS_TIM2</p><p>  FREQ2: MOV DI, [SI]</p><p>  CMP DI,-1</p><p>  JE END_MUS2</p><p>  MOV BX, DS: [BP]</p>&l

39、t;p>  CALL GENSOUND</p><p>  ADD SI,2</p><p>  ADD BP,2</p><p>  JMP FREQ2</p><p>  END_MUS2:RET</p><p>  MUSIC2 ENDP</p><p>  MUSI

40、C3 PROC </p><p>  LEA SI, MUS_FRQ3</p><p>  LEA BP,DS: MUS_TIM3</p><p>  FREQ3: MOV DI, [SI]</p><p>  CMP DI,-1<

41、/p><p>  JE END_MUS3</p><p>  MOV BX, DS: [BP]</p><p>  CALL GENSOUND</p><p>  ADD SI,2</p><p>  ADD BP,2</p><p>  JMP FREQ3</p>

42、<p>  END_MUS3:RET</p><p>  MUSIC3 ENDP</p><p>  MUSIC4 PROC </p><p>  LEA SI, MUS_FRQ4</p><p>  LEA BP,DS: MU

43、S_TIM4</p><p>  FREQ4: MOV DI, [SI]</p><p>  CMP DI,-1</p><p>  JE END_MUS4</p><p>  MOV BX, DS: [BP]</p><p>  CALL GENSOUND</p><p> 

44、 ADD SI,2</p><p>  ADD BP,2</p><p>  JMP FREQ4</p><p>  END_MUS4:RET</p><p>  MUSIC4 ENDP</p><p>  MUSIC5 PROC NEAR

45、 </p><p><b>  PUSH AX</b></p><p><b>  PUSH BX</b></p><p><b>  PUSH CX</b></p><p>  LOP5: MOV AH, 01H

46、 </p><p>  INT 21H </p><p>  CMP AL, 0DH </p><p>  JE EXIT5&l

47、t;/p><p>  CMP AL, 31H </p><p>  JB LOP5 </p><p>  CMP AL, 38H</p><p>  JA LOP5

48、 </p><p>  AND AX, 0FH </p><p>  SHL AX, 1 </p><p>  

49、SUB AX, 2 </p><p>  MOV SI, AX</p><p>  MOV BX, OFFSET TABLE</p><p>  MOV DI, [BX][SI] </p>

50、;<p>  MOV BX, 100 </p><p>  CALL GENSOUND </p><p><b>  JMP LOP5</b></p><p>  EXI

51、T5: POP CX</p><p><b>  POP BX</b></p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  MUSIC5 ENDP</p><p>  GENS

52、OUND PROC </p><p><b>  PUSH AX</b></p><p><b>  PUSH BX</b></p><p><b>  PUSH CX</b></p>

53、<p><b>  PUSH DX</b></p><p><b>  PUSH DI</b></p><p>  MOV AL, 0B6H </p><p>  OUT 43H, AL</p><p>  MOV

54、 DX, 12H </p><p>  MOV AX, 533H*896</p><p><b>  DIV DI</b></p><p>  OUT 42H, AL </p><p>  MOV

55、 AL, AH</p><p>  OUT 42H, AL </p><p>  IN AL, 61H </p><p>  MOV AH, AL</p><p>  OR AL, 3

56、 </p><p>  OUT 61H, AL </p><p><b>  PUSH AX</b></p><p>  WAIT1: MOV CX, 1200 &

57、lt;/p><p>  DELA1: IN AL, 61H </p><p>  AND AL, 10H</p><p>  CMP AL, AH</p><p><b>  JE DELA1</b></p>

58、;<p>  MOV AH,AL</p><p>  LOOP DELA1</p><p>  DEC BX </p><p>  JNZ WAIT1</p><p><b>  POP AX</b></p>&l

59、t;p>  MOV AL, AH</p><p>  OUT 61H, AL </p><p><b>  POP DI</b></p><p><b>  POP DX</b></p><p><b>  PO

60、P CX</b></p><p><b>  POP BX</b></p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  GENSOUND ENDP</p><p>  C

61、ODE ENDS</p><p>  END START</p><p><b>  2、實驗現(xiàn)象</b></p><p>  1. 進入DOS后在DOS界面(圖6)進行匯編鏈接并生成可執(zhí)行文件.exe</p><p>  圖6.DOS調(diào)試界面</p><p>  2.雙擊可執(zhí)行文件K

62、S.exe(這里我把程序取名為KS)進入操作界面如圖7所示</p><p>  圖7.操作界面初始界面 </p><p>  圖8.按數(shù)字鍵5后進入電子琴界面 </p><p>  圖9.按回車后退出電子琴界面</p><p>  3.在進行操作的時候只要在鍵盤上按1-4這四個數(shù)字鍵就可以任意聽取歌曲1—歌曲4,按數(shù)字鍵5時進入電子琴界面,這

63、時候1-8分別表示音樂CDEFGABC這幾個音符。按回車后退出電子琴操作界面,這時候按6退出程序。</p><p>  四、課程設計的心得與體會</p><p>  這次課程設計給我的印象非常的深,原本以為課上學的不錯的自己,發(fā)現(xiàn)真正到了要用的時候,發(fā)現(xiàn)很多東西不是憑空想象就會出來的,原本自己想完全自主設計并完成整個課設,但是用了2天的時間還是沒有能夠整理出來,后來決定大量參考課外書籍以及

64、別的同學的經(jīng)驗。即使在如此情況之下,很多代碼都不是很了解,在請教了老師和同學之后有更大的進步。</p><p>  有很多的知識都是在自己調(diào)試程序的過程中領會的,比如 DW 0DH OAH在起初根本不知道什么意思,后來我把這段代碼給刪了,發(fā)現(xiàn)原本漂亮的界面一下子就亂七八糟了,這下恍然大悟,越來這句代碼的意思是換行和定格寫。又比如在鍵入程序音樂頻率的時候總是漏打-1造成的結果就是在播放音樂的時候,音樂根本無法辨別,

65、后來才知道,是結束符。類似于這種在調(diào)試程序過程中得到的快樂和進步還有很多很多,我想程序調(diào)試的快樂就是你在調(diào)試的過程中不斷的發(fā)現(xiàn)問題,解決問題。不斷思索如何改進程序,使之更加完美。</p><p>  同樣,時間是檢驗一切真理的唯一標準!</p><p><b>  五、參考文獻</b></p><p>  [1] 王忠民.微型計算機原理(第二版

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論