《單片機(jī)原理及應(yīng)用》課件第4章_第1頁
《單片機(jī)原理及應(yīng)用》課件第4章_第2頁
《單片機(jī)原理及應(yīng)用》課件第4章_第3頁
《單片機(jī)原理及應(yīng)用》課件第4章_第4頁
《單片機(jī)原理及應(yīng)用》課件第4章_第5頁
已閱讀5頁,還剩153頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章51單片機(jī)系統(tǒng)功能擴(kuò)展14.1系統(tǒng)擴(kuò)展概述4.2常用擴(kuò)展器件簡(jiǎn)介4.3存儲(chǔ)器的擴(kuò)展4.4并行I/O擴(kuò)展

51單片機(jī)的功能較強(qiáng),在智能儀器儀表、家用電器、小型檢測(cè)及控制系統(tǒng)中直接使用本身功能就可滿足需要,使用極為方便。但對(duì)于一些較大的應(yīng)用系統(tǒng)來說,它畢竟是一塊集成電路芯片,其內(nèi)部功能略顯不足,這時(shí)就需要在片外擴(kuò)展一些外圍功能芯片。在51單片機(jī)外圍可以擴(kuò)展存儲(chǔ)器芯片、I/O口芯片及其他功能芯片。4.1系統(tǒng)擴(kuò)展概述4.1.1最小應(yīng)用系統(tǒng)單片機(jī)系統(tǒng)擴(kuò)展一般是以基本的最小系統(tǒng)為基礎(chǔ)的,故首先應(yīng)熟悉最小應(yīng)用系統(tǒng)的結(jié)構(gòu)。所謂最小系統(tǒng),是指一個(gè)真正可用的單片機(jī)最小配置系統(tǒng)。對(duì)于片內(nèi)帶有程序存儲(chǔ)器的單片機(jī)(如80C51/87C51),只要在芯片上外接時(shí)鐘電路和復(fù)位電路就能達(dá)到真正可用,這就是一個(gè)最小系統(tǒng),如圖4.1(a)所示。對(duì)于片內(nèi)不帶有程序存儲(chǔ)器的單片機(jī)(如80C31)來說,除了在芯片上外接時(shí)鐘電路和復(fù)位電路外,還需外接程序存儲(chǔ)器,才能構(gòu)成一個(gè)最小系統(tǒng),如圖4.1(b)所示。圖4.151單片機(jī)最小化系統(tǒng)(a)80C51/87C51最小系統(tǒng)結(jié)構(gòu)圖;(b)80C31最小系統(tǒng)結(jié)構(gòu)圖4.1.2單片機(jī)系統(tǒng)擴(kuò)展的內(nèi)容與方法

1.單片機(jī)的三總線結(jié)構(gòu)

單片機(jī)外部擴(kuò)展的系統(tǒng)總線與通用微機(jī)系統(tǒng)一樣,也呈現(xiàn)為三總線結(jié)構(gòu),如圖4.2所示。圖4.251單片機(jī)的三總線結(jié)構(gòu)從圖4.2可知,三總線的引線組成如下:地址總線:由P2口提供高8位地址線,具有地址輸出鎖存的能力;由P0口提供低8位地址線,由于P0口分時(shí)復(fù)用為地址/數(shù)據(jù)線,因而為保持地址信息在訪問存儲(chǔ)器期間一直有效,需外加地址鎖存器鎖存低8位地址,用ALE正脈沖信號(hào)的下降沿進(jìn)行鎖存。數(shù)據(jù)總線:由P0口提供,此口是準(zhǔn)雙向、輸入三態(tài)控制的8位數(shù)據(jù)輸入/輸出口。控制總線:PSEN用于片外程序存儲(chǔ)器取指控制信號(hào);RD、WR用于片外數(shù)據(jù)存儲(chǔ)器讀、寫控制信號(hào)。

2.系統(tǒng)擴(kuò)展的內(nèi)容與方法

(1)系統(tǒng)擴(kuò)展一般有以下幾方面的內(nèi)容:①外部程序存儲(chǔ)器的擴(kuò)展。②外部數(shù)據(jù)存儲(chǔ)器的擴(kuò)展。③輸入/輸出接口的擴(kuò)展。④管理功能器件的擴(kuò)展(如定時(shí)器/計(jì)數(shù)器、鍵盤/顯示器、中斷優(yōu)先級(jí)編碼器等)。

(2)系統(tǒng)擴(kuò)展的基本方法:一般來講,所有與計(jì)算機(jī)擴(kuò)展連接的芯片的外部引腳線都可以歸為三總線結(jié)構(gòu)。擴(kuò)展連接的一般方法實(shí)際上是三總線對(duì)接,要保證單片機(jī)和擴(kuò)展芯片協(xié)調(diào)一致地工作,即要共同滿足其工作時(shí)序。4.2常用擴(kuò)展器件簡(jiǎn)介在51單片機(jī)系統(tǒng)擴(kuò)展中常用的芯片如表4.1所示。本節(jié)將對(duì)鎖存器、總線驅(qū)動(dòng)器、譯碼器等常用芯片進(jìn)行簡(jiǎn)單介紹。表4.1常用的擴(kuò)展器件4.2.18

D鎖存器74LS373

74LS373是一種帶輸出三態(tài)門的8D鎖存器,其結(jié)構(gòu)如圖4.3所示。圖4.374LS373內(nèi)部結(jié)構(gòu)及引腳信號(hào)

1D~8D為8個(gè)輸入端。

1Q~8Q為8個(gè)輸出端。

G為數(shù)據(jù)鎖存控制端:當(dāng)G為“1”時(shí),鎖存器輸出端同輸入端;當(dāng)G由“1”變“0”時(shí),數(shù)據(jù)輸入鎖存器中。

OE為輸出允許端:當(dāng)OE為“0”時(shí),三態(tài)門打開;當(dāng)OE為“1”時(shí),三態(tài)門關(guān)閉,輸出呈高阻狀態(tài)。在51單片機(jī)系統(tǒng)中,常采用74LS373作為地址鎖存器使用,其連接方法如圖4.4所示。其中輸入端1D~8D接至單片機(jī)的P0口,輸出端提供的是低8位地址,G端接至單片機(jī)的地址鎖存允許信號(hào)ALE。輸出允許端OE接地,表示輸出三態(tài)門一直打開。圖4.474LS373用作地址鎖存器4.2.274LS244和74LS245芯片

74LS244和74LS245常作單片機(jī)系統(tǒng)的總線驅(qū)動(dòng)器,也作三態(tài)數(shù)據(jù)緩沖器。74LS244為單向驅(qū)動(dòng)器或數(shù)據(jù)緩沖器,其內(nèi)部結(jié)構(gòu)如圖4.5所示。它由8個(gè)三態(tài)門構(gòu)成,分成兩組,分別由控制端1G和2G控制。圖4.574LS244內(nèi)部邏輯及引腳信號(hào)

