微機原理課程設計_第1頁
微機原理課程設計_第2頁
微機原理課程設計_第3頁
微機原理課程設計_第4頁
微機原理課程設計_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

TOC\o"1-5"\h\z\o"CurrentDocument"概述1\o"CurrentDocument"一設計內(nèi)容與要求1\o"CurrentDocument"二設計思想1\o"CurrentDocument"三設計所用芯片及工作原理2\o"CurrentDocument"四系統(tǒng)連線圖2\o"CurrentDocument"五連線圖說明3\o"CurrentDocument"六程序流程圖3\o"CurrentDocument"七程序源代碼5\o"CurrentDocument"八設計過程中遇到的問題及解決方法1111九設計心得11電子琴概述《匯編語言與微機原理》是計算機各專業(yè)一門重要的基礎課,是必修的核心課程之一,對于訓練學生掌握程序設計技術,熟悉上機操作和程序調(diào)試技術都有重要作用。因此該課程在整個教學計劃中占有重要地位。本課程的目的和要求是:1、應使學生掌握8086/8088宏匯編語言程序設計的基本方法和技巧,能夠運用8086/8088宏匯編語言編寫應用程序。提高學生分析問題、解決問題的能力以及實際動手能力。2、應使學生基本掌握匯編語言程序設計的基本理論,方法和技巧,正確地使用結構化、模塊程序設計技術。注意培養(yǎng)學生良好的程序設計風格。3、應使學生比較熟練地使用調(diào)試工具DEBUG調(diào)試8086/8088匯編語言程序。注意提高學生的調(diào)試能力。4、注意與前后相關課程的關系。使學生對前導課程有進一步的理解,同時為學習后繼課程打好基礎。一、設計內(nèi)容與要求編寫一實現(xiàn)電子琴的程序,并實現(xiàn)若干擴展功能。基本功能:用8257鍵盤輸入對應的七個音階,通過實驗箱的喇叭發(fā)出聲音,并通過七段數(shù)碼管顯示輸入音階;擴展功能:1、錄音:記錄所彈奏曲目2、放錄音:任意時刻重放最新記錄曲目3、在程序中可預設一曲目,按一鍵實現(xiàn)播放該曲目。4、在播放錄制曲目或預設曲目時,按8279鍵盤上任意鍵可以暫停播放,再按一次從暫停處繼續(xù)播放。5、程序運行時有友好的用戶介面二、設計思想在本次課程設計中,根據(jù)復雜程序設計思想一一模塊化程序設計,分析和確定程序總體設計目標:電子琴基本功能及部分擴展功能后,將總體目標劃分為若干模塊。程序設計的思路按以下順序進行:1、分析與確定程序總體設計目標2、將總體目標劃分為若干模塊3、定義每個模塊的具體任務,明確它與其他模塊間的通信方式4、編寫源程序,進行調(diào)試,包括:A)簡單電子琴主程序結合實驗指導書的兩程序,將其分為5個子程序,實現(xiàn)簡單的播放和顯示音階的功能。B)錄音子程序?qū)崿F(xiàn)記錄彈奏曲目并播放的功能。首先由9觸發(fā),將輸入的音階存入緩存區(qū)song中,輸入的同時可以發(fā)聲和顯示。當再次按9時錄制完成。C)放音子程序本子程序?qū)崿F(xiàn)放音功能。首先從8279鍵盤讀出鍵碼,判斷,如果鍵碼不是1—8即回到程序開始,如果是,即求出相應的時間常數(shù)的序號,取60次32個正弦波數(shù)據(jù),播放32個數(shù)據(jù),組成一個正弦波。播放60次后,從PORT1中取出值到AL,和1相與,判斷是否有按鍵,如果有就進入死循環(huán),直到下次按鍵為止。放歌子程序調(diào)用放音子程序。暫停子程序在樂曲播放過程中,每調(diào)用一次MUSIC,就從PORT1中取出AL,檢測AL個數(shù),即每次發(fā)音后按鍵盤的次數(shù)。當檢測到AL為1時,即按了一次任意就使程序進入一個死循環(huán),不發(fā)音,到此實現(xiàn)了暫停,然后再次按動任意鍵時,AL就為2,不為1,所以程序跳出死循環(huán),繼續(xù)從斷開處調(diào)用樂曲,繼續(xù)播放。G)源程序整體程序開始,顯示提示信息,對緩存區(qū)、8279初始化。接著調(diào)用發(fā)音子程序,鍵盤子程序,在把AL送緩存區(qū),實現(xiàn)發(fā)音和顯示。接著對9鍵、0鍵、f鍵、r鍵進行逐個判斷,當9按下時,調(diào)用錄音子程序。當按下0時,播放錄制的曲目。當按下f鍵時,播放程序中預設的曲目。當檢測到r時,退出到DOS狀態(tài)。當每一個都檢測不到時,退回到調(diào)用發(fā)音子程序,繼續(xù)發(fā)音顯示。從而實現(xiàn)有擴展功能的電子琴。5、模塊連接,形成完整的程序三、設計所用芯片工作原理(1)對于一個特定的D/A轉(zhuǎn)換接口電路,CPU執(zhí)行一條輸出指令將數(shù)據(jù)送入D/A,即可在其輸出端得到一定的電壓輸出。給D/A轉(zhuǎn)換器輸入按正弦規(guī)律變化的數(shù)據(jù),在其輸出端即可產(chǎn)生正弦波。對于音樂,每個音階都有確定的頻率。各音階標稱頻率值:音附?◎8。領率(單位:H28261.1^293.p329.口p349.為392.0+440.0p493.9為應11也聃12叩10^沖8卯(2)產(chǎn)生一個正弦波的數(shù)據(jù)可取32個(小于亦可),不同頻率的區(qū)別,可通過調(diào)節(jié)向D/A轉(zhuǎn)換器輸出數(shù)據(jù)的時間間隔,例如:發(fā)”1”頻率為261。1HZ,周期為1/261.1=3.83ms,輸出數(shù)據(jù)的時間間隔為3.83ms/32=0.12ms.定時時間可以由8253配合8255來實現(xiàn)。按下某鍵后發(fā)音時間的長短可以由發(fā)出的正弦波的個數(shù)多少來控制。本程序中設置默認長度為60個正弦波。四、系統(tǒng)連線圖(1)8253和8255連接如下1NHZCLIOOUT0GATE0CSiSCiH1NHZCLIOOUT0GATE0CSiSCiH?1J82532:::SK■1FABC£DAL:08Z12*^huh五、連線圖說明計時器8253使用8279芯片的鍵盤控制器,8279鍵盤在一個擴充板上,用一根20芯扁平電纜與實驗臺上擴展插頭J7相連。并行控制器8255六、程序流程圖(1)主程序流程圖(2)發(fā)音子程序流程圖從顯示緩沖區(qū)取出鍵碼根據(jù)鍵碼得到顯示碼送8279顯示六位是否顯示完*丫

返回(3)鍵盤顯示子程序流程圖(4)顯示子程序流程圖N(5)錄音子程序流程圖(6)放錄音子程序流程圖七、程序源代碼STACK1SEGMENTPARASTACK'STACKDB50DUP(0)STACK1ENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATAMOVAX,DATAMOVDS,AXMOVDX,OFFSETMSGMOVAH,9INT21H;顯示提示信息CLIMOVAX,DATAMOVDS,AXMOVSEC1,0MOVSEC2,0MOVMIN1,0MOVMIN2,0MOVHOUR1,0MOVHOUR2,0;顯示緩存區(qū)初始化MOVAX,DATAMOVDS,AXMOVAX,CSMOVDS,AXMOVDX,PORT1MOVAL,0D3H;11010011清除命令特征位OUTDX,AL;8279CLEARMOVAL,2AH;0010101042分頻,內(nèi)部使用1MHZ/42的頻率OUTDX,AL;8279CLOCKMOVAL,40HOUTDX,AL;READFIFORAMCOMMANDMOVAL,00H;8個字符顯示,左入口。編碼掃描鍵盤,雙鍵鎖定。OUTDX,AL;KEYBORDDISPLYMODEMOVAL,80H;寫入的存儲單元地址為0000OUTDX,AL;WRITERAMCOMMANDCALLMUSIC;發(fā)音CALLKEYBORD;CALLKEYBORDANDDISPLYNEXT2:MOVHOUR2,ALMOVHOUR1,ALMOVMIN2,ALMOVMIN1,ALMOVSEC2,ALMOVSEC1,AL;鍵盤碼存入顯示緩沖區(qū)CMPAL,9HJZRECMPAL,0HJZOUTPUTCMPAL,15JZFUCMPAL,13H;'R'COMMANDJNZLP1MOVAX,4C00H;QUITTODOSINT21HLP1:JMPKEY1RE:CALLRE0;錄音JMPLP1OUTPUT:CALLOUTPUT0;放錄音JMPLP1FU:CALLOUTPUT1JMPLP1MAINENDPRE0PROCNEAR;錄音子程序MOVDX,OFFSETMSGPLAYMOVAH,9INT21H;顯示錄音提示信息LEASI,SONGCALLKEYBORDMOVHOUR2,ALMOVHOUR1,ALMOVMIN2,ALMOVMIN1,ALMOVSEC2,ALMOVSEC1,AL;鍵盤碼存入顯示緩沖區(qū)CALLMUSICCALLDISPMOV[SI],AHCMPAH,9JZQRE0INCSIJMPRMOVDX,OFFSETMSGENDMOVAH,9INT21H;顯示錄音提示信息RETRE0ENDPOUTPUT0PROCNEAR;放錄音子程序MOVDX,OFFSETMSGPLAY1MOVAH,9INT21H;顯示PLAY提示信息LEASI,SONGMOVAL,[SI]CMPAL,9JZQRE1MOVHOUR2,ALMOVHOUR1,ALMOVMIN2,ALMOVMIN1,ALMOVSEC2,ALMOVSEC1,AL;鍵盤碼存入顯示緩沖區(qū)CALLDISPMOVAL,AHCALLMUSICINCSIJMPOUMOVDX,OFFSETMSGEND1MOVAH,9INT21H;顯示PLAYEND提示信息RETOUTPUT0ENDPOUTPUT1PROCNEAR;放歌子程序MOVDX,OFFSETMSGPLAY1MOVAH,9INT21H;顯示PLAY提示信息LEASI,SONG1MOVAL,[SI]CMPAL,-1JZQRE2MOVHOUR2,ALMOVHOUR1,ALMOVMIN2,ALMOVMIN1,ALMOVSEC2,ALMOVSEC1,AL;鍵盤碼存入顯示緩沖區(qū)CALLDISPMOVAL,AHCALLMUSICINCSIJMPOU1MOVDX,OFFSETMSGEND1MOVAH,9INT21H;顯示PLAYEND提示信息RETOUTPUT1ENDPKEYBORDPROCNEAR;鍵盤子程序MOVDX,PORT1MOVAL,0D1HOUTDX,AL;CLEARDISPLAYCALLDISPMOVDX,PORT1INAL,DX;讀狀態(tài)ANDAL,07H;判斷是否有按鍵JZWREPKEYN:;下一次的按鍵MOVDX,PORT0INAL,DX;讀數(shù)據(jù)MOVBL,ALANDAL,07HANDBL,38HMOVCL,03SHRBL,CLCMPBL,00HJNZLINE1ADDAL,08HJMPQUIT1CMPBL,01HJNZLINE2JMPQUIT1ADDAL,10HRETKEYBORDENDPDISPPROCNEAR;顯示子程序PUSHSIPUSHCXPUSHDXMOVAX,DATAMOVDS,AXMOVDX,PORT1MOVAL,90HOUTDX,AL;寫地址為0000的顯示緩存區(qū)命令,每次寫入后地址自動加1MOVSI,OFFSETSEC1MOVCX,0001MOVBX,OFFSETLEDCLDLODSBMOVAH,ALXLAT;鍵盤碼轉(zhuǎn)顯示碼MOVDX,PORT0OUTDX,AL;顯示LOOPDISP1POPDXPOPCXPOPSIDISPENDPMUSICPROCNEAR;發(fā)音子程序PUSHSICMPAL,1JLQUITCMPAL,8JGQUIT;若不在’1'-'8'之間轉(zhuǎn)QUIT,不發(fā)音MOVNUM,AL;求出相應的時間常數(shù)的序號MOVCX,60;取60次32個正弦波數(shù)據(jù)MOVSI,0MOVAL,DATA1[SI];取正弦波數(shù)據(jù)MOVDX,IO0832AOUTDX,AL;放音CALLDELAY;調(diào)延時子程序INCSICMPSI,32;是否取完32個數(shù)據(jù)JLLLL;若沒有,則繼續(xù)LOOPDDD;總循環(huán)次數(shù)60是否完,沒有,則繼續(xù)MOVDX,PORT1;掃描實現(xiàn)任意鍵暫停INAL,DX;讀狀態(tài)ANDAL,01H;判斷是否有按鍵JNZFFF;;按鍵延時JMPQUITFFF:MOVCX,60JMPDPOPSIRETMUSICENDPDELAYPROCNEAR;延時子程序CCC:MOVBX,OFFSETTIMEMOVDX,IO8253B;置8253通道0為方式0工作MOVAL,10HOUTDX,ALMOVDX,IO8255B;^8255A口輸入MOVAL,9BHOUTDX,ALMOVAL,NUM;取相應的時間常數(shù)XLATMOVDX,IO8253AOUTDX,AL;向8253通道0輸出KKK:MOVDX,IO8255AINAL,DX;從8255A口讀一字節(jié)TESTAL,01;判PA0口是否為1JZKKK;若不為1,則轉(zhuǎn)KKKRET;子程序返回DELAYENDPCODEENDSENDSTART八、設計過程中遇到的問題及解決方法1.主程序簡單電子琴功能主程序要求完成的功能有:電子琴簡單功能實現(xiàn)以及利用由8279芯片控制的小鍵盤(含數(shù)碼管、鍵盤陣列)實現(xiàn)控制電子琴。主程序由電子琴實驗和鍵盤控制實驗的兩個程序有機組成,兩個程序簡單拼湊在一齊是不能實現(xiàn)的。經(jīng)過實際調(diào)試和修改,將原電子琴程序改為2個子程序:music(實現(xiàn)播放音階)和delay(實現(xiàn)播放音階時延時);將原鍵盤控制程序改為1個主程序:key1、keybord(鍵盤掃描及輸入)和disp(顯示)。各個子程序通過寄存器al通信,31存有當前輸入的鍵盤碼,同時為music、disp兩子程序服務。調(diào)試后,主程序能實現(xiàn)課程設計要求的功能,并且界面清晰、操作容易。2.源程序整體功能將各子程序調(diào)試完成后,進行最后的源程序整體功能調(diào)試。調(diào)試過程中我們注意到:程序模塊化(功能分為若干子程序)能使源程序清晰,調(diào)試簡單

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論