電子音樂盒課程設(shè)計(jì)_第1頁
電子音樂盒課程設(shè)計(jì)_第2頁
電子音樂盒課程設(shè)計(jì)_第3頁
電子音樂盒課程設(shè)計(jì)_第4頁
電子音樂盒課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、微機(jī)原理與接口技術(shù)課程設(shè)計(jì)報(bào)告設(shè) 計(jì) 題 目: 電子音樂盒的設(shè)計(jì) 學(xué) 院 名 稱:專 業(yè): 通信工程 班 級(jí): 組 員:指 導(dǎo) 教 師 :2011年1月7日星期五電子音樂盒的設(shè)計(jì)一設(shè)計(jì)目的1.掌握電子音樂盒的設(shè)計(jì)原理與設(shè)計(jì)方法2.熟悉匯編的上機(jī)環(huán)境,會(huì)利用輕松匯編和proteus 7設(shè)計(jì)一個(gè)程序和電路圖的鏈接3.掌握8253a的使用方法,學(xué)會(huì)寫8253a的方式控制字和計(jì)數(shù)器初值二 設(shè)計(jì)內(nèi)容 設(shè)計(jì)一個(gè)電子音樂盒,其內(nèi)部能裝入兩首樂曲,并分別受兩個(gè)按鍵控制,1#控制第一首樂曲,2#控制第二首樂曲。按鍵沒按下時(shí),沒樂曲播放,當(dāng)按下1#時(shí),第一首樂曲播放,按下2#時(shí),第一首樂曲播放停止,第二首樂曲開始

2、播放,當(dāng)再按下1#時(shí),第二首樂曲停止播放,如此循環(huán)下去。三 總體設(shè)計(jì)1.系統(tǒng)的硬件設(shè)計(jì)框圖如圖一所示:按鍵鎖存器74ls244微機(jī)系統(tǒng)樂曲輸出電路8253方波信號(hào)發(fā)生器根據(jù)設(shè)計(jì)要求,初步設(shè)計(jì)思路如下:(1)定時(shí)器2工作在方式3(方波發(fā)生器),可產(chǎn)生不同頻率的方波,由此方波控制揚(yáng)聲器就可得到頻率不同的聲波。定時(shí)器2發(fā)出的方波頻率可以控制聲音頻率;調(diào)節(jié)定時(shí)器2的工作時(shí)間,則可以控制發(fā)聲的音長(zhǎng)。(2)兩個(gè)按鍵通過鎖存器74ls244來控制播放樂曲時(shí)時(shí)幾號(hào)鍵按下的,當(dāng)1#按下時(shí),鎖存器地址為7fh, 執(zhí)行比較指令,若是則轉(zhuǎn)入第一首樂曲播放子程序處執(zhí)行,播放第一首樂曲。當(dāng)2#按下時(shí),鎖存器地址為0bfh

3、,再執(zhí)行比較指令,若是則轉(zhuǎn)入第二首樂曲播放子程序執(zhí)行,此時(shí)播放第二首樂曲。2.硬件設(shè)計(jì)1)樂曲輸出電路如圖2所示 圖2 樂曲輸出電路2)8253a結(jié)構(gòu)框圖如圖3所示 圖3 8253a結(jié)構(gòu)框圖8253具有3個(gè)獨(dú)立的計(jì)數(shù)通道,采用減1計(jì)數(shù)方式。在門控信號(hào)有效時(shí),每輸入1個(gè)計(jì)數(shù)脈沖,通道作1次計(jì)數(shù)操作。當(dāng)計(jì)數(shù)脈沖是已知周期的時(shí)鐘信號(hào)時(shí),計(jì)數(shù)就成為定時(shí)。 一、8253內(nèi)部結(jié)構(gòu) 8253芯片有24條引腳,封裝在雙列直插式陶瓷管殼內(nèi)。 1.數(shù)據(jù)總線緩沖器 數(shù)據(jù)總線緩沖器與系統(tǒng)總線連接,8位雙向,與cpu交換信息的通道。這是8253與cpu之間的數(shù)據(jù)接口,它由8位雙向三態(tài)緩沖存儲(chǔ)器構(gòu)成,是cpu與8253之

