音樂(lè)播放器的設(shè)計(jì)與仿真_第1頁(yè)
音樂(lè)播放器的設(shè)計(jì)與仿真_第2頁(yè)
音樂(lè)播放器的設(shè)計(jì)與仿真_第3頁(yè)
音樂(lè)播放器的設(shè)計(jì)與仿真_第4頁(yè)
音樂(lè)播放器的設(shè)計(jì)與仿真_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、科信學(xué)院電子信息工程CDIO二級(jí)項(xiàng)目(2013/2014學(xué)年第二學(xué)期)題 目 : 音樂(lè)播放器的設(shè)計(jì)與仿真 專業(yè)班級(jí) : 學(xué)生姓名 : 學(xué) 號(hào): 指導(dǎo)教師 : 設(shè)計(jì)周數(shù) : 設(shè)計(jì)成績(jī) : 目 錄題 目 : 基于Proteus與8253、8255A、8086芯片的音樂(lè)播放器2音樂(lè)播放器的設(shè)計(jì)與仿真21 設(shè)計(jì)目的22 設(shè)計(jì)正文22.1音樂(lè)播放器的設(shè)計(jì)原理22.2 8253、8255A以及CPU8086芯片介紹3 2.2.1 芯片8253簡(jiǎn)介.3 1、8253外部引腳介紹.3 2、8253內(nèi)部結(jié)構(gòu)介紹.4 3、8253作為定時(shí)器與計(jì)數(shù)器時(shí)的功能介紹.6 4、方式選擇控制字.7 5、 8253的工作方式

2、.7 2.2.2 芯片8255的介紹.8 1、8255A外部引腳介紹.8 2、8255A內(nèi)部結(jié)構(gòu)介紹.10 3、8255的工作方式.12 4、8255A控制字.12 2.2.3 CPU 芯片8086介紹.14 1、8086簡(jiǎn)介.14 2、8086外部引腳介紹.14. 3、8086內(nèi)部結(jié)構(gòu)介紹.16 2.2.4音樂(lè)播放器的設(shè)計(jì)流程.18 1、音樂(lè)播放器的總體設(shè)計(jì)流程圖.18 2、芯片間連接情況以及功能介紹.19 3、程序設(shè)計(jì)的總體思路.21 4、硬件連接電路圖.223.設(shè)計(jì)總結(jié).224.參考文獻(xiàn).23- 2 -基于Proteus與8086、8253、8255芯片的音樂(lè)播放器1.設(shè)計(jì)目的u 掌握接

3、口電路的應(yīng)用和設(shè)計(jì)技術(shù)。u 掌握匯編語(yǔ)言的設(shè)計(jì)思路。u 學(xué)會(huì)針對(duì)不同的要求設(shè)計(jì)匯編程序代碼。 u 掌握8086的控制流程,以及8255和8253芯片的功能。u 用匯編程序完成鍵控音樂(lè)播放器的,用8253定時(shí)器來(lái)產(chǎn)生聲音。2.設(shè)計(jì)正文2.1音樂(lè)播放器的設(shè)計(jì)原理 所有音樂(lè)都是由各個(gè)不同頻率的音階和其延續(xù)時(shí)間的長(zhǎng)短來(lái)實(shí)現(xiàn)的。不同的音樂(lè)是由各個(gè)音階按某種排列各自播放一定時(shí)間形成的,將各音樂(lè)音階和其延續(xù)時(shí)間存在數(shù)據(jù)段中,然后根據(jù)不同按鍵值選擇不同的音階和時(shí)間表,再使用計(jì)數(shù)器產(chǎn)生該音階頻率。 音樂(lè)播放器屬于接口電路的連接使用,本設(shè)計(jì)是以8253芯片為核心的發(fā)生系統(tǒng)。8086CPU在形成系統(tǒng)總線后,通過(guò)和8