74LS245的內(nèi)部結(jié)構(gòu)如圖4.6所示。它由16個(gè)三態(tài)門構(gòu)成,每個(gè)方向8個(gè)。在控制端G低電平有效時(shí),由DIR控制數(shù)據(jù)的方向。當(dāng)DIR為“1”時(shí),數(shù)據(jù)從左向右傳送;當(dāng)DIR為“0”時(shí),數(shù)據(jù)從右向左傳送。圖4.674LS245內(nèi)部邏輯及引腳信號(hào)當(dāng)P2口需要增加驅(qū)動(dòng)能力時(shí),可采用單向驅(qū)動(dòng)器74LS244,其連接如圖4.7(a)所示。圖中兩個(gè)控制端1G和2G均接地,相當(dāng)于8個(gè)三態(tài)門均打開,數(shù)據(jù)從P2口到A8~A15端直通。也就是說,此處采用74LS244純粹是為了增加驅(qū)動(dòng)能力而不加任何控制。當(dāng)51單片機(jī)的P0口需要增加驅(qū)動(dòng)能力時(shí),必須采用雙向驅(qū)動(dòng)器,可用74LS245,其連接如圖4.7(b)所示。圖中,將控制端G接地(常有效),將單片機(jī)的PSEN和RD信號(hào)經(jīng)與門后接到它的DIR端。當(dāng)從片外程序存儲(chǔ)器取指令(PSEN變?yōu)榈碗娖接行?或讀片外數(shù)據(jù)存儲(chǔ)器(RD信號(hào)低電平有效)時(shí),與門輸出為0,即DIR=0,數(shù)據(jù)從右向左,即通過74LS245傳向P0口再送往CPU;其余時(shí)間PSEN與RD信號(hào)均為高電平無效,DIR=1,數(shù)據(jù)從左向右,即由P0口經(jīng)驅(qū)動(dòng)器向外輸出。圖4.751單片機(jī)總線驅(qū)動(dòng)器的連接(a)P2外接74LS244;(b)P0外接74LS2454.2.3

3-8譯碼器74LS138

3-8譯碼器74LS138為一種常用的地址譯碼器芯片,其引腳如圖4.8所示。其中,G1、G2A、G2B為3個(gè)控制端,只有當(dāng)G1為“1”且G2A、G2B均為“0”時(shí),譯碼器才能進(jìn)行譯碼輸出;否則,譯碼器的8個(gè)輸出端全為高阻狀態(tài)。譯碼輸入端與輸出端的譯碼邏輯關(guān)系如表4.2所示。圖4.874LS138引腳信號(hào)表4.274LS138的譯碼邏輯關(guān)系具體使用時(shí),G1、G2A、G2B既可直接接至+5V電源端或接地,也可參與地址譯碼,但其譯碼關(guān)系必須為100。需要時(shí),也可通過反相器使輸入信號(hào)滿足要求。4.3存儲(chǔ)器的擴(kuò)展4.3.1存儲(chǔ)器擴(kuò)展概述

1.51單片機(jī)的擴(kuò)展能力根據(jù)51單片機(jī)地址總線寬度(16位)可知,在片外可擴(kuò)展的存儲(chǔ)器最大容量為64KB,地址為0000H~FFFFH。

2.擴(kuò)展的一般方法存儲(chǔ)器按讀/寫特性不同區(qū)分為程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器。程序存儲(chǔ)器又可分為掩膜ROM、可編程ROM(PROM)、可擦除ROM(EPROM或EEPROM);數(shù)據(jù)存儲(chǔ)器又可分為靜態(tài)RAM和動(dòng)態(tài)RAM。因此,存儲(chǔ)器芯片有多種,即使是同一種類的存儲(chǔ)器芯片,因其容量的不同,則引腳數(shù)目也不同。盡管如此,存儲(chǔ)器芯片與單片機(jī)擴(kuò)展連接具有共同的規(guī)律。不論何種存儲(chǔ)器芯片,其引腳都呈三總線結(jié)構(gòu),與單片機(jī)的連接都是三總線對(duì)接。另外,電源線應(yīng)接在對(duì)應(yīng)的電源線上。存儲(chǔ)器芯片的控制線:一般來說,程序存儲(chǔ)器具有讀操作控制線(OE),它與單片機(jī)的PSEN信號(hào)線相連。除此之外,對(duì)于EPROM芯片還有編程脈沖輸入線(PRG)、編程狀態(tài)線(READY/BUSY)。PRG應(yīng)與單片機(jī)在編程方式下的編程脈沖輸出線相接。

READY/BUSY在單片機(jī)查詢輸入/輸出方式下,與一根I/O口線相接;在單片機(jī)中斷工作方式下,與一個(gè)外部中斷信號(hào)輸入線相接。存儲(chǔ)器芯片的數(shù)據(jù)線:數(shù)據(jù)線的數(shù)目由芯片的字長決定。例如,1位字長的芯片數(shù)據(jù)線有一根,4位字長的芯片數(shù)據(jù)線有4根,8位字長的芯片數(shù)據(jù)線有8根。存儲(chǔ)器芯片的數(shù)據(jù)線與單片機(jī)的數(shù)據(jù)總線(P0.0~P0.7)按由低位到高位的順序順次相接。存儲(chǔ)器芯片的地址線:地址線的數(shù)目由芯片的容量決定。容量(Q)與地址線數(shù)目(N)滿足關(guān)系式:Q=2N。存儲(chǔ)器芯片的地址線與單片機(jī)的地址總線(A0~A15)按由低位到高位的順序順次相接。一般來說,存儲(chǔ)器芯片的地址線數(shù)目總是少于單片機(jī)地址總線的數(shù)目,如此相接后,單片機(jī)的高位地址線總有剩余。剩余地址線一般作為譯碼線,譯碼輸出與存儲(chǔ)器芯片的片選信號(hào)線相接。存儲(chǔ)器芯片有一根或幾根片選信號(hào)線,訪問存儲(chǔ)器芯片時(shí),片選信號(hào)必須有效,即選中存儲(chǔ)器芯片。片選信號(hào)線與單片機(jī)系統(tǒng)的譯碼輸出相接后,就決定了存儲(chǔ)器芯片的地址范圍。因此,單片機(jī)的剩余高位地址線的譯碼及譯碼輸出與存儲(chǔ)器芯片的片選信號(hào)線的連接,是存儲(chǔ)器擴(kuò)展連接的關(guān)鍵問題。譯碼有兩種方法:部分譯碼法和全譯碼法。

