單片機(jī)原理與應(yīng)用(倪云峰)全書(shū)第5章_第1頁(yè)
單片機(jī)原理與應(yīng)用(倪云峰)全書(shū)第5章_第2頁(yè)
單片機(jī)原理與應(yīng)用(倪云峰)全書(shū)第5章_第3頁(yè)
單片機(jī)原理與應(yīng)用(倪云峰)全書(shū)第5章_第4頁(yè)
單片機(jī)原理與應(yīng)用(倪云峰)全書(shū)第5章_第5頁(yè)
已閱讀5頁(yè),還剩250頁(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)介

采用MCS-51系列單片機(jī)構(gòu)成的最小系統(tǒng)僅適用于一些較簡(jiǎn)單的應(yīng)用場(chǎng)合,完成簡(jiǎn)單的控制器或者小型檢測(cè)控制單元等。當(dāng)應(yīng)用系統(tǒng)復(fù)雜時(shí),單片機(jī)片內(nèi)所具有的功能部件就不能滿足應(yīng)用系統(tǒng)的要求,這就要求設(shè)計(jì)者必須在單片機(jī)的片外連接一些其他功能的外圍芯片來(lái)滿足系統(tǒng)要求,這就是系統(tǒng)的擴(kuò)展。系統(tǒng)擴(kuò)展按外圍芯片的功能可分為存儲(chǔ)器擴(kuò)展、輸入/輸出接口的擴(kuò)展、A/D轉(zhuǎn)換器和D/A轉(zhuǎn)換器的擴(kuò)展、鍵盤(pán)和顯示電路的擴(kuò)展等;按系統(tǒng)總線的連接方式可分為并行擴(kuò)展法和串行擴(kuò)展法。5.1概述第一頁(yè),共255頁(yè)。單片微機(jī)系統(tǒng)總線擴(kuò)展的方法有并行擴(kuò)展法和串行擴(kuò)展法兩種。并行擴(kuò)展法是指利用單片機(jī)本身具備的三組總線(AB、DB、CB)進(jìn)行的系統(tǒng)擴(kuò)展,并行擴(kuò)展法應(yīng)用較為廣泛。近年來(lái),由于集成電路設(shè)計(jì)、工藝和結(jié)構(gòu)的發(fā)展,串行擴(kuò)展法也得到了很快的發(fā)展,它利用SPI三線總線和I2C雙線總線進(jìn)行系統(tǒng)擴(kuò)展。甚至有的單片機(jī)應(yīng)用系統(tǒng)可能同時(shí)采用并行擴(kuò)展方法和串行擴(kuò)展方法。5.2系統(tǒng)總線擴(kuò)展第二頁(yè),共255頁(yè)。5.2.1并行總線擴(kuò)展

MCS-51系列單片機(jī)的并行總線擴(kuò)展法通常采用三總線結(jié)構(gòu),如圖5.1所示,即地址總線(AB)、數(shù)據(jù)總線(DB)和控制總線(CB)。系統(tǒng)擴(kuò)展中,外部芯片通過(guò)這三組總線與單片機(jī)連接。第三頁(yè),共255頁(yè)。圖5.151系列單片機(jī)三總線結(jié)構(gòu)圖第四頁(yè),共255頁(yè)。

1.地址總線(AB)

MCS-51系列單片機(jī)的地址總線寬度為16位,可尋址范圍達(dá)64?KB。其低8位地址A0~A7由P0口提供,高8位地址A8~A15由P2口提供。由于P0口既作為地址總線的低8位,又作為8位數(shù)據(jù)總線,時(shí)分復(fù)用,因此系統(tǒng)擴(kuò)展時(shí)必須將低8位地址先鎖存起來(lái),與P2口輸出的高8位地址共同組成16位地址,然后通過(guò)P0口對(duì)指向片外地址區(qū)的數(shù)據(jù)單元進(jìn)行讀/寫(xiě)操作。注意,P0口輸出的低8位地址一般采用74LS373一類的鎖存器或者8D觸發(fā)器進(jìn)行鎖存,而P2口具有輸出鎖存功能,不需外加鎖存器。第五頁(yè),共255頁(yè)。單片機(jī)地址鎖存信號(hào)ALE與鎖存器的鎖存控制信號(hào)端連接。在ALE的低電平期間(對(duì)于鎖存器控制信號(hào)端,低電平有效),將P0口輸出的地址A0~A7鎖存,此后P0口上出現(xiàn)的是數(shù)據(jù),而74LS373的輸出是低8位地址,實(shí)現(xiàn)了地址低8位和數(shù)據(jù)線的分離。P0、P2口在系統(tǒng)擴(kuò)展中用作地址線,因此不能作為一般I/O口使用。第六頁(yè),共255頁(yè)。

2.?dāng)?shù)據(jù)總線(DB)

數(shù)據(jù)總線由P0口提供,用D0~D7表示。P0口為三態(tài)雙向口,是應(yīng)用系統(tǒng)中使用最為頻繁的通道。系統(tǒng)擴(kuò)展時(shí),單片機(jī)與外部擴(kuò)展芯片之間的數(shù)據(jù)交換基本上都是通過(guò)P0口傳送的。

多個(gè)擴(kuò)展的外圍芯片都并聯(lián)在數(shù)據(jù)線上,單片機(jī)與外設(shè)芯片進(jìn)行數(shù)據(jù)交換時(shí),同一時(shí)刻有且僅有一個(gè)數(shù)據(jù)傳送通道是有效的,即單片機(jī)僅與擴(kuò)展芯片中的一個(gè)進(jìn)行數(shù)據(jù)交換,哪個(gè)有效則是由地址線控制各個(gè)芯片的片選線和控制信號(hào)來(lái)共同選擇的。第七頁(yè),共255頁(yè)。

3.控制總線(CB)

系統(tǒng)擴(kuò)展時(shí),外部芯片的選通是由控制總線、外圍芯片的片外選通信號(hào)或者控制總線與片外選通信號(hào)共同決定的。系統(tǒng)擴(kuò)展采用的控制線有ALE、、、、。

ALE:用于隔離P0口上輸出的地址與數(shù)據(jù)信號(hào),作為鎖存P0口輸出的低8位地址的控制線。一般情況下,采用ALE信號(hào)的下降沿控制鎖存器來(lái)鎖存地址數(shù)據(jù),因此常選擇下降沿選通的鎖存器作為低8位地址鎖存器。

:為輸出信號(hào),用于讀片外程序存儲(chǔ)器(EPROM)中的數(shù)據(jù)?!白x”取EPROM中數(shù)據(jù)(指令)時(shí),不能用信號(hào),而只能用信號(hào)。第八頁(yè),共255頁(yè)。:為輸出信號(hào),用于選擇片內(nèi)或片外程序存儲(chǔ)器。當(dāng)=0時(shí),只訪問(wèn)外部程序存儲(chǔ)器。當(dāng)=1時(shí),先訪問(wèn)內(nèi)部程序存儲(chǔ)器,內(nèi)部程序存儲(chǔ)器全部訪問(wèn)完之后,再訪問(wèn)外部程序存儲(chǔ)器。

、:為輸出信號(hào),用于片外數(shù)據(jù)存儲(chǔ)器(RAM)的讀、寫(xiě)控制。當(dāng)執(zhí)行片外數(shù)據(jù)存儲(chǔ)器操作指令MOVX時(shí),自動(dòng)生成、控制信號(hào)。

總之,系統(tǒng)擴(kuò)展中外圍芯片一般都通過(guò)三總線結(jié)構(gòu)與單片機(jī)進(jìn)行連接,而總線的驅(qū)動(dòng)能力是有限的,因此系統(tǒng)擴(kuò)展中需要考慮加裝總線驅(qū)動(dòng)器來(lái)提高總線的驅(qū)動(dòng)能力。目前常用的總線驅(qū)動(dòng)器有兩種,即單向驅(qū)動(dòng)器74LS244和雙向驅(qū)動(dòng)器74LS245,在后續(xù)章節(jié)將詳細(xì)介紹。第九頁(yè),共255頁(yè)。5.2.2串行總線擴(kuò)展

串行擴(kuò)展是單片機(jī)系統(tǒng)擴(kuò)展的另外一種方法,它利用三線總線或雙線總線進(jìn)行系統(tǒng)擴(kuò)展,即外圍擴(kuò)展芯片不像并行擴(kuò)展那樣需要數(shù)據(jù)線、地址線和控制線等,而通過(guò)三條或者兩條總線將外圍芯片與單片機(jī)連接,數(shù)據(jù)交換采用時(shí)鐘時(shí)序與數(shù)據(jù)線配合的方式進(jìn)行,對(duì)擴(kuò)展的功能芯片采用地址碼識(shí)別。采用串行總線擴(kuò)展方式能夠縮小單片機(jī)及外圍芯片的體積,降低價(jià)格,簡(jiǎn)化互連線路,是系統(tǒng)擴(kuò)展發(fā)展的新趨勢(shì)。第十頁(yè),共255頁(yè)。近年來(lái),制造商先后推出了專用于串行數(shù)據(jù)傳輸?shù)母黝惼骷徒涌冢渲蠸PI(SerialPeriPheralInterface)總線和I2C(IntelIC)總線等已獲得廣泛應(yīng)用。這兩種串行總線將在本書(shū)第6章進(jìn)行詳細(xì)介紹,此處不再贅述。第十一頁(yè),共255頁(yè)。5.2.3編址技術(shù)

編址問(wèn)題是系統(tǒng)擴(kuò)展的一個(gè)核心問(wèn)題。所謂編址,就是通過(guò)對(duì)地址線進(jìn)行組合給外部設(shè)備I/O口、存儲(chǔ)器單元以及外部擴(kuò)展的其他外圍功能芯片等分配一個(gè)合適地址,每個(gè)地址和設(shè)備、存儲(chǔ)單元都是一一對(duì)應(yīng)的。

編址技術(shù)有兩種方法:一種是尋址到該存儲(chǔ)單元或外部設(shè)備I/O口單元所在的芯片,稱為“片選”法;另一種是通過(guò)芯片本身所具有的地址線進(jìn)行譯碼,確定唯一的存儲(chǔ)單元或I/O口,稱為“字選”法。

“片選”法保證每次讀或?qū)憰r(shí),CPU只選中某一個(gè)存儲(chǔ)器芯片或I/O端口芯片。常用的方法有線選法和譯碼法。第十二頁(yè),共255頁(yè)。

1.線選法

所謂線選法,是指直接以系統(tǒng)的最高幾位空余地址線中的一條作為存儲(chǔ)器芯片或I/O接口芯片的片選控制信號(hào)。采用線選法時(shí),一般用高位地址線作片選信號(hào),用低位地址線作片內(nèi)存儲(chǔ)單元尋址。線選法編址的優(yōu)點(diǎn)是簡(jiǎn)單,不需要另外增加譯碼電路,成本低;其缺點(diǎn)是會(huì)浪費(fèi)大量的存儲(chǔ)空間,因此只適用于存儲(chǔ)容量較小的小規(guī)模單片機(jī)系統(tǒng)。第十三頁(yè),共255頁(yè)。

2.譯碼法

所謂譯碼法,是指使用地址譯碼器對(duì)系統(tǒng)的片外地址進(jìn)行譯碼,以譯碼器輸出作為存儲(chǔ)器芯片的片選信號(hào)。譯碼法是一種最常用的存儲(chǔ)器編址方法,能有效地利用存儲(chǔ)空間,適用于大容量多芯片存儲(chǔ)器的擴(kuò)展。譯碼電路除采用一般的門(mén)電路譯碼器外,更多地則采用譯碼器芯片。常用的譯碼器芯片有:74LS138(3-8譯碼器)和74LS154(4-16譯碼器)等。

近年來(lái),隨著可編程邏輯器件PLD的發(fā)展,有些復(fù)雜的系統(tǒng)也采用PLD器件進(jìn)行譯碼,例如PSD834F2,該芯片不但具有PLD邏輯電路的編碼、譯碼功能,而且內(nèi)部還具有FLASH功能。第十四頁(yè),共255頁(yè)。譯碼法又分為完全譯碼和部分譯碼兩種。

(1)完全譯碼:地址譯碼器使用了全部地址線,地址與存儲(chǔ)單元一一對(duì)應(yīng),即一個(gè)存儲(chǔ)單元只占用一個(gè)唯一的地址。