4、253及8255的連接使用可以很好的驅(qū)動(dòng)揚(yáng)聲器發(fā)音。系統(tǒng)初始化后,8255通過(guò)B通道,從控制開(kāi)關(guān)讀取所需的控制字,并送入8086CPU中進(jìn)行判斷,選擇不同的播放音樂(lè)。使8253的通過(guò)0號(hào)計(jì)數(shù)器工作在方式3,發(fā)出不同頻率的方波。當(dāng)給定不同的計(jì)數(shù)初值時(shí)可以使揚(yáng)聲器發(fā)出不同頻率的音響,并根據(jù)時(shí)間表播放不同的時(shí)間,用8255并行接口來(lái)控制揚(yáng)聲器的開(kāi)關(guān),達(dá)到播放音樂(lè)的功能。 74LS373主要用于所存8086的輸出地址。因?yàn)?286引腳0-15是地址與數(shù)據(jù)復(fù)用的因此需要在8086輸出地址后對(duì)地址進(jìn)行所存以便更好地傳輸數(shù)據(jù),經(jīng)74LS373鎖存后的地址信號(hào)可以在訪問(wèn)存儲(chǔ)器操作期間始終保持不變,為外部提供穩(wěn)

5、定的地址信號(hào)。 由上可知本播放器的設(shè)計(jì)用到的主要芯片有CPU8086,計(jì)數(shù)器/定時(shí)器8253、I/O選擇控制器8255A,地址鎖存器74LS373。 2.2 8253、8255A以及CPU8086芯片介紹 2.2.1 芯片8253簡(jiǎn)介 在計(jì)算機(jī)應(yīng)用系統(tǒng)中,計(jì)數(shù)與定時(shí)具有極其重要的作用,有時(shí)需要通過(guò)定時(shí)來(lái)實(shí)現(xiàn)某種操作,如定時(shí)中斷、定時(shí)檢測(cè)、定時(shí)掃描等;它需要某種外界事件進(jìn)行計(jì)數(shù)。實(shí)現(xiàn)定時(shí)的方法有兩種:軟件定時(shí)、不可編程的軟件定時(shí)。 8253內(nèi)部有三個(gè)計(jì)數(shù)器,分別成為計(jì)數(shù)器0、計(jì)數(shù)器1和計(jì)數(shù)器2,他們的結(jié)構(gòu)完全相同。每個(gè)計(jì)數(shù)器的輸入和輸出都決定于設(shè)置在控制寄存器中的控制字,互相之間工作完全獨(dú)立。

6、每個(gè)計(jì)數(shù)器通過(guò)三個(gè)引腳和外部聯(lián)系,一個(gè)為時(shí)鐘輸入端CLK,一個(gè)為門(mén)控信號(hào)輸入端GATE,另一個(gè)為輸出端OUT。每個(gè)計(jì)數(shù)器內(nèi)部有一個(gè)8位的控制寄存器,還有一個(gè)16位的計(jì)數(shù)初值寄存器CR、一個(gè)計(jì)數(shù)執(zhí)行部件CE和一個(gè)輸出鎖存器OL。 1、8253外部引腳介紹 8253芯片是具有24個(gè)引腳的雙列直插式集成電路芯片,其引腳分布如圖1所示。8253芯片的24個(gè)引腳分為兩組,一組面向CPU,另一組面向外部設(shè)備,8253的外部引腳圖如圖1所示,各個(gè)引腳功能介紹如下: 圖 1 8253外部引腳圖(1)D7D0:雙向、三態(tài)數(shù)據(jù)線引腳,與系統(tǒng)的數(shù)據(jù)線連接,傳送控制、數(shù)據(jù)及狀態(tài)信息。 (2)RD:來(lái)自于CPU的讀控制

7、信號(hào)輸入引腳,低電平有效。 (3)WR:來(lái)自于CPU的寫(xiě)控制信號(hào)輸入引腳,低電平有效。 (4)CS:芯片選擇信號(hào)輸入引腳,低電平有效。 (5)A1、A0:地址信號(hào)輸入引腳,用以選擇8254芯片的通道及控制字寄存器。(6)VCC及GND:+5V電源及接地引腳。 (7)CLKi: i=0,1,2,第i個(gè)通道的計(jì)數(shù)脈沖輸入引腳,8254規(guī)定,加在CLK引腳的輸入時(shí)鐘信號(hào)的頻率不得高于2.6MHZ,即時(shí)鐘周期不能小于380ns。 (8)GATEi: i=0,1,2,第i個(gè)通道的門(mén)控信號(hào)輸入引腳,門(mén)控信號(hào)的作用與通道的工作方式有關(guān)。 (9)OUTi:i=0,1,2,第i個(gè)通道的定時(shí)/計(jì)數(shù)到信號(hào)輸出引腳,