(1)部分譯碼。所謂部分譯碼,就是存儲(chǔ)器芯片的地址線與單片機(jī)系統(tǒng)的地址線順次相接后,剩余的高位地址線僅用一部分參加譯碼。參加譯碼的地址線對(duì)于選中某一存儲(chǔ)器芯片有一個(gè)確定的狀態(tài),而與不參加譯碼的地址線無關(guān)。部分譯碼的一種特例是線譯碼。所謂線譯碼,就是直接用一根線與存儲(chǔ)器芯片的片選信號(hào)相接,即一根線選中。在設(shè)計(jì)存儲(chǔ)器擴(kuò)展連接或分析擴(kuò)展連接電路確定存儲(chǔ)器芯片的地址范圍時(shí),常采用圖4.9所示的地址譯碼關(guān)系圖的方法。假定某一2KB存儲(chǔ)器芯片譯碼擴(kuò)展系統(tǒng)具有圖中譯碼地址線的狀態(tài),我們來分析其地址范圍。圖4.9地址譯碼關(guān)系圖圖4.9中與存儲(chǔ)器芯片連接的低11位地址線的地址變化范圍為全“0”~全“1”。參加譯碼的4根地址線的狀態(tài)是唯一確定的。不參加譯碼的A15位地址線有兩種狀態(tài),這兩種狀態(tài)都可以選中該存儲(chǔ)器芯片:當(dāng)A15=0時(shí),占用的地址是0010000000000000~0010011111111111,即2000H~27FFH。當(dāng)A15=1時(shí),占用的地址是1010000000000000~1010011111111111,即A000H~A7FFH。同理,若有N條高位地址線不參加譯碼,則有2N個(gè)重疊的地址范圍。重疊的地址范圍中真正能存儲(chǔ)信息的只有一個(gè),其余僅是占據(jù),所以造成浪費(fèi),這是部分譯碼的缺點(diǎn)。它的優(yōu)點(diǎn)是譯碼電路簡(jiǎn)單。

(2)全譯碼。所謂全譯碼,就是存儲(chǔ)器芯片的地址線與單片機(jī)系統(tǒng)的地址線順次相接后,剩余的高位地址線全部參加譯碼。這種譯碼方法中,存儲(chǔ)器芯片的地址空間是唯一確定的,但譯碼電路相對(duì)復(fù)雜。這兩種譯碼方法在單片機(jī)擴(kuò)展系統(tǒng)中都有應(yīng)用。在擴(kuò)展存儲(chǔ)器(包括I/O口)容量不大的情況下,可選擇部分譯碼,譯碼電路簡(jiǎn)單,可降低成本。

3.擴(kuò)展存儲(chǔ)器所需芯片數(shù)目的確定若所選存儲(chǔ)器芯片字長與單片機(jī)字長一致,則只需擴(kuò)展容量。所需芯片數(shù)目按下式確定:若所選存儲(chǔ)器芯片字長與單片機(jī)字長不一致,則不僅需要擴(kuò)展容量,還需擴(kuò)展字長。所需芯片數(shù)目按下式確定:4.3.2程序存儲(chǔ)器的擴(kuò)展

1.EPROM芯片

2716是常用EPROM芯片中容量最小的(更小的已很少采用),有24條引腳,如圖4.10所示。其中有3根電源線(VCC、VPP、GND)、11根地址線(A0~A10)、8根數(shù)據(jù)輸出線(O0~O7),其他2根為片選端CE和輸出允許端OE。VPP為編程電源端,在正常工作(讀)時(shí),也接到+5V。大容量的EPROM芯片有2732、2764、27128、27256,它們的引腳功能基本與2716類似,在圖4.10中一并列出了它們兩側(cè)的引腳分布。圖4.10常用EPROM引腳排列

2.程序存儲(chǔ)器擴(kuò)展舉例下面分三種情況說明程序存儲(chǔ)器的擴(kuò)展方法。

(1)不用片外譯碼器的單片程序存儲(chǔ)器的擴(kuò)展。

例1

用EPROM2764構(gòu)成80C31的最小系統(tǒng)。用一片2764(8KB×8)擴(kuò)展程序存儲(chǔ)器,因?qū)Φ刂房臻g無任何約束條件,采用圖4.11所示連接。圖4.112764與51單片機(jī)的擴(kuò)展連接圖圖中,芯片的輸出允許信號(hào)與單片機(jī)的PSEN連接,控制讀取指令代碼。芯片8條數(shù)據(jù)線與單片機(jī)數(shù)據(jù)線順次連接。芯片的13條地址線順次與單片機(jī)的地址線A0~A12相接。由于不采用地址譯碼器,所以,高3位地址線A13、A14、A15不接,片選信號(hào)CE直接接地(常有效)。這樣連接,單片機(jī)讀取該存儲(chǔ)器芯片時(shí),只要從低13位地址線傳送確定地址即可;也就是說,與高3位地址狀態(tài)無關(guān)(高3位地址線的任意狀態(tài)都可以訪問該芯片)。故有23=8個(gè)重疊的8KB地址空間,8個(gè)重疊的地址范圍為:圖4.11所示連接電路的8個(gè)重疊的地址范圍為:0000000000000000~0001111111111111,即0000H~1FFFH;0010000000000000~0011111111111111,即2000H~3FFFH;0100000000000000~0101111111111111,即4000H~5FFFH;0110000000000000~0111111111111111,即6000H~7FFFH;1000000000000000~1001111111111111,即8000H~9FFFH;1010000000000000~1011111111111111,即A000H~BFFFH;1100000000000000~1101111111111111,即C000H~DFFFH;1110000000000000~1111111111111111,即E000H~FFFFH。

2)采用線選法的多片程序存儲(chǔ)器的擴(kuò)展

例2使用兩片2764擴(kuò)展16KB的程序存儲(chǔ)器,采用線選法選中芯片。擴(kuò)展連接圖如圖4.12所示。圖4.122片2764部分譯碼與51單片機(jī)的擴(kuò)展連接圖中以P2.7作為片選,當(dāng)P2.7=0時(shí),選中2764(1);當(dāng)P2.7=1時(shí),選中2764(2)。因兩根線(A13、A14)未用,故兩個(gè)芯片各有22=4個(gè)重疊的地址空間。它們分別為:左片:0000000000000000~0001111111111111,即0000H~1FFFH;0010000000000000~0011111111111111,即2000H~3FFFH;0100000000000000~0101111111111111,即4000H~5FFFH;0110000000000000~0111111111111111,即6000H~7FFFH。右片:1000000000000000~1001111111111111,即8000H~9FFFH;1010000000000000~1011111111111111,即A000H~BFFFH;1100000000000000~1101111111111111,即C000H~DFFFH;1110000000000000~1111111111111111,即E000H~FFFFH。

3)采用地址譯碼器的多片程序存儲(chǔ)器的擴(kuò)展

例3要求用2764芯片擴(kuò)展51單片機(jī)的片外程序存儲(chǔ)器,分配的地址范圍為0000H~3FFFH。本例要求的地址空間是唯一確定的,所以要采用全譯碼方法。由分配的地址范圍可知:擴(kuò)展的容量為3FFFH-0000H+1=4000H=16KB,2764為8KB×8位,故需要兩片。第1片的地址范圍應(yīng)為0000H~1FFFH;第2片的地址范圍應(yīng)為2000H~3FFFH。由地址范圍確定譯碼器的連接,為此畫出譯碼關(guān)系圖如下:其中的第1行、第2行分別對(duì)應(yīng)第1片、第2片譯碼輸入線的狀態(tài)。由此知,選用74LS138譯碼器時(shí),其輸出Y0應(yīng)接在第1片的片選線上,Y1應(yīng)接在第2片的片選線上。擴(kuò)展連接如圖4.13所示。圖4.132片2764全譯碼與51單片機(jī)的擴(kuò)展連接圖4.3.3數(shù)據(jù)存儲(chǔ)器的擴(kuò)展