(2)部分譯碼:地址譯碼器僅使用了部分地址線,地址與存儲(chǔ)單元不是一一對(duì)應(yīng),而是一個(gè)存儲(chǔ)單元占用了幾個(gè)地址。1條地址線不接,一個(gè)單元占用2(21)個(gè)地址;2條地址線不接,一個(gè)單元占用4(22)個(gè)地址;3條地址線不接,則占用8(23)個(gè)地址;以此類推。第十五頁(yè),共255頁(yè)。使用部分譯碼將會(huì)大量浪費(fèi)存儲(chǔ)單元,使存儲(chǔ)器的實(shí)際容量降低。對(duì)于要求存儲(chǔ)器容量較大的單片微機(jī)系統(tǒng)來(lái)說(shuō),建議不采用。但是對(duì)于單片機(jī)系統(tǒng)來(lái)講,由于實(shí)際需要的存儲(chǔ)器容量往往低于所能提供的存儲(chǔ)容量,而部分譯碼可簡(jiǎn)化譯碼電路,因此采用較多。

在設(shè)計(jì)地址譯碼器電路時(shí),采用地址譯碼關(guān)系圖將會(huì)帶來(lái)很大方便。所謂地址譯碼關(guān)系圖,是一種用符號(hào)表示全部地址譯碼關(guān)系的示意圖,如圖5.2所示。第十六頁(yè),共255頁(yè)。圖5.2地址譯碼關(guān)系圖第十七頁(yè),共255頁(yè)。上述標(biāo)“×”的部分為片內(nèi)譯碼,其地址變化范圍為全“0”到全“1”;標(biāo)“·”的位為空閑,不接任何地址線,只要有1個(gè)或1個(gè)以上的“·”,即為部分譯碼,該位為0或1均表示有效地址。顯然,若只有1位不接,那么每個(gè)單元占用21=2個(gè)地址號(hào);若有2位不接,則每個(gè)單元占用22=4個(gè)地址號(hào);以此類推。實(shí)際使用時(shí),為方便使用,往往取數(shù)值最小或最大的一組地址?!?”表示該位為“0”有效,“1”表示該位為“1”有效。第十八頁(yè),共255頁(yè)。從上述的地址譯碼關(guān)系圖上可以獲得如下信息:

(1)本系統(tǒng)所采用的是全譯碼還是部分譯碼;

(2)系統(tǒng)所采用片內(nèi)譯碼線和片外譯碼線各占用的地址線條數(shù);

(3)系統(tǒng)所占用的全部地址范圍。

例如,上述關(guān)系圖中有1個(gè)“·”(A15為空),表示部分譯碼,每個(gè)單元占用2個(gè)地址。片內(nèi)譯碼線有11條(A10~A0),片外譯碼線有4條。其所占用的地址范圍如下:

當(dāng)A15為0時(shí),所占用的地址為00000~11111,即2000H~27FFH。

當(dāng)A15為1時(shí),所占用的地址為10000~11111,即A000H~A7FFH,共占用了兩組地址,這兩組地址在使用中同樣有效。第十九頁(yè),共255頁(yè)。5.3.1存儲(chǔ)器擴(kuò)展概述

MCS-51系列單片機(jī)具有64?KB的程序存儲(chǔ)器空間,其中51型子系列芯片內(nèi)含有4?KB的ROM,52型子系列芯片內(nèi)含有8?KB的ROM,而8031單片機(jī)則無(wú)片內(nèi)ROM。當(dāng)采用上述系列單片機(jī)進(jìn)行系統(tǒng)設(shè)計(jì)時(shí),若片內(nèi)ROM的容量不能滿足要求,則需要進(jìn)行系統(tǒng)程序存儲(chǔ)器的擴(kuò)展。

MCS-51系列單片機(jī)的RAM與ROM的地址空間是互相獨(dú)立的,其片外RAM的空間可達(dá)64KB,而片內(nèi)RAM的空間只有128?B或者256?B。如果設(shè)計(jì)中片內(nèi)的RAM不夠用,則同樣需要進(jìn)行RAM的擴(kuò)展。5.3存儲(chǔ)器的擴(kuò)展第二十頁(yè),共255頁(yè)。5.3.2程序存儲(chǔ)器的擴(kuò)展

隨著半導(dǎo)體技術(shù)的高速發(fā)展,芯片的存儲(chǔ)空間和價(jià)格已經(jīng)發(fā)生了很大變化,大容量芯片的價(jià)格不斷降低,甚至反而比小容量芯片的價(jià)格還低。這就促使應(yīng)用系統(tǒng)設(shè)計(jì)中,盡可能選擇單片大容量存儲(chǔ)器芯片,以避免存儲(chǔ)器的擴(kuò)展,從而減少印制板面積,降低開(kāi)發(fā)成本。

顯然,在系統(tǒng)設(shè)計(jì)中,ROM的擴(kuò)展已經(jīng)是不必要的工作。但是作為系統(tǒng)擴(kuò)展的基礎(chǔ)知識(shí),從培養(yǎng)學(xué)生基本能力的角度來(lái)講,還是有必要作一簡(jiǎn)要介紹的。第二十一頁(yè),共255頁(yè)。

1.程序存儲(chǔ)器擴(kuò)展時(shí)的連接方式

程序存儲(chǔ)器與單片機(jī)的一般連接方式如圖5.3所示,單片機(jī)的P0口與存儲(chǔ)器的數(shù)據(jù)輸出口相連,同時(shí)P0口經(jīng)地址鎖存器連到存儲(chǔ)器的低8位地址線(A7~A0),P2口接存儲(chǔ)器的高8位地址線。這種接法意味著可擴(kuò)展的存儲(chǔ)器容量最大可達(dá)64?KB。當(dāng)存儲(chǔ)器的容量小于64?KB時(shí),只用到部分高位地址線。為片外程序存儲(chǔ)器讀選擇端,此引腳接地時(shí)單片機(jī)的所有片內(nèi)程序存儲(chǔ)器無(wú)效,只能訪問(wèn)片外程序存儲(chǔ)器。

是單片機(jī)外部程序存儲(chǔ)器讀選通信號(hào),將它接到存儲(chǔ)器的端。第二十二頁(yè),共255頁(yè)。圖5.3程序存儲(chǔ)器與單片機(jī)的一般連接方式第二十三頁(yè),共255頁(yè)。

2.?dāng)U展片外程序存儲(chǔ)器的硬件電路

單片機(jī)最小系統(tǒng)常用74LS373作為鎖存器。74LS273、74HC573、Intel8282芯片也可用作地址鎖存器,其中74LS373、74HC573使用最多,且都是DIP20封裝,制作印刷電路板較為方便。74LS373和74HC573用作鎖存器時(shí)的引腳連接電路如圖5.4所示。第二十四頁(yè),共255頁(yè)。圖5.474LS373與74HC573鎖存器的引腳結(jié)構(gòu)圖第二十五頁(yè),共255頁(yè)。在系統(tǒng)程序存儲(chǔ)器的擴(kuò)展中,用EPROM作為單片機(jī)片外ROM是目前最常用的ROM擴(kuò)展方法。常用的EPROM擴(kuò)展芯片有:2716(2?KB×8)、2732(4?KB×8)、2764(8?KB×8)、

27128(16?KB×8)、27256(32?KB×8)、27512(64KB×8)等。通常僅需擴(kuò)展一片或兩片EPROM芯片就可以滿足系統(tǒng)要求。下面圖5.5為幾種典型常見(jiàn)EPROM芯片的封裝圖和引腳圖。第二十六頁(yè),共255頁(yè)。圖5.5典型常用EPROM芯片的引腳圖第二十七頁(yè),共255頁(yè)。圖5.5中,引腳符號(hào)表示意義如下:

(1)?A15~A0:地址線。

(2)?Q7~Q0:雙向三態(tài)數(shù)據(jù)線。

(3)??:片選信號(hào)輸入線,低電平有效。

(4)??:選通信號(hào)輸入線,低電平有效,與讀出控制信號(hào)相連。

(5)?NC:空端未用。

(6)?VPP:編程電壓端。

(7)?VCC:+5V電源。

(8)?GND:接地端。

(9)?:編程脈沖端。第二十八頁(yè),共255頁(yè)。

【例5.1】

給8051單片機(jī)的外圍擴(kuò)展一片16?K×8位片外程序存儲(chǔ)器,畫(huà)出與單片機(jī)相連的地址線、數(shù)據(jù)線和控制線,并注明信號(hào)名稱。

解:如圖5.6所示,選擇一片27C128的EPROM作為擴(kuò)展存儲(chǔ)器即可達(dá)到16K×8位的要求。在電路中接低電平,表示當(dāng)前單片機(jī)訪問(wèn)的是片外程序存儲(chǔ)器。27C128是16?KB容量的EPROM,即214個(gè)存儲(chǔ)單元,占用14根地址線A0~A13;硬件電路采用了典型常見(jiàn)的74LS373作為地址鎖存器。由于系統(tǒng)中只擴(kuò)展了一片程序存儲(chǔ)器,所以27C128的片選端始終接地,一直有效。第二十九頁(yè),共255頁(yè)。圖5.6EPROM的擴(kuò)展電路圖第三十頁(yè),共255頁(yè)。對(duì)于上述要求,也可采用兩片8?K×8位的EPROM進(jìn)行擴(kuò)展。兩片EPROM的地址線、數(shù)據(jù)線和上述連接方法一致,區(qū)別在于EPROM的選通信號(hào)(低有效)需要調(diào)整,即可利用單片機(jī)的高位空余地址線和程序存儲(chǔ)選擇信號(hào)線來(lái)共同控制和區(qū)分EPROM1、EPROM2。第三十一頁(yè),共255頁(yè)。5.3.3數(shù)據(jù)存儲(chǔ)器的擴(kuò)展

1.?dāng)?shù)據(jù)存儲(chǔ)器概述

數(shù)據(jù)存儲(chǔ)器即隨機(jī)存取存儲(chǔ)器,主要用來(lái)存放可隨時(shí)修改的數(shù)據(jù)信息。它與ROM的最大不同在于:ROM只能讀不能寫(xiě),而RAM既可進(jìn)行讀操作也可進(jìn)行寫(xiě)操作。RAM為易失性存儲(chǔ)器,斷電后所存信息立即消失。按半導(dǎo)體工藝的不同,RAM分為MOS型和雙極型兩種。MOS型集成度高,功耗低,價(jià)格便宜,但速度較慢;雙極型的特點(diǎn)恰好相反。在單片機(jī)系統(tǒng)中多數(shù)采用MOS型數(shù)據(jù)存儲(chǔ)器,使得輸入/輸出信號(hào)能與TTL相兼容,擴(kuò)展后的信號(hào)連接也很方便。第三十二頁(yè),共255頁(yè)。RAM按其工作方式可分為靜態(tài)(SRAM)和動(dòng)態(tài)(DRAM)兩種。靜態(tài)RAM只要電源加上,所存信息就能可靠保存;動(dòng)態(tài)RAM使用的是動(dòng)態(tài)存儲(chǔ)單元,需要不斷進(jìn)行刷新以便周期性地再生,才能保存信息。動(dòng)態(tài)RAM的集成密度大,所占芯片面積只是靜態(tài)RAM的1/4。另外,動(dòng)態(tài)RAM的功耗低,價(jià)格便宜。由于動(dòng)態(tài)存儲(chǔ)器要增加刷新電路,因此只適用于較大的系統(tǒng),而在單片機(jī)系統(tǒng)中則很少使用。第三十三頁(yè),共255頁(yè)。

2.靜態(tài)RAM

6264是一款典型的靜態(tài)數(shù)據(jù)存儲(chǔ)器芯片,其容量為8K×8位。采用CMOS工藝制造,為28引腳雙列直插式封裝,其引腳圖如圖5.7所示。

系統(tǒng)擴(kuò)展時(shí),地址線、數(shù)據(jù)線分別與單片機(jī)的地址線和數(shù)據(jù)線連接;寫(xiě)允許信號(hào)線與單片機(jī)的信號(hào)相接;讀允許信號(hào)線與單片機(jī)的信號(hào)相接。