8、輸出信號(hào)的形式由通道的工作方式確定,此輸出信號(hào)可用于觸發(fā)其它電路工作,或作為向CPU發(fā)出的中斷請(qǐng)求信號(hào)。 2、8253內(nèi)部結(jié)構(gòu)介紹 它由數(shù)據(jù)總線緩沖器、讀/寫(xiě)邏輯、控制字寄存器以及3個(gè)獨(dú)立的16位計(jì)數(shù)器組成。 8253內(nèi)部結(jié)構(gòu)如圖2所示圖2 8253內(nèi)部結(jié)構(gòu)圖(1)數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器與系統(tǒng)總線連接,8位雙向,與CPU交換信息的通道。這是8253與CPU之間的數(shù)據(jù)接口,它由8位雙向三態(tài)緩沖存儲(chǔ)器構(gòu)成,是CPU與8253之間交換信息的必經(jīng)之路。 (2)控制寄存器 控制寄存器用來(lái)保存來(lái)著CPU的控制字。每個(gè)計(jì)數(shù)器都有一個(gè)控制命令寄存器,用來(lái)保存該計(jì)數(shù)器的控制信息??刂谱謱Q定計(jì)數(shù)器的工作方

9、式、計(jì)數(shù)器形式以及輸出方式,亦決定計(jì)數(shù)器的工作方式、計(jì)數(shù)形式以及輸出方式,亦決定如何裝入計(jì)數(shù)初值。8253的3個(gè)控制寄存器只占用一個(gè)地址號(hào),而靠控制字的最高兩位來(lái)決定將控制信息送入哪個(gè)計(jì)數(shù)器的控制寄存器中保存??刂萍拇嫫髦荒軐?xiě)入不能讀出。 (3)讀/寫(xiě)邏輯 讀/寫(xiě)邏輯的任務(wù)是接受來(lái)著CPU的控制信號(hào),完成對(duì)8253內(nèi)部的操作控制。這些控制信號(hào)包括讀信號(hào)/RD、寫(xiě)信號(hào)/WR、片選信號(hào)/CS以及用于片內(nèi)寄存器尋址的地址信號(hào)A0、A1。當(dāng)片選信號(hào)有效,即/CS=0時(shí),讀寫(xiě)邏輯才能正常工作。該控制邏輯根據(jù)讀/寫(xiě)命令即送來(lái)的地址信息,決定3個(gè)計(jì)數(shù)器和控制寄存器中哪一個(gè)工作,并控制內(nèi)部總線上數(shù)據(jù)傳送的方向

10、。 8253共占用4個(gè)I/O端口,CPU可對(duì)寫(xiě)操作。 這4個(gè)端口地址由最低2位地址碼A1A0來(lái)選擇。如表一所示。表一 8253端口地址以及內(nèi)部操作 3、8253作為定時(shí)器與計(jì)數(shù)器時(shí)的功能介紹 (1)作計(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í)間到。

11、允許從CLK輸入的時(shí)鐘頻在12MHz范圍內(nèi)。因此,任一通道作計(jì)數(shù)器用或作定時(shí)器用,其內(nèi)部操作完全相同,區(qū)別僅在于前者是由計(jì)數(shù)脈沖進(jìn)行減“1”計(jì)數(shù)。 而后者是內(nèi)時(shí)鐘脈沖進(jìn)行減“1”計(jì)數(shù)。作計(jì)數(shù)器時(shí), 要求計(jì)數(shù)的次數(shù)可直接作為計(jì)數(shù)器的初值預(yù)置到減“1”計(jì)數(shù)器中。 (2)作定時(shí)器時(shí), 計(jì)數(shù)器的初值即定時(shí)系數(shù)應(yīng)根據(jù)要求定時(shí)的時(shí)間進(jìn)行如下運(yùn)算才能得到: 定時(shí)系數(shù)=需要定時(shí)的時(shí)間/時(shí)鐘脈沖周期 設(shè)置通道:向方式控制字寄存器端口寫(xiě)入方式選擇控制字,用于確定要設(shè)置的通道及工作方式; 計(jì)數(shù)/定時(shí):向通道寫(xiě)入計(jì)數(shù)值,啟動(dòng)計(jì)數(shù)操作; 讀取當(dāng)前的計(jì)數(shù)值:向指定通道讀取當(dāng)前計(jì)數(shù)器值時(shí),8253將計(jì)數(shù)器值存入鎖存器,從鎖