1.數(shù)據(jù)存儲(chǔ)器芯片常用于單片機(jī)擴(kuò)展的靜態(tài)數(shù)據(jù)存儲(chǔ)器芯片有2114(1K×4位)、6116(2K×8位)、6264(8K×8位),引腳圖如圖4.14所示。圖4.14常用SRAM芯片引腳排列

6264有2個(gè)片選控制端CE1、CE2,其作用是兩個(gè)信號(hào)同時(shí)為低電平有效才能選中芯片(相當(dāng)于一個(gè)片選信號(hào)的作用)。動(dòng)態(tài)RAM雖然集成度高、成本低、功耗小,但需要刷新電路,單片機(jī)擴(kuò)展中不如靜態(tài)RAM方便,所以目前單片機(jī)的數(shù)據(jù)存儲(chǔ)器擴(kuò)展仍以靜態(tài)RAM芯片為多。然而,現(xiàn)在的動(dòng)態(tài)隨機(jī)存儲(chǔ)器iRAM的刷新電路一并集成在芯片內(nèi),擴(kuò)展使用與靜態(tài)RAM一樣方便。這種芯片有2186、2187,它們都是8K×8位存儲(chǔ)器,引腳圖如圖4.15所示。圖4.15iRAM芯片2186/2187引腳排列

2186與2187的不同僅在于前者的引腳1是刷新聯(lián)絡(luò)信號(hào)端,后者的引腳1是刷新選通端。數(shù)據(jù)存儲(chǔ)器的OE、WE信號(hào)線分別為輸出允許和寫允許控制端。2114只有一個(gè)讀/寫控制端WE,當(dāng)WE=0時(shí),是寫允許;當(dāng)WE=1時(shí),是輸出允許。

2.數(shù)據(jù)存儲(chǔ)器的擴(kuò)展舉例數(shù)據(jù)存儲(chǔ)器與單片機(jī)的擴(kuò)展連接除芯片的輸出允許信號(hào)OE應(yīng)與單片機(jī)的RD讀/寫控制信號(hào)相接、寫允許信號(hào)與WR相接外,其它信號(hào)線的連接與程序存儲(chǔ)器類同。

例4采用2114芯片在51單片機(jī)片外擴(kuò)展1KB數(shù)據(jù)存儲(chǔ)器。因2114為1K×4位的靜態(tài)RAM芯片,所以需要2片進(jìn)行位擴(kuò)展。擴(kuò)展連接電路如圖4.16所示。因?yàn)閮蓚€(gè)芯片相同地址的4位單元組合起來作為單片機(jī)系統(tǒng)的8位單元,所以片選信號(hào)線要并接在一起,即兩片同時(shí)選中。本例采用并接于地(常有效)的方法。圖4.162片2114進(jìn)行位擴(kuò)展的連接示例4.3.4兼有片外程序存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器的擴(kuò)展舉例例5采用2764和6264芯片在51單片機(jī)片外分別擴(kuò)展24KB程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器。擴(kuò)展連接電路如圖4.17所示。圖4.17兼有片外ROM和RAM擴(kuò)展的連接示例圖中各有一片2764和一片6264的片選端并接在同一根譯碼輸出線上,即2764和6264芯片具有相同的地址空間。但讀控制信號(hào)連接不同,2764的OE連接于單片機(jī)的,6264的OE連接于單片機(jī)的RD,WE連接于單片機(jī)的WR。盡管兩種存儲(chǔ)器的地址空間相同,因使用不同的控制信號(hào),所以不會(huì)發(fā)生地址沖突。4.4并行I/O口擴(kuò)展

51單片機(jī)共有4個(gè)并行I/O口,但這些I/O口并不能完全提供給用戶使用,對(duì)于片內(nèi)有ROM/EPROM的單片機(jī)(如80C51/87C51),在不使用外部擴(kuò)展時(shí),才允許這4個(gè)I/O口作為用戶I/O口使用。然而大多數(shù)應(yīng)用系統(tǒng)都需外部擴(kuò)展,51單片機(jī)可提供給用戶使用的I/O口只有P1口和P3部分口線。因此,在大部分的51單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)中,都不可避免地要進(jìn)行I/O口擴(kuò)展。4.4.1

I/O口擴(kuò)展概述

1.51單片機(jī)I/O口擴(kuò)展性能單片機(jī)應(yīng)用系統(tǒng)中的I/O口擴(kuò)展方法與單片機(jī)的I/O口擴(kuò)展性能有關(guān)。

(1)在51單片機(jī)應(yīng)用系統(tǒng)中,擴(kuò)展的I/O口采取與數(shù)據(jù)存儲(chǔ)器相同的尋址方法。所有擴(kuò)展的I/O口或通過擴(kuò)展I/O口連接的外圍設(shè)備均與片外數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址。任何一個(gè)擴(kuò)展I/O口,根據(jù)地址線的選擇方式不同,占用一個(gè)片外RAM地址,而與外部程序存儲(chǔ)器無關(guān)。

(2)利用串行口的移位寄存器工作方式(方式0)也可擴(kuò)展I/O口,這時(shí)所擴(kuò)展的I/O口不占用片外RAM地址。

(3)擴(kuò)展I/O口的硬件相依性。在單片機(jī)應(yīng)用系統(tǒng)中,I/O口的擴(kuò)展不是目的,而是為外部通道及設(shè)備提供一個(gè)輸入、輸出通道。因此,I/O口的擴(kuò)展總是為了實(shí)現(xiàn)某一測(cè)控及管理功能而進(jìn)行的,例如,連接鍵盤、顯示器,驅(qū)動(dòng)開關(guān)控制,開關(guān)量監(jiān)測(cè)等。

(4)擴(kuò)展I/O口的軟件相依性。選用不同的I/O口擴(kuò)展芯片或外部設(shè)備時(shí),擴(kuò)展I/O口的操作方式不同,因而應(yīng)用程序應(yīng)有不同,如入口地址、初始化狀態(tài)設(shè)置、工作方式選擇等。

2.I/O口擴(kuò)展用芯片

51單片機(jī)應(yīng)用系統(tǒng)中,I/O口擴(kuò)展用芯片主要有通用I/O口芯片和TTL、CMOS鎖存器、緩沖器電路芯片兩大類。通用I/O口芯片選用Intel公司的芯片,其接口最為簡(jiǎn)捷可靠,如8255、8155等。

3.I/O口擴(kuò)展方法根據(jù)擴(kuò)展并行I/O口時(shí)數(shù)據(jù)線的連接方式,I/O口擴(kuò)展可分為總線擴(kuò)展方法、串行口擴(kuò)展方法和I/O口擴(kuò)展方法。4.4.2

8255A可編程并行I/O口擴(kuò)展

8255A是單片機(jī)應(yīng)用系統(tǒng)中被廣泛使用的可編程外部I/O口擴(kuò)展芯片。它有3個(gè)8位并行I/O口,每個(gè)口有3種工作方式。

1.芯片引腳信號(hào)及其內(nèi)部結(jié)構(gòu)

8255芯片的引腳信號(hào)如圖4.18所示。圖4.188255A引腳信號(hào)

I/O口芯片的引腳信號(hào)都具有“兩邊”性,即一邊與系統(tǒng)線連接,一邊與外部設(shè)備連接。

