版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、微機(jī)原理與接口技術(shù)課程設(shè)計 一、課程設(shè)計的任務(wù)和目的課程設(shè)計題目:音樂播放器課程設(shè)計的實現(xiàn)目的:本課程設(shè)計主要是通過匯編語言用軟件編程的方法實現(xiàn)簡單的音樂播放功能。通過在微機(jī)原理與接口技術(shù)課程上所學(xué)的匯編知識和8253/8254芯片相關(guān)知識,來完成本課程設(shè)計;用匯編程序完成鍵控音樂播放器的,用8253/8254定時器來產(chǎn)生聲音。該播放器有若干首歌曲可以選擇,開始時輸出說明,要用戶選擇要播放的歌曲,然后根據(jù)用戶按鍵進(jìn)行播放、退出或出錯提示。通過課程設(shè)計環(huán)節(jié)來加強(qiáng)對所學(xué)知識的理解和應(yīng)用。二、課程設(shè)計相關(guān)知識 2.1 定時/計數(shù)器8253/58254 在微機(jī)及控制系統(tǒng)中,經(jīng)常要用到定時信號。如系統(tǒng)的
2、日歷時鐘,動態(tài)存儲器刷新。對外部執(zhí)行機(jī)構(gòu)控制時也需要定時中斷、定時檢測、定時查詢等。定時的方法主要是兩種:軟件定時:利用指令的執(zhí)行時間設(shè)計循環(huán)程序,使cpu 執(zhí)行延遲子程序的時間就是定時時間。缺點:執(zhí)行延遲時,cpu 一直被占用,降低了cpu 的效率。硬件定時:用計數(shù)器/定時器作為主要硬件,在軟件簡單指令的控制下產(chǎn)生精確的時間延遲。突出優(yōu)點為計數(shù)時不占用cpu 時間,如利用定時器/計數(shù)器產(chǎn)生中斷信號,可建立多作業(yè)環(huán)境,提高了cpu 效率。作為定時器可用8253或者8254,二者功能基本相同,知識工作的最高頻率不一樣。本實驗就采用了8254,其主要功能為:(1)每片上有3 個獨立的16 位的減計
3、數(shù)器通道。(2)對于每個計數(shù)器,都可以單獨作為定時器或計數(shù)器使用,并且都可以按照二進(jìn)制或十進(jìn)制來計數(shù)。(3)每個通道都有6 種工作方式,都可以通過程序設(shè)置或改變。(4)每個計數(shù)器的速率可高達(dá)10mhz。主要部分有:數(shù)據(jù)總線緩沖器、讀/寫控制邏輯、控制字寄存器、計數(shù)通道0#、1#、2#:內(nèi)部結(jié)構(gòu)如下圖: 8254內(nèi)部結(jié)構(gòu) 2.2 8254外部引腳8254芯片是具有24個引腳的雙列直插式集成電路芯片,其引腳分布如圖所示。8254芯片的24個引腳分為兩組,一組面向cpu,另一組面向外部設(shè)備,各個引腳及其所傳送信號的情況,介紹如下: 8254的引腳(1)d7d0:雙向、三態(tài)數(shù)據(jù)線引腳,與系統(tǒng)的數(shù)據(jù)線連
4、接,傳送控制、數(shù)據(jù)及狀態(tài)信息。(2)rd:來自于cpu的讀控制信號輸入引腳,低電平有效。(3)wr:來自于cpu的寫控制信號輸入引腳,低電平有效。(4)cs:芯片選擇信號輸入引腳,低電平有效。(5)a1、a0:地址信號輸入引腳,用以選擇8254芯片的通道及控制字寄存器。(6)vcc及gnd:+5v電源及接地引腳。(7)clki: i=0,1,2,第i個通道的計數(shù)脈沖輸入引腳,8254規(guī)定,加在clk引腳的輸入時鐘信號的頻率不得高于2.6mhz,即時鐘周期不能小于380ns。(8)gatei: i=0,1,2,第i個通道的門控信號輸入引腳,門控信號的作用與通道的工作方式有關(guān)。(9)outi:i=
5、0,1,2,第i個通道的定時/計數(shù)到信號輸出引腳,輸出信號的形式由通道的工作方式確定,此輸出信號可用于觸發(fā)其它電路工作,或作為向cpu發(fā)出的中斷請求信號。2.3 8254端口地址 8254控制字說明 : (1) 8254每個通道對輸入clk按二進(jìn)制或二十進(jìn)制從預(yù)置值開始減1計數(shù),減到0時從out輸出一個信號。 (2) 8254編程時先寫控制字,再寫時間常數(shù)。2.4 8254工作方式(1) 方式0:計數(shù)結(jié)束產(chǎn)生中斷方式當(dāng)寫入控制字后,out變?yōu)榈碗娖?,?dāng)寫入初值后立即開始計數(shù),當(dāng)計數(shù)結(jié)束時,變成高電平。(2) 方式1:可編程單次脈沖方式當(dāng)初值裝入后且gate由低變高時,out變?yōu)榈碗娖?,計?shù)結(jié)束
6、變?yōu)楦唠娖健?3) 方式2:頻率發(fā)生器方式當(dāng)初值裝入時,out變?yōu)楦?;計?shù)結(jié)束,out變?yōu)榈?。該方式下如果計?shù)未結(jié)束,但gate為低時,立即停止計數(shù),強(qiáng)制out變高,當(dāng)gate再變高時,便啟動一次新的計數(shù)周期。(4) 方式3:方波發(fā)生器當(dāng)裝入初值后,在gate上升沿啟動計數(shù),out 輸出高電平; 當(dāng)計數(shù)完成一半時,out輸出低電平。方式3與方式2的工作方式類似,也是在初始化完成后能重復(fù)循環(huán)計數(shù),只是輸出的波形不同。(5)方式4:軟件出發(fā)選通方式進(jìn)入工作方式4,outi輸出高電平。 裝入計數(shù)值n后, 如果gate為高電平,則立即開始減“1”計數(shù),直到計數(shù)值減到“0”為止,outi輸出寬度為一個c
7、lki周期的負(fù)脈沖。由軟件裝入的計數(shù)值只有一次有效,如果要繼續(xù)操作, 必須重新置入計數(shù)初值n。如果在操作的過程中,gate變?yōu)闊o效,則停止減“1”計數(shù), 到gate再次有效時,重新從初值開始減“1”計數(shù)。(6)方式5:硬件觸發(fā)方式計數(shù)進(jìn)入工作方式5, outi輸出高電平, 硬件觸發(fā)信號由gate端引入。 因此,開始時gate應(yīng)輸入為0, 裝入計數(shù)初值n后,減“1”計數(shù)并不工作,一定要等到硬件觸發(fā)信號由gate端引入一個正階躍信號,減“1”計數(shù)才會開始,待計數(shù)值計到“0”, outi將輸出負(fù)脈沖,其寬度固定為一個clki周期,表示定時時間到或計數(shù)次數(shù)到。三、程序設(shè)計思路所有音樂都是由各個不同頻率
8、的音階和其延續(xù)時間的長短來實現(xiàn)的。不同的音樂是由各個音階按某種排列各自播放一定時間形成的,將各音樂音階和其延續(xù)時間存在數(shù)據(jù)段中,然后根據(jù)不同按鍵值選擇不同的音階和時間表,再使用計數(shù)器產(chǎn)生該音階頻率。cpu通過對定時器的通道2(端口地址為42)進(jìn)行編程,使其i/o寄存器接收一個控制聲音頻率的16位計數(shù)值,端口61h的最低控制通道2門控的開斷。以產(chǎn)生特殊的音響。當(dāng)定時器接收的計數(shù)值為533h時,能產(chǎn)生896hz的聲音,因此產(chǎn)生其他頻率的計數(shù)值就可算出來:533hz×896÷頻率=1234dc÷頻率在送出頻率計數(shù)值之前,還要給方式寄存器送一個方式值,該數(shù)決定對哪一個通道
9、編程,采用什么模式,送入通道的計數(shù)值是一字節(jié)還是兩字節(jié),是二進(jìn)制碼還是bcd碼。其位組合的格式如下:當(dāng)通道2用于發(fā)聲時,采用的是模式3,在模式3下,輸出線為“1”和為“0”的時間各占計數(shù)時間的一半,因而產(chǎn)生一系列間隔均勻的脈沖。 產(chǎn)生指定頻率聲音的程序段如下: mov al,0b6h out 43h,al ;43h為8254的控制字端口 mov dx,12h mov ax,34dch div di ;(di)=頻率 out 42h,al ;42h為8254的通道2端口 mov al,ah mov 42h,al從定時器輸出的方波信號,經(jīng)功率放大和濾波后驅(qū)動揚聲器。送到揚聲器的信號還受到了從并行接
10、口芯片8255(端口地址為61h)來的雙重控制,端口61h的最低位控制通道2的門控開斷,以產(chǎn)生特殊的音頻信號,端口61h的pa1位和定時器的輸出信號同時作為與門的輸入,pa0和pa1位可由程序決定為0還是為1。顯然只有pa0和pa1都是1時,才能使揚聲器發(fā)出聲音??刂埔糸L的時間可以簡單地通過反復(fù)執(zhí)行指令來得到。我們知道執(zhí)行2801次loop指令約需要10ms的時間。因此用10ms的倍數(shù)值來控制揚聲器開關(guān)的時間間隔,就可控制發(fā)聲的音長了。實現(xiàn)程序如下: in al,61h mov ah,al or al,3 out 61h,al ;開揚聲器l: mov cx,2801dy:loop dy dec
11、 bx jnz l mov al,ah out 61h,al ;關(guān)揚聲器四、功能流程圖及子程序說明1、總流程圖main程序:main程序是總程序,輸出說明,等待用戶按鍵并讀取鍵值。根據(jù)不同的按鍵選擇調(diào)用播音子程序播放不同的歌曲。2、音樂播放子程序流程圖play子程序:play子程序是播音子程序,si指向音節(jié)表中的頻率,bp指向音節(jié)表中的時間。從si的指向的音節(jié)表中取一個頻率,只要不是-1,即有效就再讀取時間,然后計算計數(shù)初值送入計數(shù)器,產(chǎn)生各種頻率。開啟揚聲器,根據(jù)所取的時間調(diào)用若干次延時子程序。這段時間揚聲器就發(fā)出該頻率的聲音,延時結(jié)束,就關(guān)閉揚聲器,調(diào)用音節(jié)之間的小延時程序。最后修改si和
12、bp,指向下一個頻率,重復(fù)上面的工作delay子程序和delay_off子程序:兩個都是子程序,采用空操作循環(huán)多次的方法,只是第二個延時時間較短,大概為5ms。五、試驗結(jié)果截屏:初始界面:如果按錯了鍵,會出現(xiàn)如下界面:如果選擇正確,將出現(xiàn)如下界面:六、參考文獻(xiàn)【1】李長青. 微機(jī)原理與接口技術(shù). 徐州:中國礦業(yè)大學(xué)出版社,2006【2】沈美明. 匯編語言程序設(shè)計實驗教程. 北京:清華大學(xué)出版社,2002年【3】周明德. 微機(jī)原理與接口技術(shù). 北京:人民郵電出版社,2002年七、總結(jié)在本次設(shè)計中,可以說是一次成功的經(jīng)驗。在我們學(xué)完了微型計算機(jī)原理與接口技術(shù)這門課的基礎(chǔ)上來做這個設(shè)計,通過設(shè)計后,
13、使我們對這門課的理論知識的理解有很大程度上的加強(qiáng)。微機(jī)原理這門課程本身是一門實驗性和工程性很強(qiáng)的專業(yè)技術(shù)課,因此不僅要重視理論教學(xué),更應(yīng)注意實踐技能的培養(yǎng)和訓(xùn)練。課程設(shè)計是這門課程的一個重要環(huán)節(jié),通過課程設(shè)計,鞏固、加深和拓寬了學(xué)習(xí)的理解,本課程設(shè)計的重點目標(biāo)是使用匯編語言,而不過多涉及硬件方面的太多知識。在編程方面我通過本次課程設(shè)計學(xué)到了很多。一開始面對很長的程序往往有畏難情緒,感覺無法下手,沒辦法只能硬著頭皮啃下去,多看幾個和音樂播放有關(guān)的匯編程序,然后我就能慢慢看懂了并理解了別的作者的設(shè)計思路。然后再根據(jù)自己的思路,對照本人在圖書館借的匯編語言指導(dǎo)書慢慢編寫符合自己思路的程序。一次寫出來
14、的程序肯定不會是正確的,還需要進(jìn)一步調(diào)試它。檢查程序過程中,在充分思考的基礎(chǔ)上多次實驗是檢查改正程序的良方。編寫程序的過程中,體會最深的是子程序的調(diào)用和程序的條理問題,一個程序就算功能實現(xiàn)了,但是也要使主程序和子程序的條理分明,易讀性高,才能算一個比較好的程序。調(diào)試程序中,學(xué)習(xí)了debug 的使用,debug對檢查程序的錯誤作用很大。同時,也要靈活使用各種調(diào)試方法,來縮小尋找錯誤的范圍。書到用時方恨少。在課程設(shè)計過程中,我才體會到這句話的深意。課堂上學(xué)的8254的知識和匯編語言都太少,還不足以完成本次課設(shè),為此我經(jīng)常跑圖書館借了各種各樣的工具書。有的書用處較大,有的書僅能用到一小塊知識,就是這
15、樣,一步步在知識的海洋里我尋覓著自己需要的東西,確實克服了不少困難,解決了不少問題。或許坎坷才能更好的使人成長。在這次的課程設(shè)計中,我的收獲是不但做出了一個符合要求的音樂播放器,而且為自己積累了一些寶貴的經(jīng)驗。同時我也對音樂方面的頻率知識有了一些認(rèn)識,我想如果不是本次課程設(shè)計中用到這方面知識,我這輩子可能沒有機(jī)會去接觸這方面的知識了。這,或許也是我比別的同學(xué)多出的一點收獲吧!六、附錄1、源程序代碼:sseg segment para stack 'stack' dw 100h dup(0) ;resize the stack by changing the number
16、9;100'sseg endsdseg segmentinfo1 db 0dh,0ah,'-',0dh,0ah,'there are 3 songs:',0dh,0ah,0dh,0ah,'$'info2 db '1.happy birthday',0dh,0ah,'$'info3 db '2.sheep',0dh,0ah,'$'info4 db '3.river',0dh,0ah,'$'info5 db '0.exit',0dh
17、,0ah,'$'info6 db 'you have chosen :$'info7 db 'thank you for your use',0dh,0ah,'$'info8 db '-',0dh,0ah,'press the key to select song!',0dh,0ah,'$'info9 db 0dh,0ah,'-',0dh,0ah,'|invalid selection|',0dh,0ah,'-',0dh,0ah,
18、9;$'freg1 dw 2 dup(262),294,262,349,262,262,294,262,392,249,262,262,523,440,349 ;曲1的頻率dw 330,294,466,266,440,349,392,349,-1time1 dw 1,1,2,2,2,4,1,1,2,2,2,4,1,1,2,2,2,2,4,1,1,2,2,2,4 ;曲1的時間freg2 dw 330,294,262,294,3 dup(330) ;曲2的頻率dw 3 dup(294),330,392,392dw 330,294,262,294,4 dup(330)dw 294,294,3
19、30,294,262, -1time2 dw 6 dup(1),2 ;曲2的時間dw 2 dup(1,1,2)dw 12 dup(1),4freg3 dw 330,392,330,294,330,392,330,294,330,330,392,330,294,262,294,330,392,294 ;曲3的頻率dw 262,262,220,196,220,262,294,332,262, -1time3 dw 3 dup(2),1,1,2,1,1,4 ;曲3的時間dw 2 dup(2,2,1,1),4dw 3 dup(2,1,1,1),4dseg endscseg segment assume
20、 cs:cseg, ds:dseg, es:dseg, ss:sseg init proc ;初始化程序 mov ax, dsegmov ds, axmov es, ax init endp main proc ;程序入口 call init re: mov dx,28bh ;關(guān)閉揚聲器mov al,89hout dx,almov dx,28ahin al,dxmov dx,288hout dx,al lea dx,info1 ;輸出說明信息mov ah,09hint 21hlea dx,info2int 21hlea dx,info3int 21hlea dx,info4int 21hlea
21、 dx,info5int 21hlea dx,info8int 21hmov ah,01h ;讀取按鍵int 21hcmp al,'1' ;根據(jù)不同的按鍵播放不同的曲子je music1cmp al,'2'je music2cmp al,'3'je music3cmp al,'0'je exitlea dx,info9 ;無效選擇,輸出錯誤提示mov ah,09hint 21hjmp re music1:mov si,offset freg1 ;指向曲1的表mov bp,offset time1call playjmp remus
22、ic2:mov si,offset freg2 ;指向曲2的表mov bp,offset time2call playjmp remusic3:mov si,offset freg3 ;指向曲3的表mov bp,offset time3call playjmp reexit:mov dx,28bh ;關(guān)閉揚聲器mov al,89hout dx,almov dx,28ahin al,dxmov dx,288hout dx,allea dx,info7 ;輸出歡迎使用信息,增加界面友好度mov ah,09hint 21hmov ax, 4c00h ;the end of the program,
23、return to the system int 21h main endp play proc ;play子程序,功能上面介紹過 l1:mov bx,ds:si ;取頻率 cmp bx,-1 ;看是否有效 je l0 ;無效就退出 mov cx,ds:bp ;讀取時間 mov dl,cl ;保存時間 add dl,30h mov ah,02h int 21h mov dx,0fh ;計算計數(shù)初值,1m的十六進(jìn)制為0f4240h mov ax,4240h div bx mov bx,ax mov dx,283h ;設(shè)置計數(shù)器工作方式 mov al,36h out dx,al mov dx,28
24、0h ;輸入計數(shù)初值 mov ax,bx out dx,al mov al,ah out dx,al mov dx,28bh ;開揚聲器mov al,89hout dx,almov dx,28ahin al,dxnot almov dx,288hout dx,al rod:call delay ;延時 loop rod mov dx,28bh ;關(guān)揚聲器mov al,89hout dx,almov dx,28ahin al,dxmov dx,288hout dx,al call delay_off ;音節(jié)間延時 add si,2 add bp,2 jmp l1 l0:ret play endp
25、 delay proc ;延時子程序 push ax push bx push cx push dx mov bx,09fhll1:mov cx,0ffffh ;循環(huán)這么多次lop: loop lopdec bxjnz ll1pop dx pop cx pop bx pop ax ret delay endp delay_off proc push ax push bx push cx push dx mov bx,0fhll2:mov cx,0cfffhlop2: loop lop2dec bxjnz ll2pop dx pop cx pop bx pop ax retdelay_off e
26、ndpcseg endsend main2、各個音符的對應(yīng)頻率表:音符 頻率/hz 半周期/us 音符 頻率/hz 半周期/us低1do 262 1908 #4fa# 740 0676#1do# 277 1805 中5so &
27、#160; 784 0638低2re 294 1700 #5so# 831 0602#2re# 311 1608 中6la 880
28、 0568低3m 330 1516 #6la# 932 0536低4fa 349 1433 中7si 988 0506#4fa# 370
29、0; 1350 高1do 1046 0478低5so 392 1276 #do# 1109 0451#5so# 415 1205 高2re 1175 0426低6la 440 1136 #2re# 1245 0402#6la# 466
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 氣象站監(jiān)控設(shè)施安裝協(xié)議
- 河岸護(hù)坡植草磚施工合同
- 酒吧現(xiàn)場布置設(shè)計師合同
- 水泥攪拌樁工程合同住宅小區(qū)建設(shè)
- 學(xué)校教職工專車司機(jī)聘用協(xié)議
- 地下管線探測挖機(jī)租賃協(xié)議
- 通信行業(yè)用電合同范例
- 速遞員聘用合同模板
- 工程勞工合同范例
- 草籽綠化合同
- 金屬擠壓共(有色擠壓工)中級復(fù)習(xí)資料練習(xí)試題附答案
- 投標(biāo)報價得分計算表Excele
- 醫(yī)院放射科輻射評估報告
- 小學(xué)數(shù)學(xué)問題解決能力的培養(yǎng)策略
- 【“農(nóng)超對接”對農(nóng)戶收入的影響調(diào)查報告8700字】
- 2023高二英語外研版新教材選擇性必修二全冊課文原文(精校)
- 生物研究性學(xué)習(xí)活動結(jié)題報告質(zhì)壁分離
- 交通運輸風(fēng)險點危險源排查管控清單
- 堡坎承包合同
- 羊胎盤藥材質(zhì)量標(biāo)準(zhǔn)
- 眾辰變頻器z2400t-15gy-1說明書
評論
0/150
提交評論