值得一提的是,6264有兩個(gè)片選信號(hào)和CE2,只有當(dāng)=0,CE2=1時(shí),芯片才被選中。在實(shí)際應(yīng)用中,一般僅用其中一個(gè),而將另一個(gè)接成常有效模式,也可以將系統(tǒng)的片選信號(hào)以及取反后的信號(hào)分別接至和CE2端。第三十四頁(yè),共255頁(yè)。圖5.7RAM6264的引腳圖第三十五頁(yè),共255頁(yè)。

3.?dāng)?shù)據(jù)存儲(chǔ)器擴(kuò)展

數(shù)據(jù)存儲(chǔ)器的擴(kuò)展與程序存儲(chǔ)器的擴(kuò)展類似,不同之處主要在于控制信號(hào)的接法不同,不用信號(hào),而用和信號(hào),且直接與數(shù)據(jù)存儲(chǔ)器的端和端相連。

圖5.8為單片機(jī)系統(tǒng)擴(kuò)展一片6264的連接圖。圖中采用線選法將片選信號(hào)與P2.7相連,片選信號(hào)CE2與P2.6相連。其所占用的地址如下:

第1組:4000H~5FFFH(A13=0,A14=0,A15=0);

第2組:6000H~7FFFH(A13=1,A14=1,A15=0)。第三十六頁(yè),共255頁(yè)。圖5.8采用地址譯碼器擴(kuò)展程序存儲(chǔ)器的連接圖第三十七頁(yè),共255頁(yè)。5.3.4全地址范圍的存儲(chǔ)器最大擴(kuò)展系統(tǒng)

下面以8031為例說(shuō)明全地址范圍的存儲(chǔ)器最大擴(kuò)展系統(tǒng)的構(gòu)成方法。如圖5.9所示,系統(tǒng)的片外ROM和RAM的地址空間各為64KB。?若采用EPROM2764和RAM6264芯片,則各需8片才能構(gòu)成全部地址空間。芯片的選通采用3-8譯碼器74LS138進(jìn)行譯碼選擇,片外地址線只有3根(A15、A14、A13),分別接至74LS138的C、B、A端,其8路譯碼輸出分別接至8個(gè)2764和8個(gè)6264的片選。第三十八頁(yè),共255頁(yè)。圖5.9單片機(jī)外存儲(chǔ)器最大擴(kuò)展電路圖第三十九頁(yè),共255頁(yè)。8片2764的全部接至8031的,8片6264的端(即端)與端則分別接至8031的端和端。

地址的低8位由鎖存器74LS373提供,高5位由P2口的P2.4~P2.0提供,地址的高3位P2.7~P2.5接至地址譯碼器74LS138的C、B、A端。2764與6264的數(shù)據(jù)D7~D0則直接與P0口相連。由于采用的是8031,所以其端必須接地。

雖然使用時(shí)2764與6264的地址單元會(huì)被同時(shí)選中,但由于程序存儲(chǔ)器讀選通信號(hào)與片外數(shù)據(jù)存儲(chǔ)器的、信號(hào)不會(huì)同時(shí)產(chǎn)生,因此兩者不會(huì)發(fā)生沖突。實(shí)際使用中,為提高總線的驅(qū)動(dòng)能力,在P0口與其他芯片連接處接一雙向總線驅(qū)動(dòng)器74LS245,在P2口接一單向總線驅(qū)動(dòng)器74LS244。第四十頁(yè),共255頁(yè)。計(jì)算機(jī)擴(kuò)展系統(tǒng)中有兩種數(shù)據(jù)傳送操作:一種是CPU和擴(kuò)展存儲(chǔ)器之間的數(shù)據(jù)讀/寫(xiě)操作;另一種則是CPU和擴(kuò)展外部設(shè)備之間的數(shù)據(jù)傳輸。

擴(kuò)展存儲(chǔ)器與CPU之間連接簡(jiǎn)單,僅需將地址線、數(shù)據(jù)線和控制讀或?qū)懙倪x通信號(hào)線與系統(tǒng)連接,實(shí)現(xiàn)起來(lái)較為方便。CPU和擴(kuò)展外部設(shè)備之間的數(shù)據(jù)傳送就比較復(fù)雜,因?yàn)榇嬖诟咚貱PU與低速外設(shè)的連接,以及CPU與外設(shè)數(shù)據(jù)傳送距離等因素,因此在設(shè)計(jì)應(yīng)用系統(tǒng)時(shí),要考慮在CPU和外設(shè)之間提供接口電路,通過(guò)接口電路對(duì)CPU與外設(shè)之間的數(shù)據(jù)傳送進(jìn)行協(xié)調(diào)。5.4I/O的擴(kuò)展與應(yīng)用第四十一頁(yè),共255頁(yè)?;贛CS-51系列單片機(jī)設(shè)計(jì)應(yīng)用系統(tǒng)時(shí),若I/O接口不夠使用,則也需進(jìn)行擴(kuò)展。擴(kuò)展I/O接口芯片同樣需要進(jìn)行編址,編址方式與存儲(chǔ)單元編址類同,I/O接口的編址和存儲(chǔ)器等外設(shè)的編址是統(tǒng)一處理的。下面將詳細(xì)介紹I/O接口的擴(kuò)展技術(shù)。第四十二頁(yè),共255頁(yè)。5.4.1用TTL芯片擴(kuò)展I/O口

簡(jiǎn)單的I/O口擴(kuò)展可以采用TTL或CMOS電路鎖存器,將三態(tài)門(mén)等作為擴(kuò)展芯片,通過(guò)單片機(jī)本身的I/O接口來(lái)實(shí)現(xiàn)擴(kuò)展。TTL或CMOS電路鎖存器等具有數(shù)據(jù)緩沖或鎖存功能,該類芯片具有數(shù)據(jù)輸入/輸出和時(shí)鐘端,但是無(wú)地址線和讀/寫(xiě)控制線,因此其選通端或時(shí)鐘端應(yīng)與由地址線和控制線共同構(gòu)成的邏輯組合選通控制線連接。它具有電路簡(jiǎn)單、成本低以及配置靈活等特點(diǎn)。典型芯片有74LS373、74LS377、74LS244、74LS245等,下面分別以最常用的74LS373、74LS244為例來(lái)介紹I/O口的擴(kuò)展。第四十三頁(yè),共255頁(yè)。1.用74LS373擴(kuò)展8位并行輸入口

系統(tǒng)設(shè)計(jì)中,對(duì)外部被控設(shè)備的某些信號(hào)進(jìn)行采集時(shí),若輸入數(shù)據(jù)信號(hào)為暫態(tài),則要求CPU讀入接口芯片具有鎖存功能,可以選擇具有選通鎖存功能的芯片74LS373作接口。關(guān)于74LS373芯片在系統(tǒng)總線擴(kuò)展部分已作詳細(xì)介紹,此處不再贅述。圖5.10為利用74LS373與80C51接口構(gòu)成一個(gè)8位并行輸入接口的電路圖。

該電路使用線選法實(shí)現(xiàn)片選信號(hào)選擇。當(dāng)P2.4=0和為低電平時(shí),在選通脈沖的有效電平期間,鎖存器將數(shù)據(jù)送上數(shù)據(jù)線并傳給單片機(jī)的P0口。第四十四頁(yè),共255頁(yè)。圖5.10用74LS373擴(kuò)展8位并行輸入口的電路圖第四十五頁(yè),共255頁(yè)。

2.用74LS244擴(kuò)展8位并行輸入口

系統(tǒng)設(shè)計(jì)中,對(duì)于外部被控設(shè)備的某些信號(hào)進(jìn)行采集時(shí),若輸入數(shù)據(jù)信號(hào)為常態(tài),則要求接口芯片具有三態(tài)緩沖功能,可以選擇具有三態(tài)緩沖功能的芯片74LS244作接口。圖5.11為利用74LS244與80C51構(gòu)成兩個(gè)8位并行輸入接口的電路圖(74LS244芯片資料參見(jiàn)其他教材)。第四十六頁(yè),共255頁(yè)。圖5.11用74LS244擴(kuò)展8位并行輸入接口的電路圖第四十七頁(yè),共255頁(yè)。

3.用74LS377擴(kuò)展8位并行輸出口

系統(tǒng)設(shè)計(jì)中,當(dāng)外部被控設(shè)備所需要的輸出信號(hào)較多,而系統(tǒng)本身的I/O接口有限時(shí),就必須進(jìn)行I/O口的擴(kuò)展,同時(shí)輸出信號(hào)作為控制信號(hào)需要保持一定的時(shí)間,因此還必須考慮輸出信號(hào)的鎖存,所以可以采用帶有輸入允許端的8D觸發(fā)器,且將具有鎖存功能的芯片74LS377作為輸出口。圖5.12為采用74LS377與80C51接口構(gòu)成兩個(gè)8位并行輸出口的電路圖。第四十八頁(yè),共255頁(yè)。由圖5.12可知,電路采用線選法,利用P2.7來(lái)選擇2個(gè)74LS377芯片,P0口把要輸出的數(shù)據(jù)都送到兩個(gè)鎖存器上,但哪個(gè)鎖存器輸出則由P2.7的狀態(tài)決定,若P2.7=1則為0#鎖存器輸出,若P2.7=0則為1#鎖存器輸出。第四十九頁(yè),共255頁(yè)。圖5.12用74LS377擴(kuò)展8位并行輸出口的電路圖第五十頁(yè),共255頁(yè)。

4.?I/O口的擴(kuò)展實(shí)例

【例5.2】試以87C51芯片為例設(shè)計(jì)一應(yīng)用系統(tǒng),P1、P3口已作它用,要求能將8個(gè)開(kāi)關(guān)量都讀入,并能將不同的開(kāi)關(guān)動(dòng)作信號(hào)用發(fā)光二極管指示出來(lái)。

解:因P1、P3口已作它用,故單片機(jī)僅余P0口可用,P0口系統(tǒng)擴(kuò)展時(shí)既作為數(shù)據(jù)線又作為地址線使用。因?yàn)樵撛O(shè)計(jì)采用87C51芯片,其中片中含256?BRAM、4?KBROM,可以滿足需要,不需進(jìn)行存儲(chǔ)器擴(kuò)展,所以P0口可以作為I/O口使用。由于開(kāi)關(guān)信號(hào)是輸入信號(hào),發(fā)光二極管控制為輸出信號(hào),系統(tǒng)需要8個(gè)輸出口和8個(gè)輸入口,因此如圖5.13所示,選用74LS244作為擴(kuò)展輸入、74LS273作為擴(kuò)展輸出構(gòu)成簡(jiǎn)單的I/O口擴(kuò)展電路。第五十一頁(yè),共255頁(yè)。圖5.13簡(jiǎn)單I/O口的擴(kuò)展電路圖第五十二頁(yè),共255頁(yè)。(1)芯片與CPU的連接。在圖5.13所示的電路中,P0口作為雙向8位數(shù)據(jù)線,既能夠從74LS244輸入數(shù)據(jù),又能夠向74LS273輸出數(shù)據(jù)。

74LS244的輸入控制信號(hào)、由P2.0和相“或”后得到。當(dāng)P2.0和都為0時(shí),、有效,選通74LS244,外部的信息輸入到P0數(shù)據(jù)總線上。若與74LS244相連的按鍵都沒(méi)有被按下,則輸入端引腳Di(i?=?0~7)的值為1;若按下某鍵,則其值為0。

74LS273的輸出控制信號(hào)由P2.0和相“或”后得到。當(dāng)二者均為0時(shí),選通74LS273,P0上的數(shù)據(jù)傳遞到74LS273的輸出端并鎖存;當(dāng)某條數(shù)據(jù)線輸出為0時(shí),相應(yīng)的LED發(fā)光。第五十三頁(yè),共255頁(yè)。(2)?I/O口的地址。因74LS244和74LS273都是在P2.0為0時(shí)被選通的,故二者的口地址都為FEFFH(該地址必須保證P2.0?=?0,其他地址位若選擇為“1”,則十六進(jìn)制為FEFFH;也可以其他位發(fā)生變化,如選擇都是“0”,但是P2.0=0不變,則地址變成0000H)。