12、存器向外提供當(dāng)前的計(jì)數(shù)器值,計(jì)數(shù)器則繼續(xù)作計(jì)數(shù)操作。 計(jì)數(shù)到:當(dāng)計(jì)數(shù)器減1為0時(shí),通過(guò)引腳OUTi向外輸出“到”的脈沖信號(hào)。計(jì)數(shù)初值輸入存放在初值寄存器中,計(jì)數(shù)開(kāi)始或重裝入時(shí)被復(fù)制到計(jì)數(shù)器中。 鎖存器在非鎖存狀態(tài),其值隨計(jì)數(shù)器的變化而變化;一旦鎖存了計(jì)數(shù)器的當(dāng)前值,直到鎖存器值被讀取后才能解除鎖存狀態(tài)。 4、方式選擇控制字 8253的方式控制字如圖3所示 圖3 8253的方式控制字5、 8253的工作方式 (1) 方式0:計(jì)數(shù)結(jié)束產(chǎn)生中斷方式 當(dāng)寫(xiě)入控制字后,OUT變?yōu)榈碗娖?,?dāng)寫(xiě)入初值后立即開(kāi)始計(jì)數(shù),當(dāng)計(jì)數(shù)結(jié)束時(shí),變成高電平。 (2) 方式1:可編程單次脈沖方式 當(dāng)初值裝入后且GATE由低變

13、高時(shí),OUT變?yōu)榈碗娖?,?jì)數(shù)結(jié)束變?yōu)楦唠娖健?(3) 方式2:頻率發(fā)生器方式 當(dāng)初值裝入時(shí),OUT變?yōu)楦?;?jì)數(shù)結(jié)束,OUT變?yōu)榈汀T摲绞较氯绻?jì)數(shù)未結(jié)束,但GATE為低時(shí),立即停止計(jì)數(shù),強(qiáng)制OUT變高,當(dāng)GATE再變高時(shí),便啟動(dòng)一次新的計(jì)數(shù)周期。 (4) 方式3:方波發(fā)生器 當(dāng)裝入初值后,在GATE上升沿啟動(dòng)計(jì)數(shù),OUT 輸出高電平; 當(dāng)計(jì)數(shù)完成一半時(shí),OUT輸出低電平。方式3與方式2的工作方式類(lèi)似,也是在初始化完成后能重復(fù)循環(huán)計(jì)數(shù),只是輸出的波形不同。 (5)方式4:軟件出發(fā)選通方式 進(jìn)入工作方式4,OUTi輸出高電平。 裝入計(jì)數(shù)值n后, 如果GATE為高電平,則立即開(kāi)始減“1”計(jì)數(shù),直到計(jì)

14、數(shù)值減到“0”為止,OUTi輸出寬度為一個(gè)CLKi周期的負(fù)脈沖。由軟件裝入的計(jì)數(shù)值只有一次有效,如果要繼續(xù)操作, 必須重新置入計(jì)數(shù)初值n。如果在操作的過(guò)程中,GATE變?yōu)闊o(wú)效,則停止減“1”計(jì)數(shù), 到GATE再次有效時(shí),重新從初值開(kāi)始減“1”計(jì)數(shù)。 (6)方式5:硬件觸發(fā)方式計(jì)數(shù) 進(jìn)入工作方式5, OUTi輸出高電平, 硬件觸發(fā)信號(hào)由GATE端引入。 因此,開(kāi)始時(shí)GATE應(yīng)輸入為0, 裝入計(jì)數(shù)初值n后,減“1”計(jì)數(shù)并不工作,一定要等到硬件觸發(fā)信號(hào)由GATE端引入一個(gè)正階躍信號(hào),減“1”計(jì)數(shù)才會(huì)開(kāi)始,待計(jì)數(shù)值計(jì)到“0”, OUTi將輸出負(fù)脈沖,其寬度固定為一個(gè)CLKi周期,表示定時(shí)時(shí)間到或計(jì)數(shù)次