4、間交換信息的必經(jīng)之路。 2.讀寫控制 讀寫控制分別連接系統(tǒng)的ior#和iow#, 由cpu控制著訪問8253的內(nèi)部通道。接收cpu送入的讀寫控制信號(hào), 并完成對(duì)芯片內(nèi)部各功能部件的控制功能, 因此, 它實(shí)際上是8253芯片內(nèi)部的控制器。a1a0:端口選擇信號(hào),由cpu輸入。8253內(nèi)部有3個(gè)獨(dú)立的通道和一個(gè)控制字寄存器, 它們構(gòu)成8253芯片的4個(gè)端口,cpu可對(duì)3個(gè)通道進(jìn)行讀寫操作3對(duì)控制字寄存器進(jìn)行寫操作。 這4個(gè)端口地址由最低2位地址碼a1a0來選擇。如表9.3.1所示。 3.通道選擇 (1) cs#片選信號(hào),由cpu輸入,低電平有效,通常由端口地址的高位地址譯碼形成。 (2) rd#、

5、wr#讀寫控制命令,由cpu輸入, 低電平有效。rd#效時(shí),cpu讀取由a1a0所選定的通道內(nèi)計(jì)數(shù)器的內(nèi)容。wr#有效時(shí),cpu將計(jì)數(shù)值寫入各個(gè)通道的計(jì)數(shù)器中, 或者是將方式控制字寫入控制字寄存器中。cpu對(duì)8253的讀寫操作如表9.3.2所示。 4.計(jì)數(shù)通道02 每個(gè)計(jì)數(shù)通道內(nèi)含1個(gè)16位的初值寄存器、減1計(jì)數(shù)器和1個(gè)16位的(輸出)鎖存器。8253內(nèi)部包含3個(gè)功能完全相同的通道,每個(gè)通道內(nèi)部設(shè)有一個(gè)16位計(jì)數(shù)器,可進(jìn)行二進(jìn)制或十進(jìn)制(bcd碼)計(jì)數(shù)。采用二進(jìn)制計(jì)數(shù)時(shí), 最大計(jì)數(shù)值是ffffh, 采用bcd碼計(jì)數(shù)時(shí)。 最大計(jì)數(shù)值是9999。與此計(jì)數(shù)器相對(duì)應(yīng), 每個(gè)通道內(nèi)設(shè)有一個(gè)16位計(jì)數(shù)值鎖

6、存器。必要時(shí)可用來鎖存計(jì)數(shù)值。 當(dāng)某通道用作計(jì)數(shù)器時(shí),應(yīng)將要求計(jì)數(shù)的次數(shù)預(yù)置到該通道的計(jì)數(shù)器中、被計(jì)數(shù)的事件應(yīng)以脈沖方式從clk端輸入, 每輸入一個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)器內(nèi)容減“1”,待計(jì)數(shù)值計(jì)到“0”。 out端將有輸出。表示計(jì)數(shù)次數(shù)到。當(dāng)某個(gè)通道用作定時(shí)器時(shí)。 由clk輸入一定頻率的時(shí)鐘脈沖。根據(jù)要求定時(shí)的時(shí)間長(zhǎng)短確定所需的計(jì)數(shù)值。并預(yù)置到計(jì)數(shù)器中,每輸入一個(gè)時(shí)鐘脈沖,計(jì)數(shù)器內(nèi)容減“1”, 待計(jì)數(shù)值計(jì)到“0”。out將有輸出,表示定時(shí)時(shí)間到。允許從clk輸入的時(shí)鐘頻在12mhz范圍內(nèi)。因此,任一通道作計(jì)數(shù)器用或作定時(shí)器用,其內(nèi)部操作完全相同,區(qū)別僅在于前者是由計(jì)數(shù)脈沖進(jìn)行減“1”計(jì)數(shù)。 而后者是