雖然使用同一個(gè)地址,但由于分別由和控制,而兩個(gè)信號(hào)不可能同時(shí)為0(當(dāng)執(zhí)行輸入指令,如“MOVXA,@DPTR”或“MOVXA,@Ri”時(shí),有效;當(dāng)執(zhí)行輸出指令,如“MOVX@DPTR,A”或“MOVX@Ri,A”時(shí),有效),所以邏輯上二者不會(huì)同時(shí)被單片機(jī)執(zhí)行,不會(huì)發(fā)生沖突。第五十四頁(yè),共255頁(yè)。(3)編程。下述程序?qū)崿F(xiàn)的功能是按下任意鍵,對(duì)應(yīng)的LED發(fā)光。

第五十五頁(yè),共255頁(yè)。5.4.2用可編程芯片擴(kuò)展I/O口

1.可編程的接口芯片

可編程的接口芯片是指其功能可由微處理機(jī)的命令來(lái)控制的接口芯片,根據(jù)編程的不同控制字,可使接口芯片完成不同的接口功能??膳cMCS-51系列單片機(jī)進(jìn)行接口相連的功能芯片很多,常用外圍芯片如表5.1所示。第五十六頁(yè),共255頁(yè)。表5.1常用的可編程芯片第五十七頁(yè),共255頁(yè)。

2.可編程芯片8155

8155是一種通用的多功能可編程RAM/IO擴(kuò)展集成電路??删幊淌侵钙涔δ芸捎捎?jì)算機(jī)的指令來(lái)加以改變。8155片內(nèi)有3個(gè)可編程并行I/O接口(A口、B口為8位,C口為6位),還有256?B靜態(tài)RAM和一個(gè)14位定時(shí)/計(jì)數(shù)器,常用作單片機(jī)的外部擴(kuò)展接口,與鍵盤(pán)、顯示器等外圍設(shè)備連接。

1)?8155的結(jié)構(gòu)及引腳

8155的內(nèi)部結(jié)構(gòu)和引腳示意圖如圖5.14所示。第五十八頁(yè),共255頁(yè)。圖5.148155的內(nèi)部結(jié)構(gòu)框圖第五十九頁(yè),共255頁(yè)。從8155的內(nèi)部結(jié)構(gòu)圖可知,其內(nèi)部功能模塊如下:

(1)??256?BSRAM,存取時(shí)間≤400ns。

(2)有3個(gè)可編程的通用I/O口,分別是A口、B口和C口。其中,A口和B口是8位口,C口是6位口,可用作控制和狀態(tài)口,可選擇4種不同的工作方式。

(3)內(nèi)含一個(gè)14位的可編程定時(shí)/計(jì)數(shù)器。

(4)內(nèi)含一個(gè)地址公用、物理空間獨(dú)立的命令/狀態(tài)寄存器。

(5)內(nèi)部有地址鎖存器、地址/數(shù)據(jù)多路轉(zhuǎn)換開(kāi)關(guān),采用+5?V電源,雙列直插封裝40條引腳。第六十頁(yè),共255頁(yè)。8155各引腳的功能如下:

(1)?AD0~AD7:三態(tài)地址/數(shù)據(jù)線,8位,是低8位地址與數(shù)據(jù)復(fù)用線引腳。地址可以是8155片內(nèi)RAM單元地址或是I/O端口地址。AD0~AD7上的地址由ALE的下降沿鎖存到8155片內(nèi)地址鎖存器,也就是由ALE信號(hào)來(lái)區(qū)別AD0~AD7上出現(xiàn)的是地址信息還是數(shù)據(jù)信息。

(2)?ALE:地址鎖存允許信號(hào)。在ALE信號(hào)的下降沿將AD0~AD7上的8位地址信息、片選信號(hào)及IO/(IO接口/RAM選擇)信號(hào)都鎖存到8155內(nèi)部鎖存器中。

(3)?IO/:I/O端口和RAM選擇信號(hào)。當(dāng)IO/=1時(shí),AD0~AD7的地址為8155的I/O端口的地址,選擇I/O端口;當(dāng)IO/=0時(shí),AD0~AD7的地址為8155片內(nèi)RAM單元地址,選擇RAM存儲(chǔ)單元。第六十一頁(yè),共255頁(yè)。(4):片選信號(hào)線,低電平有效。由ALE信號(hào)的下降沿鎖存到8155內(nèi)部鎖存器。

(5)?:讀選通信號(hào),低電平有效。當(dāng)=?0,且

=?0時(shí),開(kāi)啟AD0~AD7的緩沖器,被選中的片內(nèi)RAM單元(IO/=0)或IO口(IO/=?1)的內(nèi)容送到AD0~AD7上。

(6)?:寫(xiě)選通信號(hào),低電平有效。當(dāng)、都有效時(shí),CPU把輸出到AD0~AD7上的信息寫(xiě)到8155片內(nèi)RAM單元或I/O端口。第六十二頁(yè),共255頁(yè)。(7)?PA0~PA7:A口的I/O線(8位)。

(8)?PB0~PB7:B口的I/O線(8位)。

(9)?PC0~PC5:C口的I/O線(6位)。

(10)?TIN:定時(shí)器輸入。定時(shí)器工作所需的時(shí)鐘信號(hào)由此端輸入。

(11)?:定時(shí)器輸出。根據(jù)定時(shí)器工作方式,TOUT端可輸出方波或脈沖。

(12)?VCC:+5V電源。

(13)?GND:接地。第六十三頁(yè),共255頁(yè)。2)命令/狀態(tài)寄存器

在8155的控制邏輯電路中設(shè)置有一個(gè)命令寄存器和一個(gè)狀態(tài)寄存器,其工作方式由寫(xiě)入到命令寄存器中的控制字來(lái)決定。

(1)命令寄存器。8155片內(nèi)的8位命令寄存器只能寫(xiě)入,不能讀出。8155I/O接口的工作方式是由CPU寫(xiě)入到命令寄存器中的命令控制字來(lái)決定的。

命令寄存器的低4位定義A口、B口和C口的工作方式,D4和D5兩位確定A口和B口以選通I/O方式工作時(shí)是否允許申請(qǐng)中斷,D6和D7兩位定義定時(shí)器的操作命令。8155命令寄存器的具體格式如圖5.15所示。第六十四頁(yè),共255頁(yè)。圖5.158155命令寄存器的格式第六十五頁(yè),共255頁(yè)。8155的A口和B口都可以工作在輸入或輸出方式。但A口和B口是工作在基本I/O方式(無(wú)條件傳送)還是工作在選通方式(如中斷傳送)不是由A口和B口的方式?jīng)Q定的,而是由C口的方式?jīng)Q定的。

C口有四種工作方式,分別稱為ALT1、ALT2、ALT3和ALT4。其中,ALT1為輸入方式;ALT2為輸出方式;ALT3方式中,PC0~PC2作為A口的聯(lián)絡(luò)線,PC3~PC5為輸出;ALT4方式中,PC0~PC2作為A口的聯(lián)絡(luò)線,PC3~PC5為B口聯(lián)絡(luò)線。表5.2給出了8155四種ALT方式下各I/O端口的功能。第六十六頁(yè),共255頁(yè)。表5.28155各種ALT方式下A、B、C口的工作方式第六十七頁(yè),共255頁(yè)。由表5.2可知,8155在ALT1或ALT2方式下,A口、B口和C口均可工作于基本I/O方式;在ATL3方式下,A口定義為選通I/O方式,C口低3位作為A口聯(lián)絡(luò)線,C口其余位作輸出線;在ALT4方式下,A口、B口都為選通I/O方式,C口為之提供對(duì)外的聯(lián)絡(luò)線。這三種聯(lián)絡(luò)線的具體定義如下:

INTR:中斷請(qǐng)求輸出信號(hào),高電平有效,作為CPU的中斷源。當(dāng)8155的A口或B口緩沖器接收到外設(shè)送來(lái)的數(shù)據(jù)或外設(shè)從緩沖器中取走數(shù)據(jù)時(shí),中斷請(qǐng)求INTR變?yōu)楦唠娖?僅當(dāng)命令寄存器相應(yīng)中斷允許位為“1”時(shí)),向CPU申請(qǐng)中斷。CPU響應(yīng)此中斷,對(duì)8155的相應(yīng)I/O端口進(jìn)行一次讀/寫(xiě)操作,然后使INTR信號(hào)恢復(fù)為低電平。第六十八頁(yè),共255頁(yè)。BF:I/O端口緩沖器標(biāo)志輸出信號(hào),高電平有效。緩沖器有數(shù)據(jù)時(shí),BF為高電平,否則為低電平。

:由外設(shè)提供的選通信號(hào),輸入低電平有效。

(2)選通輸入/輸出方式的操作過(guò)程。輸入時(shí),是外設(shè)送來(lái)的選通信號(hào)。在有效后,把輸入數(shù)據(jù)裝入8155,然后BF變高,表明緩沖器已裝滿。當(dāng)STB恢復(fù)高電平時(shí),INTR變高,向CPU申請(qǐng)中斷。當(dāng)CPU開(kāi)始讀取輸入數(shù)據(jù)時(shí)(信號(hào)下降沿),INTR恢復(fù)低電平。讀取數(shù)據(jù)完畢時(shí)(信號(hào)上升沿),BF恢復(fù)低電平,一次數(shù)據(jù)輸入結(jié)束。

輸出時(shí),當(dāng)外設(shè)取走并處理完數(shù)據(jù)后,向8155發(fā)出負(fù)脈沖,在STB變高后使INTR有效,開(kāi)始申請(qǐng)中斷,即要求CPU發(fā)出下一個(gè)數(shù)據(jù)。當(dāng)CPU把數(shù)據(jù)寫(xiě)到8155后,使BF變高,以通知外設(shè)可以再來(lái)取下一個(gè)數(shù)據(jù)。第六十九頁(yè),共255頁(yè)。(3)狀態(tài)寄存器。8155狀態(tài)寄存器的口地址和命令寄存器的口地址相同,狀態(tài)寄存器只能讀,不能寫(xiě)。CPU可通過(guò)讀狀態(tài)寄存器來(lái)查詢I/O口和定時(shí)器的狀態(tài)。狀態(tài)寄存器的格式如圖5.16所示。第七十頁(yè),共255頁(yè)。圖5.16狀態(tài)寄存器的格式第七十一頁(yè),共255頁(yè)。3)?8155的RAM單元和I/O端口尋址

IO/是8155的內(nèi)部RAM和I/O端口選擇信號(hào)。當(dāng)IO/=0時(shí),選中8155片內(nèi)RAM,這時(shí)AD0~AD7是RAM地址,對(duì)256?BRAM尋址,其地址范圍為00H~FFH。

當(dāng)IO/=1時(shí),對(duì)8155I/O端口尋址,共有A口、B口、C口、命令/狀態(tài)寄存器、定時(shí)器低8位和定時(shí)器高8位6個(gè)端口,因此要用3位地址(A0、A1和A2)來(lái)編址,其地址如表5.3所示。第七十二頁(yè),共255頁(yè)。表5.38155端口尋址表第七十三頁(yè),共255頁(yè)。4)定時(shí)/計(jì)數(shù)器

8155內(nèi)部提供了一個(gè)定時(shí)器,實(shí)際上它是一個(gè)14位的減法計(jì)數(shù)器,其主要用于定時(shí)或計(jì)數(shù)。在TIN(第3引腳)端輸入計(jì)數(shù)脈沖,每輸入一個(gè)脈沖,計(jì)數(shù)器減1,當(dāng)計(jì)數(shù)器減到“0”時(shí),向TOUT(第6引腳)端輸出一個(gè)脈沖或方波信號(hào)。

對(duì)定時(shí)器的使用分兩步管理:①由寫(xiě)入命令寄存器的控制字(D7、D6位)確定定時(shí)器的啟動(dòng)、停止或裝入常數(shù);②由寫(xiě)入到定時(shí)器的兩個(gè)寄存器的內(nèi)容確定計(jì)數(shù)長(zhǎng)度和輸出

方式。

命令寄存器的控制字D7和D6位決定定時(shí)器的操作方式,可分為以下4種操作方式。第七十四頁(yè),共255頁(yè)。00:無(wú)操作,不影響定時(shí)/計(jì)數(shù)器操作;

01:停止定時(shí)器操作;

10:定時(shí)時(shí)間到(計(jì)數(shù)長(zhǎng)度減為0),則停止計(jì)數(shù);

