《微機(jī)原理與應(yīng)用》課程設(shè)計(jì)電子音樂播放器_第1頁
《微機(jī)原理與應(yīng)用》課程設(shè)計(jì)電子音樂播放器_第2頁
《微機(jī)原理與應(yīng)用》課程設(shè)計(jì)電子音樂播放器_第3頁
《微機(jī)原理與應(yīng)用》課程設(shè)計(jì)電子音樂播放器_第4頁
《微機(jī)原理與應(yīng)用》課程設(shè)計(jì)電子音樂播放器_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、電子音樂播放器一、課程設(shè)計(jì)的目的和意義學(xué)習(xí)和掌握計(jì)算機(jī)中常用接口電路的應(yīng)用和設(shè)計(jì)技術(shù),學(xué)會(huì)針對(duì)不同的要求設(shè)計(jì)匯編程序代碼,充分認(rèn)識(shí)理論知識(shí)對(duì)應(yīng)用技術(shù)的指導(dǎo)性作用,進(jìn)一步加強(qiáng)理論知識(shí)與應(yīng)用相結(jié)合的實(shí)踐和鍛煉。通過這次設(shè)計(jì)實(shí)踐能夠進(jìn)一步加深對(duì)專業(yè)知識(shí)和理論知識(shí)學(xué)習(xí)的認(rèn)識(shí)和理解,使自己的設(shè)計(jì)水平和對(duì)所學(xué)知識(shí)的應(yīng)用能力以及分析問題解決問題的能力得到全面提高。二、設(shè)計(jì)要求利用8254作為音階頻率發(fā)生器,應(yīng)先對(duì)至少兩段音樂進(jìn)行編碼后存入音符表,并建立好音階表,每段音符長度不能少于60個(gè),每首連續(xù)播放3遍后,自動(dòng)播放下一段音樂,幾段音樂播完后,循環(huán)播放,直到有鍵盤輸入任意字符時(shí)停止,并且使用8255作為控制

2、開關(guān)的并行輸入接口,輸入開關(guān)選擇的音樂控制信號(hào)。三、設(shè)計(jì)總框圖四、設(shè)計(jì)設(shè)計(jì)思路說明:電子音樂播放器屬于接口電路的連接使用,本設(shè)計(jì)是以8254芯片為核心的發(fā)生系統(tǒng)。8086cpu在形成系統(tǒng)總線后,通過和8254及8255的連接使用可以很好的驅(qū)動(dòng)揚(yáng)聲器發(fā)音。系統(tǒng)初始化后,8255通過b通道,從控制開關(guān)讀取所需的控制字,并送入8086cpu中進(jìn)行判斷,選擇不同的播放音樂。使8254的通過0號(hào)計(jì)數(shù)器工作在“頻率發(fā)生器”方式3,向發(fā)生器發(fā)出不同頻率的方波。當(dāng)給定不同的計(jì)數(shù)初值時(shí)可以使揚(yáng)聲器發(fā)出不同頻率的音響。五、程序流程圖開始讀取音符頻率播放音樂讀取選擇信號(hào)y播放song1是1h嗎?h鍵嗎?yn播放so

3、ng2是2h嗎?y是4h嗎?播放song3nnncx=0yn鍵盤是否輸入?y結(jié)束六、接口電路原理圖1、8254的基本知識(shí)8254占用4個(gè)端口,3個(gè)定時(shí)器各占1個(gè),控制端口占1 個(gè)。8254的內(nèi)部結(jié)構(gòu)如圖所示,它主要包括以下幾個(gè)主要部分:8254的內(nèi)部結(jié)構(gòu)(1)數(shù)據(jù)總線緩沖器實(shí)現(xiàn)8254與cpu數(shù)據(jù)總線連接的8位雙向三態(tài)緩沖器,用以傳送cpu向8254的控制信息、數(shù)據(jù)信息以及cpu從8254讀取的狀態(tài)信息,包括某時(shí)刻的實(shí)時(shí)計(jì)數(shù)值。(2)讀/寫控制邏輯控制8254的片選及對(duì)內(nèi)部相關(guān)寄存器的讀/寫操作,它接收cpu發(fā)來的地址信號(hào)以實(shí)現(xiàn)片選、內(nèi)部通道選擇以及對(duì)讀/寫操作進(jìn)行控制。(3)控制字寄存器在8