15、數(shù)到。 2.2.2 芯片8255的介紹 8255是Intel公司生產(chǎn)的可編程并行I/O接口芯片,有3個(gè)8位并行I/O口。具有3個(gè)通道3種工作方式的可編程并行接口芯片(40引腳)。 1、8255A外部引腳介紹 8255A外部引腳圖如圖4所示 圖4 8255A外部引腳圖RESET:復(fù)位輸入線,當(dāng)該輸入端處于高電平時(shí),所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。 CS:芯片選擇信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/CS=0時(shí),表示芯片被選中,允許8255與CPU進(jìn)行通訊;/CS=1時(shí),8255無(wú)法與CPU做數(shù)據(jù)傳輸。 RD:讀信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/RD=0

16、且/CS=0時(shí),允許8255通過(guò)數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。 WR:寫(xiě)入信號(hào),當(dāng)這個(gè)輸入引腳為低電平時(shí),即/WR=0且/CS=0時(shí),允許CPU將數(shù)據(jù)或控制字寫(xiě)入8255。 D0D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時(shí),通過(guò)它實(shí)現(xiàn)8位數(shù)據(jù)的讀/寫(xiě)操作,控制字和狀態(tài)信息也通過(guò)數(shù)據(jù)總線傳送。 8255具有3個(gè)相互獨(dú)立的輸入/輸出通道端口,PA0PA7:端口A輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入鎖存器。PB0PB7:端口B輸入輸出線,一個(gè)8位的I/O鎖存器, 一個(gè)8位的輸入輸出緩沖器。P

17、C0PC7:端口C輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入緩沖器。端口C可以通過(guò)工作方式設(shè)定而分成2個(gè)4位的端口, 每個(gè)4位的端口包含一個(gè)4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號(hào)輸出或狀態(tài)信號(hào)輸入端口。 2、8255A內(nèi)部結(jié)構(gòu)介紹 8255作為主機(jī)與外設(shè)的連接芯片,必須提供與主機(jī)相連的3個(gè)總線接口,即數(shù)據(jù)線、地址線、控制線接口。同時(shí)必須具有與外設(shè)連接的接口A、B、C口。由于8255可編程,所以必須具有邏輯控制部分,因而8255內(nèi)部結(jié)構(gòu)分為3個(gè)部分:與CPU連接部分、與外設(shè)連接部分、控制部分。8255A的內(nèi)部結(jié)構(gòu)圖如圖5所示 圖5 8255A的內(nèi)部結(jié)構(gòu)

18、圖(1)與CPU連接部分 根據(jù)定義,8255能并行傳送8位數(shù)據(jù),所以其數(shù)據(jù)線為8根D0D7。由于8255具有3個(gè)通道A、B、C,所以只要兩根地址線就能尋址A、B、C口及控制寄存器,故地址線為兩根A0A1。此外CPU要對(duì)8255進(jìn)行讀、寫(xiě)與片選操作,所以控制線為片選、復(fù)位、讀、寫(xiě)信號(hào)。各信號(hào)的引腳編號(hào)如下: 數(shù)據(jù)總線DB:編號(hào)為D0D7,用于8255與CPU傳送8位數(shù)據(jù)。 地址總線AB:編號(hào)為A0A1,用于選擇A、B、C口與控制寄存器。 控制總線CB:片選信號(hào)、復(fù)位信號(hào)RST、寫(xiě)信號(hào)、讀信號(hào)。當(dāng)CPU要對(duì)8255進(jìn)行讀、寫(xiě)操作時(shí),必須先向8255發(fā)片選信號(hào)選中8255芯片,然后發(fā)讀信號(hào)或?qū)懶盘?hào)對(duì)