7、內(nèi)時(shí)鐘脈沖進(jìn)行減“1”計(jì)數(shù)。作計(jì)數(shù)器時(shí), 要求計(jì)數(shù)的次數(shù)可直接作為計(jì)數(shù)器的初值預(yù)置到減“1”計(jì)數(shù)器中。作定時(shí)器時(shí), 計(jì)數(shù)器的初值即定時(shí)系數(shù)應(yīng)根據(jù)要求定時(shí)的時(shí)間進(jìn)行如下運(yùn)算才能得到: 定時(shí)系數(shù)需要定時(shí)的時(shí)間時(shí)鐘脈沖周期 設(shè)置通道:向方式控制字寄存器端口寫入方式選擇控制字,用于確定要設(shè)置的通道及工作方式; 計(jì)數(shù)/定時(shí):向通道寫入計(jì)數(shù)值,啟動(dòng)計(jì)數(shù)操作; 讀取當(dāng)前的計(jì)數(shù)值:向指定通道讀取當(dāng)前計(jì)數(shù)器值時(shí),8253將計(jì)數(shù)器值存入鎖存器,從鎖存器向外提供當(dāng)前的計(jì)數(shù)器值,計(jì)數(shù)器則繼續(xù)作計(jì)數(shù)操作。 計(jì)數(shù)到:當(dāng)計(jì)數(shù)器減1為0時(shí),通過引腳outi向外輸出“到”的脈沖信號(hào)。 計(jì)數(shù)初值輸入存放在初值寄存器中,計(jì)數(shù)開始或

8、重裝入時(shí)被復(fù)制到計(jì)數(shù)器中。 鎖存器在非鎖存狀態(tài),其值隨計(jì)數(shù)器的變化而變化;一旦鎖存了計(jì)數(shù)器的當(dāng)前值,直到鎖存器值被讀取后才能解除鎖存狀態(tài)。 5.方式選擇控制字3)按鍵顯示電路如圖4所示 圖4 按鍵顯示電路4)cpu模塊結(jié)構(gòu)框圖如圖5所示 圖5 cpu結(jié)構(gòu)模塊5)硬件設(shè)計(jì)整體電路圖如圖6所示 圖6 硬件設(shè)計(jì)整體框圖3.程序流程圖如圖7所示4.源程序如下 data segment mus_freq dw 196,262,294,330,349,330,262,294,262,220,262 dw 196,262,294,330,330,349,392,262,349,330,392,294,330

9、,330,294,294 dw 330,392,262,493,440,440,392,392,440,493,440,392,330 dw 349,349,392,440,392,349,330,294,247,247,440,196,220,262 dw 262,440,349,392,440,493,493,493,493,440,392,330 dw 262,440,349,392,440,220,220,220,440,349,330,294 dw 196,262,294,330,349,330,262,262,294,294,294,294,262,440,440 dw 247,2

10、47,220,196,440,392,294,330,349,349,349,330,294,392 dw 440,262,262,262,262 dw -1 mus2_freq dw 168,586,468,789,123,567,456,889,687,465,892 dw 587,598,789,457,468,236,265,698,578,154,568,478,963,574,485,963 dw 489,785,789,654,123,587,456,215,654,478,258,369,147 dw 456,471,458,123,459,478,365,471,259,35

11、4,159,657,148,258 dw 489,687,145,259,357,486,159,257,357,147,258,368 dw 789,471,578,612,125,147,368,147,256,258,147,369,147,259,357 dw 789,455,478,369,147,258,471,369,582,147,258,354,147,852,147 dw 147,159,587,247,369,477,486,258,148,265,258,414,147,258 dw 147,596,588,147,358,145 dw -1 mus_time dw 5

12、0,6 dup (25),50,25,25,100 dw 50,14 dup (25),75 dw 50,4 dup (25),50, 6 dup (25),100 dw 13 dup (25),75 dw 50,50,25,25,50,6 dup (25),100 dw 50,50,25,25,50,6 dup (25),100 dw 50,13 dup(25),75 dw 50,12 dup (25),100 dw 25,75,25,100,75 mus2_time dw 49,5 dup (47),38,57,47,57 dw 48,10 dup (47),45 dw 45,3 dup

13、(45),65, 2 dup (47),14 dw 12 dup (36),47 dw 12,12,70,14,52,7 dup (25),100 dw 14,50,24,25,36,6 dup (25),100 dw 17,13 dup(25),75 dw 36,12 dup (25),100 dw 25,75,20,100,75 data ends stck segment stk db 200 dup(?) top equ length stk stck ends code segment assume ds:data, ss:stck, cs:code a8255 equ 0040h

