

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 題目:計(jì)算機(jī)仿真電子琴</p><p> 一、課程設(shè)計(jì)的目的與要求</p><p><b> 1、設(shè)計(jì)目的</b></p><p> 本課程的課程設(shè)計(jì)是自動(dòng)化專業(yè)學(xué)生學(xué)習(xí)完《微機(jī)原理及應(yīng)用》課程后,進(jìn)行的一次以匯編語(yǔ)言為主,硬件設(shè)計(jì)為輔的綜合訓(xùn)練。本課程設(shè)計(jì)的目的在于加深對(duì)微機(jī)原理基本知識(shí)的理解,掌握匯編語(yǔ)言程序設(shè)計(jì)
2、的基本方法;掌握運(yùn)用微機(jī)原理開(kāi)發(fā)系統(tǒng)的基本方法。</p><p><b> 2、設(shè)計(jì)要求</b></p><p> 從課程設(shè)計(jì)的目的出發(fā),通過(guò)設(shè)計(jì)工作的各個(gè)環(huán)節(jié),達(dá)到以下要求:</p><p> 掌握匯編語(yǔ)言程序設(shè)計(jì)的基本方法。</p><p> 進(jìn)一步理解各種接口電路的應(yīng)用。例如8255并行接口,8253定時(shí)器
3、等。</p><p> 掌握利用PC機(jī)揚(yáng)聲器發(fā)出不同頻率聲音的方法。</p><p><b> 3、主要技術(shù)指標(biāo)</b></p><p><b> 編寫(xiě)程序</b></p><p> 在程序運(yùn)行時(shí)使PC即成為一架可彈奏的電子琴。當(dāng)按下數(shù)字鍵1-8時(shí),依次發(fā)出1,2,3,4,5,6,7,I這八
4、個(gè)音調(diào)。按下CTRL+C或者回車則退出電子琴狀態(tài)。</p><p> 在程序運(yùn)行時(shí)使PC自動(dòng)按要求提示演奏樂(lè)曲。</p><p> 二、課程設(shè)計(jì)課題的分析</p><p> 圖1.揚(yáng)聲器工作原理圖示</p><p> 圖2.主程序工作流程圖</p><p> 圖3.樂(lè)曲演奏子程序工作流程圖
5、 圖4.電子琴子程序工作流程圖</p><p> 圖5.揚(yáng)聲器工作流程圖</p><p><b> 三、課程設(shè)計(jì)的結(jié)果</b></p><p><b> 1、實(shí)驗(yàn)代碼</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、實(shí)驗(yàn)現(xiàn)象</b></p><p> 1. 進(jìn)入DOS后在DOS界面(圖6)進(jìn)行匯編鏈接并生成可執(zhí)行文件.exe</p><p> 圖6.DOS調(diào)試界面</p><p> 2.雙擊可執(zhí)行文件K
62、S.exe(這里我把程序取名為KS)進(jìn)入操作界面如圖7所示</p><p> 圖7.操作界面初始界面 </p><p> 圖8.按數(shù)字鍵5后進(jìn)入電子琴界面 </p><p> 圖9.按回車后退出電子琴界面</p><p> 3.在進(jìn)行操作的時(shí)候只要在鍵盤(pán)上按1-4這四個(gè)數(shù)字鍵就可以任意聽(tīng)取歌曲1—歌曲4,按數(shù)字鍵5時(shí)進(jìn)入電子琴界面,這
63、時(shí)候1-8分別表示音樂(lè)CDEFGABC這幾個(gè)音符。按回車后退出電子琴操作界面,這時(shí)候按6退出程序。</p><p> 四、課程設(shè)計(jì)的心得與體會(huì)</p><p> 這次課程設(shè)計(jì)給我的印象非常的深,原本以為課上學(xué)的不錯(cuò)的自己,發(fā)現(xiàn)真正到了要用的時(shí)候,發(fā)現(xiàn)很多東西不是憑空想象就會(huì)出來(lái)的,原本自己想完全自主設(shè)計(jì)并完成整個(gè)課設(shè),但是用了2天的時(shí)間還是沒(méi)有能夠整理出來(lái),后來(lái)決定大量參考課外書(shū)籍以及
64、別的同學(xué)的經(jīng)驗(yàn)。即使在如此情況之下,很多代碼都不是很了解,在請(qǐng)教了老師和同學(xué)之后有更大的進(jìn)步。</p><p> 有很多的知識(shí)都是在自己調(diào)試程序的過(guò)程中領(lǐng)會(huì)的,比如 DW 0DH OAH在起初根本不知道什么意思,后來(lái)我把這段代碼給刪了,發(fā)現(xiàn)原本漂亮的界面一下子就亂七八糟了,這下恍然大悟,越來(lái)這句代碼的意思是換行和定格寫(xiě)。又比如在鍵入程序音樂(lè)頻率的時(shí)候總是漏打-1造成的結(jié)果就是在播放音樂(lè)的時(shí)候,音樂(lè)根本無(wú)法辨別,
65、后來(lái)才知道,是結(jié)束符。類似于這種在調(diào)試程序過(guò)程中得到的快樂(lè)和進(jìn)步還有很多很多,我想程序調(diào)試的快樂(lè)就是你在調(diào)試的過(guò)程中不斷的發(fā)現(xiàn)問(wèn)題,解決問(wèn)題。不斷思索如何改進(jìn)程序,使之更加完美。</p><p> 同樣,時(shí)間是檢驗(yàn)一切真理的唯一標(biāo)準(zhǔn)!</p><p><b> 五、參考文獻(xiàn)</b></p><p> [1] 王忠民.微型計(jì)算機(jī)原理(第二版
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)原理課程設(shè)計(jì)--計(jì)算機(jī)仿真電子琴
- 微機(jī)原理課程設(shè)計(jì)----電子琴
- 微機(jī)原理課程設(shè)計(jì)--電子琴設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)---電子琴設(shè)計(jì)
- 計(jì)算機(jī)硬件課程設(shè)計(jì) 電子琴
- 微機(jī)原理課程設(shè)計(jì)--設(shè)計(jì)簡(jiǎn)易電子琴
- 微機(jī)課程設(shè)計(jì)電子琴
- 電子琴及電子播放器-微機(jī)原理課程設(shè)計(jì)報(bào)告
- 微機(jī)系統(tǒng)與接口課程設(shè)計(jì)-電子琴
- 《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)--簡(jiǎn)易電子琴設(shè)計(jì)
- 微機(jī)原理與接口技術(shù)課程設(shè)計(jì)報(bào)告——電子琴
- 電子琴課程設(shè)計(jì)
- 課程設(shè)計(jì)--電子琴
- 電子琴課程設(shè)計(jì)
- 電子琴課程設(shè)計(jì)---電子琴的設(shè)計(jì)與實(shí)現(xiàn)
- 接口課程設(shè)計(jì)電子琴
- 簡(jiǎn)易電子琴課程設(shè)計(jì)
- 簡(jiǎn)易電子琴課程設(shè)計(jì)
- 簡(jiǎn)易電子琴課程設(shè)計(jì)
- 電子琴課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論