8255A與系統(tǒng)相聯(lián)系的引腳信號(hào)有:

D0~D7:8條雙向數(shù)據(jù)線。與單片機(jī)系統(tǒng)數(shù)據(jù)線(P0口)連接,用于傳輸控制命令和數(shù)據(jù)。

A0、A1:8255A的內(nèi)部端口尋址線。8255A內(nèi)部有4個(gè)寄存器端口,稱它們?yōu)镻A口、PB口、PC口和控制口。通過A1A0上的4種狀態(tài)來選擇端口,其狀態(tài)碼與端口的對(duì)應(yīng)關(guān)系如表4.3所示。

RD、WR:對(duì)8255A讀、寫的控制信號(hào)。與單片機(jī)的讀、寫信號(hào)連接,實(shí)現(xiàn)對(duì)8255A的讀寫操作控制。

RESET:復(fù)位信號(hào)。在該引腳上出現(xiàn)持續(xù)一定時(shí)間的高電平,使內(nèi)部寄存器復(fù)位到初始狀態(tài),連接于外部復(fù)位電路或單片機(jī)的RESET引腳上。

CS:片選信號(hào)。當(dāng)其為低電平時(shí),8255A才能工作,否則禁止一切操作。同存儲(chǔ)器芯片的片選信號(hào)作用一樣,可與一個(gè)譯碼邏輯輸出連接,確定內(nèi)部端口地址范圍。采用部分譯碼,內(nèi)部端口有重疊地址;采用全地址譯碼內(nèi)部端口有唯一地址。

Vcc、GND:工作電源接入端,接?+5?V電源。

8255A與外設(shè)相聯(lián)系的數(shù)據(jù)線:PA7~PA0,PB7~PB0,PC7~PC0分別是PA、PB、PC口的8位雙向數(shù)據(jù)線,與外設(shè)并行數(shù)據(jù)線連接。

8255A芯片的內(nèi)部結(jié)構(gòu)如圖4.19所示。圖4.198255A的內(nèi)部結(jié)構(gòu)圖從8255A的內(nèi)部結(jié)構(gòu)可以看出,從控制上分為兩組:A口和C口的高4位是A組控制;B口和C口的低4位是B組控制。這樣的分組規(guī)定了:當(dāng)A口、B口工作在需要由C口提供狀態(tài)控制信號(hào)的工作方式時(shí),由C口的高4位給A口提供狀態(tài)控制信號(hào),由C口的低4位給B口提供狀態(tài)控制信號(hào)。當(dāng)C口工作在I/O口方式時(shí),C口可作為兩個(gè)4位并行口。

8255A內(nèi)部有一個(gè)讀寫控制邏輯模塊,它接收對(duì)8255A的片選、復(fù)位、端口尋址和讀寫控制信號(hào)及命令字,分別控制8255A的各種功能操作。8255A的全部工作狀態(tài)是由讀寫控制邏輯根據(jù)用戶編程設(shè)置來實(shí)現(xiàn)的。例如,根據(jù)A1、A0上傳送的端口尋址碼,經(jīng)譯碼可選通相應(yīng)的端口寄存器。

8255A內(nèi)部有一個(gè)數(shù)據(jù)總線緩沖器,暫存經(jīng)數(shù)據(jù)線(D7~D0)傳輸?shù)乃行畔?命令和數(shù)據(jù))。

2.8255A的工作方式

8255A有三種工作方式,可供用戶根據(jù)需要來編程選用。方式0(基本輸入/輸出方式):這種工作方式不需要任何狀態(tài)聯(lián)絡(luò)信號(hào)。A口、B口和C口的高低4位可以由程序設(shè)定為輸入或輸出,可設(shè)定16種輸入、輸出狀態(tài)。作為輸出口時(shí),輸出數(shù)據(jù)被鎖存;作為輸入口時(shí),輸入數(shù)據(jù)不鎖存。方式1(選通輸入/輸出方式):在這種工作方式下,A口可由編程設(shè)定為輸入或輸出,由C口的高4位提供相應(yīng)的控制和同步信號(hào);B口可由編程設(shè)定為輸入口或輸出口,由C口的低4位提供相應(yīng)的控制和同步信號(hào)。A口和B口的輸入數(shù)據(jù)或輸出數(shù)據(jù)都被鎖存。方式1下的邏輯組態(tài)關(guān)系如圖4.20所示。圖4.208255方式1邏輯組態(tài)關(guān)系(a)A口輸入;(b)A口輸出;(c)B口輸入;(d)B口輸出當(dāng)A口、B口設(shè)定為方式1時(shí),8255A控制邏輯自動(dòng)使C口相應(yīng)位給A口、B口提供規(guī)定的控制和狀態(tài)同步信號(hào),C口不再作獨(dú)立I/O口,但剩余位可按位作I/O線。

方式2(雙向傳送方式):這種工作方式只能用于A口,C口的PC3~PC7用來作為輸入/輸出的控制和同步信號(hào)。這時(shí)B口可工作在方式0或方式1。方式2下的邏輯組態(tài)關(guān)系如圖4.21所示。圖4.218255A方式2邏輯組態(tài)關(guān)系圖4.20和圖4.21中各狀態(tài)控制信號(hào)的意義如下:

OBF:輸出緩沖器滿信號(hào)。當(dāng)其為低時(shí),8255A告知外設(shè)有數(shù)據(jù)可供輸出。在單片機(jī)執(zhí)行輸出指令后,WR上升沿使其為低電平有效,表示數(shù)據(jù)已傳送到數(shù)據(jù)端口。由外設(shè)的應(yīng)答信號(hào)ACK使其變?yōu)楦唠娖剑硎就庠O(shè)已取走數(shù)據(jù),騰空了數(shù)據(jù)寄存器。

IBF:輸入緩沖器滿信號(hào)。當(dāng)其為高時(shí),8255A告知外設(shè)數(shù)據(jù)已輸入完畢。它由來自外設(shè)的置為高電平,表示外設(shè)數(shù)據(jù)已進(jìn)入8255A的STB數(shù)據(jù)寄存器。在單片機(jī)執(zhí)行輸入指令后,上升沿使其復(fù)位,表示數(shù)據(jù)已被讀走,輸入緩沖器已被騰空。

ACK:來自外設(shè)的應(yīng)答信號(hào)。當(dāng)其為低時(shí),表示外設(shè)已從數(shù)據(jù)端口取走數(shù)據(jù)。

STB:來自外設(shè)的選通信號(hào)。當(dāng)其為低時(shí),表示將外設(shè)數(shù)據(jù)打入到8255A數(shù)據(jù)端口。

INTR:中斷請(qǐng)求信號(hào)。輸入時(shí),當(dāng)外設(shè)數(shù)據(jù)進(jìn)入到8255A數(shù)據(jù)端口時(shí),由IBF觸發(fā),產(chǎn)生中斷請(qǐng)求;在輸出時(shí),單片機(jī)將數(shù)據(jù)送入數(shù)據(jù)端口,由OBF觸發(fā),產(chǎn)生中斷請(qǐng)求。