19、8255進(jìn)行讀或?qū)憯?shù)據(jù)的操作。 (2)與外設(shè)接口部分 根據(jù)定義,8255有3個(gè)通道A、B、C與外設(shè)連接,每個(gè)通道又有8根線與外設(shè)連接,所以8255可以用24根線與外設(shè)連接,若進(jìn)行開(kāi)關(guān)量控制,則8255可同時(shí)控制24路開(kāi)關(guān)。各通道的引腳編號(hào)如下: A口:編號(hào)為PA0PA7,用于8255向外設(shè)輸入輸出8位并行數(shù)據(jù)。 B口:編號(hào)為PB0PB7,用于8255向外設(shè)輸入輸出8位并行數(shù)據(jù)。 C口:編號(hào)為PC0PC7,用于8255向外設(shè)輸入輸出8位并行數(shù)據(jù),當(dāng)8255工作于應(yīng)答I/O方式時(shí),C口用于應(yīng)答信號(hào)的通信。 (3)控制器 8255將3個(gè)通道分為兩組,即PA0PA7與PC4PC7組成A組,PB0PB7

20、與PC0PC3組成B組。如圖7.5所示,相應(yīng)的控制器也分為A組控制器與B組控制器,各組控制器的作用如下: A組控制器:控制A口與上C口的輸入與輸出。 B組控制器:控制B口與下C口的輸入與輸出。 3、8255的工作方式 8255有三種工作方式分別如下 方式0基本輸入輸出方式,即無(wú)需聯(lián)絡(luò)就可以直接進(jìn)行8255A與外設(shè)之間的數(shù)據(jù)輸入輸出操作。A口、B口、C口的高4位與低四位4、可設(shè)置為方式0、 方式1選通輸入輸出方式,此時(shí)8255A的A口和B口與外設(shè)之間進(jìn)行輸入或輸出操作時(shí),需要C口的部分I/O端口提供聯(lián)絡(luò)信號(hào)。只有A口和B口可工作于方式1。 方式2選通雙向輸入/輸出方式,即同一端口的I/O線既可以

21、輸入也可以輸出,只有A口可工作于方式2.此種情況下需要C口的部分I/O線提供聯(lián)絡(luò)信號(hào)。 4、8255A控制字 工作方式選擇控制字 8255A的工作方式可由CPU寫(xiě)一個(gè)方式控制字到8255A的控制選擇寄存器來(lái)選擇。其格式如圖6所示。 圖6 8255A的工作方式字 C口按位置位/復(fù)位控制字 8255A的C口均有位控功能,即端口C的8位中任意一位都可以通過(guò)CPU向8255A的控制寄存器寫(xiě)入一個(gè)按位置位/復(fù)位控制字來(lái)置1或清0,而C口中其他位的狀態(tài)不變,其格式如圖7所示。 圖7 端口C按位置位/復(fù)位控制字應(yīng)注意8255A的C口復(fù)位/置位控制字必須跟在方式選擇字之后寫(xiě)入控制字寄存器,即使僅使用該功能,也

22、應(yīng)先選送一個(gè)方式控制字。方式選擇控制字只需寫(xiě)入一次,之后既可以多次使用C口按位置位/復(fù)位控制字對(duì)C口的某些位進(jìn)行置1或清0操作。 音樂(lè)播放器的設(shè)計(jì)過(guò)程中只利用了8255A的方式0即基本輸入輸出方式。 2.2.3 CPU 芯片8086介紹 1、8086簡(jiǎn)介 Intel 8086擁有四個(gè)16位的通用寄存器,也能夠當(dāng)作八個(gè)8位寄存器來(lái)存取,以及四個(gè)16位索引寄存器(包含了堆棧指標(biāo))。資料寄存器通常由指令隱含地使用,針對(duì)暫存值需要復(fù)雜的寄存器配置。它提供64K 8 位元的輸出輸入(或32K 16 位元),以及固定的向量中斷。大部分的指令只能夠存取一個(gè)內(nèi)存位址,所以其中一個(gè)操作數(shù)必須是一個(gè)寄存器。運(yùn)算結(jié)

23、果會(huì)儲(chǔ)存在操作數(shù)中的一個(gè)。 2、8086外部引腳介紹 8086外部引腳圖如圖8所示 圖8 8086外部引腳圖(1)AD15 AD0:地址/數(shù)據(jù)總線,雙向,三態(tài)。 這是一組采用分時(shí)的方法傳送地址或數(shù)據(jù)的復(fù)用引腳。根據(jù)不同時(shí)鐘周期的要求,決定當(dāng)前是傳送要訪問(wèn)的存儲(chǔ)單元或I/O端口的低16位地址,還是傳送16位數(shù)據(jù),或是處于高阻狀態(tài)。 (2)A19/S6A16/S3:地址/狀態(tài)信號(hào),輸出,三態(tài)。 這是采用分時(shí)的方法傳送地址或狀態(tài)的復(fù)用引腳。其中A19A16為20位地址總線的高4位地址,S6S3是狀態(tài)信號(hào)。 (3)BHE(低)/S7:允許總線高8位數(shù)據(jù)傳送/狀態(tài)信號(hào),輸出,三態(tài)。 為總線高8位數(shù)據(jù)允許