11:裝入工作方式和計(jì)數(shù)長(zhǎng)度后立即啟動(dòng)。裝入時(shí),若已運(yùn)行,則當(dāng)前計(jì)數(shù)到后立即按新的方式和長(zhǎng)度啟動(dòng)定時(shí)器。

在對(duì)命令寄存器寫(xiě)入控制字后,再通過(guò)對(duì)定時(shí)器的兩個(gè)寄存器寫(xiě)入初值確定定時(shí)長(zhǎng)度和輸出方式。定時(shí)器本身占用兩個(gè)端口地址。A2A1A0=100時(shí)為定時(shí)器低8位TL;A2A1A0=101時(shí),為定時(shí)器高8位,如表5.4所示。第七十五頁(yè),共255頁(yè)。表5.4定時(shí)器端口地址第七十六頁(yè),共255頁(yè)。TL低8位(T0~T7)和TH高6位(T8~T13)組成14減1計(jì)數(shù)器,計(jì)數(shù)長(zhǎng)度為0002H~3FFFH。TH高2位(M1、M2)用于選擇定時(shí)器的4種不同輸出方式,如表5.5所示。第七十七頁(yè),共255頁(yè)。表5.5定時(shí)器的輸出方式第七十八頁(yè),共255頁(yè)。在計(jì)數(shù)長(zhǎng)度為偶數(shù)時(shí),方波的輸出是對(duì)稱的;當(dāng)計(jì)數(shù)長(zhǎng)度為奇數(shù)時(shí),方波的輸出是不對(duì)稱的,高電平的半個(gè)周期比低電平的半個(gè)周期多計(jì)一個(gè)數(shù)。

8155復(fù)位后,定時(shí)器停止工作。因此必須注意重新發(fā)出啟動(dòng)命令。第七十九頁(yè),共255頁(yè)。

3.8155與單片機(jī)的連接方法

8155與單片機(jī)的連接比較簡(jiǎn)單。由于8155有內(nèi)部鎖存器,并且有ALE控制信號(hào),因此8155的AD0~AD7可以直接和單片機(jī)的P0.0~P0.7連接,其余的各輸出控制端(ALE、、

和RESET)可直接和單片機(jī)的各同名端相連。8155與單片機(jī)的連接關(guān)鍵在于考慮IO/控制信號(hào)和片選信號(hào)。產(chǎn)生IO/和信號(hào)的方法很多,應(yīng)根據(jù)實(shí)際情況進(jìn)行決定。同時(shí)應(yīng)注意擴(kuò)展I/O口和擴(kuò)展RAM的地址分配問(wèn)題。

圖5.17給出了8155和80C51連接的一種方案。圖中,80C51的P2.7和8155的連接,P2.6和IO/連接,P0.0~P0.7與AD0~AD7直接相連。第八十頁(yè),共255頁(yè)。圖5.178155與80C51的連接圖第八十一頁(yè),共255頁(yè)。根據(jù)接口地址分配原則,該8155的256?BRAM和各接口的地址分配如表5.6所示。第八十二頁(yè),共255頁(yè)。表5.68155的256?BRAM和各接口的地址分配表第八十三頁(yè),共255頁(yè)。對(duì)8155的操作如同訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器一樣,可以用“MOVX@Ri”或“MOVX@DPTR”指令訪問(wèn)8155。下面通過(guò)具體例子說(shuō)明8155的操作過(guò)程。

【例5.3】

結(jié)合圖5.17,將8155片內(nèi)RAM中0050H單元的數(shù)據(jù)送至8155的A口輸出。第八十四頁(yè),共255頁(yè)。解:若使用8位地址的傳送指令,則程序段如下:

第八十五頁(yè),共255頁(yè)。第八十六頁(yè),共255頁(yè)。顯示單元是智能終端裝置和計(jì)算機(jī)控制系統(tǒng)的重要組成部分,用來(lái)顯示中間和最終的計(jì)算結(jié)果。一般常用的顯示器件有LED顯示器和LCD(液晶)顯示器。LED顯示器簡(jiǎn)單易用,其內(nèi)部為一發(fā)光二極管,在發(fā)光二極管正極加上正向電壓,負(fù)極通過(guò)限流電阻接地,則發(fā)光二極管發(fā)光。LED顯示器常見(jiàn)的有發(fā)光二極管、點(diǎn)陣LED管、7段LED管和米字形LED管,后三者是發(fā)光二極管的不同組合結(jié)構(gòu)。下面將簡(jiǎn)要介紹LED顯示器的工作原理和過(guò)程。5.5LED數(shù)碼顯示器第八十七頁(yè),共255頁(yè)。5.5.1LED的結(jié)構(gòu)與顯示編碼方式

1.LED數(shù)碼顯示器的結(jié)構(gòu)

LED數(shù)碼顯示器是一種由LED發(fā)光二極管組合顯示字符的顯示器件。它由8個(gè)LED發(fā)光二極管組成“日”字型結(jié)構(gòu),其中7個(gè)用于顯示筆畫(huà)字符,1個(gè)用于顯示小數(shù)點(diǎn),故通常稱之為7段(也有稱做8段)發(fā)光二極管數(shù)碼顯示器,其內(nèi)部結(jié)構(gòu)如圖5.18所示。第八十八頁(yè),共255頁(yè)。圖5.187段LED數(shù)碼顯示器第八十九頁(yè),共255頁(yè)。LED數(shù)碼顯示器有如下兩種連接方法:

(1)共陽(yáng)極法:把發(fā)光二極管的陽(yáng)極連在一起構(gòu)成公共陽(yáng)極,使用時(shí)公共陽(yáng)極接+5V,每個(gè)發(fā)光二極管的陰極通過(guò)限流電阻與輸入端相連。當(dāng)陰極端加載低電平時(shí),對(duì)應(yīng)段的發(fā)光二極管就導(dǎo)通點(diǎn)亮,而加載高電平時(shí)則不導(dǎo)通點(diǎn)亮。第九十頁(yè),共255頁(yè)。(2)共陰極法:把發(fā)光二極管的陰極連在一起構(gòu)成公共陰極,使用時(shí)公共陰極接地,每個(gè)發(fā)光二極管的陽(yáng)極通過(guò)限流電阻與輸入端相連。當(dāng)陽(yáng)極端加載高電平時(shí),對(duì)應(yīng)段的發(fā)光二極管就導(dǎo)通點(diǎn)亮,而加載低電平時(shí)則不導(dǎo)通點(diǎn)亮。

使用LED數(shù)碼顯示器時(shí)要注意區(qū)分這兩種不同的接法,在器件出廠時(shí)其內(nèi)部的公共端已連接好,用戶可根據(jù)自己的需要正確選用共陽(yáng)極接法或共陰極接法。第九十一頁(yè),共255頁(yè)。

2.?LED顯示字形的編碼方式

采用7段LED顯示器可以顯示數(shù)字0~9和字母A~F,其顯示字型與對(duì)應(yīng)段的點(diǎn)亮是有規(guī)律的。7段LED顯示器包含7段發(fā)光二極管和小數(shù)位發(fā)光二極管,共8位,正好用一個(gè)字節(jié)來(lái)表示,通常將控制二極管點(diǎn)亮的8位二進(jìn)制數(shù)稱為段選碼。共陽(yáng)極與共陰極的段選碼互為反碼。下面介紹一共陰型7段LED顯示器作數(shù)字顯示時(shí)字型碼的編碼方式。7段LED數(shù)碼管字型顯示代碼表如表5.7所示。第九十二頁(yè),共255頁(yè)。表5.77段LED數(shù)碼管字型顯示代碼表第九十三頁(yè),共255頁(yè)。在單片機(jī)系統(tǒng)中采用數(shù)碼管顯示數(shù)字時(shí),其顯示字型的編碼方式有如下兩種。

(1)采用外接集成電路。單片機(jī)I/O口直接接7段譯碼器,單片機(jī)將要顯示內(nèi)容的BCD碼送至譯碼器,由譯碼器完成BCD7段顯示碼的轉(zhuǎn)換。

(2)通過(guò)軟件實(shí)現(xiàn)譯碼過(guò)程。設(shè)計(jì)中由系統(tǒng)程序完成BCD7段顯示碼的轉(zhuǎn)換,直接送出即為顯示碼,不需要外接7段譯碼器。以下是軟件完成譯碼的步驟。第九十四頁(yè),共255頁(yè)。①?gòu)拇@示數(shù)字中分離出顯示的每一位數(shù)字:方法是將顯示數(shù)除以十進(jìn)制的權(quán),比如要顯示123,則先將123除以100,得到商是1,然后除以10得到商是2,最后就是個(gè)位上的數(shù)3,這樣就完成了對(duì)顯示數(shù)的分離。

②將分離出的顯示數(shù)字轉(zhuǎn)換為顯示字段碼:一般采用查表的方法進(jìn)行,將表5.7按順序存放在ROM表中,通過(guò)編寫(xiě)查表指令即可完成查表工作。第九十五頁(yè),共255頁(yè)。5.5.2LED數(shù)碼顯示器的接口方法與顯示電路

采用LED顯示信息時(shí),往往僅用一位是無(wú)法顯示全部信息的,通常需要由多個(gè)LED顯示器共同構(gòu)成多位顯示器。在顯示過(guò)程中,數(shù)據(jù)輸出方式有并行輸出和串行輸出兩種;顯示電路主要有靜態(tài)顯示和動(dòng)態(tài)顯示兩種。第九十六頁(yè),共255頁(yè)。

1.靜態(tài)顯示

LED顯示器工作在靜態(tài)顯示時(shí),其公共陽(yáng)極(或陰極)接VCC(或GND),一直處于顯示有效狀態(tài),每一位的段選線與一個(gè)8位并行I/O口相連送出顯示字符,但是當(dāng)位數(shù)較多時(shí),占用的I/O口線較多,浪費(fèi)資源,所以通常將每一位的顯示內(nèi)容由各自的鎖存器加以鎖存,這樣可以節(jié)約I/O資源,顯示各位,又相互獨(dú)立。

如圖5.19所示,芯片4511為一譯碼帶鎖存的集成電路,3位LED數(shù)碼管的8位段碼輸入端接在BCD譯碼器4511的輸出端,BCD譯碼器4511的輸入端ABCD接P1.0~P1.3,單片機(jī)的P1.4~P1.6接BCD譯碼器的片選端,分別控制百位、十位、個(gè)位的LED有效。第九十七頁(yè),共255頁(yè)。圖5.19BCD碼靜態(tài)顯示電路第九十八頁(yè),共255頁(yè)。

【例5.4】

按圖5.19所示的靜態(tài)顯示電路原理圖,試編制一段顯示子程序(小數(shù)點(diǎn)固定在第二位)。已知顯示數(shù)據(jù)的個(gè)位、十位和百位分別存放在內(nèi)存30H~32H中。

解:該題目為三位顯示,譯碼方式采用硬件電路實(shí)現(xiàn),不需軟件編寫(xiě);顯示位為三位,譯碼器同時(shí)接至單片機(jī)的P1.0、P1.1、P1.2、P1.3,需要顯示的BCD碼從這四個(gè)口輸出;每次只能給一位送數(shù),故必須區(qū)分是送到哪一位,且需要有位選(片選),由P1.4~P1.7分別有效來(lái)控制。第九十九頁(yè),共255頁(yè)。第一百頁(yè),共255頁(yè)。

2.動(dòng)態(tài)顯示圖5.20常見(jiàn)的動(dòng)態(tài)顯示電路結(jié)構(gòu)圖

LED顯示器的動(dòng)態(tài)顯示是將所有顯示位的段選線的同名端并聯(lián)在一起,并由一個(gè)8位I/O口控制,形成段選線的多位復(fù)用,而各顯示位的公共陽(yáng)極端或公共陰極端則分別由相應(yīng)的I/O口線控制,實(shí)現(xiàn)各位的分時(shí)選通,即同一時(shí)刻只有被選通位的數(shù)碼管能顯示相應(yīng)的字符,而其他所有位都是熄滅的。由于人眼有視覺(jué)暫留現(xiàn)象,因此只要每位顯示間隔足夠短,就會(huì)造成多位同時(shí)點(diǎn)亮的假象。這就需要單片微機(jī)不斷地對(duì)顯示進(jìn)行刷新控制,犧牲CPU時(shí)間來(lái)?yè)Q取元件的減少以及顯示功耗的降低。常見(jiàn)的動(dòng)態(tài)顯示電路結(jié)構(gòu)見(jiàn)圖5.20。第一百零一頁(yè),共255頁(yè)。圖5.20常見(jiàn)的動(dòng)態(tài)顯示電路結(jié)構(gòu)圖第一百零二頁(yè),共255頁(yè)。動(dòng)態(tài)顯示的工作過(guò)程如下:

