《電子琴課程設計報告電子版(微機) DOC》由會員分享,可在線閱讀,更多相關《電子琴課程設計報告電子版(微機) DOC(13頁珍藏版)》請在裝配圖網上搜索。
1、
大 連 海 洋 大 學 課 程 設 計 報 告 紙
學院:信息工程學院 專業班級:自動化 姓名: 學號:
自動化專業課程設計報告
《微機原理及應用課程設計》
題目:計算機仿真電子琴
班 級
姓 名
學 號
時 間 2011/12/19~2011/12/23
地 點 電信實驗中心第六實驗
2、室
指 導 教 師
大 連 水 產 學 院 信 息 工 程 學 院
自 動 化 教 研 室
題目:計算機仿真電子琴.
一、課程設計的目的與要求
1、教學目的
本課程的課程設計是自動化專業學生學習完《微機原理及應用》課程后,進行的一次以匯編語言為主,硬件設計為輔的綜合訓練。本課程設計的其目的在于加深對微機原理基本知識的理解,掌握匯編語言程序設計的基本方法;掌握運用微機原理開發系統的基本方法。
2、 教學要求
從課程設計的目的出發,通過設計工作的各個環節,達到以下要求:
3、1) 掌握匯編語言程序設計的基本方法。
2) 進一步理解各種接口電路的應用。例如8255并行接口,8253定時器等。
3) 掌握利用PC機揚聲器發出不同頻率聲音的方法。
二、課程設計課題的分析
1、主要技術指標
編寫程序
(1)在程序運行時使PC即成為一架可彈奏的電子琴。當按下數字健1---8時,依次發出1,2,3,4,5,6,7,I這8個音調。自行設計按下某一鍵則退出電子琴狀態。
(2)在程序運行時使PC自動演奏一首樂曲。
2、設計思路
通過編程,建立一個DOS界面,建立簡單的菜單選項,可是實現電子琴的基本彈奏功能??梢酝ㄟ^按鍵“1、3、4、5、6、7”實現音調的低音輸入
4、,按鍵“Q、W、E、R、T、Y、U”實現對音調的中音輸入,按鍵“A、S、D、F、G、H、J”實現音調的高音輸入,可以按“ESC”或“ENTER”鍵退出、“P”進入播放音樂模式,有兩個音樂可以選擇,1是水手,2是新年好。
3、硬件參數及硬件接線電路圖
(1)地址和初值
8255口地址: PA口=60H PB口=61H PC口=62H 控制口=63H
8253口地址:計數器0=40H 計數器1=41H 計數器2=42H 控制寄存器=43H
8253初值:600Hz聲音,1.19MHz/600=1983
(2)接線電路圖
PC機揚聲器電路以及相關接口電路:(如圖1)
圖
5、1 接線電路圖
4、作原理
PC中的定時電路有三個通道,通道3用于發聲,通道1用于控制系統內部的時鐘。
通道1的工作方式和通道3一樣,但是系統啟動時設定其發出一個頻率固定為18.2Hz的信號,這個信號直接送到系統中的"中斷控制器"。每一個"Hz"都產生一個硬件中斷,一般稱這個硬中斷為"IRQ0",對應的中斷號是08H。在定時器的控制下每隔55毫秒就要執行一個08H號中斷,這個中斷的主要工作就是連續地計數。
由于PC計算機的時鐘晶振為1.1931816MHz,根據頻率的公式:
f=1/T
則頻率周期為
T=1/f
定時器的計數器為16位計數器,則最大的計數值為655
6、36,那么其定時時間為:
t=65536*T=65536/f=0.0549254(秒)
即:PC定時器每秒可中斷18.2065次。
5、程序流程圖(見圖2)
開 始
顯示緩存區,變量初始化
掃描鍵盤
調用發音子程序
是否Esc或Enter
是否是P鍵
是否是Q鍵
返回DOS
N
播放音樂菜單
播放音樂程序
鍵盤掃描
是否Enter鍵停止
是否Esc或Enter
返回DOS
Y
Y
N
Y
N
Y
N
Y
N
圖2 程序流程圖
三、課程設計的結果
程序開始,顯示提示信息,對緩存區初始化。按鍵掃描,接著調用發音子程序在把AL
7、送緩存區,發出與按鍵相對應頻率的聲音,從而實現計算機仿真電子琴的功能。并不停地對Esc鍵、Enter鍵、P鍵掃描,當Esc鍵或Enter鍵按下時,就退出程序。當按下P時,顯示播放音樂目錄。當按下數字選擇鍵時,播放程序中預設的曲目,中途可以通過Enter鍵,終止音樂播放。當檢測到Q時,退出到計算機仿真電子琴演奏狀態。
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、實驗現象
(1)程序正常運行,如圖3
圖3 程序正常運行
(2)音樂播放菜單(按P鍵),如圖4
圖4 音樂播放菜單
(3)輸入錯誤按鍵,顯示錯誤,鍵盤重新輸入,如圖5
圖5 輸入錯誤按鍵
(4)音樂播放終止,可以重新選擇播放音樂或者返回,如圖6
圖6 音樂終止畫面
25、(5)返回主菜單界面(按Q鍵),如圖7
圖7 返回主菜單界面
四、課程設計的心得與體會
一個星期的課程設計,讓我嘗試了失敗的打擊,和成功的喜悅。雖然自己查閱了很多資料,但是發信自己對知識的掌握還是不夠扎實,不過自己在課程設計過程中,也學到了不少擴展的知識。在程序匯編時候,會遇到很多問題,自己的英文不是很好,有些錯誤都看不明白,但是跟同學討論學習之后,修改程序,改正錯誤。讓我意識到,合作是很有必要的,每個人理解的擅長的地方都不同,通過交流也會取長補短。
五、參考文獻
[1] 王忠民,微型計算機原理,西安:西安電子科技大學出版社,2007年
[2] 趙燕,何南,微機原理與應用實驗指導書,大連海洋大學,2008年
[3] 仇玉章,馮一兵,微計算機技術——實驗與輔導,北京:清華大學出版社,2006年
[4] 朱定華,微機原理、匯編與接口技術實驗教程,北京:清華大學出版社,2007年