電子琴課程設計報告電子版(微機) DOC
《電子琴課程設計報告電子版(微機) DOC》由會員分享,可在線閱讀,更多相關《電子琴課程設計報告電子版(微機) DOC(13頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 大 連 海 洋 大 學 課 程 設 計 報 告 紙 學院:信息工程學院 專業(yè)班級:自動化 姓名: 學號: 自動化專業(yè)課程設計報告 《微機原理及應用課程設計》 題目:計算機仿真電子琴 班 級 姓 名 學 號 時 間 2011/12/19~2011/12/23 地 點 電信實驗中心第六實驗
2、室 指 導 教 師 大 連 水 產(chǎn) 學 院 信 息 工 程 學 院 自 動 化 教 研 室 題目:計算機仿真電子琴. 一、課程設計的目的與要求 1、教學目的 本課程的課程設計是自動化專業(yè)學生學習完《微機原理及應用》課程后,進行的一次以匯編語言為主,硬件設計為輔的綜合訓練。本課程設計的其目的在于加深對微機原理基本知識的理解,掌握匯編語言程序設計的基本方法;掌握運用微機原理開發(fā)系統(tǒng)的基本方法。 2、 教學要求 從課程設計的目的出發(fā),通過設計工作的各個環(huán)節(jié),達到以下要求:
3、1) 掌握匯編語言程序設計的基本方法。 2) 進一步理解各種接口電路的應用。例如8255并行接口,8253定時器等。 3) 掌握利用PC機揚聲器發(fā)出不同頻率聲音的方法。 二、課程設計課題的分析 1、主要技術指標 編寫程序 (1)在程序運行時使PC即成為一架可彈奏的電子琴。當按下數(shù)字健1---8時,依次發(fā)出1,2,3,4,5,6,7,I這8個音調。自行設計按下某一鍵則退出電子琴狀態(tài)。 (2)在程序運行時使PC自動演奏一首樂曲。 2、設計思路 通過編程,建立一個DOS界面,建立簡單的菜單選項,可是實現(xiàn)電子琴的基本彈奏功能??梢酝ㄟ^按鍵“1、3、4、5、6、7”實現(xiàn)音調的低音輸入
4、,按鍵“Q、W、E、R、T、Y、U”實現(xiàn)對音調的中音輸入,按鍵“A、S、D、F、G、H、J”實現(xiàn)音調的高音輸入,可以按“ESC”或“ENTER”鍵退出、“P”進入播放音樂模式,有兩個音樂可以選擇,1是水手,2是新年好。 3、硬件參數(shù)及硬件接線電路圖 (1)地址和初值 8255口地址: PA口=60H PB口=61H PC口=62H 控制口=63H 8253口地址:計數(shù)器0=40H 計數(shù)器1=41H 計數(shù)器2=42H 控制寄存器=43H 8253初值:600Hz聲音,1.19MHz/600=1983 (2)接線電路圖 PC機揚聲器電路以及相關接口電路:(如圖1) 圖
5、1 接線電路圖 4、作原理 PC中的定時電路有三個通道,通道3用于發(fā)聲,通道1用于控制系統(tǒng)內部的時鐘。 通道1的工作方式和通道3一樣,但是系統(tǒng)啟動時設定其發(fā)出一個頻率固定為18.2Hz的信號,這個信號直接送到系統(tǒng)中的"中斷控制器"。每一個"Hz"都產(chǎn)生一個硬件中斷,一般稱這個硬中斷為"IRQ0",對應的中斷號是08H。在定時器的控制下每隔55毫秒就要執(zhí)行一個08H號中斷,這個中斷的主要工作就是連續(xù)地計數(shù)。 由于PC計算機的時鐘晶振為1.1931816MHz,根據(jù)頻率的公式: f=1/T 則頻率周期為 T=1/f 定時器的計數(shù)器為16位計數(shù)器,則最大的計數(shù)值為655
6、36,那么其定時時間為: t=65536*T=65536/f=0.0549254(秒) 即:PC定時器每秒可中斷18.2065次。 5、程序流程圖(見圖2) 開 始 顯示緩存區(qū),變量初始化 掃描鍵盤 調用發(fā)音子程序 是否Esc或Enter 是否是P鍵 是否是Q鍵 返回DOS N 播放音樂菜單 播放音樂程序 鍵盤掃描 是否Enter鍵停止 是否Esc或Enter 返回DOS Y Y N Y N Y N Y N 圖2 程序流程圖 三、課程設計的結果 程序開始,顯示提示信息,對緩存區(qū)初始化。按鍵掃描,接著調用發(fā)音子程序在把AL
7、送緩存區(qū),發(fā)出與按鍵相對應頻率的聲音,從而實現(xiàn)計算機仿真電子琴的功能。并不停地對Esc鍵、Enter鍵、P鍵掃描,當Esc鍵或Enter鍵按下時,就退出程序。當按下P時,顯示播放音樂目錄。當按下數(shù)字選擇鍵時,播放程序中預設的曲目,中途可以通過Enter鍵,終止音樂播放。當檢測到Q時,退出到計算機仿真電子琴演奏狀態(tài)。 1、程序代碼: STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT ASSUME DS:DATA STR_1 DB 0DH,0AH,'<<-----WELCOME YOU TO USING----->
8、> $' STR_2 DB 0DH,0AH,' Author:SunFh Date:2011/12/20 $' STR_3 DB 0DH,0AH,'This is an electric piano!$' STR_4 DB 0DH,0AH,'LOW: 1-2-3-4-5-6-7$' STR_5 DB 0DH,0AH,'MID: Q-W-E-R-T-Y-U$' STR_6 DB 0DH,0AH,'HIG: A-S-D-F-G-H-J$' STR_7 DB 0DH,0AH,'You can press play it that likes a piano.'
9、 DB 0DH,0AH,'And you can press ''ESC'' or ''ENTER'' to EXIT.$' STR_8 DB 0DH,0AH,'What''s more,' DB 0DH,0AH,' you can press ''P'' to play some musics!$' STR_9 DB 0DH,0AH,'Please selectT the music (Press ''Q'' to exit this MENU):$' STR_10 DB 0DH,0AH,'1. Shui Shou$' STR_11 DB 0DH,0AH,'2. X
10、in Nian Hao' DB 0DH,0AH,'You can press "ENTER" to stop play.$' STR_12 DB 0DH,0AH,'INPUT ERROR!$' STR_13 DB 0DH,0AH,'Please input again!$' STR_21 DB 0DH,0AH,' $' NOTE_T DW 262,294,330,349,392,440,494 DW 523,587,659,698,784,880,988 DW 1046,1175,1318,1397,1568,1760,1975 DW 0 KEY_
11、T DB '1','2','3','4','5','6','7' DB 'q','w','e','r','t','y','u' DB 'a','s','d','f','g','h','j' DB '0' MUSIC_N1 DB '6','e','w','e','w','e','r','t','r','w','e','0','r' DB 'r','r','r','w','q','w','e','w','w','e','q','7','6','q','7' DB '6','e','w','e','w','e','r','r','r','e','
12、w','e' DB 'r','e','w','q','w','q','w','e','7','7','6','5','6','6' DB 'w','w','w','w','r','r','e','w','w','w','e','w','q','w','q','6',0 MUSIC_D1 DB 8,4,4,8,4,4,6,2,4,4,4,6,2 DB 4,2,2,4,4,4,2,2,4,4,4,4,4,4,16 DB 8,4,4,8,4,4,4,2,2,4,4,16 DB 6,2,4,4,6,2,4,4,4,4,4,2,2,16 DB 6,2,4,4,4,2,2,4,2
13、,2,4,4,4,2,2,16 MUSIC_N2 DB '1','1','1','t','3','3','3','1','1','3','5','5','4','3','2','2','3' DB '4','4','3','2','3','1','1','3','2','t','u','2','1',0 MUSIC_D2 DB 4,4,8,8,4,4,8,8,4,4,8,8,4,4,16,4,4 DB 8,8,4,4,8,8,4,4,8,8,4,4,32 JIEPAI DB ? SPEED DB 2 JIANGE DB 1 DATA ENDS CODE SEGMEN
14、T ASSUME CS:CODE SHOW MACRO STR LEA DX,STR MOV AH,09H INT 21H ENDM MAIN PROC FAR MOV AX,DATA MOV DS,AX SHOW STR_21 SHOW STR_1 SHOW STR_2 SHOW STR_3 SHOW STR_4 SHOW STR_5 SHOW STR_6 SHOW STR_7 SHOW STR_8 SHOW STR_21 MOV BX,0 KEY_SCAN:
15、MOV AL,6 MOV JIEPAI,AL MOV BX,0000H MOV AH, 00H INT 16H CMP AL, 0DH JZ EXIT CMP AL, 1BH JZ EXIT CMP AL, 'p' JZ PLAY LOOKUP:CMP KEY_T[BX],AL JE NEXT INC BX JMP LOOKUP NEXT:SHL BX,1 MOV CX,NOTE_T[BX] CALL BEEP JMP KEY_SCAN EXIT:MOV AH,
16、4CH INT 21H ERROR: SHOW STR_12 SHOW STR_13 JMP PLAY PLAY:SHOW STR_21 SHOW STR_9 SHOW STR_10 SHOW STR_11 INPUT:MOV AH, 00H INT 16H CMP AL, 'q' JZ START CMP AL, 0DH JZ EXIT CMP AL, 1BH JZ EXIT CMP AL, '1' JZ NEXT6 CMP AL, '2' JZ NE
17、XT7 CALL ERROR JMP INPUT NEXT6:CALL PLAY_M1 NEXT7:CALL PLAY_M2 START:CALL MAIN STOP:PUSH AX MOV AH,00H INT 16H CMP AL,0DH JZ PLAY RET PLAY_M1 PROC NEAR NEXT5:MOV BX,0 NEXT3:MOV AL,MUSIC_N1[BX] PUSH AX MOV AL,MUSIC_D1[BX] MOV JIEPAI,AL POP AX PUSH
18、 AX MOV AH,11 INT 21H CMP AL,0FFH JZ STOP POP AX CMP AL, 0 JE INPUT PUSH BX MOV BX,0 LOOK1:CMP KEY_T[BX],AL JE NEXT1 INC BX AND BX,0FFH JMP LOOK1 NEXT1:SHL BX,1 MOV CX,NOTE_T[BX] CMP CX,0 JE NEXT4 CALL BEEP CALL PAUSE POP BX
19、 INC BX JMP NEXT3 NEXT4:CALL NOBEEP CALL PAUSE POP BX INC BX JMP NEXT3 PLAY_M1 ENDP IN:JMP INPUT PLAY_M2 PROC NEAR NEX5:MOV BX,0 NEX3:MOV AL,MUSIC_N2[BX] PUSH AX MOV AL,MUSIC_D2[BX] MOV JIEPAI,AL POP AX PUSH AX MOV AH,11 INT 21H
20、CMP AL,0FFH JZ STOP POP AX CMP AL, 0 JE IN PUSH BX MOV BX,0 LOO1:CMP KEY_T[BX],AL JE NEX1 INC BX AND BX,0FFH JMP LOO1 NEX1:SHL BX,1 MOV CX,NOTE_T[BX] CMP CX,0 JE NEX4 CALL BEEP CALL PAUSE POP BX INC BX JMP NEX3 NEX4:CALL NO
21、BEEP CALL PAUSE POP BX INC BX JMP NEX3 PLAY_M2 ENDP MAIN ENDP BEEP PROC NEAR MOV DX,0012H MOV AX,34DCH DIV CX OUT 42H,AL MOV AL,AH OUT 42H,AL CALL SPK_ON MOV AH,00H INT 1AH MOV AL,JIEPAI ADD AL,SPEED CBW ADD AX,DX MOV BX,AX DEL
22、AY1: MOV AH,00H INT 1AH CMP BX,DX JNZ DELAY1 CALL SPK_OFF RET BEEP ENDP NOBEEP PROC NEAR CALL SPK_OFF MOV AH,00H INT 1AH MOV AL,JIEPAI ADD AL,SPEED CBW ADD AX,DX MOV BX,AX DELAY2:MOV AH,00H INT 1AH CMP BX,DX JNZ DELAY2 RET NOBEEP ENDP
23、 PAUSE PROC NEAR CALL SPK_OFF MOV AH,00H INT 1AH MOV AL,JIANGE CBW ADD AX,DX MOV BX,AX DELAY3:MOV AH,00H INT 1AH CMP BX,DX JNZ DELAY3 RET PAUSE ENDP SPK_ON PROC NEAR PUSH AX IN AL,61H OR AL,03H OUT 61H,AL POP AX RET SPK_ON EN
24、DP SPK_OFF PROC NEAR PUSH AX IN AL,61H AND AL,0FCH OUT 61H,AL POP AX RET SPK_OFF ENDP CODE ENDS END MAIN 2、實驗現(xiàn)象 (1)程序正常運行,如圖3 圖3 程序正常運行 (2)音樂播放菜單(按P鍵),如圖4 圖4 音樂播放菜單 (3)輸入錯誤按鍵,顯示錯誤,鍵盤重新輸入,如圖5 圖5 輸入錯誤按鍵 (4)音樂播放終止,可以重新選擇播放音樂或者返回,如圖6 圖6 音樂終止畫面
25、(5)返回主菜單界面(按Q鍵),如圖7 圖7 返回主菜單界面 四、課程設計的心得與體會 一個星期的課程設計,讓我嘗試了失敗的打擊,和成功的喜悅。雖然自己查閱了很多資料,但是發(fā)信自己對知識的掌握還是不夠扎實,不過自己在課程設計過程中,也學到了不少擴展的知識。在程序匯編時候,會遇到很多問題,自己的英文不是很好,有些錯誤都看不明白,但是跟同學討論學習之后,修改程序,改正錯誤。讓我意識到,合作是很有必要的,每個人理解的擅長的地方都不同,通過交流也會取長補短。 五、參考文獻 [1] 王忠民,微型計算機原理,西安:西安電子科技大學出版社,2007年 [2] 趙燕,何南,微機原理與應用實驗指導書,大連海洋大學,2008年 [3] 仇玉章,馮一兵,微計算機技術——實驗與輔導,北京:清華大學出版社,2006年 [4] 朱定華,微機原理、匯編與接口技術實驗教程,北京:清華大學出版社,2007年
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。