4、254的初始化編程時(shí),由cpu寫入控制字,以決定通道的工作方式,此寄存器只能寫入,不能讀出。(4)計(jì)數(shù)通道0#、1#、2#:這是三個(gè)獨(dú)立的,結(jié)構(gòu)相同的計(jì)數(shù)器/定時(shí)器通道,每一個(gè)通道包含一個(gè)16位的計(jì)數(shù)寄存器,用以存放計(jì)數(shù)初始值,一個(gè)16位的減法計(jì)數(shù)器和一個(gè)16位的鎖存器,鎖存器在計(jì)數(shù)器工作的過程中,跟隨計(jì)數(shù)值的變化,在接收到cpu發(fā)來的讀計(jì)數(shù)值命令時(shí),用以鎖存計(jì)數(shù)值,供cpu讀取,讀取完畢之后,輸出鎖存器又跟隨減1計(jì)數(shù)器變化。(5)8254外部引腳8254芯片是具有24個(gè)引腳的雙列直插式集成電路芯片,其引腳分布如圖所示。8254芯片的24個(gè)引腳分為兩組,一組面向cpu,另一組面向外部設(shè)備,各個(gè)

5、引腳及其所傳送信號(hào)的情況,介紹如下:1d7d0:雙向、三態(tài)數(shù)據(jù)線引腳,與系統(tǒng)的數(shù)據(jù)線連接,傳送控制、數(shù)據(jù)及狀態(tài)信息。2:來自于cpu的讀控制信號(hào)輸入引腳,低電平有效。3:來自于cpu的寫控制信號(hào)輸入引腳,低電平有效。4:芯片選擇信號(hào)輸入引腳,低電平有效。8254的引腳(6). 8254端口地址 8254端口地址(7). 8254功能 8253 a既可作定時(shí)器又可作計(jì)數(shù)器: 計(jì)數(shù): 計(jì)數(shù)器裝入初值后,當(dāng)gate為高電平時(shí),可用外部事件作為clk 脈沖對(duì)計(jì)數(shù)值進(jìn)行減1 計(jì)數(shù),每來一個(gè)脈沖減1,當(dāng)計(jì)數(shù)值減至0時(shí),由out 端輸出一個(gè)標(biāo)志信號(hào)。定時(shí): 計(jì)數(shù)器裝入初值后,當(dāng)gate為高電平時(shí),由clk

6、脈沖觸發(fā)開始自動(dòng)計(jì)數(shù),當(dāng)計(jì)數(shù)到零時(shí),發(fā)計(jì)數(shù)結(jié)束定時(shí)信號(hào)。除上述典型應(yīng)用外,8253a還可作頻率發(fā)生器、分頻器、實(shí)時(shí)鐘、單脈沖發(fā)生器等。(二)、系統(tǒng)設(shè)計(jì)(1).控制字8255利用端口b從音樂播放選擇端口讀入8位數(shù)據(jù)進(jìn)行判斷,同時(shí)8254選擇通道0,方式3,二進(jìn)制,先讀低位/后高位讀數(shù)。則輸入的控制字為:mov dx,d8255_mode mov al,10000010b out dx,al mov dx,d8254_mode mov al,00110110b out dx,al(2).演奏單音符 8254芯片(口地址為40h43h)的0號(hào)計(jì)數(shù)器工作在方式3作為頻率發(fā)生器發(fā)出方波。每一個(gè)音符對(duì)應(yīng)一

7、個(gè)頻率,將與一個(gè)頻率對(duì)應(yīng)的計(jì)數(shù)初值寫入0號(hào)計(jì)數(shù)器,揚(yáng)聲器就可以發(fā)出相應(yīng)的音調(diào)。由于本實(shí)驗(yàn)采用的時(shí)鐘是8086cpu時(shí)鐘,其頻率可選為1mhz。故計(jì)數(shù)初值的計(jì)算公式如下: 計(jì)數(shù)初值=1m/輸出頻率1mhz轉(zhuǎn)換為16進(jìn)制數(shù)為0f4240h,因此在打開揚(yáng)聲器的情況下執(zhí)行以下子程序即可發(fā)出與輸出頻率對(duì)應(yīng)的音調(diào)。 mov dx ,4ch mov ax,4b40h mov cx,頻率值 div cx ;ax=計(jì)數(shù)初值 out 40h,al mov al,ah out 40h,al(3).演奏時(shí)間控制通過控制每個(gè)音符的演奏時(shí)間可以使樂曲更加有節(jié)奏感。最直觀的方法是按照樂譜為每一個(gè)音符規(guī)定一個(gè)演奏時(shí)間,但是利