24、信號(hào),當(dāng)?shù)碗娖接行r(shí),表明在高8位數(shù)據(jù)總線D15 D8上傳送1個(gè)字節(jié)的數(shù)據(jù)。S7為設(shè)備的狀態(tài)信號(hào)。 (4)RD:讀信號(hào),輸出,三態(tài),低電平有效。 信號(hào)低電平有效時(shí),表示CPU正在進(jìn)行讀存儲(chǔ)器或讀I/O端口的操作。 (5)READY:準(zhǔn)備就緒信號(hào),輸入,高電平有效。 READY信號(hào)用來(lái)實(shí)現(xiàn)CPU與存儲(chǔ)器或I/O端口之間的時(shí)序匹配。 (6)INTR:可屏蔽中斷請(qǐng)求信號(hào),輸入,高電平有效。 8086 CPU在每條指令執(zhí)行到最后一個(gè)時(shí)鐘周期時(shí),都要檢測(cè)INTR引腳信號(hào)。INTR為高電平時(shí),表明有I/O設(shè)備向CPU申請(qǐng)中斷,若IF=1,CPU則會(huì)響應(yīng)中斷,停止當(dāng)前的操作,為申請(qǐng)中斷的I/O設(shè)備服務(wù)。 (

25、7)TEST:等待測(cè)試控制信號(hào),輸入,低電平有效。 信號(hào)用來(lái)支持構(gòu)成多處理器系統(tǒng),實(shí)現(xiàn)8086 CPU與協(xié)處理器之間同步協(xié)調(diào)的功能,只有當(dāng)CPU執(zhí)行WAIT指令時(shí)才使用。 (8)NMI:非屏蔽中斷請(qǐng)求信號(hào),輸入,高電平有效。 (9)RESET:復(fù)位信號(hào),輸入,高電平有效。 3、8086內(nèi)部結(jié)構(gòu)介紹 8086內(nèi)部結(jié)構(gòu)如圖9所示。 圖9 8086內(nèi)部結(jié)構(gòu)圖8286芯片內(nèi)部從功能上講可以分為兩大部分:總線接口單元BIU和執(zhí)行單元EU (1)總線接口單元 總線接口部件由下列各部分組成: 4個(gè)段地址寄存器: CS16位的代碼段寄存器; DS16位的數(shù)據(jù)段寄存器; ES16位的擴(kuò)展段寄存器; SS16位的

26、堆棧段寄存器; 16位的指令指針寄存器IP; 指令指針寄存器IP用來(lái)存放下一條要讀取的指令在代碼段中的偏移地址。 20位的地址加法器; CPU提供的用來(lái)對(duì)存儲(chǔ)單元進(jìn)行訪問(wèn)的20位地址是由BIU中的地址加法器產(chǎn)生的。 6字節(jié)的指令隊(duì)列緩沖器。 指令隊(duì)列緩沖器的引入使得EU和BIU可并行工作,即BIU在度指令時(shí),并不影響EU單元執(zhí)行指令,EU單元可以連續(xù)不斷的直接從指令隊(duì)列中取到要執(zhí)行的指令代碼,從而減少了CPU為取指令要等待的時(shí)間,提高了CPU的利用率,加快了整機(jī)的運(yùn)行速度。 (2)執(zhí)行單元(EU) 執(zhí)行部件由下列幾個(gè)部分組成: 8個(gè)通用寄存器:即AX、BX、CX、DX, BP, SP, SI,