首先,將字形代碼送入字形鎖存器鎖存,這時(shí)所有的顯示塊都具有顯示這個(gè)相同字符的能力(即段選)。到底由哪一位顯示,則還需要確定位選。其次,將需要顯示的“位置”代碼送入字位鎖存器鎖存(即位選),從而選通位置碼對(duì)應(yīng)的選通位。最后注意:顯示后,應(yīng)保持幾毫秒的延時(shí)。為防止閃爍,每位顯示時(shí)間應(yīng)保持1~2?ms,然后顯示下一位,CPU需要不斷地進(jìn)行顯示刷新。第一百零三頁(yè),共255頁(yè)。

3.動(dòng)態(tài)顯示電路舉例應(yīng)用

如圖5.21所示,3-8譯碼器74LS138輸入端接單片機(jī)的P1.0~1.2,輸出端分別接8個(gè)數(shù)碼管的各自公共端GND,從而實(shí)現(xiàn)8個(gè)數(shù)碼管的位碼選擇。74LS377為帶有輸入允許端的8D觸發(fā)器。利用74LS377與單片機(jī)接口構(gòu)成1個(gè)8位并行輸出口電路,輸出數(shù)碼管的8位段碼。第一百零四頁(yè),共255頁(yè)。圖5.21共陰極動(dòng)態(tài)顯示電路圖第一百零五頁(yè),共255頁(yè)。

【例5.5】按圖5.21,試編制循環(huán)掃描(10次)顯示子程序。已知被顯示的字段碼已經(jīng)存放在以40H(低位)為首址的連續(xù)8?B內(nèi)部RAM中。

解:先確定74LS377的端口地址,由于P2.7接74LS377的片選端,所以只需P2.7=0即可使得74LS377芯片有效。從電路圖中可知,74LS138的使能端已經(jīng)有效,所以不必在代碼中設(shè)置其端口地址了。然后,從低位開(kāi)始依次發(fā)送顯示碼,每發(fā)送一個(gè)顯示碼就必須調(diào)用延時(shí)2ms的子程序,執(zhí)行動(dòng)態(tài)刷新后,再發(fā)送下一位的顯示代碼,如此重復(fù)直至發(fā)完所有數(shù)據(jù)。第一百零六頁(yè),共255頁(yè)。第一百零七頁(yè),共255頁(yè)。第一百零八頁(yè),共255頁(yè)。5.5.3LED數(shù)碼顯示器應(yīng)用舉例

前述的顯示電路無(wú)論是靜態(tài)顯示還是動(dòng)態(tài)顯示,其段選線上的數(shù)據(jù)都是通過(guò)并行口鎖存器輸出的,本節(jié)介紹一種采用串行方式進(jìn)行顯示電路的擴(kuò)展方法。

【例5.6】通過(guò)串行口方式0設(shè)計(jì)擴(kuò)展的鍵盤(pán)/顯示器接口電路。圖5.22所示的是通過(guò)串行口實(shí)現(xiàn)鍵盤(pán)接收和顯示的電路。第一百零九頁(yè),共255頁(yè)。

解:74LS164是一種串行輸入、并行輸出的移位寄存器,每接一片74LS164可擴(kuò)展一個(gè)8位并行輸出口。圖5.22中擴(kuò)展了2×8矩陣式鍵盤(pán),由P3.4、P3.5兩個(gè)引腳作為2根行線,采用一片74LS164作為鍵盤(pán)的8根列線。鍵盤(pán)顯示采用靜態(tài)顯示方式,使用三個(gè)74LS164分別作為三個(gè)LED的段選輸入。

由圖5.22可知,當(dāng)P3.3=0時(shí),無(wú)論TXD的信號(hào)是高或低,與門(mén)輸出都為低,74LS164芯片片選無(wú)效,關(guān)閉顯示輸入。第一百一十頁(yè),共255頁(yè)。第一百一十一頁(yè),共255頁(yè)。第一百一十二頁(yè),共255頁(yè)。第一百一十三頁(yè),共255頁(yè)。第一百一十四頁(yè),共255頁(yè)。第一百一十五頁(yè),共255頁(yè)。第一百一十六頁(yè),共255頁(yè)。第一百一十七頁(yè),共255頁(yè)。圖5.22利用串行口設(shè)計(jì)的鍵盤(pán)接收和顯示電路圖第一百一十八頁(yè),共255頁(yè)。5.6.1鍵盤(pán)接口的工作原理

1.鍵盤(pán)連接方式

在應(yīng)用系統(tǒng)設(shè)計(jì)中,根據(jù)使用在單片機(jī)外圍鍵盤(pán)的按鍵的連接方式可以將單片機(jī)的鍵盤(pán)連接方式分為兩類:獨(dú)立式鍵盤(pán)和矩陣式鍵盤(pán)。

1)獨(dú)立式鍵盤(pán)

所謂獨(dú)立式鍵盤(pán)(又稱線性鍵盤(pán)),是指最簡(jiǎn)單的鍵盤(pán)電路,各鍵相互獨(dú)立,每個(gè)按鍵獨(dú)立地與一根單片機(jī)的I/O端口線相連接的鍵盤(pán)電路,如圖5.23所示。5.6鍵盤(pán)接口第一百一十九頁(yè),共255頁(yè)。圖5.23獨(dú)立式按鍵接口電路第一百二十頁(yè),共255頁(yè)。圖5.23(a)為中斷方式,任何一個(gè)按鍵按下時(shí),通過(guò)與門(mén)電路都會(huì)向CPU申請(qǐng)中斷,CPU響應(yīng)中斷后,去讀P1口的值,然后判斷是哪一個(gè)按鍵按下。

圖5.23(b)為查詢方式,無(wú)鍵按下時(shí),所有的數(shù)據(jù)輸入線都通過(guò)上拉電阻連接至+5?V(高電平);當(dāng)有鍵按下時(shí),與之連接的對(duì)應(yīng)數(shù)據(jù)輸入線將被接地(拉至低電平)。

可見(jiàn),獨(dú)立式按鍵的各按鍵電路相互獨(dú)立,可以靈活設(shè)置并對(duì)鍵盤(pán)進(jìn)行定義,其軟件編程相對(duì)簡(jiǎn)單,但當(dāng)按鍵數(shù)較多時(shí),所需的I/O端口較多,浪費(fèi)系統(tǒng)資源,因此常常用于按鍵數(shù)量較少的場(chǎng)合。第一百二十一頁(yè),共255頁(yè)。2)矩陣式鍵盤(pán)

所謂矩陣式鍵盤(pán),是指把所有按鍵排列成行列矩陣形式的鍵盤(pán)。如圖5.24所示,設(shè)選用P1端口中的P1.0~P1.3為四根行線,P1.4~P1.7為四根列線,行線和列線的交叉處放置一按鍵,當(dāng)鍵按下時(shí)行列線接通,構(gòu)成一個(gè)4×4的矩陣鍵盤(pán),可定義16個(gè)按鍵。

矩陣式鍵盤(pán)占用I/O端線較少,軟件程序設(shè)計(jì)復(fù)雜。矩陣式鍵盤(pán)的關(guān)鍵是如何正確識(shí)別出被按下的鍵,這要求行線和列線上必須為不同電平,如圖5.24所示,行線接至高電平,則列線上就必須送低電平。這樣當(dāng)按鍵按下時(shí),行與列接通,從而改變行線的信號(hào),就可以通過(guò)循環(huán)判決的方式來(lái)判斷是哪個(gè)鍵被按下。第一百二十二頁(yè),共255頁(yè)。圖5.244×4矩陣式鍵盤(pán)結(jié)構(gòu)圖第一百二十三頁(yè),共255頁(yè)。

2.鍵盤(pán)消抖處理

按鍵一般是由彈簧片構(gòu)成的。按鍵被接入單片機(jī),當(dāng)按鍵被按下時(shí),簧片總是存在抖動(dòng)現(xiàn)象,抖動(dòng)一段時(shí)間才能和觸點(diǎn)完全接觸好。因此需要采取按鍵消抖措施,以消除按鍵在閉合和斷開(kāi)瞬間的抖動(dòng)所帶來(lái)的錯(cuò)誤判斷。如圖5.25所示,鍵盤(pán)的抖動(dòng)時(shí)間一般為5~10ms,抖動(dòng)現(xiàn)象一般會(huì)引起CPU對(duì)一次按鍵操作進(jìn)行多次處理,從而產(chǎn)生誤判斷。第一百二十四頁(yè),共255頁(yè)。圖5.25鍵操作和鍵抖動(dòng)示意圖第一百二十五頁(yè),共255頁(yè)。為保證CPU對(duì)按鍵的每次閉合(或斷開(kāi))僅作一次鍵輸入處理,就需要采取消除抖動(dòng)的措施。常見(jiàn)的消抖方式有兩種,即硬件和軟件消抖方式。圖5.26中給出了幾種常用硬件消抖電路。其中,RC濾波電路簡(jiǎn)單實(shí)用,效果較好。有時(shí)為了簡(jiǎn)化硬件電路,也可采用軟件去抖法,即在程序中檢測(cè)接入的鍵盤(pán),如圖5.24所示的P1口,若檢測(cè)到按鍵按下,則延時(shí)10?ms后再次確認(rèn)該鍵是否確實(shí)按下,從而消除抖動(dòng)的影響。第一百二十六頁(yè),共255頁(yè)。圖5.26幾種常用硬件去抖動(dòng)電路圖第一百二十七頁(yè),共255頁(yè)。5.6.2鍵盤(pán)接口電路

80C51的I/O口具有輸出鎖存和輸入緩沖的功能,因而用它們組成鍵盤(pán)電路時(shí),可以省掉輸出鎖存器和輸入緩沖器。圖5.27所示為由MCS-51單片機(jī)本身的P1口構(gòu)成的4×4矩陣式鍵盤(pán)。

第一百二十八頁(yè),共255頁(yè)。圖5.27采用中斷申請(qǐng)方式的矩陣式鍵盤(pán)第一百二十九頁(yè),共255頁(yè)。圖5.27中,鍵盤(pán)的4根列線作為輸出口,通過(guò)上拉電阻連到P1口的低四位(P1.0~P1.3),四根行線作為輸入口,連到P1口的高4位(P1.4~P1.7),并通過(guò)“與”門(mén)連到中斷請(qǐng)求端。在行輸入電路中,每行都串聯(lián)一個(gè)二極管是為了防止多鍵同時(shí)按下時(shí),輸入口可能會(huì)短路。

鍵掃描開(kāi)始時(shí),單片機(jī)先對(duì)4根列線輸出低電平,然后檢測(cè)輸入端口的行線電平。當(dāng)無(wú)鍵按下時(shí),由于上拉電阻的作用,所有行線為高電平,所以為高電平;當(dāng)鍵盤(pán)中有鍵按下時(shí),對(duì)應(yīng)行線電平變低,經(jīng)過(guò)與門(mén)后端變?yōu)榈碗娖剑駽PU發(fā)中斷請(qǐng)求。若CPU開(kāi)放外部中斷0(),則響應(yīng)中斷,執(zhí)行中斷服務(wù)程序,在中斷服務(wù)程序中進(jìn)行鍵盤(pán)掃描,判斷哪個(gè)鍵被按下。第一百三十頁(yè),共255頁(yè)。5.6.3鍵盤(pán)掃描程序

鍵盤(pán)掃描程序的編制方法分為兩種:一種是獨(dú)立式鍵盤(pán)掃描程序,另一種是矩陣式鍵盤(pán)掃描程序。獨(dú)立式鍵盤(pán)掃描程序相對(duì)簡(jiǎn)單,而矩陣式鍵盤(pán)掃描程序相對(duì)復(fù)雜(具體編寫(xiě)見(jiàn)本節(jié)實(shí)例)。下面以圖5.28所示的獨(dú)立式鍵盤(pán)接口電路為例進(jìn)行詳細(xì)說(shuō)明。第一百三十一頁(yè),共255頁(yè)。圖5.28獨(dú)立式按鍵接口電路圖第一百三十二頁(yè),共255頁(yè)。第一百三十三頁(yè),共255頁(yè)。第一百三十四頁(yè),共255頁(yè)。第一百三十五頁(yè),共255頁(yè)。5.6.4鍵盤(pán)接口實(shí)例

