計(jì)算機(jī)電子琴課程設(shè)計(jì)報(bào)告_第1頁(yè)
計(jì)算機(jī)電子琴課程設(shè)計(jì)報(bào)告_第2頁(yè)
計(jì)算機(jī)電子琴課程設(shè)計(jì)報(bào)告_第3頁(yè)
計(jì)算機(jī)電子琴課程設(shè)計(jì)報(bào)告_第4頁(yè)
計(jì)算機(jī)電子琴課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

自動(dòng)化專業(yè)課程設(shè)計(jì)報(bào)告《微機(jī)原理及應(yīng)用課程設(shè)計(jì)》計(jì)算機(jī)仿真電子琴班級(jí):自動(dòng)化09-1姓名:許丹陽(yáng)學(xué)號(hào):0918120123時(shí)間:2011年12月19號(hào)至12月23號(hào)地點(diǎn):電信實(shí)驗(yàn)中心第六實(shí)驗(yàn)室指導(dǎo)教師:李向軍大連海洋大學(xué)信息工程學(xué)院自動(dòng)化研究室大連海洋大學(xué)實(shí)驗(yàn)報(bào)告紙學(xué)院(系):專業(yè)班級(jí):姓名:學(xué)號(hào):題目:計(jì)算機(jī)仿真電子琴一、課程設(shè)計(jì)的目的與要求1、課程設(shè)計(jì)的設(shè)計(jì)目的本課程的課程設(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ì)的基本方法;掌握運(yùn)用微機(jī)原理開發(fā)系統(tǒng)的基本方法。2、課程設(shè)計(jì)的要求從課程設(shè)計(jì)的目的出發(fā),通過設(shè)計(jì)工作的各個(gè)環(huán)節(jié),達(dá)到以下要求:1、掌握匯編語(yǔ)言程序設(shè)計(jì)的基本方法以及課程設(shè)計(jì)所涉及到的基本理論。2、理解硬件電路的工作原理。3、進(jìn)一步理解各種接口電路的應(yīng)用,例如8255并行接口,8253定時(shí)器等。4、掌握利用PC機(jī)揚(yáng)聲器發(fā)出不同頻率聲音的方法。5、自行設(shè)計(jì)軟件流程圖,編制程序。6、調(diào)試程序使其能正常運(yùn)行。7、設(shè)計(jì)完成后,寫出設(shè)計(jì)總結(jié)。3、課程設(shè)計(jì)的性能指標(biāo)1、在程序運(yùn)行時(shí)使PC即成為一架可彈奏的電子琴。當(dāng)按下數(shù)字鍵1-8時(shí),依次發(fā)出1,2,3,4,5,6,7,I這八個(gè)音調(diào)。按下CTRL+C或者回車則退出電子琴狀態(tài)。2、在程序運(yùn)行時(shí)使PC自動(dòng)按要求提示演奏樂曲。課程設(shè)計(jì)課題的分析2.1主要的宏和過C程的實(shí)現(xiàn)2.1.SHOW顯示宏為將事先定義的數(shù)據(jù)段字符串顯示在屏幕上,定一個(gè)參數(shù)為b的宏。將b的地址傳到DX。隨后調(diào)用DOS09號(hào)功能調(diào)用。將字符串顯示到屏幕。調(diào)用SHOW的實(shí)例為:SHOWINFO1SHOWINFO2SHOWINFO3SHOWMUSLIST在此段代碼中,程序顯示提示作用的字符串和歌曲列表。SHOW宏具體實(shí)現(xiàn)如下:SHOWMACRObLEADX,bMOVAH,9INT21HENDM2.1.2ADDRESS音樂地址宏歌曲包含節(jié)拍和頻率。此處定義的音樂地址宏包含兩個(gè)參數(shù),將歌曲頻率地址導(dǎo)入SI將歌曲節(jié)拍導(dǎo)入BP。當(dāng)選擇不同的歌曲時(shí),主程序調(diào)用該宏,將用戶要求的歌曲的頻率和節(jié)拍導(dǎo)入,以便在MUSIC中實(shí)現(xiàn)發(fā)聲。音樂地址宏實(shí)現(xiàn)如下:ADDRESSMACROA,BLEASI,ALEABP,DS:BENDM2.1.3MUSIC宏在ADDRESS中,程序已經(jīng)將歌曲的首個(gè)頻率地址和首個(gè)節(jié)拍地址分別導(dǎo)入SI、BP。為了檢測(cè)歌曲是否結(jié)束,在MUSIC中,首先將SI傳遞到DI,DI與-1相減,如等于0,則得出該頻率定義為-1。在歌曲頻率表定義中將-1定為該歌曲結(jié)束標(biāo)志,此時(shí)MUSIC跳出結(jié)束。若該頻率不為-1。調(diào)用通用發(fā)生程序GENSOUND,將該音符按照頻率和節(jié)拍表發(fā)聲。發(fā)聲后SI、BP分別加2,跳轉(zhuǎn)到下一個(gè)音符的頻率和節(jié)拍,繼續(xù)檢測(cè)歌曲是否結(jié)束。如頻率不為-1,繼續(xù)將該音符發(fā)聲,并循環(huán)此過程。具體實(shí)現(xiàn)方法如下:MUSICPROCNEARPUSHDSSUBAX,AXPUSHAXFREG:MOVDI,[SI]CMPDI,-1JEEND_MUSMOVBX,DS:[BP]CALLGENSOUNDADDSI,2ADDBP,2JMPFREGEND_MUS:RETMUSICENDP2.1.4通用發(fā)生程序GENSOUND該發(fā)生程序是在修改BEEP發(fā)聲程序的基礎(chǔ)上,以實(shí)現(xiàn)為8088/86編寫一個(gè)任意頻率和任意持續(xù)時(shí)間的通用發(fā)聲程序。該程序包括以下三個(gè)步驟:(1)在8253/54中的43端口送一個(gè)控制字0B6H(10110110B),該控制字對(duì)定時(shí)器2進(jìn)行初始化,使得定時(shí)器2準(zhǔn)備接受計(jì)數(shù)初值。(2)在8253/54中的42H端口裝入一個(gè)16位計(jì)數(shù)值,已建立將要產(chǎn)生的聲音頻率。(3)把輸出端口61H的0、1兩位置1,發(fā)出聲音。具體實(shí)現(xiàn)如下:GENSOUNDPROCMOVBX,200PUSHAXPUSHBXPUSHCXPUSHDXPUSHDIMOVAL,0B6HOUT43H,ALMOVDX,12HMOVAX,533H*896DIVDIOUT42H,ALMOVAL,AHOUT42H,ALINAL,61HMOVAH,ALORAL,3OUT61H,ALPUSHAXWAIT1:MOVCX,1200DELA1:INAL,61HANDAL,10HCMPAL,AHJEDELA1MOVAH,ALLOOPDELA1DECBXJNZWAIT1POPAXMOVAL,AHOUT61H,ALPOPDIPOPDXPOPCXPOPBXPOPAXRETGENSOUNDENDP該GENSOUND程序能產(chǎn)生19~65535Hz的聲音,這個(gè)頻率的下限是使除法不產(chǎn)生溢出的最小值。其上限65535是多余的,因?yàn)槿四苈牭降穆曇糇罡哳l率為20000Hz。此外一般情況下,GENSOUND程序產(chǎn)生的聲音不單單和頻率有關(guān),還和CPU有關(guān)。CPU工作頻率越高,時(shí)延越短,產(chǎn)生的聲音越急促。為了使程序產(chǎn)生一個(gè)與CPU工作頻率無(wú)關(guān)的合適時(shí)延,在MUSCI中調(diào)用了一個(gè)時(shí)間延時(shí)程序WAITF。2.1.5RETU退出當(dāng)程序要求退出時(shí),主程序會(huì)調(diào)用RETU進(jìn)行退出。RETU程序內(nèi)容實(shí)際為一個(gè)BIOS功能調(diào)用。RETU:MOVAH,4CHINT21H2.2主程序?qū)崿F(xiàn)2.2.1數(shù)據(jù)段定義數(shù)據(jù)段分別定義了INFO1、INFO2、INFO3、INFO4、INFO5各字符串分別顯示程序運(yùn)行之初對(duì)用戶的提示。MUSLIST中顯示用戶能選擇的三首歌曲列表。程序用MUS_FREG、MUS_TIME分別定義了音樂頻率和節(jié)拍。使得發(fā)聲程序可以按照理想的要求發(fā)出連續(xù)的樂曲。節(jié)拍和頻率定義原理如下:樂曲是按照一定的高低、長(zhǎng)短和強(qiáng)弱關(guān)系組成的音調(diào),在每一首樂曲中,每個(gè)音符的音高和音長(zhǎng)與發(fā)聲系統(tǒng)中的頻率、節(jié)拍有關(guān)??蓞⒖枷卤恚阂裘? C D E F G A B C唱名 1 2 3 4 5 6 7 i頻率(HZ) 262 294 330 349 392 440 492 523其中,階從低音C(262HZ)到高音C(523HZ)。組成樂曲的音符的頻率值和持續(xù)時(shí)間是樂曲程序發(fā)聲所必需的兩組數(shù)據(jù),頻率可以查上表,音符的持續(xù)時(shí)間根據(jù)樂曲的速度及每個(gè)音符的節(jié)拍數(shù)來確定。在4/4拍中,四分音符為一拍,每小節(jié)四拍,全音符持續(xù)四拍,二分音符持續(xù)二拍,四分音符持續(xù)一拍,八分音符持續(xù)半拍。如果給全音符分配1秒(100*10ms)的時(shí)間,則二分音符持續(xù)時(shí)間為0.5秒,四分音符持續(xù)時(shí)間為0.25秒,八分音符持續(xù)時(shí)間為0.125秒。知道了音調(diào)及頻率、時(shí)間的關(guān)系后,可以按照樂曲的樂譜將每個(gè)音符的頻率和持續(xù)時(shí)間定義為兩個(gè)數(shù)據(jù)表,然后編寫程序依次取出表中的頻率值和時(shí)間值。“瑪麗有只小羊羔”的樂譜如下:3212|333—|222—|355—|3212|3333|2232|1——|可設(shè)置該樂曲的頻率表如下:MUS1_FDW330,294,262,294,3DUP(330)DW3DUP(294),330,392,392DW330,294,262,294,4DUP(330)DW294,294,330,294,262,-l設(shè)置該樂曲的節(jié)拍時(shí)間表如下:一般延遲時(shí)間取10ms的倍數(shù)。MUSl-TDW6DUP(25*8),50*8DW2DUP(25*8,25*8,50*8)DW12DUP(25*8),100*82.2.2堆棧段定義程序定義了一個(gè)長(zhǎng)度了200的堆棧段,如下:STACKSEGMENTDB200DUP('STACK')STACKENDS2.2.3初始化程序初始化使用了BIOS功能調(diào)用。使用0AH號(hào)功能設(shè)置顯示方式。本程序?qū)︼@示要求較為簡(jiǎn)單,故使用40x25黑白文本、16級(jí)灰度方式顯示。若要求改變顯示方式,可以根據(jù)0AH功能設(shè)置表自行添加。START:MOVAX,DATAMOVDS,AXMOVaH,0MOVAL,00INT10H2.2.4程序執(zhí)行過程詳細(xì)參見附錄中INPUT部分,以及程序流程圖。主流程圖樂曲演奏子程序工作流程圖電子琴子程序工作流程圖三、課程設(shè)計(jì)的結(jié)果1、程序代碼如下:DATASEGMENTINFO1DB0AH,0DH,'WELCOMEYOUTOCOMEHERE!MYDEARTEACHER$'DB0AH,0DH,'THISISAMUSICPROGRAM!'DB0AH,0DH,'PLEASESELECLTWHICHSONGYOULIKEBEST!'INFO4DB0AH,0DH,'INPUTERROR!$'INFO5DB0AH,0DH,'PLEASEINPUTAGAIN!$'MUSLISTDB0AH,0DH,'========================='DB0AH,0DH,'Press1HuanLeSong'DB0AH,0DH,'Press2TWOTIGERS'DB0AH,0DH,'Press3SCALEPLAY'DB0AH,0DH,'Press4EXIT'DB0AH,0DH,'========================='DB0AH,0DH,'$'MUS_FRQ1DW330,330,350,393,393,350,330,294DW262,262,294,330,330,294,294DW330,330,350,393,393,350,330,294DW262,262,294,330,294,262,262DW294,294,330,262,294,330,350,330,262DW294,330,350,330,262,262,294,393DW330,330,350,393,393,350,330,294DW262,262,294,330,294,262,262,-1MUS_TIM1DW50,50,100,100,100DW100,100,50,50,100,100DW100,100,100,50,50,100DW100,100,100,100,100,50DW50,100,100,100,100,100MUS_FRQ2DW262,294,330,262DW262,294,330,262DW330,349,392DW330,349,392DW392,440,392,349,330,262DW392,440,392,349,330,262DW294,196,262DW294,196,262,-1MUS_TIM2DW200,4DUP(100),200,200,200DW200,4DUP(100),200,200,200DW200,4DUP(100),200DW4DUP(100),200,4DUP(100),400TABLEDW262,294,330,349,392,440,494,525NUMBDB0AH,0DH,'Keyboardnumber1~8keysplaynotesofthescale'DB0AH,0DH,'EnterorCtrl+Ctoexit'DB0AH,0DH,'$'DATAENDSSTACKSEGMENTPARASTACK'STACK'STADB200DUP('STACK')STACKENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODE,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AXMOVaH,1MOVAL,00INT10HSHOWMACROBMOVDX,OFFSETBMOVAH,09HINT21HENDMSHOWINFO1LOP:SHOWMUSLISTMOVAH,01HINT21HCMPAL,34HJZRETUCMPAL,31HJNZc0CALLMUSIC1JMPEXIT1C0:CMPAL,32HJNZE0CALLMUSIC2JMPEXIT1E0:CMPAL,33HJNZEXITSHOWNUMBCALLMUSIC3EXIT1:SHOWINFO5JMPLOPEXIT:SHOWINFO4SHOWINFO5JMPLOPRETU:MOVAX,4C00HINT21HMUSIC1PROCLEASI,MUS_FRQ1LEABP,DS:MUS_TIM1FREQ1:MOVDI,[SI]CMPDI,-1JEEND_MUS1MOVBX,DS:[BP]CALLGENSOUNDADDSI,2ADDBP,2JMPFREQ1END_MUS1:RETMUSIC1ENDPMUSIC2PROCLEASI,MUS_FRQ2LEABP,DS:MUS_TIM2FREQ2:MOVDI,[SI]CMPDI,-1JEEND_MUS2MOVBX,DS:[BP]CALLGENSOUNDADDSI,2ADDBP,2JMPFREQ2END_MUS2:RETMUSIC2ENDPMUSIC3PROCNEARPUSHAXPUSHBXPUSHCXLOP5:MOVAH,01HINT21HCMPAL,0DHJEEXIT5CMPAL,31HJBLOP5CMPAL,38HJALOP5ANDAX,0FHSHLAX,1SUBAX,2MOVSI,AXMOVBX,OFFSETTABLEMOVDI,[BX][SI]CALLGENSOUNDJMPLOP5EXIT5:POPCXPOPBXPOPAXRETMUSIC3ENDPGENSOUNDPROCMOVBX,200PUSHAXPUSHBXPUSHCXPUSHDXPUSHDIMOVAL,0B6HOUT43H,ALMOVDX,12HMOVAX,533H*896DIVDIOUT42H,ALMOVAL,AHOUT42H,ALINAL,61HMOVAH,ALORAL,3OUT61H,ALPUSHAXWAIT1:MOVCX,1200DELA1:INAL,61HANDAL,10HCMPAL,AHJEDELA1MOVAH,ALLOOPDELA1DECBXJNZ

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論