INTE:中斷允許控制信號(hào)。通過對(duì)C口相應(yīng)位置位或復(fù)位來進(jìn)行控制。置位是中斷允許,復(fù)位是中斷不允許(禁止)。A口輸入中斷允許位是PC4,A口輸出中斷允許位是PC6,B口輸入/輸出中斷允許位都是PC2。

3.8255A的編程命令字

用戶通過設(shè)置命令字,將其送入8255A的控制端口,選擇8255A的工作方式及其特性。8255A的編程控制字包含方式選擇控制字和C口置/復(fù)位控制字。

方式選擇控制字用于設(shè)定8255A的工作方式,其格式與定義如圖4.22(a)所示。

C口置位/復(fù)位控制字用于設(shè)定8255A有關(guān)控制及操作的狀態(tài)和特性,其格式定義如圖4.22(b)所示。圖4.228255A控制字的格式與定義(a)方式選擇控制字;(b)C口置位/復(fù)位控制字

8255A工作前,必須根據(jù)應(yīng)用需求,依照格式定義,設(shè)置方式控制字。設(shè)置好方式控制字后,用輸出指令將其寫入控制端口,8255A就按設(shè)定的方式工作。如果不設(shè)定工作方式,或設(shè)定的工作方式不正確,8255A將不能正常工作。這一步工作也稱為對(duì)8255A的初始化。

C口具有位操作功能,把一個(gè)置位/復(fù)位控制字寫入8255A的控制端口,就能把C口的指定位置1或清0。

兩個(gè)命令字送入8255A,存放在一個(gè)控制端口,它們通過最高位(D7)來區(qū)分。D7=1,則為方式控制字;D7=0,則為置位/復(fù)位操作控制字。

4.?51單片機(jī)與8255的接口方法

8255A與單片機(jī)連接的基本方法仍是三總線對(duì)接。8255A三種工作方式下的接口要求有所不同。在方式1和方式2下,需和單片機(jī)控制線相連接的還有中斷請(qǐng)求信號(hào)INTR。該信號(hào)的連接還取決于8255A與單片機(jī)的數(shù)據(jù)傳輸方式。如果采用查詢方式,INTR可與單片機(jī)的一位I/O口線連接;如果采用中斷方式,INTR連接在單片機(jī)外部中斷輸入線上。

圖4.23是8255A與51單片機(jī)的基本連接示例。圖4.238255A與51單片機(jī)的基本連接示例擴(kuò)展I/O口與單片機(jī)連接可區(qū)分8位地址端口連接和16位地址端口連接。對(duì)于8位地址端口連接,與I/O芯片端口尋址有關(guān)的線(端口尋址線、片選線)只和單片機(jī)的低8位地址線產(chǎn)生連接關(guān)系,可用R0或R1來間接尋址端口。對(duì)于16位地址端口連接,與I/O芯片端口尋址有關(guān)的線(端口尋址線、片選線)和單片機(jī)的16位地址線產(chǎn)生連接關(guān)系,需用DPTR來間接尋址端口。圖4.23采用了最簡(jiǎn)單的線譯碼、8位地址連接方式。PA口地址為0XXXXX00,取7CH;PB、PC和控制口地址依次可取7DH、7EH、7FH。8位地址端口連接也可以用16位地址來尋址端口,因?yàn)榕c高8位地址無關(guān),只要低8位地址正確,就可以訪問端口。所以,端口地址也可取FF7CH、FF7DH、FF7EH、FF7FH。在I/O口擴(kuò)展中多用部分譯碼方式,這是考慮單片機(jī)應(yīng)用系統(tǒng)中外設(shè)數(shù)量一般不是太多。如果受片外RAM地址空間限制,則需采用全地址譯碼或更多地址線參與的部分譯碼。

在硬件接口的基礎(chǔ)上,需對(duì)8255A初始化后,才能與其傳輸數(shù)據(jù)。下面通過例子來說明8255A的應(yīng)用。

例6

利用8255A方式0以查詢實(shí)現(xiàn)打印機(jī)接口。在圖4.23基本連接的基礎(chǔ)上,8255A連接打印機(jī),如圖4.24所示。設(shè)將片內(nèi)RAM從30H單元開始存儲(chǔ)的16個(gè)字符數(shù)據(jù)送打印機(jī)打印。圖4.24擴(kuò)展8255A與打印機(jī)的連接(查詢方式)單片機(jī)把打印數(shù)據(jù)輸出到PA口,在STROBE信號(hào)線上出現(xiàn)一個(gè)不小于1μs的負(fù)脈沖,可啟動(dòng)打印機(jī)。打印機(jī)接收數(shù)據(jù)后,當(dāng)BUSY信號(hào)變?yōu)楦唠娖綍r(shí),表示忙碌;當(dāng)BUSY信號(hào)為低電平時(shí),表示空閑,可以接收下一數(shù)據(jù)。

根據(jù)打印機(jī)的工作過程,8255A工作在方式0下,從PA口輸出數(shù)據(jù),PC6輸出選通信號(hào),PC1輸入打印機(jī)狀態(tài)。8255A的方式控制字設(shè)定為81H。對(duì)8255A初始化及數(shù)據(jù)傳輸程序如下:

PRINT: MOVR0,#7FH;8255A初始化

MOVA,#81H

MOVX@R0,A

MOVA,#0DH;PC6置位命令字

MOV@R0,A;置位PC6

MOVR2,#10H;以數(shù)據(jù)個(gè)數(shù)控制循環(huán)

MOVR1,#30H;R1指向數(shù)據(jù)緩沖區(qū)首址

START: MOVR0,#7EH;R0指向PC口WAIT:MOVXA,@R0 ;從PC口讀取狀態(tài)

ANLA,#02H ;取狀態(tài)位

JNZWAIT ;打印機(jī)忙,則等待

MOVA,@R1 ;讀取打印數(shù)據(jù)

MOVR0,#7CH ;R0指向PA口

MOVX@R0,A ;向打印機(jī)輸出數(shù)據(jù)

MOVR0,#7FH ;R0指向控制口

MOVA,#C0H ;PC6清0命令字

MOVX@R0,A

NOP

MOVA,#0DH

MOV@R0,A;產(chǎn)生負(fù)脈沖,選通打印機(jī)

INCR1

DJNZR2,START

END

例7

利用8255A方式1,以中斷方式實(shí)現(xiàn)打印機(jī)接口。在圖4.23基本連接的基礎(chǔ)上,8255A連接打印機(jī),如圖4.25所示。設(shè)將片內(nèi)RAM從30H單元開始存儲(chǔ)的16個(gè)字符數(shù)據(jù)送打印機(jī)打印。圖4.25擴(kuò)展8255A與打印機(jī)的連接(中斷方式)

PA口工作在方式1輸出,單片機(jī)把數(shù)據(jù)輸出到PA口,由PC7輸出OBFA信號(hào),其下降沿觸發(fā)單穩(wěn)觸發(fā)器選通打印機(jī),打印機(jī)產(chǎn)生ACK加到PC6上,由PC3產(chǎn)生中斷請(qǐng)求信號(hào)。因8255A的INT0中斷請(qǐng)求INTR是高電平有效,所以經(jīng)反相器與單片機(jī)的INT0連接。