下面分別舉例說(shuō)明獨(dú)立式鍵盤(pán)和矩陣式鍵盤(pán)擴(kuò)展電路以及各自程序的編制。

1.獨(dú)立式鍵盤(pán)擴(kuò)展電路實(shí)例

圖5.29所示為一個(gè)采用并行I/O擴(kuò)展的獨(dú)立式鍵盤(pán)電路。電路中74LS373鎖存器用作輸入接口,請(qǐng)讀者試著編寫(xiě)圖5.29的按鍵掃描程序。編寫(xiě)程序時(shí)需對(duì)74LS373的端口進(jìn)行設(shè)置,在單片機(jī)和P2.7輸出的控制信號(hào)有效時(shí),使74LS373的端低電平有效,從而接收來(lái)自按鍵的信息,讀取P0口的信息值,然后逐位判斷是否有對(duì)應(yīng)按鍵按下。

當(dāng)對(duì)總線進(jìn)行讀操作時(shí),鎖存器被選通,由圖知此時(shí)必須使P2.7=0,因此鎖存器的端口操作地址可設(shè)為7FFEH。第一百三十六頁(yè),共255頁(yè)。第一百三十七頁(yè),共255頁(yè)。第一百三十八頁(yè),共255頁(yè)。圖5.29采用并行I/O擴(kuò)展的獨(dú)立式鍵盤(pán)電路圖第一百三十九頁(yè),共255頁(yè)。

2.矩陣式鍵盤(pán)擴(kuò)展電路實(shí)例

【例5.8】

圖5.30所示為一個(gè)采用P1口擴(kuò)展的矩陣式鍵盤(pán)接口電路,編制中斷方式鍵盤(pán)掃描程序,將鍵盤(pán)序號(hào)存入內(nèi)部RAM的30H單元中。

解:由圖5.30可知,可使P1.0~P1.3作為行線輸入口,P1.4~P1.7作為列線輸出口。程序的編寫(xiě)分為兩部分,即主程序和鍵盤(pán)中斷掃描判斷子程序。主程序主要完成接口的初始化,開(kāi)放外部中斷寄存器等,完成初始化后,就進(jìn)入循環(huán)等待狀態(tài)。若有鍵按下,則轉(zhuǎn)入中斷服務(wù)子程序。中斷服務(wù)子程序主要完成判斷鍵位和讀取鍵值的功能。第一百四十頁(yè),共255頁(yè)。圖5.30用P1口擴(kuò)展的矩陣式鍵盤(pán)接口電路圖第一百四十一頁(yè),共255頁(yè)。第一百四十二頁(yè),共255頁(yè)。第一百四十三頁(yè),共255頁(yè)。第一百四十四頁(yè),共255頁(yè)。第一百四十五頁(yè),共255頁(yè)。第一百四十六頁(yè),共255頁(yè)。自動(dòng)化控制系統(tǒng)是單片機(jī)應(yīng)用的一個(gè)重要領(lǐng)域。在自動(dòng)控制領(lǐng)域中,除開(kāi)關(guān)量(數(shù)字量)之外,通常會(huì)遇到另一種物理量,比如溫度、速度、壓力、電流、電壓等模擬量,它們都是連續(xù)變化的物理量。由于計(jì)算機(jī)只能處理數(shù)字量,因此對(duì)于有模擬量參與的控制系統(tǒng),就必須進(jìn)行模擬量向數(shù)字量或者數(shù)字量向模擬量的轉(zhuǎn)換,即通常所說(shuō)的數(shù)/模(D/A)轉(zhuǎn)換和模/數(shù)(A/D)轉(zhuǎn)換。

5.7A/D轉(zhuǎn)換器第一百四十七頁(yè),共255頁(yè)。隨著集成電路技術(shù)的發(fā)展,目前市場(chǎng)上增強(qiáng)型的單片機(jī)中有的已經(jīng)集成了簡(jiǎn)單的A/D轉(zhuǎn)換器和D/A轉(zhuǎn)換器(有的集成有PWM轉(zhuǎn)換器,它可以完成D/A轉(zhuǎn)換功能),但是其轉(zhuǎn)換技術(shù)指標(biāo)不能完全滿足系統(tǒng)的設(shè)計(jì)要求,因此有時(shí)還須進(jìn)行D/A轉(zhuǎn)換器和A/D轉(zhuǎn)換器的擴(kuò)展。下面將分別介紹D/A轉(zhuǎn)換器和A/D轉(zhuǎn)換器。第一百四十八頁(yè),共255頁(yè)。5.7.1A/D轉(zhuǎn)換器概述

A/D轉(zhuǎn)換器是一種用來(lái)將連續(xù)的模擬信號(hào)轉(zhuǎn)換成適合于數(shù)字處理的二進(jìn)制數(shù)的器件,它是能夠?qū)⒁粋€(gè)模擬信號(hào)值編制成與其大小相對(duì)應(yīng)的二進(jìn)制碼的編碼器。

與之相對(duì)應(yīng),D/A轉(zhuǎn)換器可以理解為一個(gè)解碼器。模擬量與數(shù)字量之間有一一對(duì)應(yīng)的關(guān)系,設(shè)D為N位二進(jìn)制數(shù)字量,UA為電壓模擬量,UREF為參考電壓,無(wú)論A/D轉(zhuǎn)換器或D/A轉(zhuǎn)換器,其轉(zhuǎn)換關(guān)系都為

UA=D×第一百四十九頁(yè),共255頁(yè)。其中:D=D0×20+D1×21+…+DN-1×2N-1。

轉(zhuǎn)換結(jié)果的數(shù)字量的位數(shù)常常作為衡量A/D轉(zhuǎn)換器精度的指標(biāo)。位數(shù)越多,其轉(zhuǎn)換精度越高,常見(jiàn)A/D轉(zhuǎn)換器有8、10、12位等。第一百五十頁(yè),共255頁(yè)。5.7.2典型A/D轉(zhuǎn)換器芯片——ADC0809

8位A/D轉(zhuǎn)換器芯片較多,有單通道和多通道之分。單通道的有ADC0801、ADC0802、ADC0803、ADC0804、ADC0805;8通道的有ADC0808、ADC0809和16通道的ADC0816、ADC0817。下面將以ADC0809為例詳細(xì)介紹8位逐次逼近式A/D轉(zhuǎn)換器的工作過(guò)程。第一百五十一頁(yè),共255頁(yè)。

1.主要技術(shù)指標(biāo)

ADC0809的分辨率為8位,不必進(jìn)行調(diào)零和調(diào)滿量程;最大不可調(diào)誤差小于±1LSB;輸入電壓范圍為0~+5.000V(5V單電源供電);轉(zhuǎn)換時(shí)間為100μs左右;輸出8位二進(jìn)制數(shù)字量,與TTL電平兼容;具有鎖存控制的8路多路選擇模擬開(kāi)關(guān)(8選1)。

2.?ADC0809的引腳說(shuō)明

典型8位A/D轉(zhuǎn)換器ADC0809的內(nèi)部結(jié)構(gòu)及引腳如圖5.31所示。一個(gè)典型A/D轉(zhuǎn)換器的內(nèi)部由4部分組成,即地址譯碼電路、多路模擬選擇電路、轉(zhuǎn)換器和三態(tài)鎖存緩沖器。其封裝形式為雙列直插式DIP28腳形式。第一百五十二頁(yè),共255頁(yè)。圖5.31ADC0809的內(nèi)部結(jié)構(gòu)及引腳圖第一百五十三頁(yè),共255頁(yè)。引腳圖中信號(hào)說(shuō)明如下:

數(shù)據(jù)信號(hào):

IN0~I(xiàn)N7:8路模擬量輸入通道,可以由ADDA、ADDB和ADDC三根線的狀態(tài)進(jìn)行通道選擇。

D0~D7:8位數(shù)據(jù)輸出線,為三態(tài)緩沖輸出形式,可以和單片機(jī)的數(shù)據(jù)總線直接相連(D0為最低位,D7為最高位)。第一百五十四頁(yè),共255頁(yè)。控制信號(hào):

EOC:轉(zhuǎn)換結(jié)束信號(hào)脈沖輸出端,EOC=1時(shí)表示A/D轉(zhuǎn)換結(jié)束,EOC=0時(shí)表示正在轉(zhuǎn)換。在與單片機(jī)聯(lián)絡(luò)中,EOC常接至外部中斷或采用查詢方式讀取轉(zhuǎn)換結(jié)果時(shí)的判別信號(hào)。

OE:輸出允許信號(hào),用于控制三態(tài)輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0時(shí),輸出數(shù)據(jù)線呈高阻;OE=1時(shí),輸出轉(zhuǎn)換結(jié)果數(shù)據(jù)。

第一百五十五頁(yè),共255頁(yè)。START:A/D啟動(dòng)控制信號(hào),上升沿復(fù)位A/D轉(zhuǎn)換器,下降沿啟動(dòng)A/D轉(zhuǎn)換器,常簡(jiǎn)稱為ST。

ALE:地址鎖存控制信號(hào)端,當(dāng)ALE為1時(shí),鎖存某輸入通道,確保A/D轉(zhuǎn)換時(shí)采集的數(shù)據(jù)為指定通道上的數(shù)據(jù),常與START共同使用。

ADDA,ADDB,ADDC:8路模擬開(kāi)關(guān)的三位地址選通輸入端,以選擇對(duì)應(yīng)的輸入通道,如表5.8所示。第一百五十六頁(yè),共255頁(yè)。表5.8通?道?選?擇?表第一百五十七頁(yè),共255頁(yè)。其他信號(hào):

CLOCK:外部時(shí)鐘輸入端,其頻率范圍為10~1280kHz。

VREF+、VREF-:參考電壓輸入端。

VCC、GND:+5V工作電源、電源地。第一百五十八頁(yè),共255頁(yè)。5.7.3MCS-51單片機(jī)與ADC0809接口

A/D轉(zhuǎn)換器啟動(dòng)后,轉(zhuǎn)換需要一段時(shí)間,不同型號(hào)的A/D轉(zhuǎn)化器轉(zhuǎn)換所需的時(shí)間不同。轉(zhuǎn)換結(jié)束后,單片機(jī)讀取數(shù)據(jù)并進(jìn)行其他處理。但關(guān)鍵問(wèn)題是如何確認(rèn)A/D轉(zhuǎn)換完成,因?yàn)橹挥写_認(rèn)轉(zhuǎn)換結(jié)束后,讀取數(shù)據(jù)才是準(zhǔn)確的。一般有如下三種方式可以采用。

(1)定時(shí)傳送方式:對(duì)于已選定的A/D轉(zhuǎn)換器,其技術(shù)指標(biāo)(轉(zhuǎn)換時(shí)間是技術(shù)指標(biāo)中的一項(xiàng))是已知的。比如,ADC0809的轉(zhuǎn)換時(shí)間為128?μs,當(dāng)MCS-51單片機(jī)的晶振為6?MHz時(shí),其轉(zhuǎn)換所需時(shí)間為64個(gè)機(jī)器周期,可據(jù)此設(shè)計(jì)一個(gè)延時(shí)大于128?μs的子程序,A/D轉(zhuǎn)換啟動(dòng)后即調(diào)用此子程序,延遲時(shí)間到,確定轉(zhuǎn)換結(jié)束,讀取轉(zhuǎn)換結(jié)果并進(jìn)行處理。第一百五十九頁(yè),共255頁(yè)。(2)查詢方式:一般A/D轉(zhuǎn)換芯片都有一個(gè)表征轉(zhuǎn)換結(jié)束的狀態(tài)信號(hào),例如ADC0809的EOC端。因此可以用查詢方式測(cè)試EOC的狀態(tài),即可判斷轉(zhuǎn)換是否結(jié)束,并讀取轉(zhuǎn)換結(jié)果。

(3)中斷方式:把表征轉(zhuǎn)換結(jié)束的狀態(tài)信號(hào)(EOC)作為外部中斷請(qǐng)求信號(hào),以中斷方式進(jìn)行數(shù)據(jù)讀取處理。

