版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
微機(jī)原理與接口技術(shù)課程設(shè)計(jì)報(bào)告學(xué)院:班級:姓名:指導(dǎo)老師:時間:目錄課程名稱及設(shè)計(jì)組成員——————————————3課程內(nèi)容及要求—————————————————3三、方案、系統(tǒng)硬件組成框圖以及工作原理說明——————31、方案——————————————————————32、工作原理————————————————————33、系統(tǒng)硬件組成框圖————————————————4四、程序功能描述及程序流程——————————————41、程序功能描述——————————————————42、程序流程————————————————————4五、程序源代碼及注釋—————————————————6六、DOS功能調(diào)用,文件列表清單————————————14七、程序調(diào)試出現(xiàn)的問題、原因及排除——————————15八、收獲和體會————————————————————16九、參考文獻(xiàn)—————————————————————17一、課題名稱及設(shè)計(jì)組成員(1)課程名稱:計(jì)算機(jī)音樂播放系統(tǒng)設(shè)計(jì)(2)設(shè)計(jì)組成員:二、課程內(nèi)容及要求課程內(nèi)容:設(shè)計(jì)一個匯編語言程序,實(shí)現(xiàn)計(jì)算機(jī)音樂播放系統(tǒng)。實(shí)現(xiàn)功能如下:(1)制作一個菜單,使用菜單條選擇功能,讓用戶選擇演奏的樂曲,不少于5首。(2)用定時器方式演奏《梁?!穼?shí)現(xiàn)音樂演奏。(3)提示使用ESC鍵或者ENTER鍵可以退出當(dāng)前過程或返回DOS(4)使用控制變量可以控制不同的效果以及要求,如播放速度,間隔等。(5)界面美觀,程序結(jié)構(gòu)化程度高,模塊結(jié)構(gòu)合理。三、方案、系統(tǒng)硬件組成框圖以及工作原理說明1、方案基于PC計(jì)算機(jī)時鐘晶振為1.1931816MHz,利用電腦中的蜂鳴器發(fā)出聲音。各音階標(biāo)稱頻率值:音符: 1 2 3 4 5 6 7(重低音)對應(yīng)頻率:(Hz)131 147 165 175 196 220 247(低音)對應(yīng)頻率:(Hz)262 294 330 349 392 440 494(中音)對應(yīng)頻率:(Hz)523 587 659 698 784 880 988(高音)對應(yīng)頻率:(Hz)1046 1175 1318 1397 1568 1760 19752、工作原理說明軟件設(shè)計(jì)是本設(shè)計(jì)的重點(diǎn),在軟件設(shè)計(jì)中,要給8253和8255寫數(shù)據(jù),同時還要檢測鍵盤輸入的值,并根據(jù)輸入的值,執(zhí)行相應(yīng)的代碼來控制音樂的播放。首先在一開始先顯示音樂菜單,然后調(diào)用DOS中21H的01中斷來接收鍵盤上的數(shù)據(jù),在此過程中,程序在等待中,直到鍵盤上有鍵按下,程序才進(jìn)行相應(yīng)的操作。當(dāng)鍵盤輸入一個值后,首先判斷輸入的值是否為“0”,如果是,那就退出程序,如果不是,再檢測輸入的數(shù)是否在1-4之間,如果是,那就調(diào)用相應(yīng)的播放音樂的程序,否則我們重新提上,讓其輸入0-4之間的數(shù)值。在音樂播放中,要實(shí)時的掃描鍵盤是否有值輸入,如果用DOS中21H的01中斷肯定是不行的,因?yàn)閳?zhí)行這個中斷程序會等待,無法繼續(xù)播放音樂。因此采用中斷21H中的0bH,這個中斷不會等待,只會檢查標(biāo)準(zhǔn)輸入設(shè)備上是否有字符可讀。然后通過檢測AL中的值是否為0FFH,來判斷鍵盤是否有值輸入。如果鍵盤上有鍵輸入,那么AL中會返回一個0FFH的值,否則就會返回00H。如果有,再判斷這個輸入的值是否為“p”,如果是,就停止音樂的播放,否則繼續(xù)播放音樂,由于程序運(yùn)行非???,這樣就不會感覺到音樂有停頓現(xiàn)象。實(shí)現(xiàn)和音樂演奏的同時實(shí)時掃描鍵盤的功能。當(dāng)音樂播放完后,調(diào)用JMP命令跳回到主菜單,再次讓操作者選擇播放哪一首歌或是選擇退出。在音樂暫停后,顯示輸入提示:如果按“s”值繼續(xù)音樂播放。然后調(diào)用DOS中21H的01中斷來接收鍵盤上的數(shù)據(jù),在此過程中,程序在等待中,直到鍵盤上有鍵按下,然后我們按輸入的數(shù)進(jìn)行相應(yīng)的操作,如果都不是,怎繼續(xù)輸入,知道輸入正確的為止。在這個設(shè)計(jì)中,最終要返回主菜單,然后通過按“Esc”等鍵退出。3、硬件組成框圖PC機(jī)相關(guān)電路以及相關(guān)接口電路如下:四、程序功能描述及程序流程1、程序功能描述計(jì)算機(jī)播放器系統(tǒng):顯示入口菜單;共5首待選擇音樂:1、北京歡迎你2、春天花會開3、歡樂頌4、但愿人長久5、情非得已播放功能:音樂播放中途暫停、快進(jìn)、放慢、單曲循環(huán)、列表循環(huán)、退出播放器2、程序流程主流程:開始————顯示音樂菜單————提示輸入選擇————判斷輸入是否為0,若是則退出程序————若否則判斷是否在數(shù)字范圍內(nèi)————若是則調(diào)用音樂播放程序音樂播放流程:播放相應(yīng)歌曲播放相應(yīng)歌曲調(diào)用調(diào)用DOS中斷掃描鍵盤緩沖區(qū)判斷是否有鍵輸入判斷是否有鍵輸入判斷是否播放完調(diào)用鍵值輸入和執(zhí)行操作程序判斷是否播放完調(diào)用鍵值輸入和執(zhí)行操作程序返回主程序,顯示歌曲菜單,提示輸入返回主程序,顯示歌曲菜單,提示輸入按鍵中斷流程:輸入————判斷輸入所選擇的功能————進(jìn)入各功能子程序————根據(jù)各程序功能返回主程序五、程序源代碼及注釋DATASSEGMENTSHOWDB0AH,0DH DB'***************************************',0AH,0DHDB'thisisamusicprogram!pleaseselect!',0AH,0DHDB'***************************************',0AH,0DH DB0AH,0DH DB'Inthispart,youcanpressbelowkeystoenjoymusic:',0AH,0DHDB'1.beijinghuanyingni',0AH,0DHDB'2.chuntianhuahuikai',0AH,0DHDB'3.huanlesong',0AH,0DHDB'4.danyuanrenchangjiu',0AH,0DHDB'5.qingfeideyi',0AH,0DHDB'Youcanpress',60H,'Esc',27H,'or',60H,'Enter',27H,'toexit.',0AH,0DHDB0AH,0DHDB'Duringthesongyoucanpressbelowkeystosetthespeedandplaybackmode:',0AH,0DHDB'u->Faster',0AH,0DHDB'd->Slower',0AH,0DHDB'p->Pause',0AH,0DHDB's->Start',0AH,0DHDB'q->Quit',0AH,0DH,'$'WAIT_MDB0AH,0DHDB'musicing','...',0AH,0DH,'$' ERROR_ODB0AH,0DH,'Yourorderiserror,pleaseentertherightone:$'QDB0AH,0DH,'Thesongisover,youcanchooseasongagain.$'PDB0AH,0DH,'Havearest,youcanpressstostartthesongagain.$'SDB0AH,0DH,'Youhasstartthesongagain.',0AH,0DH,'$'UDB0AH,0DH,'Youhavemadethebeatshorter.',0AH,0DH,'$'DDB0AH,0DH,'Youhavemadethebeatlonger.',0AH,0DH,'$'OVERDB0AH,0DH,'***************************************$'DB0AH,0DH,'thisisamusicprogram!pleaseselect!$'DB0AH,0DH,'***************************************$';****************************北京歡迎你*****************************TONES_1DW659,2DUP(659,784,659,587,659,587,659,659,587,440,523,659,587,587,523,440,523,587,659,784,587,659,880,784,440,587,523)DW587,523,440,523,587,659,784,587,659,880,784,784,659,587,659,587,523,784,880,587,440,659,587,587,523,-1BEAT_1DW7DUP(25*200),50*200,5DUP(25*200),25*600,13DUP(25*200),25*600,6DUP(25*200),50*200,5DUP(25*200),25*600,13DUP(25*200),25*600DW12DUP(25*200),50*400,6DUP(25*200),50*200,4DUP(25*200),50*200;**************************春天花會開******************************TONES_2DW392,392,392,392,440,392,330,294,262,262,262,220,294DW392,392,392,392,330,494,220,262,262,262,330,294,330,440,220,262,-1BEAT_2DW25*200,3DUP(25*200,50*200,25*200,50*200,50*200,50*400)DW25*200,50*200,25*200,50*200,50*200,50*200,50*200,4DUP(25*200);****************************歡樂頌*****************************TONES_3DW330,330,330,349,392,392,349,330,294,262,262,294,330,330,294,294DW330,330,349,392,392,349,330,294,262,262,294,330,294,262,262,-1BEAT_3DW13DUP(50*200),25*600,2DUP(25*200)DW12DUP(50*200),25*600,2DUP(25*200);**************************但愿人長久******************************TONES_4DW262,262,262,220,196,220,262,262,262,220,196,220,294DW330,262,220,330,262,220,294,262,220,349,349,220,262,294,294,196,247,220,247,262,-1BEAT_4DW100,2DUP(50*200,25*200,25*200,25*600,25*200,50*400)DW2DUP(50*200,25*200,25*200),25*600,25*200,50*400,50*200,50*200,25*200,25*600,50*400,50*200,50*200,25*200,50*200,25*200,50*400;***************************情非得已*****************************TONES_5DW592,592,523,587,659,587,587DW4DUP(523),784,784,659,784,3DUP(659),587,659,698,659,659DW659,587,523,523,440,440,523,587DW4DUP(392),440,523,523,440,659,523,523,587,587,523,523,-1BEAT_5DW12DUP(25*200),50*600,6DUP(25*200),50*200,25*200,25*200,50*600DW6DUP(25*200),50*200,25*200,25*200,50*600,12DUP(25*200),50*600BEATDW?EXIT_BOXDB?SIDIDW4DUP(?)DATASENDS;數(shù)據(jù)段定義STACKSSEGMENTSTACKSENDS;堆棧段定義CODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSMAINPROCFARMOVAX,DATASMOVDS,AXLEASI,SHOWCALLDISPLAY;顯示菜單列表 CALLINPUTDONE: LEASI,OVER CALLDISPLAY;顯示結(jié)束菜單MAINENDP;************顯示菜單列表*************DISPLAYPROCNEARMOVDX,SIMOVAH,09HINT21H RETDISPLAYENDPINPUTPROCFAR PUSHAX LEABX,BEATMOV[BX],28010LEABX,EXIT_BOXMOV[BX],0MOVAH,01HINT21H;輸入字符 CMPAL,0DH JZEXIT CMPAL,1BH JZEXIT CMPAL,'1';判斷輸入選擇歌曲1,2,3,4,5 JZSONG_1 CMPAL,'2' JZSONG_2 CMPAL,'3' JZSONG_3 CMPAL,'4' JZSONG_4 CMPAL,'5' JZSONG_5 JMPINPUTSONG_1: LEASI,WAIT_M;提示音樂播放中 CALLDISPLAY LEASI,TONES_1 LEADI,BEAT_1;導(dǎo)入相應(yīng)樂譜,音節(jié)存放地址 MOVSIDI,SI MOVSIDI+2,DI;用SIDI記錄存放地址 CALLPLAY_MUSIC;開啟音樂播放程序 JMPINPUTSONG_2: LEASI,WAIT_M;提示音樂播放中 CALLDISPLAY LEASI,TONES_2 LEADI,BEAT_2;導(dǎo)入相應(yīng)樂譜,音節(jié)存放地址 MOVSIDI,SI MOVSIDI+2,DI;用SIDI記錄存放地址 CALLPLAY_MUSIC;開啟音樂播放程序 JMPINPUTSONG_3: LEASI,WAIT_M;提示音樂播放中 CALLDISPLAY LEASI,TONES_3 LEADI,BEAT_3;導(dǎo)入相應(yīng)樂譜,音節(jié)存放地址 MOVSIDI,SI MOVSIDI+2,DI;用SIDI記錄存放地址 CALLPLAY_MUSIC;開啟音樂播放程序 JMPINPUTSONG_4: LEASI,WAIT_M;提示音樂播放中 CALLDISPLAY LEASI,TONES_4 LEADI,BEAT_4;導(dǎo)入相應(yīng)樂譜,音節(jié)存放地址 MOVSIDI,SI MOVSIDI+2,DI;用SIDI記錄存放地址 CALLPLAY_MUSIC;開啟音樂播放程序 JMPINPUTSONG_5: LEASI,WAIT_M;提示音樂播放中 CALLDISPLAY LEASI,TONES_5 LEADI,BEAT_5;導(dǎo)入相應(yīng)樂譜,音節(jié)存放地址 MOVSIDI,SI MOVSIDI+2,DI;用SIDI記錄存放地址 CALLPLAY_MUSIC;開啟音樂播放程序 JMPINPUTEXIT: POPAX;棧頂內(nèi)容取出并存到目的操作數(shù)中,同時修正堆棧指針 MOVAH,4CHINT21H;返回DOS系統(tǒng) RETINPUTENDP;**************音樂播放子函數(shù)***************PLAY_MUSICPROCFARAGAIN: CMP[SI],0FFFFH;判斷一段音樂是否結(jié)束 JZCIRCLE;若結(jié)束,則單曲循環(huán) CALLKEY_C;按鍵中斷運(yùn)行 LEABX,EXIT_BOX CMPBYTEPTR[BX],3 JZERROR CMPBYTEPTR[BX],2 JZRETURNCMPBYTEPTR[BX],1JZAGAINCMPBYTEPTR[BX],0JZNEXTERROR:;錯誤控制 PUSHSI LEASI,ERROR_O CALLDISPLAY POPSI JMPRETURN NEXT: MOVAL,0B6H;計(jì)數(shù)器的控制字要寫入控制寄存器 OUT43H,AL;輸入控制字寄存器,選用方式2,工作在方式三 MOVDX,12H;把給定頻率的高八位送給DX MOVAX,3280H;把給定頻率的低八位送給AX DIVWORDPTR[SI];SI的內(nèi)容為給定的頻率,放入 OUT42H,AL;低八位寫入計(jì)數(shù)器二 MOVAL,AH;將高八位內(nèi)容送到AL OUT42H,AL;用兩次計(jì)數(shù)器通道2用于發(fā)聲 CALLSPK_ON;啟動蜂鳴器 MOVCX,[DI]BEAT_M:;節(jié)拍控制 PUSHCX LEABX,BEAT MOVCX,[BX]DELAY_M:;延時控制 LOOPDELAY_M POPCX LOOPBEAT_M INCSI INCSI INCDI INCDI CALLSPK_OFF;關(guān)閉蜂鳴器 JMPAGAINCIRCLE: MOVSI,SIDI MOVDI,SIDI+2;將其地址送回SI、DI JMPPLAY_MUSIC RETURN: RET;返回系統(tǒng)PLAY_MUSICENDP;***************按鍵中斷子函數(shù)*************KEY_CPROCFAR PUSHAX MOVAH,0BH INT21H XORAH,AH CMPAL,0FFH JZOK JMPOUT_K OK: MOVAH,01H INT21H;輸入 XORAH,AH CMPAL,0DH JZQUIT XORAH,AH CMPAL,1BH JZQUIT XORAH,AH CMPAL,'q';判斷輸入選擇功能 JZQUIT XORAH,AH CMPAL,'u' JZUP XORAH,AH CMPAL,'d' JZDOWN XORAH,AH CMPAL,'p' JZPAUSE XORAH,AH CMPAL,'s' JZSTART_K JMPERROR_WSTART_K:;暫停后開始 LEABX,EXIT_BOX MOV[BX],0 PUSHSI LEASI,S CALLDISPLAY POPSI JMPOUT_KPAUSE:;暫停 LEABX,EXIT_BOX MOV[BX],1 PUSHSI LEASI,P CALLDISPLAY POPSI JMPOUT_K QUIT:;退出程序 LEABX,EXIT_BOX MOV[BX],2 PUSHSI LEASI,Q CALLDISPLAY POPSI JMPOUT_K DOWN:;減速 LEABX,BEAT MOVAX,[BX] ADDAX,1000 MOV[BX],AX PUSHSI LEASI,D CALLDISPLAY POPSI JMPOUT_K UP:;加速 LEABX,BEAT MOVAX,[BX] SUBAX,1000 MOV[BX],AX PUSHSI LEASI,U CALLDISPLAY POPSI JMPOUT_KERROR_W:;程序出錯 LEABX,EXIT_BOX MOV[BX],3 JMPOUT_K OUT_K: POPAX;恢復(fù)AX的值 RETKEY_CENDP;**************開蜂鳴器子函數(shù)***************SPK_ONPROCNEAR PUSHAX ;保存ax的值 INAL,61H ;獲取61h端口的當(dāng)前值 ORAL,03H ;把61h端口低二位置1,即打開蜂鳴器 OUT61H,AL ;輸出數(shù)據(jù)到61h端口 POPAX ;恢復(fù)ax的值 RETSPK_ONENDP;**************關(guān)蜂鳴器子函數(shù)***************SPK_OFFPROCNEAR PUSHAX ;保存ax的值 INAL,61H ;獲取61h端口的當(dāng)前值 ANDAL,0FCH ;把61h端口低二位置0,即關(guān)閉蜂鳴器 OUT 61H,AL ;輸出數(shù)據(jù)到61h端口 POPAX ;恢復(fù)ax的值 RETSPK_OFFENDPCODESENDSENDMAIN六、DOS功能調(diào)用,文件列表清單要涉及一些dos的系統(tǒng)功能的調(diào)用,系統(tǒng)功能調(diào)用是DOS為用戶提供的常用子程序(80多個),可在匯編語言程序中直接調(diào)用。這些子程序的主要功能包括:(1)設(shè)備管理(如鍵盤、顯示器、打印機(jī)、磁盤等的管理)(
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人勞務(wù)合同(項(xiàng)目管理專家范本)2篇
- 2025年度臨時工勞動合同范本修訂后的影響分析4篇
- 2024藥店負(fù)責(zé)人任期藥店員工培訓(xùn)與發(fā)展聘用合同3篇
- 2024年08月遼寧朝陽銀行招考(撫順地區(qū))筆試歷年參考題庫附帶答案詳解
- 2024節(jié)能環(huán)保設(shè)備產(chǎn)品購銷合同
- 2024年08月海南2024年中國銀行海南省分行校園招考筆試歷年參考題庫附帶答案詳解
- 2024年07月寧夏中國工商銀行寧夏分行社會招考筆試歷年參考題庫附帶答案詳解
- 2024年07月全國2024屆興業(yè)銀行信用卡中心校園招考筆試歷年參考題庫附帶答案詳解
- 黃山2025年安徽黃山歙縣人民醫(yī)院引進(jìn)醫(yī)療衛(wèi)生人才6人筆試歷年參考題庫附帶答案詳解
- 公費(fèi)留學(xué)項(xiàng)目介紹
- 中國華能集團(tuán)公司風(fēng)力發(fā)電場運(yùn)行導(dǎo)則(馬晉輝20231.1.13)
- 中考語文非連續(xù)性文本閱讀10篇專項(xiàng)練習(xí)及答案
- 2022-2023學(xué)年度六年級數(shù)學(xué)(上冊)寒假作業(yè)【每日一練】
- 法人不承擔(dān)責(zé)任協(xié)議書(3篇)
- 電工工具報(bào)價(jià)單
- 反歧視程序文件
- 油氣藏類型、典型的相圖特征和識別實(shí)例
- 流體靜力學(xué)課件
- 顧客忠誠度論文
- 實(shí)驗(yàn)室安全檢查自查表
- 證券公司績效考核管理辦法
評論
0/150
提交評論