8、用這種方法調(diào)試程序特別困難。特別是在遇到一首不熟悉的歌曲時(shí),初期很難確定每個(gè)音符的演唱時(shí)間,而調(diào)試程序的時(shí)候費(fèi)時(shí)費(fèi)力,效果很差。我們可以利用另外一種方法,即為每個(gè)音符規(guī)定一個(gè)“單位時(shí)間”。單位時(shí)間n=音符的演唱時(shí)間其中,n為調(diào)試參數(shù),一首歌曲只有一個(gè)調(diào)試參數(shù),它為常數(shù)。由于每個(gè)音符的節(jié)奏(即演唱時(shí)間)不同,所以各個(gè)音符的“單位時(shí)間”都不一樣。 每個(gè)音符演奏的 “單位時(shí)間”的確定: 我們知道,音符的節(jié)奏分為一拍、半拍、1/4拍、1/8拍等等。如果在一首歌中,所有音符中演奏時(shí)間最短的為1/8拍,我們就規(guī)定1/8拍音符的 “單位時(shí)間”為1,1/4拍音符的“單位時(shí)間”為2,半拍音符的“單位時(shí)間”為4,

9、一拍音符的“單位時(shí)間”為8。調(diào)試參數(shù)n的確定:顯然,如果能測(cè)出一段樂譜的總的時(shí)間t,用t(i)來表示第i個(gè)音符的“單位時(shí)間”,那么: n=(4)、頻率表和時(shí)間表設(shè)計(jì)程序時(shí),數(shù)據(jù)段設(shè)這兩張 “表”,一張是頻率表,將與音符對(duì)應(yīng)的頻率值依次寫入表中,另一張是時(shí)間表,依次存放每個(gè)音符的單位時(shí)間。當(dāng)然頻率表項(xiàng)和時(shí)間表項(xiàng)要一一對(duì)應(yīng),不能錯(cuò)位,頻率表的最后一個(gè)表項(xiàng)為0,作為重復(fù)演唱或者停止演唱的標(biāo)志。在接通揚(yáng)聲器的情況下,依次取出頻率表中的頻率值,轉(zhuǎn)換成計(jì)數(shù)初值寫入2號(hào)計(jì)數(shù)器,依次取出時(shí)間表中的單位時(shí)間和調(diào)試參數(shù)n相乘,然后再調(diào)用延時(shí)子程序即可得到延時(shí)時(shí)間,也就是音符的演奏時(shí)間。表一:音階頻率表音階 頻率(

10、hz) 12472247(122)=277331143305370641574661247(122)12 =247*2=494表二:音符頻率表(hz) 247,247,277,311,311,330,330,311,311,277 277,311,277,247,466,247,415,415,247,247 277,311,311,330,330,311,311,370,415,370 311,277,247,277,277,247,330,370,415,370 330,247,247,311,311,330,311,277,247,277 370,370,370,370,247,247,

11、277,247,415,370,-1表三:單位時(shí)間表 4 4 8 4 4 8 4 4 4 2 2 4 4 84 4 4 2 2 4 4 84 4 8 4 4 8 8 8 4 4 4 4 8 4 4 4 4 16 4 4 4 4 4 4 4 4 4 4 4 4 16七、設(shè)計(jì)總結(jié) (一)設(shè)計(jì)總結(jié) 通過對(duì)電子音樂播放器的設(shè)計(jì),從電路到匯編代碼,再到對(duì)程序的調(diào)試,在整個(gè)的設(shè)計(jì)過程中學(xué)到了很多,例如,對(duì)8254發(fā)生原理的理解,其工作原理就是對(duì)輸入相同的脈沖,通過計(jì)數(shù)器的控制作用,輸出需要的不同頻率的波。同時(shí)用到了8255的并行接口,將二進(jìn)制的控制信息傳入8086cpu中處理,選擇是否對(duì)音樂播放進(jìn)行調(diào)整。