無(wú)論使用上述哪種方式,一旦確定轉(zhuǎn)換結(jié)束,即可通過(guò)軟件相關(guān)指令進(jìn)行轉(zhuǎn)換結(jié)果的讀取。

圖5.32所示為ADC0809與單片機(jī)組成的一個(gè)8路模擬量輸入的巡回監(jiān)測(cè)系統(tǒng)連接圖。第一百六十頁(yè),共255頁(yè)。圖5.32ADC0809與單片機(jī)的連接圖第一百六十一頁(yè),共255頁(yè)。從圖5.32中可知,ADC0809的時(shí)鐘信號(hào)由ALE二分頻后提供,其模擬通道的選擇由地址線低3位A0、A1和A2控制,數(shù)據(jù)端口與單片機(jī)的P0口數(shù)據(jù)線直接相連,A/D轉(zhuǎn)換器的啟動(dòng)信號(hào)由P2.0和寫(xiě)信號(hào)共同通過(guò)邏輯門(mén)電路決定,片選信號(hào)OE的選通由P2.0和讀信號(hào)共同通過(guò)邏輯門(mén)電路決定。轉(zhuǎn)換結(jié)束信號(hào)接至外部中斷1,采用中斷方式采集A/D轉(zhuǎn)換結(jié)果數(shù)據(jù)。

先設(shè)定無(wú)關(guān)的地址線取1,P2.0是ADC0809的總控制端,當(dāng)P2.0有效時(shí),ADC0809的轉(zhuǎn)換啟動(dòng)和數(shù)據(jù)傳送由單片機(jī)的讀/寫(xiě)信號(hào)通過(guò)兩個(gè)或門(mén)控制,則通過(guò)分析可知P2.0=0時(shí)有效,ADC0809的啟動(dòng)端口地址如表5.9所示。第一百六十二頁(yè),共255頁(yè)。表5.9ADC0809的端口地址范圍第一百六十三頁(yè),共255頁(yè)。ADC0809的地址為0FEF8H~0FEFFH,分別對(duì)應(yīng)不同的輸入通道IN0~I(xiàn)N7。ADC0809的工作過(guò)程如下:

(1)先清P2.0=0,令其控制的兩個(gè)或門(mén)開(kāi)啟,然后通過(guò)單片機(jī)的P3.6()送一次高電平,再送一次低電平,經(jīng)過(guò)反相器后獲得一個(gè)脈沖的上升沿,到達(dá)A/D的啟動(dòng)端ST和通道鎖存端ALE,實(shí)現(xiàn)A/D轉(zhuǎn)換器復(fù)位和通道鎖存的功能。第一百六十四頁(yè),共255頁(yè)。(2)?P3.6再送一次高電平信號(hào),經(jīng)過(guò)反相后形成一個(gè)下降沿,完成啟動(dòng)A/D轉(zhuǎn)換的工作。

(3)等待中斷信號(hào)的產(chǎn)生,一旦檢測(cè)到外部中斷1信號(hào)為0,就表示有中斷產(chǎn)生,則響應(yīng)中斷服務(wù)程序。

(4)在中斷服務(wù)程序中,若P3.7()引腳為低電平,則反相后到達(dá)A/D的OE端;若P3.7引腳為高電平,則表示允許轉(zhuǎn)換后的數(shù)據(jù)傳入P0口,從P0口讀取數(shù)據(jù)。第一百六十五頁(yè),共255頁(yè)。第一百六十六頁(yè),共255頁(yè)。第一百六十七頁(yè),共255頁(yè)。第一百六十八頁(yè),共255頁(yè)。5.7.4A/D轉(zhuǎn)換器應(yīng)用舉例

為了提高A/D轉(zhuǎn)換的精度,可采用更多位數(shù)的A/D轉(zhuǎn)換器,例如10位或12位的A/D轉(zhuǎn)換器。下面以12位A/D轉(zhuǎn)換器AD574為例,介紹MCS-51單片機(jī)與A/D轉(zhuǎn)換器的連接及使用方法。

AD574采用快速逐次逼近法,轉(zhuǎn)換速度為25μs;內(nèi)設(shè)時(shí)鐘和參考電壓源,輸出帶有三態(tài)緩沖器,輸出數(shù)據(jù)可以為12位,也可以為8位;輸入模擬信號(hào)可以為單極性0~+10V或

0~+20V,也可以選擇為雙極性±5V或±10V。其引腳控制信號(hào)功能如表5.10所示。第一百六十九頁(yè),共255頁(yè)。表5.10AD574的引腳控制信號(hào)功能表第一百七十頁(yè),共255頁(yè)。圖5.33為8051單片機(jī)與AD574的一種連接方案。該系統(tǒng)采用查詢方式,將狀態(tài)線STS與單片機(jī)的P1.0相連,當(dāng)啟動(dòng)A/D進(jìn)行轉(zhuǎn)換時(shí),STS=1;當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),STS=0。單片機(jī)執(zhí)行對(duì)外部數(shù)據(jù)存儲(chǔ)器的寫(xiě)指令,使CE=1、=0、R/=0、A0=0時(shí),啟動(dòng)A/D轉(zhuǎn)換器,然后通過(guò)P1.0線不斷查詢STS的狀態(tài)。

當(dāng)STS=0時(shí),表示轉(zhuǎn)換結(jié)束,單片機(jī)可通過(guò)兩次讀外部數(shù)據(jù)存儲(chǔ)器操作,讀取12位轉(zhuǎn)換結(jié)果:第一次CE=1、=0、R/=1、A0=0,讀取高8位;第二次CE=1、=0、R/=1、A0=1,讀取低4位。第一百七十一頁(yè),共255頁(yè)。當(dāng)STS=1時(shí),表示轉(zhuǎn)換正在進(jìn)行,繼續(xù)循環(huán)等待查詢。

在圖5.33中,AD574的與主機(jī)的地址線Q7相連。A0與主機(jī)地址線Q0相連,R/與主機(jī)的地址線Q1相連。因此,AD574的12位啟動(dòng)轉(zhuǎn)換地址為00H,高8位數(shù)據(jù)輸出地址為02H,低4位數(shù)據(jù)輸出地址為03H。第一百七十二頁(yè),共255頁(yè)。圖5.338051與AD574的連接原理圖第一百七十三頁(yè),共255頁(yè)。第一百七十四頁(yè),共255頁(yè)。5.7.5串行A/D轉(zhuǎn)換接口芯片TLC1543

前一節(jié)介紹了并行A/D轉(zhuǎn)換器與單片機(jī)的連接方式,并行連接所需占用單片機(jī)的I/O資源較多。為了節(jié)省資源,提高開(kāi)發(fā)效率,串行A/D轉(zhuǎn)換器應(yīng)運(yùn)而生,它與單片機(jī)的接口采用串行通信方式,具有輸入通道多、轉(zhuǎn)換精度高、傳輸速度快、價(jià)格低廉等優(yōu)點(diǎn),易于和單片機(jī)接口,可廣泛應(yīng)用于各種數(shù)據(jù)采集系統(tǒng),例如采用SPI總線接口的TLC5615。下面以10位A/D轉(zhuǎn)換器TLC1543為例介紹具有串行總線接口技術(shù)的A/D轉(zhuǎn)換器的原理和應(yīng)用。第一百七十五頁(yè),共255頁(yè)。

1.?TLC1543的基本功能

1)?TLC1543的基本特點(diǎn)

TLC1543為一種CMOS型10位開(kāi)關(guān)電容逐次逼近模/數(shù)轉(zhuǎn)換器。該芯片含有3個(gè)輸入端和一個(gè)三態(tài)輸出端,即片選()、輸入/輸出時(shí)鐘(I/OCLOCK)、地址輸入(ADDRESS)和數(shù)據(jù)輸出(DATAOUT)。微處理器通過(guò)四線接口和它進(jìn)行連接。第一百七十六頁(yè),共255頁(yè)。TLC1543片內(nèi)含有14通道多路選擇器,可以自行選擇11個(gè)外部輸入信號(hào)中的任何一個(gè),也可以選擇3個(gè)內(nèi)部自測(cè)試(SELF-TEST)電壓信號(hào)中的任一信號(hào)。片內(nèi)設(shè)有自動(dòng)采樣-保持電路。在轉(zhuǎn)換結(jié)束時(shí),“轉(zhuǎn)換結(jié)束”信號(hào)(EOC)輸出端改變?yōu)楦唠娖絹?lái)指示轉(zhuǎn)換結(jié)束。系統(tǒng)時(shí)鐘由片內(nèi)產(chǎn)生并由I/OCLOCK同步。內(nèi)部轉(zhuǎn)換器的精度為10位(不可調(diào)整誤差≤±1LSB),轉(zhuǎn)換速度為10μs。第一百七十七頁(yè),共255頁(yè)。2)引腳排列及功能

TLC1543采用20腳雙列直插式DIP封裝,其內(nèi)部結(jié)構(gòu)如圖5.34(a)所示,其內(nèi)部功能由8部分組成,即14通道模擬開(kāi)關(guān)、采樣-保持、10位A/D轉(zhuǎn)換器、輸入地址寄存器、輸出數(shù)據(jù)寄存器、10-1數(shù)據(jù)選擇與驅(qū)動(dòng)、系統(tǒng)時(shí)鐘控制邏輯I/O計(jì)數(shù)器和自檢參考。第一百七十八頁(yè),共255頁(yè)。圖5.34TLC1543的內(nèi)部結(jié)構(gòu)框圖和引腳排列圖第一百七十九頁(yè),共255頁(yè)。TLC1543的引腳排列如圖5.34(b)所示,各個(gè)引腳功能描述如下:

(1)?A0~A10:11路模擬信號(hào)輸入端。11路模擬信號(hào)輸入由內(nèi)部多路選擇器控制,驅(qū)動(dòng)源的阻抗必須≤1k。

(2):片選端。在端的一個(gè)由高至低的電平將復(fù)位內(nèi)部計(jì)數(shù)器,并控制和使能DATAOUT、ADDRESS和I/OCLOCK。一個(gè)由低至高的電平將在設(shè)置時(shí)間內(nèi)禁止ADDRESS和I/OCLOCK。第一百八十頁(yè),共255頁(yè)。(3)?ADDRESS:串行數(shù)據(jù)輸入端。采用4位串行地址選擇下一路即將被轉(zhuǎn)換的模擬輸入量或測(cè)試電壓量的地址碼。串行數(shù)據(jù)以MSB為前導(dǎo),并在I/OCLOCK的前4個(gè)上升沿被移入,在4個(gè)地址位被讀入地址寄存器后,這個(gè)輸入端將對(duì)后續(xù)信號(hào)無(wú)效。

第一百八十一頁(yè),共255頁(yè)。(4)?DATAOUT:三態(tài)串行輸出端,用于輸出A/D轉(zhuǎn)換結(jié)果。DATAOUT在為高電平時(shí)處于高阻狀態(tài),在為低電平時(shí)處于激活狀態(tài)。一旦有效,按照前次轉(zhuǎn)換結(jié)果的MSB值將DATAOUT從高阻狀態(tài)轉(zhuǎn)變成相應(yīng)的邏輯電平。I/OCLOCK的下一個(gè)下降沿將根據(jù)MSB的下一位將DATAOUT置為相應(yīng)的邏輯電平,剩下的各位依次移出,而LSB在I/OCLOCK的第9個(gè)下降沿出現(xiàn),在I/OCLOCK的第10個(gè)下降沿DATAOUT端被置為低電平。因此,當(dāng)多于10個(gè)時(shí)鐘時(shí),串行接口傳送的是“0”。第一百八十二頁(yè),共255頁(yè)。(5)?EOC:轉(zhuǎn)換結(jié)束端。在第10個(gè)I/OCLOCK信號(hào)該輸出端從高電平變?yōu)榈碗娖讲⒈3?,直到轉(zhuǎn)換完成,即數(shù)據(jù)準(zhǔn)備傳輸。

(6)?GND:內(nèi)部電路接地端。

(7)?I/OCLOCK:輸入/輸出時(shí)鐘端。I/OCLOCK接收串行輸入并完成以下4個(gè)功能:

①在I/OCLOCK的前4個(gè)上升

溫馨提示

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