單片機(jī)與8255A的PA口采用中斷方式輸出數(shù)據(jù),在主程序中對(duì)8255A初始化,在中斷服務(wù)程序中完成數(shù)據(jù)輸出。

8255A的方式控制字可設(shè)置為:10100000。為了在打印機(jī)輸出ACK時(shí),通過PC3產(chǎn)生有效的中斷請(qǐng)求信號(hào),必須使PA口的中斷請(qǐng)求允許INTEA(PC6)=1。對(duì)8255A的初始化程序如下:

MOVR0,#7FH ;8255A初始化

MOVA,#0A0H

MOVX@R0,A

MOVA,#0DH ;PC6置位,使PA口輸出中斷允許

MOVX@R0,A

:PINT0: MOVR0,#7CH

MOVR1,#30H

MOVA,@R1 ;讀取打印數(shù)據(jù)

MOVX@R0,A ;向PA口輸出數(shù)據(jù)

INCR1

RETI4.4.38155可編程并行I/O口擴(kuò)展

8155芯片含有256×8位靜態(tài)RAM,兩個(gè)可編程的8位I/O口,一個(gè)可編程的6位I/O口,一個(gè)可編程的14位定時(shí)器/計(jì)數(shù)器,具有地址鎖存功能。8155與51單片機(jī)接口簡(jiǎn)單,是單片機(jī)應(yīng)用系統(tǒng)中廣泛使用的芯片。

1.8155的結(jié)構(gòu)與引腳

8155的邏輯結(jié)構(gòu)如圖4.26(a)所示,引腳分布如圖4.26(b)所示。圖4.268155邏輯結(jié)構(gòu)及引腳(a)8155邏輯結(jié)構(gòu);(b)8155芯片引腳圖

8155與系統(tǒng)相聯(lián)系的信號(hào)有:

AD0~AD7:地址/數(shù)據(jù)總線,用于傳送地址、數(shù)據(jù)、命令、狀態(tài)信息。

ALE:地址鎖存信號(hào)輸入線。在ALE的下降沿將地址及

CE、IO/M的狀態(tài)鎖存到8155內(nèi)部寄存器。

IO/M:訪問RAM或I/O口選擇控制線。當(dāng)IO/M=0時(shí),對(duì)8155的RAM進(jìn)行讀/寫,AD0~AD7上的地址為8155中RAM單元地址;當(dāng)IO/M=1時(shí),對(duì)8155的I/O口進(jìn)行操作,AD0~AD7上的地址為I/O口地址。

CE:片選信號(hào)線。

RD、WR:讀、寫控制信號(hào)線。

RESET:復(fù)位控制端。

Vcc、Vss:電源線,接?+5?V工作電源。

8155與外部設(shè)備相聯(lián)系的信號(hào)有:PA0~PA7,PB0~PB6,PC0~PC5:與外設(shè)連接的雙向數(shù)據(jù)線。

TIMERIN為定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)脈沖輸入端,TIMEROUT為定時(shí)器/計(jì)數(shù)器的輸出端。

2.8155的RAM和I/O口編址

8155在單片機(jī)應(yīng)用系統(tǒng)中是按外部數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址的,地址為16位,低8位地址為片內(nèi)RAM地址,其高8位地址由片選線CE連接的譯碼邏輯確定。當(dāng)IO/M=?0時(shí),對(duì)RAM讀/寫,RAM低8位地址為00H~FFH;當(dāng)IO/M=?1時(shí),對(duì)I/O口進(jìn)行讀/寫,I/O口及定時(shí)器由AD0~AD3進(jìn)行尋址。其編址如表4.4所示。

3.8155的工作方式與基本操作

8155的A口、B口可工作于基本I/O方式或選通方式,C口可作為輸入/輸出口線,也可以作為A口、B口選通方式工作時(shí)的狀態(tài)控制信號(hào)。工作方式選擇是通過對(duì)8155內(nèi)部命令寄存器設(shè)定控制字來實(shí)現(xiàn)的。三個(gè)口可組合工作于四種方式下。命令字的格式及定義如圖4.27所示。圖4.278155命令控制寄存器格式基本I/O工作方式:當(dāng)8155編程設(shè)定為ALT1、ALT2時(shí),A、B、C口均為基本輸入輸出方式。該方式不需要任何狀態(tài)選通信號(hào)。

選通I/O工作方式:當(dāng)8155被設(shè)定為ALT3時(shí),A口為選通I/O,B口為基本I/O;當(dāng)設(shè)定為ALT4時(shí),A、B口均為選通I/O工作方式。選通方式的狀態(tài)控制信號(hào)邏輯組態(tài)如圖4.28所示。圖4.288155選通方式信號(hào)邏輯組態(tài)圖4.28中各信號(hào)的含義如下:

BF:輸出緩沖器滿信號(hào)。緩沖器有數(shù)據(jù)時(shí),BF為高電平,否則為低電平。

STB:來自外設(shè)的選通信號(hào)。當(dāng)其為低時(shí),從外設(shè)輸入數(shù)據(jù)。

INTR:中斷請(qǐng)求信號(hào)。當(dāng)8155的A口或B口緩沖器接收到外設(shè)數(shù)據(jù)或外設(shè)從緩沖器中取走數(shù)據(jù)時(shí),INTR變?yōu)楦唠娖?僅當(dāng)命令寄存器相應(yīng)中斷允許位為1),向單片機(jī)請(qǐng)求中斷,單片機(jī)對(duì)8155的相應(yīng)I/O口進(jìn)行一次讀/寫操作,INTR變?yōu)榈碗娖健?/p>

I/O狀態(tài)查詢:8155有一個(gè)狀態(tài)寄存器,鎖定I/O口和定時(shí)器的當(dāng)前狀態(tài),供單片機(jī)查詢。狀態(tài)寄存器和命令寄存器共享一個(gè)地址,它只能讀出不能寫入。對(duì)其寫入時(shí),作為命令寄存器,寫入的是命令;而對(duì)其讀出時(shí),作為狀態(tài)寄存器,讀出的是當(dāng)前I/O和定時(shí)器的狀態(tài)。

狀態(tài)寄存器的格式如圖4.29所示,它們表示了I/O作為選通輸入/輸出的狀態(tài)以及定時(shí)器的工作狀態(tài)。圖4.298155狀態(tài)寄存器格式

4.8155內(nèi)部的定時(shí)器/計(jì)數(shù)器

8155片內(nèi)有一個(gè)14位減法計(jì)數(shù)器,可對(duì)輸入脈沖進(jìn)行減1計(jì)數(shù)。外部有兩個(gè)定時(shí)器引腳端TIMERIN、TIMEROUT。TIMERIN為外部計(jì)數(shù)脈沖輸入端;TIMEROUT為定時(shí)器輸出端,可輸出不同脈沖波形。定時(shí)器/計(jì)數(shù)器的組成如圖4.30所示。兩個(gè)字節(jié)的低14位用于計(jì)數(shù),最高2位用于控制輸出方式。圖4.308155定時(shí)器寄存器格式定時(shí)器有四種輸出方式,可輸出四種脈沖波形,如圖4.31所示。圖4.318155定時(shí)器方式及輸出波形定時(shí)器/計(jì)數(shù)器的啟停由命令字的最高兩位(TM2、TM1)控制。向定時(shí)器/計(jì)數(shù)器寫入初值和方式后,將啟動(dòng)命令字寫入命令寄存器,即可啟動(dòng)工作。