12、在使用8255和8254接口的時(shí)候,都要對(duì)其進(jìn)行初始化,這初始化程序的編寫,有助于對(duì)這些接口芯片的工作原理的理解。同時(shí)在調(diào)試過程中對(duì)不同音階進(jìn)行調(diào)試,加深了對(duì)發(fā)聲原理的理解與掌握??傊趯?shí)驗(yàn)中自己動(dòng)手,把理論知識(shí)用于實(shí)踐,從中能夠領(lǐng)會(huì)很多。(二)設(shè)計(jì)存在的問題和不足 由于是初次設(shè)計(jì)這個(gè)微機(jī)課程設(shè)計(jì),在設(shè)計(jì)中由于考慮不全或知識(shí)面的狹窄,導(dǎo)致了在實(shí)驗(yàn)設(shè)計(jì)中出現(xiàn)一些不足和錯(cuò)誤,主要有以下幾點(diǎn):1、 實(shí)驗(yàn)箱里面的線路連接和接線接頭不是很熟悉,在實(shí)驗(yàn)連線中偶爾出現(xiàn)錯(cuò)誤。2、 關(guān)于實(shí)驗(yàn)中的芯片的使用方法,存在問題,不能準(zhǔn)確的合理使用芯片功能。3、 寫程序代碼時(shí),由于知識(shí)面的狹窄,會(huì)對(duì)一些步驟的編寫出現(xiàn)錯(cuò)

13、誤,不過查資料后都正確的改正了。4、 關(guān)于循環(huán)和聲音控制計(jì)數(shù)器中數(shù)的計(jì)算有點(diǎn)問題,不過經(jīng)過老師的解答,也基本弄清楚了。5、 設(shè)計(jì)中最大的難處就是實(shí)現(xiàn)上面的對(duì)音節(jié)時(shí)間的控制方式,在最后的編程中沒有使用上面的時(shí)間控制方式,從而導(dǎo)致了最后輸出地音樂的聲音不是很標(biāo)準(zhǔn),同時(shí)也難調(diào)試。(三)心得體會(huì) 這次課程設(shè)用了一個(gè)星期,在這一個(gè)星期的日子里,雖然還要復(fù)習(xí)其他的學(xué)科知識(shí)以應(yīng)對(duì)相應(yīng)的期末考試,但在每天下午的設(shè)計(jì)實(shí)驗(yàn)室里面還是靜下心來認(rèn)認(rèn)真真的編寫匯編代碼,學(xué)習(xí)連接線路芯片。在之前的書本理論知識(shí)的學(xué)習(xí)中對(duì)相應(yīng)的芯片知識(shí)不是很了解,在課程設(shè)計(jì)的過程中,加深了其理解。同時(shí),也對(duì)整個(gè)學(xué)科的知識(shí)進(jìn)行了匯總學(xué)習(xí)。從8

14、286cpu到8255并行接口再到8254可編程計(jì)數(shù)器的使用原來和連接方法進(jìn)行深入的學(xué)習(xí),關(guān)于8255和8254相應(yīng)的程序控制字進(jìn)行了理解與掌握,基本熟悉了其相關(guān)的用法,在把理論知識(shí)用在了實(shí)際問題的解答之中,即進(jìn)一步學(xué)會(huì)了怎么將理論與實(shí)踐結(jié)合起來解決問題。雖然,認(rèn)認(rèn)真真的看書找資料,但還是會(huì)在設(shè)計(jì)過程中遇到一些問題,但在老師是指導(dǎo)下,問題一個(gè)一個(gè)的解決,知識(shí)和動(dòng)手能力再一點(diǎn)一點(diǎn)的增加,相信只有把知識(shí)應(yīng)用到實(shí)際中才算是真正的學(xué)習(xí)知識(shí)。八、匯編程序代碼d8255_mode equ 0c003hd8255_b_du equ 0c001hd8254_mode equ 0c063hd8254_cout