27、 DI ;其中,4個(gè)數(shù)據(jù)寄存器:AX、BX、CX、DX; 2個(gè)地址指針寄存器:BP, SP;2個(gè)變址寄存器:SI, DI; 標(biāo)志寄存器FR; 算術(shù)邏輯單元ALU。 (3)BIU和EU的管理 BIU和EU可以并行工作,提高CPU效率。BIU監(jiān)視著指令隊(duì)列。當(dāng)指令隊(duì)列中有2個(gè)空字節(jié)時(shí),就自動(dòng)把指令取到隊(duì)列中。 EU執(zhí)行指令時(shí),從指令隊(duì)列頭部取指令,然后執(zhí)行。如需訪問(wèn)存儲(chǔ)器,則EU向BIU發(fā)出請(qǐng)求,由BIU訪問(wèn)存儲(chǔ)器。 在執(zhí)行轉(zhuǎn)移、調(diào)用、返回指令時(shí),需改變隊(duì)列中的指令,要等新指令裝入隊(duì)列中后,EU才繼續(xù)執(zhí)行指令。 2.2.4音樂(lè)播放器的設(shè)計(jì)流程 1、音樂(lè)播放器的總體設(shè)計(jì)流程圖如圖10下。圖10 總體

28、設(shè)計(jì)流程圖2、芯片間連接情況以及功能介紹 由于編譯軟件的問(wèn)題8255A與8253的4個(gè)I/O端口并沒(méi)有直接與CPU的8086直接相連而是與CPU的A1和A2相連,這樣連接避免了由于軟件引起的錯(cuò)誤。 根據(jù)8255A給定的地址端口可知其控制口地址為1000 0110即86H,A口地址為1000 0000即80H,B口地址為1000 0010即82H,C口地址為1000 0010即84H,由此可知,74LS373的E1端應(yīng)為高電平所以應(yīng)與CPU的A7端直接相連,而8286的A5,A6都為低電平則通過(guò)一個(gè)與門(mén)后連接在74LS373的E2端,8086的M/IO端接在74LS373的E3端,只有這樣74L

29、S373才能正常的工作,從而使8253與8255A的片選段為低電平。CPU的WR與RD分別于8255A與8253的WR與RD相連,從而控制對(duì)他們的讀和寫(xiě)。 8255A的A口和B口主要用于檢測(cè)是否有按鍵按下,其中A口為輸出端,B口為輸入端,而C口的PC0端則用于控制音樂(lè)的播放與否,只有當(dāng)C口為高電平時(shí),才能放音。CPU通過(guò)對(duì)定時(shí)器8253的通道0進(jìn)行編程,使其I/O寄存器接收一個(gè)控制聲音頻率的16位計(jì)數(shù)值。當(dāng)定時(shí)器接收的計(jì)數(shù)值為100000時(shí)產(chǎn)生其他頻率的計(jì)數(shù)值就可算出來(lái): N=100000÷頻率 在送出頻率計(jì)數(shù)值之前,還要給方式寄存器送一個(gè)方式值,該數(shù)決定對(duì)哪一個(gè)通道編程,采用什么模

30、式,送入通道的計(jì)數(shù)值是一字節(jié)還是兩字節(jié),是二進(jìn)制碼還是BCD碼。其位組合的格式如下: 當(dāng)通道0用于發(fā)聲時(shí),采用的是模式3,在模式3下,輸出線為“1”和為“0”的時(shí)間各占計(jì)數(shù)時(shí)間的一半,因而產(chǎn)生一系列間隔均勻的脈沖。 產(chǎn)生指定頻率聲音的程序段如下: MOV DX,COTR ;初始化8253 MOV AL,36H ;定時(shí)器0、方式3 OUT DX,AL MOV DX,01H ;輸入時(shí)鐘頻率:100KHz MOV AX,86A0H DIV WORD PTR SI ;取出頻率值計(jì)算初值 MOV DX,P0 OUT DX,AL ;裝入初值 MOV AL,AH OUT DX,AL 從定時(shí)器輸出的方波信號(hào),經(jīng)功率放大驅(qū)動(dòng)揚(yáng)聲器。送到揚(yáng)聲器的信號(hào)還受到了從并行接口芯片8255(端口地址為84H)來(lái)的雙重控制,端口84H的PC0位和定時(shí)器的輸出信號(hào)同時(shí)作為與門(mén)的輸入,PC0可由程序決定為0還是為1。顯然只有PC0是1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論