14、b8255 equ 0042h c8255 equ 0044h con8255 equ 0046h start: mov ax,data mov ds,ax mov ax,stck mov ss,ax mov ax,top mov sp,ax i: mov dx,40h ;從244讀取鍵值 in al,dx cmp al,0eh ;處理鍵值 jz ab ; cmp al,0dh jz ac jmp i ab: mov al,0b6h mov dx,56h out dx,al ;設(shè)置8253方式3 aa: lea si, mus_freq ;si?頻率表首地址 lea bp,ds: mus_ti

15、me ;bp?音長(zhǎng)表首地址 freg1: mov di,si ;當(dāng)前音符的頻率?di cmp di,-1 ;判斷是否是結(jié)束符號(hào) je end_mus ;結(jié)束符,轉(zhuǎn)到end_mus1 mov bx,ds:bp ;當(dāng)前音符的音長(zhǎng)?bx call gensound ;調(diào)用發(fā)聲子程序 add si,2 add bp,2 ;si和bp分別指向下一個(gè)音 ;符的頻率和音長(zhǎng) mov dx,40h in al,dx cmp al,0eh ;處理鍵值 jz aa cmp al,0dh jz cc jmp freg1 ;轉(zhuǎn)到freg1,繼續(xù)發(fā)聲 ac: mov al,0b6h mov dx,56h out dx,a

16、l ;設(shè)置8253方式3 cc: lea si, mus2_freq ;si?頻率表首地址 lea bp,ds: mus2_time ;bp?音長(zhǎng)表首地址 freg2: mov di,si ;當(dāng)前音符的頻率?di cmp di,-1 ;判斷是否是結(jié)束符號(hào) je end_mus1 ;結(jié)束符,轉(zhuǎn)到end_mus1 mov bx,ds:bp ;當(dāng)前音符的音長(zhǎng)?bx call gensound2 ;調(diào)用發(fā)聲子程序 add si,2 add bp,2 ;si和bp分別指向下一個(gè)音 ;符的頻率和音長(zhǎng) mov dx,40h in al,dx cmp al,0eh ;處理鍵值 jz aa cmp al,0dh

17、 jz cc jmp freg2 ;轉(zhuǎn)到freg1,繼續(xù)發(fā)聲 end_mus: jmp end_mus1 ;程序結(jié)束 gensound proc near push ax push bx push cx push dx push di mov dx,12h mov ax,3280h div di ;計(jì)算計(jì)數(shù)初值 mov dx,54h out dx,al mov al,ah out dx,al ;向定時(shí)器2寫入計(jì)數(shù)值 wait1: mov cx,3000 delay1: loop delay1 dec bx jnz wait1 ;延時(shí),控制音長(zhǎng) mov al,ah pop di pop dx p

18、op cx pop bx pop ax ret gensound endp gensound2 proc near push ax push bx push cx push dx push di mov dx,12h mov ax,3280h div di ;計(jì)算計(jì)數(shù)初值 mov dx,54h out dx,al mov al,ah out dx,al ;向定時(shí)器2寫入計(jì)數(shù)值 ;啟動(dòng)發(fā)聲 wait2: mov cx,3000 delay2: loop delay2 dec bx jnz wait2 ;延時(shí),控制音長(zhǎng) pop di pop dx pop cx pop bx pop ax ret

19、gensound2 endp end_mus1: mov al,0 out 42h,al code ends end start四. 設(shè)計(jì)心得體會(huì)在學(xué)期的最后迎來了匯編課程設(shè)計(jì)使我受益匪淺,上課的時(shí)候許多程序都能看的懂,經(jīng)過這次之后才知道,看的懂并不等于自己會(huì)動(dòng)手編程序,此次編程便是對(duì)我的一個(gè)巨大挑戰(zhàn)。這次的設(shè)計(jì)題目是電子音樂盒的設(shè)計(jì),知道老師上課的時(shí)候講過這類型的題目,經(jīng)過幾天的整理資料和上機(jī),程序的大體步驟已經(jīng)確定下來了,但是始終沒能達(dá)到實(shí)驗(yàn)結(jié)果。在老師及同學(xué)的幫助下,程序慢慢的有了苗頭。在設(shè)計(jì)過程中有太多的疑問和困難,例如8253的方式選擇字和各個(gè)端口的地址都需準(zhǔn)確的讀出并在程序中運(yùn)行出

溫馨提示

  • 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)論