15、equ 0c060hname dzyybfpage 50,70data1 segmentfreq1 dw 247,247,277,311,311,330,330,311,311,277 dw 277,311,277,247,466,247,415,415,247,247 dw 277,311,311,330,330,311,311,370,415,370 dw 311,277,247,277,247,330,370,415,370,330 dw 247,247,311,311,330,311,277,247,415,370,0,0time1 dw 50,25,25,50,50,50,50,25

16、,100,50 dw 25,25,50,50,50,50,25,100,50,25 dw 25,50,50,50,50,50,50,25,50,50 dw 25,25,50,50,50,25,100,75,25,25 dw 25,25,25,25,25,25,100,50,50,25,0,0freq2 dw 265,294,330,262,262,294,330,262,330,349 dw 392,330,349,392,392,440,392,349,330,262 dw 392,440,392,349,330,262,294,196,262,294 dw 196,262,0time2 d

17、w 50,50,100,100,100,100,100,50,50,100 dw 100,100,100,100,50,50,100,100,100,100 dw 100,100,50,50,100,100,100,100,100,50 dw 100,100,0,0freq3 dw 7 dup(330),392,262,294,330,4 dup(349) dw 2 dup(330),330,294,262,294,392 dw 7 dup(330),392,262,294,330,4 dup(349) dw 2 dup(330),392,392,349,294,262,0,0time3 dw

18、 2 dup(25,25,50),4 dup(25),100 dw 2 dup(25,25,50),4 dup(25) dw 2 dup(50),2 dup(25,25,50),4 dup(25),100 dw 2 dup(25,25,50),4 dup(25),100,0,0data1 endsstack1 segment para stack dw 100 dup(?)stack1 endscode segment assume cs:code,ds:data1 assume ss:stack1start: mov ax,data1 mov ds,ax mov ax,0 mov si,ax

19、 mov dx,d8255_mode mov al,10000010b ;b端口方式0輸人 out dx,al mov dx,d8254_mode ;連接8253的控制端口 mov al,00110110b ;定義8253為通道0,方式3,out dx,al ;二進(jìn)制,先讀低位/后讀高位 music1: mov cx,4hcircul1: dec cx jz music2 lea di,freq1 ;取偏移地址 lea bp,time1 loop1: mov ax,di ;取時(shí)間偏移地址 cmp ax,0 je circul1 call speaker xor ax,ax mov dx,d82

20、55_b_du ;連接8255_b端口 in al,dx ;從手動(dòng)控制端讀入控制選擇信息 mov ah,0 cmp ax,si ;判斷輸入的信息變化沒有,jz aaa1 ;沒變則表示沒有改變?cè)瓉淼倪x擇 mov si,ax cmp al,1h ;判斷輸入的信息,jnz aaa2 :選擇播放那首音樂 jmp music1aaa2: cmp al,2h jnz aaa3 jmp music2aaa3: cmp al,4h jnz aaa1 jmp music3aaa1: add di,2 add bp,2 jmp loop1 music2: mov cx,4hcircul2: dec cx jz m

21、usic3 lea di,freq2 lea bp,time2loop2: mov ax,di cmp ax,0 je circul2 call speaker xor ax,ax mov dx,d8255_b_du ;連接8255_b端口 in al,dx ;從手動(dòng)控制端讀入控制選擇信息 mov ah,0h cmp ax,si ;判斷輸入的信息變化沒有,沒變jz aaa6 ;則表示沒有改變?cè)瓉淼倪x擇 mov si,ax cmp al,1h ;判斷輸入的信息,選擇播放那首音樂 jnz aaa4 jmp music1aaa4: cmp al,2h jnz aaa5 jmp music2aaa5:

22、 cmp al,4h jnz aaa6 jmp music3aaa6: add di,2 add bp,2 jmp loop2music3: mov cx,4hcircul3: dec cx jnz looop call break jmp music1looop: lea di,freq3 ;取偏移地址 lea bp,time3 ;取時(shí)間偏移地址loop3: mov ax,di cmp ax,0 je circul3 call speaker xor ax,ax mov dx,d8255_b_du ;連接8255_b端口 in al,dx ;從手動(dòng)控制端讀入控制選擇信息 mov ah,0h cmp ax

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論