如果設(shè)定為連續(xù)方波方式,則初值為偶數(shù)時(shí),輸出對(duì)稱方波;初值為奇數(shù)時(shí),輸出方波不對(duì)稱,方波的高電平比低電平多一個(gè)計(jì)數(shù)時(shí)鐘周期。

5.?8155與單片機(jī)的擴(kuò)展連接

圖4.32所示是8155與51單片機(jī)的擴(kuò)展連接示例。圖4.32用8155的擴(kuò)展連接在圖中連接狀態(tài)下,8155的地址分布:RAM地址范圍:0XXXXXX000000000~0XXXXXX011111111,取7E00H~7EFFH

I/O端口地址:

例8

使8155用作I/O口和定時(shí)器工作方式,A口定義為基本輸入方式,B口為基本輸出方式,定時(shí)器為方波發(fā)生器,對(duì)輸入脈沖進(jìn)行24分頻(8155中定時(shí)器最高計(jì)數(shù)頻率為

4MHz),則相應(yīng)的程序如下:4.4.4用TTL芯片擴(kuò)展簡(jiǎn)單的I/O接口

在51單片機(jī)應(yīng)用系統(tǒng)中,采用TTL或CMOS鎖存器、三態(tài)門芯片,通過單片機(jī)系統(tǒng)總線(P0口)可以擴(kuò)展各種類型的簡(jiǎn)單輸入/輸出口。因P0口作系統(tǒng)線只能分時(shí)使用,故輸出時(shí),接口應(yīng)有鎖存功能;輸入時(shí),視數(shù)據(jù)是常態(tài)還是暫態(tài)的不同,接口應(yīng)能三態(tài)緩沖,或鎖存選通。還應(yīng)注意的是,不論是鎖存器還是三態(tài)門芯片,都只具有數(shù)據(jù)線和鎖存允許及輸出允許控制線,而無地址線和片選信號(hào)線。而擴(kuò)展一個(gè)I/O口相當(dāng)于一個(gè)片外存儲(chǔ)單元。CPU對(duì)I/O口的訪問,要以確定的地址用MOVX指令來進(jìn)行。所以,在接口電路中,一般要用單片機(jī)系統(tǒng)的地址線或地址譯碼線與讀/寫控制信號(hào)組合,形成一個(gè)既有尋址作用又有讀/寫控制作用的信號(hào)線與鎖存器或三態(tài)門芯片的鎖存允許及輸出允許控制端相接。

1.用鎖存器擴(kuò)展輸出口

圖4.33是用一片74LS377擴(kuò)展一個(gè)8位輸出口的示例。圖4.33用74LS377鎖存器擴(kuò)展輸出口

74LS377是帶有輸出允許控制端的8D鎖存器,1D~8D是數(shù)據(jù)輸入線,1Q~8Q是數(shù)據(jù)輸出線,CLK是時(shí)鐘控制端,E為鎖存允許端。當(dāng)E=0時(shí),CLK的上升沿將8位數(shù)據(jù)鎖存,這時(shí)將保持D端輸入的8位數(shù)據(jù)。在圖中CLK與WR相連,作為寫(輸出)控制端;E與單片機(jī)的地址選擇線P2.7相連,作為尋址端。如此連接的輸出口地址是P2.7=0的任何16位地址,取7FFFH作為該口地址。對(duì)該口的輸出操作如下:

MOVDPTR,#7FFFH;使DPTR指向74LS377輸出口

MOVA,#data;輸出的數(shù)據(jù)要通過累加器A傳送

MOVX@DPTR,A;向74LS377擴(kuò)展口輸出數(shù)據(jù)

2.用鎖存器擴(kuò)展輸入口

對(duì)于快速外部設(shè)備輸出的數(shù)據(jù),視為暫態(tài)數(shù)據(jù)。單片機(jī)擴(kuò)展輸入口時(shí),應(yīng)用鎖存器,否則數(shù)據(jù)可能丟失。圖4.34是用一片74LS373擴(kuò)展一個(gè)8位輸入口的示例。

圖4.34中,單片機(jī)輸入數(shù)據(jù)采用中斷方式(也可以采用查詢方式),當(dāng)外設(shè)準(zhǔn)備好一個(gè)數(shù)據(jù)時(shí),產(chǎn)生一個(gè)選通信號(hào)XT加到74LS373的鎖存端G,在選通信號(hào)的下降沿將數(shù)據(jù)鎖存,同時(shí)向單片機(jī)發(fā)出中斷請(qǐng)求。在中斷服務(wù)程序中讀取鎖存器中的數(shù)據(jù)。圖4.34用74LS373鎖存器擴(kuò)展輸入口示例單片機(jī)的地址線P2.6和RD相“或”形成一個(gè)既有尋址作用又有讀控制作用的信號(hào)線與74LS373的輸出允許控制端相

接。74LS373的口地址為只要P2.6=0的任何16位地址。取BFFFH作為該口的地址。若單片機(jī)從擴(kuò)展的輸入口74LS373輸入的數(shù)據(jù)送入片內(nèi)數(shù)據(jù)存儲(chǔ)器中首地址為50H的數(shù)據(jù)區(qū),其相應(yīng)的中斷系統(tǒng)初始化及中斷服務(wù)程序如下:

3.用三態(tài)門擴(kuò)展輸入口

對(duì)于慢速外設(shè)輸出的數(shù)據(jù),可視為常態(tài)數(shù)據(jù)(如開關(guān)量)。單片機(jī)擴(kuò)展輸入口時(shí),可采用三態(tài)緩沖器芯片。圖4.35是用一片三態(tài)緩沖器74LS244擴(kuò)展一個(gè)8位輸入口的示例。

圖4.35中,74LS244用作8位輸入口,所以將1G、2G并接,當(dāng)作一個(gè)三態(tài)門控制端用。P2.6和RD相“或”形成一個(gè)既有尋址作用又有讀控制作用的信號(hào)和三態(tài)門控制端相接。從這個(gè)接口輸入數(shù)據(jù)時(shí)使用以下兩條指令即可:

MOVDPTR,#0BFFFH

MOVXA,@DPTR圖4.35用74LS244三態(tài)緩沖器擴(kuò)展輸入口示例

4.?dāng)U展多個(gè)輸入、輸出口舉例

前述三種I/O口擴(kuò)展都是一個(gè)8位口擴(kuò)展,用一條地址線進(jìn)行尋址,每個(gè)擴(kuò)展口都有許多重疊的地址。也可使用多片鎖存器或三態(tài)門來擴(kuò)展多個(gè)I/O口,可用地址譯碼進(jìn)行尋址。圖4.36是用兩片74LS377和兩片74LS244分別擴(kuò)展兩個(gè)輸出口和兩個(gè)輸入口的示例。圖中采用74LS138譯碼器的輸出作為擴(kuò)展口的尋址與讀/寫控制。圖4.36擴(kuò)展多個(gè)

溫馨提示

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