《微控制器原理及應(yīng)用技術(shù)》課件第7章_第1頁
《微控制器原理及應(yīng)用技術(shù)》課件第7章_第2頁
《微控制器原理及應(yīng)用技術(shù)》課件第7章_第3頁
《微控制器原理及應(yīng)用技術(shù)》課件第7章_第4頁
《微控制器原理及應(yīng)用技術(shù)》課件第7章_第5頁
已閱讀5頁,還剩360頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章單片機(jī)系統(tǒng)的擴(kuò)展7.1概述

7.2系統(tǒng)總線擴(kuò)展

7.3存儲器的擴(kuò)展7.4I/O接口的擴(kuò)展及應(yīng)用

7.5LED數(shù)碼顯示器接口

7.6鍵盤接口

7.7A/D轉(zhuǎn)換器7.8D/A轉(zhuǎn)換器教學(xué)提示:MCS51系列單片機(jī)的功能較強(qiáng),但對一些較大的應(yīng)用系統(tǒng)而言,單片機(jī)的內(nèi)部資源及其所具有的功能將顯得不足。因此,要想增加I/O口的數(shù)量和功能,提高其性能,就必須在原最小系統(tǒng)的基礎(chǔ)上進(jìn)行系統(tǒng)的擴(kuò)展。本章介紹了單片機(jī)系統(tǒng)的總線擴(kuò)展、存儲器擴(kuò)展、I/O接口擴(kuò)展、LED數(shù)碼顯示器、鍵盤接口、A/D及D/A轉(zhuǎn)換等內(nèi)容。

教學(xué)要求:通過本章學(xué)習(xí),要求掌握單片機(jī)系統(tǒng)擴(kuò)展的原理及技術(shù)方法,著重掌握單片機(jī)的I/O擴(kuò)展、LED擴(kuò)展、鍵盤接口、A/D及D/A轉(zhuǎn)換等擴(kuò)展電路及常用芯片。

MCS51單片機(jī)芯片內(nèi)集成的功能部件基本上可以滿足簡單應(yīng)用場合的需要。因而,一塊單片機(jī)電路就可以構(gòu)成一個(gè)最小的微機(jī)系統(tǒng)。但對于一些較復(fù)雜的應(yīng)用場合,最小系統(tǒng)往往不能滿足應(yīng)用系統(tǒng)的要求。MCS51單片機(jī)具有系統(tǒng)擴(kuò)展能力,允許擴(kuò)展各種外圍電路以補(bǔ)充片內(nèi)資源的不足,適應(yīng)各種特定應(yīng)用的需要。7.1概述

MCS51單片機(jī)外圍接口電路的設(shè)計(jì)比較靈活,對各種應(yīng)用系統(tǒng)的適應(yīng)能力較強(qiáng)。MCS51可以擴(kuò)展64KB的程序存儲器和64KB的數(shù)據(jù)存儲器或輸入/輸出接口。外部數(shù)據(jù)存儲空間可以作為擴(kuò)展外圍I/O的地址空間。這樣,單片機(jī)就可以像訪問外部RAM那樣訪問外部接口芯片,對其進(jìn)行讀/寫操作。對MCS51進(jìn)行程序存儲器或數(shù)據(jù)存儲器的擴(kuò)展之前,單片機(jī)本身可以提供給用戶使用的輸入/輸出口線只有P1口和部分P3口線。因此,在大部分MCS51單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)中都不可避免地要進(jìn)行I/O接口的擴(kuò)展。在MCS51單片機(jī)的實(shí)際應(yīng)用中,對其進(jìn)行系統(tǒng)擴(kuò)展第一個(gè)遇到的問題就是存儲器的擴(kuò)展。單片機(jī)的內(nèi)部雖然設(shè)置了存儲器,但是這種存儲器的容量一般較小,遠(yuǎn)遠(yuǎn)滿足不了實(shí)際需要,因此需要從外部進(jìn)行擴(kuò)展,配置外部存儲器,包括程序存儲器和數(shù)據(jù)存儲器。第二個(gè)要解決的問題就是I/O接口的擴(kuò)展。在單片機(jī)內(nèi)部雖然設(shè)置了若干并行的I/O接口電路,用來與外圍設(shè)備連接,但當(dāng)外圍設(shè)備較多時(shí),僅有的幾個(gè)內(nèi)部I/O接口不夠用。在大多數(shù)應(yīng)用系統(tǒng)中,MCS51單片機(jī)都需要擴(kuò)展輸入/輸出接口芯片以滿足實(shí)際需要。MCS51單片機(jī)具有可供擴(kuò)展的外部地址總線和數(shù)據(jù)總線。

MCS51單片機(jī)芯片內(nèi)部集成的功能部件基本上可以滿足簡單應(yīng)用場合的需要,因而一塊單片機(jī)電路可以構(gòu)成一個(gè)最小的微機(jī)系統(tǒng)。但對一些較復(fù)雜的應(yīng)用場合,最小系統(tǒng)往往不能滿足應(yīng)用系統(tǒng)的要求。

單片機(jī)系統(tǒng)的擴(kuò)展是以最基本的最小系統(tǒng)為基礎(chǔ)的,故首先應(yīng)熟悉最小系統(tǒng)的結(jié)構(gòu)。最小系統(tǒng)也稱為最小應(yīng)用系統(tǒng),是指一個(gè)真正可用的單片機(jī)最小配置系統(tǒng)。實(shí)際上,內(nèi)部帶有程序存儲器的51單片機(jī)(如AT89C51或AT89S51),只要將其接上時(shí)鐘電路和復(fù)位電路,同時(shí)將EA接高電平,ALE、PSEN引腳不用,系統(tǒng)就可以工作了,如圖7.1所示。

圖7.1單片機(jī)最小應(yīng)用系統(tǒng)該系統(tǒng)有以下幾個(gè)特點(diǎn):

(1)系統(tǒng)有大量的I/O線可供用戶使用:P0、P1、P2、P3四個(gè)口都可以作為I/O口使用。

(2)內(nèi)部存儲器的容量有限,只有128B的RAM和4KB的程序存儲器。

(3)應(yīng)用系統(tǒng)的開發(fā)具有特殊性,由于應(yīng)用系統(tǒng)的P0口、P2口在開發(fā)時(shí)需要作為數(shù)據(jù)和地址總線。因此,這兩個(gè)口上的硬件調(diào)試只能用模擬的方法進(jìn)行。

單片機(jī)系統(tǒng)的擴(kuò)展技術(shù)就是基于最小系統(tǒng)平臺再進(jìn)行擴(kuò)展的各種硬件和軟件功能的開發(fā)和構(gòu)建。

所謂總線,就是連接計(jì)算機(jī)各部件的一組公共通路。利用總線可以實(shí)現(xiàn)CPU與主存、外設(shè)之間的數(shù)據(jù)傳送與通信。在微機(jī)系統(tǒng)中,總線分為片內(nèi)總線、片級總線和系統(tǒng)總線。其中,片內(nèi)總線用于連接CPU內(nèi)部各個(gè)部件,如ALU、通用寄存器、內(nèi)部Cache等;片級總線用以連接CPU、存儲器及I/O接口等電路,構(gòu)成所謂的主機(jī)板;系統(tǒng)總線用來連接外部設(shè)備。7.2系統(tǒng)總線擴(kuò)展7.2.1系統(tǒng)總線擴(kuò)展簡介

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

MCS51單片機(jī)使用的是并行總線結(jié)構(gòu),按其功能通常把系統(tǒng)總線分為三組(見圖7.2),即:

1)地址總線(AddressBus,AB)

地址總線用于傳送單片機(jī)發(fā)出的地址信號,以便進(jìn)行存儲單元和I/O端口的選擇。地址總線是單向傳輸?shù)摹?/p>

2)數(shù)據(jù)總線(DataBus,DB)

數(shù)據(jù)總線用于在單片機(jī)與存儲器之間或單片機(jī)與I/O口之間傳送數(shù)據(jù)。數(shù)據(jù)總線是雙向的,可以進(jìn)行兩個(gè)方向的傳送。

圖7.2MCS51的系統(tǒng)擴(kuò)展結(jié)構(gòu)

3)控制總線(ControlBus,CB)

控制總線實(shí)際上就是一組控制信號線,包括單片機(jī)發(fā)出的信號線和從其他部件傳送給單片機(jī)的信號線。

2.構(gòu)造系統(tǒng)總線

單片機(jī)的擴(kuò)展系統(tǒng)是并行總線結(jié)構(gòu),因此單片機(jī)系統(tǒng)擴(kuò)展的首要問題是構(gòu)造系統(tǒng)總線,然后再往系統(tǒng)總線上“掛”存儲器芯片或I/O接口芯片,“掛”存儲器芯片就是存儲器擴(kuò)展,“掛”I/O接口芯片就是I/O擴(kuò)展。

MCS51單片機(jī)受引腳數(shù)目的限制,數(shù)據(jù)線和低8位地址線是復(fù)用的,由P0口線兼用。為了將它們分離出來,需要在單片機(jī)外部增加地址鎖存器,從而構(gòu)成與一般CPU相類似的片外三總線,如圖7.3所示。

地址鎖存器一般采用74LS373,采用74LS373的地址總線的擴(kuò)展電路如圖7.4所示。

圖7.351系列單片機(jī)三總線擴(kuò)展結(jié)構(gòu)圖

圖7.4MCS51地址總線擴(kuò)展電路由MCS51的P0口送出的低8位有效地址信號是在ALE(地址鎖存允許)信號由低變高時(shí)出現(xiàn)的,并在ALE由高變低時(shí),將出現(xiàn)在P0口的地址信號鎖存到外部地址鎖存器74LS373中。隨后,P0口又作為數(shù)據(jù)總線口。下面說明總線的具體構(gòu)造方法。

1)以P0口作為低8位地址/數(shù)據(jù)總線

因?yàn)镻0口既作低8位地址線,又作數(shù)據(jù)總線(分時(shí)復(fù)用),因此需要增加一個(gè)8位鎖存器。在實(shí)際應(yīng)用時(shí),先把低8位地址送鎖存器暫存,地址鎖存器的輸出給系統(tǒng)提供低8位地址,而把P0口線作為數(shù)據(jù)線使用。實(shí)際上,MCS51單片機(jī)的P0口的電路設(shè)計(jì)已經(jīng)考慮了這種應(yīng)用要求,P0口線內(nèi)部電路中的多路轉(zhuǎn)接電路MUX以及地址/數(shù)據(jù)控制就是為此目的而設(shè)計(jì)的。

2)以P2口的口線作高位地址線

P2口的全部8位口線用作高位地址線,再加上P0口提供的低8位地址,便形成了完整的16位地址總線,使單片機(jī)系統(tǒng)的尋址范圍達(dá)到64KB。但在實(shí)際應(yīng)用系統(tǒng)中,高位地址線并不固定為8位,需要用幾位就從P2口中引出幾條口線。

3)控制信號線

除了地址線和數(shù)據(jù)線外,在擴(kuò)展系統(tǒng)中還需要一些控制信號線,以構(gòu)成擴(kuò)展系統(tǒng)的控制總線。這些信號有的是單片機(jī)引腳的第一功能信號,有的是P3口的第二功能信號。其中,包括:

·使用ALE信號作為低8位地址的鎖存控制信號。

·以PSEN信號作為擴(kuò)展程序存儲器的讀選通信號。

·以EA信號作為內(nèi)、外程序存儲器的選擇控制信號。

·由RD和WR信號作為擴(kuò)展數(shù)據(jù)存儲器和I/O口的讀、寫選通信號。

可以看出,盡管MCS51單片機(jī)有4個(gè)并行的I/O口(共32條口線),但由于系統(tǒng)擴(kuò)展的需要,作為數(shù)據(jù)I/O使用的口線只剩下P1口和P3口的部分口線了。7.2.2常用擴(kuò)展器件介紹

在單片機(jī)系統(tǒng)擴(kuò)展中用到的擴(kuò)展器件有很多種,這里我們僅簡單介紹一些常用的擴(kuò)展器件。關(guān)于這些器件的詳細(xì)說明可查閱相關(guān)數(shù)據(jù)手冊。

1.8D鎖存器74LS373

74LS373是一種帶三態(tài)門的8D鎖存器,采用20腳DIP封裝,其引腳排列如圖7.5所示。

圖7.574LS373的引腳排列圖圖中:

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

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

·G——使能端。當(dāng)G為“1”時(shí),鎖存器輸出端(1Q~8Q)與輸入端(1D~8D)狀態(tài)相同;當(dāng)G由“1”變?yōu)椤?”時(shí),數(shù)據(jù)輸入鎖存器中。通常G端接到單片機(jī)的ALE端。

·OC——輸出控制端。當(dāng)OC為“0”時(shí),三態(tài)門打開;當(dāng)OC為“1”時(shí),三態(tài)門關(guān)閉,輸出呈高阻。通常OC接地,表示三態(tài)門一直打開。

2.總線驅(qū)動(dòng)器74LS244、74LS245

總線驅(qū)動(dòng)器74LS244和74LS245常用作三態(tài)數(shù)據(jù)緩沖器,其引腳排列如圖7.6所示。

74LS244為單向三態(tài)數(shù)據(jù)緩沖器,內(nèi)部有8個(gè)三態(tài)驅(qū)動(dòng)器,分成兩組,分別由控制端1G和2G控制。74LS245為雙向三態(tài)數(shù)據(jù)緩沖器,有16個(gè)三態(tài)驅(qū)動(dòng)器,每個(gè)方向8個(gè),在控制端G有效(低電平)時(shí),由DIR端控制驅(qū)動(dòng)方向。DIR為“1”時(shí)方向從左到右(輸出允許)、為“0”時(shí)方向從右到左(輸入允許)。

當(dāng)單片機(jī)的P0口需要增加驅(qū)動(dòng)能力時(shí),可根據(jù)實(shí)際情況采用上述兩種總線驅(qū)動(dòng)器。一般而言,74LS245的引腳排列對于電路連線來說較為方便,并且可進(jìn)行雙向驅(qū)動(dòng),故使用較多。

圖7.6總線驅(qū)動(dòng)器的引腳排列圖

3.38譯碼器74LS138

譯碼電路通常采用譯碼芯片,如74LS139(雙24譯碼器)、74LS138(38譯碼器)和74LS154(416譯碼器)等,

圖7.774LS138的引腳排列圖其中74LS138最為常用。74LS138的引腳排列如圖7.7所示。

圖中,G1、2A、2B為3個(gè)控制端,只有G1為“1”,且G2A、G2B均為“0”時(shí),譯碼器才能進(jìn)行譯碼輸出。否則,其8個(gè)輸出端全為高阻狀態(tài)。

具體使用時(shí),G1、G2A與G2B既可直接接+5V端或接地,也可參與地址譯碼,但其譯碼關(guān)系必須為“100”。必要時(shí),也可以通過反相器使輸入信號符合要求。7.2.3編址技術(shù)

MCS51單片機(jī)的地址總線寬度為16位。P2口提供高8位地址(A8~A15),P0口經(jīng)外部鎖存后提供低8位地址(A0~A7)。為了唯一地選中外部某一存儲單元(I/O接口芯片已作為數(shù)據(jù)存儲器的一部分),就要用到單片機(jī)的編址技術(shù)。

所謂編址,就是使用單片機(jī)的地址總線,通過適當(dāng)?shù)倪B接,最終達(dá)到一個(gè)地址唯一對應(yīng)一個(gè)選中單元的目的。

為此,一般必須進(jìn)行兩種選擇:一是必須選擇出該存儲器芯片(或I/O接口芯片),稱為片選;二是必須選擇出該芯片中的某一存儲單元(或I/O接口芯片中的寄存器),稱為字選。相比較而言,字選的問題比較容易解決,一般是將存儲器芯片的全部地址線與系統(tǒng)地址總線最低的相應(yīng)各線一一相連便可,而片選的問題復(fù)雜一些。對地址總線的選擇所涉及到的編址方法我們統(tǒng)稱為編址技術(shù)。編址技術(shù)主要包括兩種編址方式:獨(dú)立編址和統(tǒng)一編址。

1.I/O端口與存儲器統(tǒng)一編址(存儲器映像編址)

在這種編址方式中,將存儲器地址空間的一部分作為I/O端口空間。也就是說,把I/O接口中可以訪問的端口作為存儲器的一個(gè)存儲單元,統(tǒng)一納入存儲器地址空間,為每一個(gè)端口分配一個(gè)存儲器地址,CPU可以用訪問存儲器的方式來訪問I/O端口。

這種編址方式的優(yōu)點(diǎn)是:不用專門設(shè)置訪問端口的指令,用于訪問存儲器的指令都可以用于訪問端口。其缺點(diǎn)是:由于端口占用了存儲器的一部分存儲空間,使得存儲器的實(shí)際存儲空間減少;程序I/O操作不清晰,難以區(qū)分程序中的I/O操作和存儲器操作。在MCS51、MCS96單片機(jī)系統(tǒng)中,多數(shù)采用這種編址方法。

2.I/O端口與存儲器獨(dú)立編址

為了提高存儲器空間的利用率,將存儲器與I/O端口分為兩個(gè)獨(dú)立的地址空間進(jìn)行編址,并設(shè)置了專用的輸入/輸出指令對I/O端口進(jìn)行訪問,如80X86CPU系統(tǒng)就是采用這種編址方式。

I/O端口可采用8位地址進(jìn)行編址,端口地址范圍為0~255(00H~FFH),也可以采用16位地址進(jìn)行編址,端口地址范圍為0~65535(0000H~FFFFH),對I/O端口的操作使用輸入/輸出指令(IN和OUT)。這種編址方式的優(yōu)點(diǎn)是:不占用內(nèi)存空間;使用I/O指令,程序清晰,很容易區(qū)分是存儲器操作還是I/O操作。其缺點(diǎn)是:只能用專門的I/O指令,訪問端口的方法沒有訪問存儲器的方法多。

7.3.1存儲器擴(kuò)展概述

MCS51及其兼容單片機(jī)的地址總線寬度為16位,因此最大可尋址的外部存儲器空間為64KB,地址范圍為0000H~0FFFFH。7.3存儲器的擴(kuò)展

AT89S51單片機(jī)內(nèi)部具有4KB程序存儲器,當(dāng)程序大小超過4KB時(shí),就需要進(jìn)行程序存儲器的擴(kuò)展。另外,其片內(nèi)數(shù)據(jù)存儲器空間只有128B,如果片內(nèi)的數(shù)據(jù)存儲器不夠用,則需進(jìn)行數(shù)據(jù)存儲器的擴(kuò)展。

由于MCS51及其兼容單片機(jī)對片外程序存儲器的數(shù)據(jù)存儲器的操作使用不同的指令和控制信號,所以允許兩者的地址空間重疊,因此片外可擴(kuò)展的程序存儲器與數(shù)據(jù)存儲器最大都分別為64KB。但是,為了配置外圍設(shè)備而需要擴(kuò)展的I/O口與片外數(shù)據(jù)存儲器統(tǒng)一編址占用相同的地址空間,故片外數(shù)據(jù)存儲器與I/O口共同占用64KB的擴(kuò)展空間。存儲器擴(kuò)展的核心問題是存儲器的編址問題,即為存儲單元分配地址問題。存儲器芯片種類繁多,容量不同,引腳數(shù)目也不同,但不論何種存儲器芯片,其引腳都呈三總線結(jié)構(gòu),與單片機(jī)連接都是三總線對接。另外,電源引腳應(yīng)接到對應(yīng)的電源線上。

三總線的連接方法如下:

(1)控制線:對于程序存儲器,一般來說,具有讀操作控制線(OE),它與單片機(jī)的PSEN信號線相連。對于EPROM芯片,其編程狀態(tài)線(READY/BUSY)在單片機(jī)的查詢輸入/輸出方式下,與一根I/O口線相連;在單片機(jī)的中斷工作方式下,與一個(gè)外部中斷信號輸入線相連。

(2)數(shù)據(jù)線:數(shù)據(jù)線的數(shù)目由芯片的字長決定。對于AT89S51單片機(jī)來說,其字長為8位,故需要利用8根數(shù)據(jù)線分別與單片機(jī)的數(shù)據(jù)總線(P0.0~P0.7)按由低位到高位的順序依次相接。

(3)地址線:地址線的數(shù)目由芯片的容量決定,容量(Q)與地址線數(shù)目(N)滿足關(guān)系式:Q=2n。存儲器芯片的地址線與單片機(jī)的地址總線(A0~A15)按由低位到高位的順序依次相接。一般來說,存儲器芯片的地址線數(shù)目總是少于單片機(jī)地址總線的數(shù)目,單片機(jī)剩余的地址線一般作為譯碼線,譯碼輸出與存儲器芯片的片選信號線相接。存儲器芯片有一根或幾根片選信號線。訪問存儲器芯片時(shí),片選信號必須有效,即選中存儲器芯片。片選信號線與單片機(jī)系統(tǒng)的譯碼輸出相接后,就決定了存儲器芯片的地址范圍。存儲器芯片的選擇有兩種方法:線選法和譯碼法。

1)線選法

所謂線選法,就是直接以系統(tǒng)的地址線作為存儲器芯片的片選信號,為此只需把用到的地址線與存儲器芯片的片選端直接相連即可。線選法編址的優(yōu)點(diǎn)是簡單明了,不需要另外增加譯碼電路,成本低。其缺點(diǎn)是浪費(fèi)了大量的存儲空間,因此只適用于存儲容量不需要很大的小規(guī)模單片機(jī)系統(tǒng);在線選法中,還易產(chǎn)生地址重疊的問題;在應(yīng)用線選法產(chǎn)生片選信號時(shí),應(yīng)注意在任意時(shí)刻,系統(tǒng)中只能有一個(gè)片選信號有效,切不可使兩個(gè)或以上的片選信號同時(shí)有效,否則將導(dǎo)致系統(tǒng)混亂而出現(xiàn)數(shù)據(jù)傳輸錯(cuò)誤。

2)譯碼法

所謂譯碼法,就是使用地址譯碼器對系統(tǒng)的片外地址進(jìn)行譯碼,以其譯碼輸出作為存儲器芯片的片選信號。這種方法能有效地利用存儲空間,適用于大容量多芯片存儲器的擴(kuò)展。譯碼有兩種方法:完全譯碼法和部分譯碼法。

(1)完全譯碼。地址譯碼器使用了全部地址線,地址與存儲單元一一對應(yīng),一個(gè)存儲單元只占用一個(gè)地址。對于RAM和I/O容量較大的應(yīng)用系統(tǒng),當(dāng)芯片所需的片選信號多于可利用的地址線時(shí),采用完全地址譯碼法。它將低位地址線作為芯片的片內(nèi)地址(取外部電路中最大的地址線位數(shù)),用譯碼器對高位地址進(jìn)行譯碼,譯出的信號作為片選線。一般采用74LS138作為地址譯碼器。如果譯碼器的輸入端占用3根最高位地址線,則剩余的13根地址線可作為片內(nèi)地址線。因此,譯碼器的8根輸出線分別對應(yīng)于一個(gè)8KB的地址空間。

例7.1全譯碼法舉例。

如圖7.8所示,因6264是8KB的RAM,故需要13根低位地址線(A0~A12)進(jìn)行片內(nèi)尋址,其他3根高位地址線A13~A15經(jīng)38譯碼器后作為外圍芯片的片選線。圖中剩余的3根輸出線Y5~Y7,可供擴(kuò)展3片8KB的RAM或3個(gè)外圍接口電路。采用全譯碼時(shí),不用的地址一般都置0。根據(jù)圖7.8中地址的連接方法,完全地址譯碼如表7.1所示。

圖7.8完全地址譯碼接線圖表7.1完全地址譯碼法譯碼

(2)部分譯碼。地址譯碼器僅使用了部分地址線,地址與存儲單元不是一一對應(yīng)的,而是一個(gè)存儲單元占用多個(gè)地址。如未使用的地址線數(shù)為n,則一個(gè)存儲單元將占用2n個(gè)地址。

使用部分譯碼法和使用線選法一樣,都會(huì)浪費(fèi)大量的存儲空間,使存儲器的實(shí)際容量降低,對于要求存儲器容量較大的微機(jī)系統(tǒng)來說,通常不會(huì)采用部分譯碼。但對于單片機(jī)系統(tǒng)而言,由于實(shí)際需要的存儲器容量大大低于所能提供的容量,并且這兩種方法可以簡化電路,因此使用較多。在設(shè)計(jì)存儲器擴(kuò)展連接或分析擴(kuò)展連接電路以確定存儲器芯片的地址范圍時(shí),常采用地址譯碼關(guān)系圖,即一種用簡單的符號來表示全部地址譯碼關(guān)系的示意圖,如圖7.9所示。假定某存儲器芯片進(jìn)行擴(kuò)展連接時(shí)具有圖5.6所示的譯碼地址線狀態(tài),我們以此為例來分析其擴(kuò)展的地址范圍。

圖7.9地址譯碼關(guān)系圖圖7.9中,與存儲器芯片連接的低11位地址線(A0~A10)的地址變化范圍為全“0”到全“1”。參加譯碼的4根地址線(A11~A14)的狀態(tài)是唯一確定的。A15位地址線未連接,不參與譯碼,故其為“0”或者為“1”均可選中該芯片。

如A15為0,則占用的地址為0010000000000000~0010011111111111,即2000H~27FFH。

如A15為1,則占用的地址為1010000000000000~1010011111111111,即A000H~A7FFH。這樣,該存儲器芯片共占用了兩組地址,這兩組地址在使用中同樣有效。同時(shí),我們還可以知道,該芯片的存儲容量為2KB。

①擴(kuò)展存儲器所需芯片數(shù)目的確定。若所選存儲器芯片字長與單片機(jī)字長一致,則只需擴(kuò)展容量。所需芯片數(shù)目按下式確定:

②若所選存儲器芯片字長與單片機(jī)字長不一致,則不僅需進(jìn)行容量擴(kuò)展,還需進(jìn)行字?jǐn)U展。所需芯片數(shù)目按下式確定:7.3.2存儲器擴(kuò)展應(yīng)考慮的問題

1.地址鎖存器的選用

我們已經(jīng)知道單片機(jī)用P2口作為片外存儲器(包括ROM和RAM及I/O口)地址高8位輸出口,用P0口作為地址低8位的輸出口,并分時(shí)兼作數(shù)據(jù)傳輸線。為了能有效地利用P0口上的地址信息和數(shù)據(jù)信息,需要外接地址鎖存器,將P0口上的地址信息進(jìn)行鎖存。

由訪問外存儲器的時(shí)序可見,ALE信號在下降沿時(shí)P0口輸出的地址有效。因此,在選擇地址鎖存器時(shí),還應(yīng)注意ALE信號與鎖存器選通信號的配合,即應(yīng)選用高電平觸發(fā)或下降沿觸發(fā)的鎖存器,如74LS373。ALE信號直接加到其數(shù)據(jù)輸入端G。74LS273或74LS377為上升沿觸發(fā),因此ALE信號要經(jīng)過一個(gè)反相器才能加到其時(shí)鐘端CLK。

2.MCS51單片機(jī)對存儲容量的要求

MCS51單片機(jī)所需要的存儲容量由實(shí)際單片機(jī)應(yīng)用系統(tǒng)的實(shí)時(shí)數(shù)據(jù)和應(yīng)用程序的數(shù)量來決定,且受所選單片機(jī)尋址能力的限制。存儲器芯片型號決定芯片本身的存儲容量,且每個(gè)芯片單元的二進(jìn)制位數(shù)不一定是8位。因此,設(shè)計(jì)系統(tǒng)所需要的存儲器芯片數(shù)量必須從存儲單元數(shù)量和位數(shù)兩方面同時(shí)滿足系統(tǒng)的要求。例如,某一單片機(jī)應(yīng)用系統(tǒng)需要32KB的RAM存儲器,若采用6264,需4塊;若采用2116,需要16塊。

3.地址線的連接及地址譯碼方式

根據(jù)需要選擇存儲器芯片的型號及數(shù)量。用低位地址線連接存儲器的片內(nèi)地址輸入端,用其余地址線作為存儲器的片選信號。在MCS51單片機(jī)的外部存儲器設(shè)計(jì)中,片內(nèi)地址線通常直接或經(jīng)過外部地址鎖存器與對應(yīng)存儲器地址線相連;片選地址線通常和存儲器芯片的片選端直接相連或經(jīng)過地址譯碼器輸出后和它相連,也可以懸空不用。

4.工作速度匹配

為了使MCS51單片機(jī)和外部存儲器同步而可靠地工作,MCS51單片機(jī)的訪問時(shí)間必須大于所用外部儲器的最大存取時(shí)間。例如,若8031的主脈沖為6MHz,則它的訪存時(shí)間至少大于400ns,故所選存儲器芯片的最大存取時(shí)間必須小于這個(gè)數(shù)。7.3.3程序存儲器的擴(kuò)展

在單片機(jī)應(yīng)用系統(tǒng)的擴(kuò)展中,經(jīng)常要進(jìn)行ROM的擴(kuò)展。其擴(kuò)展方法較為簡單,這是由單片機(jī)優(yōu)良的擴(kuò)展性能決定的。單片機(jī)的地址總線為16位,擴(kuò)展的片外ROM最大容量為64KB,地址為0000H~0FFFFH。擴(kuò)展的片外RAM的最大容量也為64KB,地址也為0000H~0FFFFH。由于單片機(jī)采用不同的控制信號和指令(CPU對ROM的讀操作由PSEN控制,指令用MOVC類;CPU對RAM的讀操作用RD控制,指令用MOVX類),因此盡管ROM與RAM的地址是重疊的,也不會(huì)發(fā)生混亂。另外,單片機(jī)對片內(nèi)和片外ROM的訪問使用相同的指令,兩者的選擇是由硬件實(shí)現(xiàn)的。當(dāng)EA=0時(shí),選擇片外ROM;當(dāng)EA=1時(shí),選擇片內(nèi)ROM。

在單片機(jī)應(yīng)用系統(tǒng)中,片外ROM和RAM共享數(shù)據(jù)總線和地址總線。訪問片外ROM的時(shí)序如圖7.10所示。

由圖7.10可見,地址鎖存控制信號ALE上升為高電平后,P2口輸出高8位地址PCH,P0口輸出低8位地址PCL;ALE下降為低電平后,P2口信息保持不變,而P0口將用來讀取片外ROM中的指令。因此,低8位地址必須在ALE降為低電平之前由外部地址鎖存器鎖存起來。在PSEN輸出負(fù)跳變選通片外ROM后,P0口轉(zhuǎn)為輸入狀態(tài),讀入片外ROM的指令字節(jié)。

圖7.10片外ROM的操作時(shí)序從圖7.10中還可以看出,單片機(jī)在訪問片外ROM的一個(gè)機(jī)器周期內(nèi),信號ALE出現(xiàn)兩次(正脈沖),ROM選通信號PSEN也兩次有效。這說明在一個(gè)機(jī)器周期內(nèi),CPU兩次訪問片外ROM,即在一個(gè)機(jī)器周期內(nèi)可以處理兩個(gè)字節(jié)的指令代碼。所以,在指令系統(tǒng)中有很多單周期雙字節(jié)指令。

單片機(jī)系統(tǒng)片外ROM擴(kuò)展通常使用EPROM芯片。常用的EPROM芯片有2732、2764、27128、27256、27512等。它們的容量和引腳都有區(qū)別,但用法類似。這幾種芯片的引腳定義如圖7.11所示。

圖7.11幾種EPROM芯片的引腳定義圖7.11中相關(guān)引腳的功能如下:

·A0~A15——地址線,與單片機(jī)的地址總線對應(yīng)相連。

·Q0~Q7——數(shù)據(jù)線,與單片機(jī)的數(shù)據(jù)總線對應(yīng)相連。

·CE——片選信號,低電平有效。

·OE——輸出允許,當(dāng)OE=0時(shí),輸出緩沖器打開,被尋址單元的內(nèi)容才能被讀出。

·VPP——編程電源,當(dāng)芯片編程時(shí),該引腳加編程電壓(不同廠家的芯片,其編程電壓不一樣);正常使用時(shí),該引腳加+5V電源。

·PGM——編程脈沖輸入端。使用時(shí),先輸入需編程的單元地址,在數(shù)據(jù)線上加上要寫入的數(shù)據(jù),使CE保持低電平,OE為高電平。當(dāng)上述信號穩(wěn)定后,在PGM端加上(50±5)ms的負(fù)脈沖,即可將1個(gè)字節(jié)的數(shù)據(jù)寫到相應(yīng)的地址單元中。

·NC——懸空,在2764中,該引腳不用。

下面我們通過一個(gè)例子來簡單說明單片機(jī)擴(kuò)展程序存儲器的具體方法。例7.2要求用2764芯片來擴(kuò)展AT89S51的片外程序存儲器空間,采用完全譯碼法,分配的地址范圍為0000H~3FFFH。

分析:本例采用完全譯碼法,即所有地址線全部連接,每個(gè)單元只占用一個(gè)地址。

①確定片數(shù)。題目要求的地址范圍為16KB,而一片2764的地址容量為8KB,顯然需要兩片2764。

也可按照7.3.1節(jié)所述的公式計(jì)算:

②分配地址范圍。根據(jù)①的分析,兩片2764應(yīng)平均分擔(dān)16KB的地址,每片8KB,故第1片2764所占用的地址范圍為0000H~1FFFH;第2片2764所占用的地址范圍為2000H~3FFFH。

③畫出地址譯碼關(guān)系圖。

圖中打“×”部分為片內(nèi)譯碼。對于2764來說有13位,其地址變化范圍為從全“0”變到全“1”,其余部分為片外譯碼。

④設(shè)計(jì)片外譯碼電路。片外譯碼電路可采用74LS138構(gòu)成。片外譯碼只有三根線,P2.7、P2.6和P2.5,分別接至譯碼器的C、B和A輸入端。控制端G1、G2A和G2B不參與譯碼,可接成常有效。當(dāng)P2.7P2.6P2.5=000時(shí),輸出Y0有效,選中第1片2764;當(dāng)P2.7P2.6P2.5=001時(shí),輸出Y1有效,選中第2片2764。

⑤畫出存儲器擴(kuò)展連接圖(見圖7.12)。

圖7.12采用地址譯碼器擴(kuò)展存儲器圖7.12中,74LS138只用了兩個(gè)譯碼輸出端,未用的輸出端可以保留,以便于今后系統(tǒng)升級需要。

根據(jù)實(shí)際的應(yīng)用系統(tǒng)容量要求選擇EPROM芯片時(shí),應(yīng)用系統(tǒng)電路應(yīng)盡可能簡化。在滿足容量要求的前提下,應(yīng)盡可能選擇大容量、高集成度的芯片,以減少芯片使用數(shù)量,最后減輕總線的負(fù)擔(dān)。7.3.4數(shù)據(jù)存儲器的擴(kuò)展

由于AT89S51單片機(jī)片內(nèi)RAM僅128B,因此系統(tǒng)要求較大容量的數(shù)據(jù)存儲時(shí),就需要擴(kuò)展片外RAM,最大可擴(kuò)展64KB。

擴(kuò)展RAM和擴(kuò)展ROM類似,由P2口提供高8位地址,P0口分時(shí)提供低8位地址和8位雙向數(shù)據(jù)。片外RAM的讀和寫由單片機(jī)的RD和WR信號控制。所以,雖然與ROM的地址重疊,但不會(huì)發(fā)生混亂。CPU對擴(kuò)展的片外RAM進(jìn)行讀和寫的操作時(shí)序如圖7.13、7.14所示。

圖7.13片外RAM讀時(shí)序

圖7.14片外RAM寫時(shí)序由圖7.13、7.14可知,P2口輸出片外RAM的高8位地址(DPH),P0口輸出片外RAM的低8位地址(DPL),并由ALE的下降沿鎖存在地址鎖存器中。若接下來是讀操作,則P0口變?yōu)閿?shù)據(jù)輸入方式,在讀信號RD有效時(shí),片外RAM中相應(yīng)單元的內(nèi)容出現(xiàn)在P0口上,由CPU讀入累加器A中;若接下來是寫操作,則P0口變?yōu)閿?shù)據(jù)輸出方式,在寫信號WR有效時(shí),將P0口上出現(xiàn)的累加器A中的內(nèi)容寫入到相應(yīng)的片外RAM單元中。單片機(jī)通過16根地址線可分別對片外(最大)64KB的ROM、RAM尋址。在對片外ROM操作的整個(gè)取指令周期中,PSEN為低電平,以選通片外ROM,而RD或WR始終為高電平,此時(shí)片外RAM不能進(jìn)行讀/寫操作;在對片外RAM操作的周期中,RD或WR為低電平,PSEN為高電平,所以對片外ROM不能進(jìn)行讀操作,只能對片外RAM進(jìn)行讀/寫操作。

單片機(jī)系統(tǒng)的片外RAM擴(kuò)展通常使用SRAM芯片。常用的SRAM芯片有6264、62128、62256等。與EPROM類似,它們的容量和引腳數(shù)都不相同,但用法類似。這幾種芯片的引腳定義如圖7.15所示。

圖7.15幾種RAM芯片的引腳定義圖7.15中相關(guān)引腳的功能如下:

·A0~A14——地址輸入線。

·D0~D7——三態(tài)雙向數(shù)據(jù)線。

·CE——片選信號輸入線,低電平有效。

·OE——讀選通信號輸入線,低電平有效。

·WE——寫選通信號輸入線,低電平有效。

·CS——6264的片選信號輸入線,高電平有效,可用于掉電保護(hù)。

用6264擴(kuò)展8KB的RAM的電路圖如圖7.16所示。

圖7.166264的擴(kuò)展電路圖7.16中,利用P2.7進(jìn)行片選信號的選擇。當(dāng)P2.7為低電平時(shí),6264被選中,因此片外RAM的地址范圍為0000H~IFFFH。因?yàn)橹挥幸黄?264,所以其片選線CS接高電平,保持一直有效狀態(tài),并可以進(jìn)行掉電保護(hù)。

此外,存儲器擴(kuò)展還經(jīng)常用到E2PROM。E2PROM具有ROM的非易失性,同時(shí)又具有RAM的隨機(jī)存取特性,每個(gè)單元可以重復(fù)進(jìn)行1萬次改寫,保留信息的時(shí)間長達(dá)20年。所以,E2PROM既可以作為ROM,也可以作為RAM。

E2PROM對硬件電路無特殊要求,操作簡便。早期的E2PROM需依靠片外高壓電源(約20V)進(jìn)行擦寫,現(xiàn)在大多數(shù)的E2PROM已將高壓電源集成在芯片內(nèi),可以直接使用單片機(jī)系統(tǒng)的5V電源在線擦除和改寫。

利用E2PROM的特點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中可以作為RAM進(jìn)行擴(kuò)展。E2PROM作為RAM時(shí),使用RAM的地址、控制信號及操作指令。與RAM相比,其擦寫時(shí)間較長,故在應(yīng)用中,應(yīng)根據(jù)芯片的要求采用等待、中斷或查詢的方法來滿足擦寫時(shí)間的要求(一般為9~15ms)。作為RAM使用時(shí),E2PROM的數(shù)據(jù)可直接與單片機(jī)數(shù)據(jù)總線相連,也可以通過擴(kuò)展I/O與之相連。E2PROM的數(shù)據(jù)改寫次數(shù)有限,且寫入速度慢,不宜用于改寫頻繁、存取速度高的場合。常用的E2PROM芯片有2817、2864等。在芯片的引腳設(shè)計(jì)上,8KB的E2PROM2864與同容量的EPROM2764和SRAM6264是兼容的,給用戶的硬件設(shè)計(jì)和調(diào)試帶來了極大的方便。不同型號的E2PROM的引腳說明及具體的擴(kuò)展電路參見相關(guān)資料。

7.4.1I/O接口電路的作用

一個(gè)完整的計(jì)算機(jī)系統(tǒng)除了CPU、存儲器外,還必須有外部設(shè)備。計(jì)算機(jī)系統(tǒng)中共有兩類數(shù)據(jù)傳送操作:一類是CPU和存儲器之間的數(shù)據(jù)讀/寫操作;另一類是CPU和外部設(shè)備之間的數(shù)據(jù)輸入/輸出(I/O)操作。CPU和存儲器之間的數(shù)據(jù)讀/寫操作在前面章節(jié)已敘述,這里不再贅述。此處,討論CPU和外部設(shè)備之間的I/O操作。7.4I/O接口的擴(kuò)展及應(yīng)用計(jì)算機(jī)通過輸入/輸出設(shè)備與外界進(jìn)行通信。計(jì)算機(jī)所用的數(shù)據(jù)以及現(xiàn)場采集的各種信息都要通過輸入設(shè)備送到計(jì)算機(jī)進(jìn)行處理;而處理的結(jié)果和計(jì)算機(jī)產(chǎn)生的各種控制信號又需要通過輸出設(shè)備送到外部設(shè)備。一般來說,計(jì)算機(jī)的三條總線并不直接和外部設(shè)備相連接,而是通過各種接口電路和外部設(shè)備連接。在單片機(jī)內(nèi)部本身就集成有一定數(shù)量的I/O接口電路,可以滿足一些簡單場合外部設(shè)備的需要。但對于一些復(fù)雜的系統(tǒng),單片機(jī)內(nèi)部的I/O不夠用時(shí),就必須對I/O接口進(jìn)行擴(kuò)展了。

單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)在某種意義上可以認(rèn)為是I/O接口芯片的選配和驅(qū)動(dòng)軟件的設(shè)計(jì)。

I/O接口的功能主要有以下幾點(diǎn):

1.單片機(jī)輸出的數(shù)據(jù)鎖存

對數(shù)據(jù)的處理速度而言,單片機(jī)往往要比I/O設(shè)備快得多。因此,單片機(jī)對I/O設(shè)備的訪問時(shí)間遠(yuǎn)小于I/O設(shè)備對數(shù)據(jù)的處理時(shí)間。I/O接口的數(shù)據(jù)端口要鎖存數(shù)據(jù)線上瞬間出現(xiàn)的數(shù)據(jù),以解決單片機(jī)與I/O設(shè)備的速度協(xié)調(diào)問題。

2.對輸入設(shè)備的三態(tài)緩沖

單片機(jī)系統(tǒng)的數(shù)據(jù)總線是雙向總線,是所有I/O設(shè)備分時(shí)復(fù)用的。設(shè)備傳送數(shù)據(jù)時(shí)要占用總線,不傳送數(shù)據(jù)時(shí)必須對總線呈高阻狀態(tài)。利用接口的三態(tài)緩沖功能,可以實(shí)現(xiàn)I/O設(shè)備與總線的隔離,便于其他設(shè)備的總線掛接。

3.信號轉(zhuǎn)換

由于I/O設(shè)備的多樣性,必須利用I/O接口實(shí)現(xiàn)單片機(jī)與I/O設(shè)備間信號類型(模擬或數(shù)字、電流或電壓)、信號電平(高或低、正或負(fù))、信號格式(并行或串行)等的轉(zhuǎn)換。

4.時(shí)序協(xié)調(diào)

單片機(jī)輸入數(shù)據(jù)時(shí),只有在確定輸入設(shè)備已向I/O接口提供了有效的數(shù)據(jù)后,才能進(jìn)行讀操作。輸出數(shù)據(jù)時(shí),只有在確定輸出設(shè)備已做好了接收數(shù)據(jù)的準(zhǔn)備后,才能進(jìn)行寫操作。不同的I/O設(shè)備的定時(shí)與控制邏輯是不同的,與CPU的時(shí)序往往也是不一致的,這就需要I/O接口進(jìn)行時(shí)序的協(xié)調(diào)。7.4.2接口與端口

“接口”的英文是“Interface”,具有界面、相互聯(lián)系等含義。接口這個(gè)術(shù)語在計(jì)算機(jī)領(lǐng)域中應(yīng)用十分廣泛。本章所述的接口特指計(jì)算機(jī)與外設(shè)之間在數(shù)據(jù)傳送方面的聯(lián)系。其功能主要是通過電路來實(shí)現(xiàn)的,因此也稱為接口電路,簡稱接口。

為了實(shí)現(xiàn)接口電路在數(shù)據(jù)I/O傳送中的界面功能,在接口電路中應(yīng)該包含數(shù)據(jù)寄存器、狀態(tài)寄存器和命令寄存器,以保存輸入/輸出數(shù)據(jù)、狀態(tài)信息和來自CPU的有關(guān)數(shù)據(jù)傳送的控制命令。由于在數(shù)據(jù)的I/O傳送中,CPU需要對這些寄存器進(jìn)行讀/寫操作,因此這些寄存器都是可讀/寫的編址寄存器,對它們像存儲單元一樣進(jìn)行編址。我們通常把接口電路中這些已編址并能進(jìn)行讀或?qū)懖僮鞯募拇嫫鞣Q為端口(Port),簡稱口。

一個(gè)接口電路中可能包含有多個(gè)端口,例如保存數(shù)據(jù)的數(shù)據(jù)口、保存狀態(tài)的狀態(tài)口和保存命令的命令口等,因此一個(gè)接口電路對應(yīng)著多個(gè)口地址。口是供用戶使用的,用戶在編寫有關(guān)數(shù)據(jù)輸入/輸出程序時(shí),可能會(huì)用到接口電路中的各個(gè)口,因此要知道它們的設(shè)置和編址情況。

從應(yīng)用的角度來看,接口問題的重點(diǎn)是如何正確地使用端口。7.4.3I/O的傳送方式

不同的I/O設(shè)備需用不同的數(shù)據(jù)傳送方式。在計(jì)算機(jī)系統(tǒng)中,實(shí)現(xiàn)數(shù)據(jù)的輸入/輸出傳送共有四種控制方式:無條件傳送方式、查詢傳送方式、中斷傳送方式和直接存儲器存取(DMA)方式。CPU可以用這些方式與I/O設(shè)備進(jìn)行數(shù)據(jù)交換。

1.無條件傳送方式

無條件傳送也稱為同步程序傳送,類似于CPU和存儲器之間的數(shù)據(jù)傳送。這種傳送方式不測試I/O設(shè)備的狀態(tài),只在規(guī)定的時(shí)間到來時(shí),單片機(jī)用輸入或輸出指令來進(jìn)行數(shù)據(jù)的輸入或輸出,即通過程序來定時(shí)同步傳送數(shù)據(jù)。無條件傳送方式適用于以下兩類外設(shè)的輸入/輸出:

(1)外設(shè)的工作速度非???,足以和CPU同步工作。例如,當(dāng)與計(jì)算機(jī)的數(shù)/模轉(zhuǎn)換器DAC之間進(jìn)行數(shù)據(jù)傳送時(shí),由于DAC并行工作,速度很快,因此CPU可以隨時(shí)向其傳送數(shù)據(jù)。

(2)具有不變的或變化緩慢的數(shù)據(jù)信號的外設(shè)。例如,機(jī)械開關(guān)、指示燈、發(fā)光二極管、數(shù)碼管等,可以認(rèn)為它們是隨時(shí)為輸入/輸出數(shù)據(jù)做好準(zhǔn)備的。

2.查詢傳送方式

查詢傳送又稱為條件傳送,即數(shù)據(jù)的傳送是有條件的。單片機(jī)在執(zhí)行輸入/輸出指令前,先要檢測I/O接口的狀態(tài)及端口的狀態(tài),以了解外設(shè)是否已為數(shù)據(jù)輸入/輸出做好了準(zhǔn)備。只有在確認(rèn)外設(shè)已“準(zhǔn)備就緒”的情況下,CPU才能執(zhí)行數(shù)據(jù)的輸入/輸出操作。通常把通過程序?qū)ν庠O(shè)狀態(tài)的檢測稱為“查詢”,所以這種方式又稱為程序查詢方式。查詢傳送方式與前述無條件的同步傳送不同,它是有條件的異步傳送。為了實(shí)現(xiàn)查詢方式的數(shù)據(jù)傳送,需要由接口電路提供外設(shè)狀態(tài),并以軟件方法進(jìn)行狀態(tài)測試,因此這是一種軟、硬件相結(jié)合的數(shù)據(jù)傳送方式。

當(dāng)單片機(jī)工作任務(wù)較輕時(shí),應(yīng)用查詢傳送方式可以較好地協(xié)調(diào)中、低速I/O設(shè)備與單片機(jī)之間的工作,并且其電路簡單、通用性強(qiáng),查詢軟件的編制也不復(fù)雜,因此適用于各種外部設(shè)備的數(shù)據(jù)傳送。其主要缺點(diǎn)是:單片機(jī)必須執(zhí)行程序循環(huán)等待,不斷測試I/O設(shè)備的狀態(tài),直到I/O設(shè)備為數(shù)據(jù)傳送準(zhǔn)備就緒為止。在等待過程中,由于CPU不能進(jìn)行其操作,因此會(huì)浪費(fèi)大量的等待時(shí)間,工作效率比較低,一般只適用于規(guī)模比較小的單片機(jī)系統(tǒng)。

3.中斷傳送方式

由于在查詢傳送方式中,CPU主動(dòng)要求傳送數(shù)據(jù),而它又不能控制外設(shè)的工作速度,因此只能用等待的方法來解決CPU和外設(shè)工作速度的匹配問題。而在一般的控制系統(tǒng)中,往往有大量的I/O設(shè)備,有些I/O設(shè)備還要求單片機(jī)為它們進(jìn)行實(shí)時(shí)服務(wù)。如果采用查詢傳送方式,除浪費(fèi)等待時(shí)間外,還很難及時(shí)地響應(yīng)I/O設(shè)備的請求。這時(shí),可以采用中斷傳送方式。

這里所說的中斷,是指I/O設(shè)備暫時(shí)停止單片機(jī)當(dāng)前正在執(zhí)行的任務(wù)(主程序),轉(zhuǎn)去執(zhí)行該I/O設(shè)備的任務(wù)(中斷服務(wù)程序)。一旦中斷任務(wù)結(jié)束,再從原來停止作業(yè)的地方繼續(xù)執(zhí)行任務(wù)。由于CPU的工作速度很快,傳送一次數(shù)據(jù)所需的時(shí)間很短,對外設(shè)來講,似乎是對CPU發(fā)出請求的瞬間,CPU就實(shí)現(xiàn)了相應(yīng)功能;對主程序來講,雖然中斷了一個(gè)瞬間,但由于時(shí)間很短,也不會(huì)有什么影響。

中斷傳送方式完全取消了CPU在查詢傳送方式中的等待過程,大大提高了CPU的工作效率。在高速計(jì)算機(jī)系統(tǒng)中,由于采用中斷傳送方式,可以將多個(gè)外設(shè)同時(shí)接到CPU上去,實(shí)現(xiàn)單片機(jī)與外設(shè)的并行工作。

4.直接存儲器存取(DMA)方式

利用中斷傳送方式,雖然可以提高單片機(jī)的工作效率,但它仍需由單片機(jī)通過執(zhí)行程序來傳送數(shù)據(jù),并在處理中斷時(shí),還要進(jìn)行“保護(hù)現(xiàn)場”和“恢復(fù)現(xiàn)場”等操作,而這些操作與數(shù)據(jù)傳送沒有直接的關(guān)系,卻依然要占用一定的時(shí)間,這對于高速外設(shè)以及成組數(shù)據(jù)交換的場合還是顯得較慢。

DMA(DirectMemoryAccess)方式是一種采用專用硬件電路執(zhí)行輸入/輸出的傳送方式,它使I/O設(shè)備可以直接與內(nèi)存進(jìn)行高速的數(shù)據(jù)傳送,而不必經(jīng)過CPU執(zhí)行傳送程序,也不必進(jìn)行保護(hù)現(xiàn)場之類的額外操作,就可實(shí)現(xiàn)對存儲器的直接存取。這種傳送方式通常采用專門的硬件,即DMA控制器,如Intel公司的8257和Motorola公司的MC6844等。也有一些單片機(jī)在片內(nèi)集成了DMA通道,如80C152J或83CC152J等,在需要時(shí)可供選用。7.4.4用TTL芯片擴(kuò)展I/O口

只要根據(jù)“輸入三態(tài),輸出鎖存”的原則選擇74系列的TTL電路或MOS電路,就能組成簡單的擴(kuò)展電路,如輸出常采用鎖存器,如74LS273、74LS373;輸入常采用緩沖器,如74LS244、74LS245。注意P0、P2的負(fù)載能力,如果有必要,可增加總線驅(qū)動(dòng)器,如74LS244(單向)、74LS245(雙向)(芯片引腳見圖7.6)。

圖7.17簡單I/O口擴(kuò)展圖圖7.17中,74LS273是8位并行I/O鎖存器,用于驅(qū)動(dòng)發(fā)光二極管。74LS244是8位并行I/O緩沖器,用于輸入外部開關(guān)狀態(tài)??梢宰⒁獾剑瑑蓚€(gè)芯片都是用P2.0作片選使能端,因此兩個(gè)芯片的有效端口地址相同(0FEFFH)。但它們分別經(jīng)或門連到片選引腳,因此只有讀操作時(shí),74LS244片選有效;只有寫操作時(shí),74LS273片選有效。可將開關(guān)狀態(tài)讀入,然后用對應(yīng)的指示燈反映出來。程序?yàn)椋?/p>

MOVDPTR,#0FEFEH;送入外部端口地址

MOVXA,@DPTR;讀入開關(guān)狀態(tài)

MOVX@DPTR,A;根據(jù)開關(guān)狀態(tài),驅(qū)動(dòng)發(fā)光二極管7.4.5用可編程芯片擴(kuò)展I/O口

可供單片機(jī)進(jìn)行I/O口擴(kuò)展的接口芯片很多,但按其所能實(shí)現(xiàn)的擴(kuò)展功能可分為兩類:一類是只能實(shí)現(xiàn)簡單擴(kuò)展的中、小規(guī)模集成電路芯片;另一類是能實(shí)現(xiàn)可編程I/O口擴(kuò)展的可編程接口芯片??删幊蘄/O口擴(kuò)展的并行接口芯片功能較強(qiáng),其特點(diǎn)在于工作方式的確定和改變是可以用程序?qū)崿F(xiàn)。對復(fù)雜I/O口的擴(kuò)展,如鍵盤、顯示器、串行口、A/D與D/A轉(zhuǎn)換等的擴(kuò)展,可采用可編程接口芯片及其它專用芯片。在單片機(jī)I/O口擴(kuò)展中常常用的可編程接口芯片有可編程通用并行接口芯片8255A、帶RAM和定時(shí)/計(jì)數(shù)器的可編程并行接口芯片8155等。接口芯片8255A是Intel公司生產(chǎn)的標(biāo)準(zhǔn)外圍接口電路。它采用NMOS工藝制造,用單一+5V電源供電,具有40條引腳,采用雙列直插式封裝。它有A、B、C三個(gè)端口共24條I/O線,可以通過編程的方法來設(shè)定端口的各種I/O功能。由于它功能較強(qiáng),又能方便地與各種微機(jī)系統(tǒng)相接,而且在連接外部設(shè)備時(shí),通常不需要再附加外部電路,因而得到了廣泛的應(yīng)用。1.8255A的內(nèi)部結(jié)構(gòu)8255A的內(nèi)部結(jié)構(gòu)如圖7.18所示。它由以下幾部分組成:

圖7.188255A的內(nèi)部結(jié)構(gòu)圖

(1)數(shù)據(jù)端口A、B、C。8255A有三個(gè)8位數(shù)據(jù)端口,即端口A、端口B和端口C。編程人員可以通過軟件將它們分別作為輸入端口或輸出端口,這三個(gè)端口在不同的工作方式下有不同的功能及特點(diǎn),如表7.2所示。表7.28255A端口功能表

(2)A組和B組控制電路。這是兩組根據(jù)CPU的命令字控制8255A工作方式的電路。它們的控制寄存器先接收CPU送出的命令字,然后根據(jù)命令字分別決定兩組的工作方式,也可根據(jù)CPU的命令字對端口C的每一位實(shí)現(xiàn)按位“復(fù)位”或“置位”。其中:

·A組控制電路控制端口A和端口C的上半部(PC7~PC4)。

·B組控制電路控制端口B和端口C的下半部(PC3~PC0)。

(3)數(shù)據(jù)總線緩沖器。這是一個(gè)三態(tài)雙向的8位數(shù)據(jù)緩沖器,可直接與系統(tǒng)的數(shù)據(jù)總線相連,以實(shí)現(xiàn)CPU和8255A之間的數(shù)據(jù)、控制字的狀態(tài)信息等的傳送。

圖7.198255A的引腳圖

(4)讀/寫控制邏輯電路。讀/寫控制邏輯電路負(fù)責(zé)管理8255A的數(shù)據(jù)傳輸過程。它接收CS和來自系統(tǒng)地址總線的信號A1、A0和控制總線的信號RESET、WR、RD,將這些信號進(jìn)行組合后,得到對A、B兩組控制部件的控制命令,并將命令發(fā)送給這兩個(gè)部件,以完成對數(shù)據(jù)、狀態(tài)信息和控制信息的傳輸。

2.8255A的芯片引腳

8255A的引腳排列如圖7.19所示。除電源(+5V)和地外,其他信號可以分為兩組:

1)與外設(shè)相連的引腳

·PA7~PA0——A口數(shù)據(jù)線。

·PB7~PB0——B口數(shù)據(jù)線。

·PC7~PC0——C口數(shù)據(jù)線。

2)與CPU相連的引腳

·D7~D0——8255A的數(shù)據(jù)線,和系統(tǒng)數(shù)據(jù)總線相連。

·RESET——復(fù)位信號,高電平有效。當(dāng)RESET有效時(shí),所有內(nèi)部寄存器都被清除,同時(shí),三個(gè)數(shù)據(jù)端口被自動(dòng)設(shè)為輸入方式。

·CS——片選信號,低電平有效。只有當(dāng)其有效時(shí),芯片才被選中,允許8255A與CPU交換信息。

·RD——讀信號,低電平有效。當(dāng)RD有效時(shí),CPU可以從8255A中讀取輸入數(shù)據(jù)。

·WR——寫信號,低電平有效。當(dāng)WR有效時(shí),CPU可以往8255A中寫入控制字或數(shù)據(jù)。

·A1、A0——端口選擇信號。8255A內(nèi)部有三個(gè)數(shù)據(jù)端口和一個(gè)控制端口,當(dāng)A1A0=00時(shí),選中端口A;當(dāng)A1A0=01時(shí),選中端口B;當(dāng)A1A0=10時(shí),選中端口C;當(dāng)A1A0=11時(shí),選中控制端口。

A1、A0和RD、WR及CS組合所實(shí)現(xiàn)的各種功能如表7.3所示。表7.38255A端口選擇表

8255A有三種工作方式,即方式0、方式1和方式2,這些工作方式可用軟件編程來設(shè)定。

1)方式0(基本輸入/輸出方式)

這種工作方式不需要任何選通信號,A口、B口及C口的高4位和低4位都可以設(shè)定輸入或輸出。作為輸出口時(shí),輸出的數(shù)據(jù)均被鎖存;作為輸入口時(shí),A口的數(shù)據(jù)能鎖存,B口和C口的數(shù)據(jù)不能鎖存。3.8255A的工作方式在方式0下,外設(shè)隨時(shí)可提供數(shù)據(jù)給微處理器,而外設(shè)也隨時(shí)可接收微處理器送出的數(shù)據(jù),數(shù)據(jù)傳送前無需“選通”和“狀態(tài)”信號,也不必等待中斷請求信號,只要RD或WR信號有效,就能進(jìn)行數(shù)據(jù)傳送。另外,C口的上4位、下4位在工作方式控制字中可以分別編程。但應(yīng)注意C口的數(shù)據(jù)傳送是以字節(jié)為單位進(jìn)行的,不能單獨(dú)地讀/寫上4位或者下4位。使用時(shí)應(yīng)注意,不要在寫一個(gè)4位口時(shí),使另一個(gè)4位口的數(shù)據(jù)發(fā)生變化,為此編程時(shí)需加屏蔽位。

2)方式1(選通輸入/輸出方式)

在這種工作方式下,A口可由編程設(shè)定為輸入口或輸出口,C口的三位用來作為輸入/輸出操作的控制和同步信號,B口同樣可由編程設(shè)定為輸入口或輸出口,C口的另三位用來作為輸入/輸出操作的控制和同步信號。在方式1下,A口和B口的輸入/輸出數(shù)據(jù)都能被鎖存。

為了便于闡述問題,我們以A口、B口均為輸入或均為輸出加以說明。

(1)方式1下,A口、B口均為輸入。在方式1下,A口和B口均工作在輸入狀態(tài)時(shí),需利用C口的6條線作為控制和狀態(tài)信號線,其定義如圖7.20(a)所示。

圖7.20方式1下的信號定義

C口所提供的用于輸入的聯(lián)絡(luò)信號有:

·STB(Strobe)——選通脈沖信號(輸入),低電平有效。當(dāng)外設(shè)送來STB信號時(shí),輸入數(shù)據(jù)裝入8255A的輸入鎖存器。

·IBF(InputBufferFull)——輸入緩沖器滿信號(輸出),高電平有效。該信號有效時(shí),表明已有一個(gè)有效的外設(shè)數(shù)據(jù)鎖存于8255A的口鎖存器中,尚未被CPU取走,暫時(shí)不能向接口輸入數(shù)據(jù),這是一個(gè)狀態(tài)信號。

·INTR(InterruptRequest)——中斷請求信號(輸出),高電平有效。當(dāng)IBF為高、STB信號由低變(后沿)時(shí),該信號有效,向CPU發(fā)出中斷請求。

圖7.21方式1下的輸入時(shí)序數(shù)據(jù)輸入過程為:當(dāng)外設(shè)準(zhǔn)備好數(shù)據(jù)輸入后,發(fā)出STB信號,輸入的數(shù)據(jù)送入緩沖器。然后IBF信號有效(變?yōu)楦唠娖?。若使用查詢方式,則IBF作為狀態(tài)信號供查詢使用:若使用中斷方式,當(dāng)STB信號由低變高時(shí),產(chǎn)生INTR信號,向單片機(jī)發(fā)出中斷請求。單片機(jī)在響應(yīng)中斷后,執(zhí)行中斷服務(wù)程序時(shí)產(chǎn)生RD信號,將數(shù)據(jù)讀入CPU中,RD信號的下降沿使INTR信號變低(失效),而RD信號的上升沿使IBF信號變低(失效),以此通知外設(shè)準(zhǔn)備下一次數(shù)據(jù)輸入。數(shù)據(jù)輸入操作的時(shí)序關(guān)系如圖7.21所示。

(2)方式1下,A口、B口均為輸出。與輸入時(shí)一樣,也要利用C口的6根信號線,其定義如圖7.20(b)所示。用于輸出的聯(lián)絡(luò)信號有:

·ACK(Acknowledge)——外設(shè)響應(yīng)信號(輸入),低電平有效。當(dāng)外設(shè)取走CPU輸出數(shù)據(jù)后,向8255A發(fā)回的響應(yīng)信號,并使OBF為高電平(失效)。

·OBF(OutputBufferFull)——輸出緩沖器滿信號(輸出),低電平有效。當(dāng)單片機(jī)把輸出數(shù)據(jù)寫入8255A鎖存器后,該信號有效,并送去啟動(dòng)外設(shè)以接收數(shù)據(jù)。

·INTR——中斷請求信號(輸出),高電平有效。當(dāng)外設(shè)處理完一組數(shù)據(jù)后,ACK信號變低。當(dāng)OBF信號變高,ACK信號又變高后,使INTR有效,并向單片機(jī)申請中斷,進(jìn)入下一次輸出過程。

圖7.22方式1下的輸出時(shí)序數(shù)據(jù)輸出過程為:外設(shè)接收并處理完一組數(shù)據(jù)后,發(fā)回ACK信號。該信號使OBF變高,表明輸出緩沖器已空(實(shí)際上是表明輸出緩沖器中的數(shù)據(jù)已無保留的必要)。若使用查詢方式,則OBF可作為狀態(tài)信號供查詢使用;若使用中斷方式,則當(dāng)ACK信號結(jié)束時(shí),INTR有效,向單片機(jī)發(fā)出中斷請求。在中斷服務(wù)過程中,把下一個(gè)輸出數(shù)據(jù)寫入8255A的輸出緩沖器。寫入后,OBF有效,表明輸出數(shù)據(jù)已到,并以此信號啟動(dòng)外設(shè)工作,取走并處理8255A中的輸出數(shù)據(jù)。數(shù)據(jù)輸出操作的時(shí)序關(guān)系如圖7.22所示。應(yīng)當(dāng)指出,當(dāng)8255A的A口和B口同時(shí)為方式1的輸入或輸出時(shí),需使用C口的6條線,C口剩下的2條線還可以用程序來指定數(shù)據(jù)的傳送方向是輸入還是輸出,而且也可對它們實(shí)現(xiàn)置位或復(fù)位操作。當(dāng)只有一個(gè)口工作在方式1時(shí),則C口剩下的5條線也可按上述情況工作。

3)方式2(雙向數(shù)據(jù)傳送方式)

8255A只有A口具有這種雙向數(shù)據(jù)傳送方式,實(shí)際上是在方式1下A口輸入/輸出的結(jié)合。在這種方式下,A口為8位雙向傳輸口,C口的PC7~PC3用來作為輸入/輸出的同步控制信號。當(dāng)A口工作于方式2下時(shí),B口和PC2~PC0只能編程為方式0或者方式1工作,而C口剩下的3條線可作為輸入或輸出線使用或用作B口在方式1下工作時(shí)的控制線。

當(dāng)A口工作于方式2時(shí),各信號的定義如圖7.23所示(其中的控制信號與前述相同)。

在方式2下,其輸入/輸出的操作時(shí)序如圖7.24所示。

圖7.23方式2下的信號定義

圖7.24方式2下的時(shí)序

a)輸入操作

當(dāng)外設(shè)向8255A送數(shù)據(jù)時(shí),選通信號STB也同時(shí)送到,選通信號將數(shù)據(jù)鎖存到8255A的輸入鎖存器中,從而使輸入緩沖器滿信號IBF成為高電平(有效),表明外設(shè)A口已收到數(shù)據(jù)。選通信號結(jié)束時(shí),使中斷請求信號為高,向CPU請求中斷。

當(dāng)CPU響應(yīng)中斷進(jìn)行讀操作時(shí),會(huì)發(fā)出讀信號RD。該信號有效后,將數(shù)據(jù)從8255A讀到CPU中,于是IBF信號又變成低電平,且中斷請求信號INTR也變低電平。

b)輸出操作

CPU響應(yīng)中斷,當(dāng)用輸出指令向8255A的A端口中寫入一個(gè)數(shù)據(jù)時(shí),會(huì)發(fā)出寫脈沖信號WR。該信號一方面使中斷請求信號INTR變低,另一方面使輸出緩沖器滿信號OBF變低,通知外設(shè)可從A口讀取數(shù)據(jù)。當(dāng)外設(shè)讀取數(shù)據(jù)時(shí),給8255A發(fā)出一個(gè)ACK信號,接通A口的三態(tài)門,將數(shù)據(jù)送至8255A與外設(shè)之間的數(shù)據(jù)連線上。ACK信號同時(shí)也使OBF變?yōu)闊o效(高電平),從而開始下一個(gè)數(shù)據(jù)的傳輸過程。

4.8255A的控制字及初始化

8255A是可編程接口芯片,以控制字形式對其工作方式以及C口各位的狀態(tài)進(jìn)行設(shè)置。因此它有兩種控制字:工作方式控制字和C口置位/復(fù)位控制字。

1)工作方式控制字

工作方式控制字用于確定各口的工作方式及數(shù)據(jù)的傳送方向,其格式如圖7.25所示。

圖7.258255A工作方式控制字說明如下:

(1)A口有三種工作方式,而B口只有兩種工作方式。

(2)A組包括A口與C口的高4位,B組包括B口與C口的低4位。

(3)在方式1或方式2下,將C口定義為輸入或輸出不影響作為聯(lián)絡(luò)線使用的C口各位的功能。

(4)最高位(D7)是標(biāo)志位,其值固定為1,用于表明本字節(jié)是方式控制字。

2)C口置位/復(fù)位控制字

在一些應(yīng)用情況下,C口用來定義控制信號和狀態(tài)信號,因此C口的每一位都可以進(jìn)行置位或復(fù)位。對C口各位的置位或復(fù)位是由置位/復(fù)位控制字進(jìn)行控制的。該控制字的格式如圖7.26所示。

圖7.26C口置位/復(fù)位控制字

D7位是該控制字的標(biāo)志位,其狀態(tài)固定為0。

在使用中,該控制字每次只能對C口中的一位進(jìn)行置位或復(fù)位。應(yīng)該注意的是,作為聯(lián)絡(luò)線使用的C口各位是不能采用置位/復(fù)位操作來使其置位或復(fù)位的,其數(shù)值應(yīng)視現(xiàn)場的具體情況而定。

5.8255A的初始化編程

對任何可編程的接口芯片,在使用前都必須對其進(jìn)行初始化。8255A的初始化就是向控制字寄存器寫入工作方式控制字和C口置位/復(fù)位控制字。這兩個(gè)控制字可按同一個(gè)地址寫入且不受先后順序限制。由于兩個(gè)控制字的標(biāo)志位的狀態(tài)不同,因此8255A能加以區(qū)分。例如,對8255A各口作如下設(shè)置:A口以方式0輸入,B口以方式1輸出,C口高4位輸出,低4位輸入。設(shè)控制字寄存器地址為3AH,則其工作方式控制字可設(shè)置為:

·D1=1:C口低4位輸入。

·D1=0:B口輸出。

·D2=1:B口方式1。

·D3=0:C口高4位輸出。

·D4=1:A口輸入。

·D6D5=00:A口方式0。

·D7=1:工作方式控制字標(biāo)志。

因此,工作方式控制字為:10010101B,即95H。初始化程序段為:

MOVR0,#3AH

MOVA,95H

MOVX@R0,A

若要使端口C的D3置位,則控制字為00000111B,即07H;若要使D3復(fù)位,則控制字為00000110B,即06H。依上述方法,按同一個(gè)地址再一次寫入即可。

6.8255A與系統(tǒng)的連接方法

由于8255A是Intel公司專號為其主機(jī)配套設(shè)計(jì)制造的標(biāo)準(zhǔn)化外圍接口芯片,因此它與MCS51及其兼容單片機(jī)的連接比較簡單方便。

單片機(jī)擴(kuò)展的I/O接口均與片外RAM統(tǒng)一編址。由于單片機(jī)系統(tǒng)片外RAM的實(shí)際容量一般均不太大,遠(yuǎn)遠(yuǎn)達(dá)不到64KB的范圍,因此I/O接口芯片大多采用部分譯碼法或線選法。這種方法雖然要浪費(fèi)大量的地址號,但譯碼電路比較簡單。一種較常用的連接方法如圖7.27所示。

圖7.278255A與單片機(jī)的連接圖7.27中,P0口為地址/數(shù)據(jù)復(fù)用口。數(shù)據(jù)通過P0口直接傳送,地址的低8位通過鎖存器74LS373得到,而地址的高8位由P2口傳送。系統(tǒng)采用線選法,利用高8位地址線的P2.7作為線選信號,直接與8255A的片選端CS相連,而A1、A0則與地址的最末2位相連。由圖7.27中所示接法,可得到8255A各個(gè)端口的地址如下:

·A口:0000H。

·B口:0001H。

·C口:0002H。

控制口(控制寄存器):0003H。

由于采用部分譯碼方法,還有13根地址線未用,因此地址0000H~0003H只是所有可能地址中地址號最小的一組。若系統(tǒng)中接口芯片較多時(shí),則應(yīng)采用地址譯碼。

為方便人們觀察和監(jiān)視單片機(jī)的運(yùn)行情況,通常把數(shù)碼顯示器作為單片機(jī)的輸出設(shè)備,用來顯示單片機(jī)應(yīng)用系統(tǒng)的按鍵輸入值、中間信息及運(yùn)算結(jié)果。發(fā)光二極管LED(LightEmittingDiode)是一種通電后能發(fā)光的半導(dǎo)體器件,其導(dǎo)電性質(zhì)與普通二極管類似。LED數(shù)碼顯示器就是由發(fā)光二極管組合而成的一種新型顯示器件,在單片機(jī)系統(tǒng)中應(yīng)用非常普遍。7.5LED數(shù)碼顯示器接口單片機(jī)應(yīng)用系統(tǒng)中所使用的數(shù)碼顯示器件主要有LED(發(fā)光二極管)數(shù)碼顯示器和LCD(液晶)顯示器。LED數(shù)碼顯示器價(jià)格低廉,配置靈活,與單片機(jī)接口簡單;LCD顯示器可進(jìn)行字符或圖形顯示,但成本高,與單片機(jī)接口復(fù)雜。所以,本節(jié)主要討論LED數(shù)碼顯示器的結(jié)構(gòu)和原理,然后再介紹其接口技術(shù)。7.5.1LED數(shù)碼顯示器的結(jié)構(gòu)與連接方式

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

LED數(shù)碼顯示器一般是由8個(gè)發(fā)光二極管顯示字段組成的顯示器件,也可稱為數(shù)碼管。其中,7個(gè)二極管組成一個(gè)“8”,另一個(gè)為小數(shù)點(diǎn)。它可顯示0~9及一些英文字母A~F或特殊字符,故通常稱之為7段(也有稱為8段)發(fā)光二極管數(shù)碼顯示器。LED有不同的大小及顏色,通常有共陰極與共陽極兩種結(jié)構(gòu),其內(nèi)部結(jié)構(gòu)如圖7.28所示。

圖7.287段LED數(shù)碼顯示器

LED數(shù)碼顯示器有兩種連接方法:

1)共陽極接法

共陽極接法把發(fā)光二極管的陽極連在一起構(gòu)成公共陽極,使用時(shí)公共陽極接+5V,每個(gè)發(fā)光二極管的陰極通過電阻與輸入端相連。當(dāng)陰極端輸入低電平時(shí),8段發(fā)光二極管就導(dǎo)通點(diǎn)亮,而輸入高電平時(shí)不點(diǎn)亮。

2)共陰極接法

共陰極接法把發(fā)光二極管的陰極連在一起構(gòu)成公共陰極,使用時(shí)公共陰極接地。每個(gè)發(fā)光二極管的陽極通過電阻與輸入端相連。當(dāng)陽極端輸入高電平時(shí),8段發(fā)光二極管就導(dǎo)通點(diǎn)亮,而輸入低電平時(shí)則不點(diǎn)亮。

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

2.LED數(shù)碼顯示器的顯示段碼

為了顯示字符,要為LED數(shù)碼顯示器提供顯示段碼(或稱字形代碼),組成一個(gè)“8”字形字符的7段,再加上一個(gè)小數(shù)點(diǎn)位,共計(jì)8段,因此提供給LED顯示器的顯示段碼為一個(gè)字節(jié)。用LED顯示器顯示十六進(jìn)制數(shù)和空白字符與P的顯示段碼如表7.4所示。

注意:由于LED數(shù)碼管為電流型器件(工作電流一般在5mA~15mA),因此在LED工作時(shí)電流不應(yīng)超過手冊中給出的最大電流,一般情況下要在各段中串入限流電阻。在單片機(jī)系統(tǒng)中,如果要使LED正常顯示數(shù)字或字符時(shí),不能直接將數(shù)字送到LED顯示器,而是將要顯示的數(shù)字通過查表方式,查到相應(yīng)的顯示字模再送到LED顯示器顯示。

常用的數(shù)碼顯示字符段碼如表7.4所示,顯示字符段碼通常順序排列存放在存儲器中的固定區(qū)域,構(gòu)成段碼表,當(dāng)要顯示某字符時(shí),可根據(jù)地址查表。表7.47段LED數(shù)碼管顯示字符表

7.5.2LED數(shù)碼顯示器的接口電路與顯示方法

1.LED數(shù)碼顯示器的接口方法

單片機(jī)與LED數(shù)碼顯示器有以硬件為主和以軟件為主的兩種接口方法。

1)以硬件為主的接口方法

這種接口方法的電路如圖7.29所示。

圖7.29以硬件為主的LED數(shù)碼顯示器接口電路從圖7.29可看出,在數(shù)據(jù)總線和LED顯示器之間,必須有鎖存器或I/O接口電路,此外還應(yīng)有專用的譯碼器和驅(qū)動(dòng)器,通過譯碼器把一位十六進(jìn)制數(shù)(4位二進(jìn)制數(shù))或BCD碼譯碼為相應(yīng)的顯示段碼,然后由驅(qū)動(dòng)器提供足夠的功率去驅(qū)動(dòng)發(fā)光二極管。

這種接口方法僅用一條輸出指令,就可以進(jìn)行LED顯示。但它所使用的硬件電路較多,而硬件譯碼缺乏靈活性,只能顯示十進(jìn)制或十六進(jìn)制數(shù)(包括空白字符)。該方法主要用于顯示位數(shù)較多或?qū)︼@示器的亮度有一定要求的場合。

2)以軟件為主的接口方法

這種接口方法的電路如圖7.30所示,它是以軟件查表代替硬件譯碼,不但省去了譯碼器,而且還能顯示更多的字符。但是驅(qū)動(dòng)器是必不可少的,因?yàn)閮H靠接口提供不了較大的電流供LED顯示器使用。

圖7.30以軟件為主的LED顯示器接口電路

2.LED數(shù)碼顯示器的接口電路

實(shí)際使用的LED數(shù)碼顯示器位數(shù)較多,為了簡化線路、降低成本,大多采用以軟件為主的接口方法。對于多位LED數(shù)碼顯示器,通常采用動(dòng)態(tài)掃描顯示方法,即逐個(gè)循環(huán)地點(diǎn)亮各位顯示器。這樣雖然在任意時(shí)刻只有一位顯示器被點(diǎn)亮,但是由于人眼具有視覺殘留效應(yīng),看起來與全部顯示器持續(xù)點(diǎn)亮的效果基本一樣(在亮度上要有差別)。

為了實(shí)現(xiàn)LED顯示器的動(dòng)態(tài)掃描顯示,除了要給顯示器提供顯示段碼之外,還要對顯示器進(jìn)行位的控制,即通常所說的“段控”和“位控”。因此對于多位LED數(shù)碼顯示器的接口電路來說,需要有兩個(gè)輸出口,其中一個(gè)用于輸出顯示段碼;另一個(gè)用于輸出位控信號。位控實(shí)際上就是對LED顯示器的公共端進(jìn)行控制,位控信號的數(shù)目與顯示器的位數(shù)相同。圖7.31是使用8155作為6位LED數(shù)碼顯示器接口的電路。其中8155的A口為輸出口(段控口),用以輸出8位顯示段碼(包括小數(shù)點(diǎn))??紤]到LED顯示器的段電流為8mA左右,不能用8155的A口直接驅(qū)動(dòng),因此要加1級電流驅(qū)動(dòng)。電流驅(qū)動(dòng)器既可以用反相的,也可以用同相的。反相電流驅(qū)動(dòng)器經(jīng)常使用7406;同相電流驅(qū)動(dòng)器常使用7407或74LS244(注意:使用OC門7406或7407時(shí)要加上拉電阻)。

圖7.318155作為6位LED數(shù)碼顯示器接口的電路

C口作為輸出口(位控口),以PC0~PC5輸出位控信號。由于位控信號控制的是LED顯示器的公共端,驅(qū)動(dòng)電流較大,8段全亮?xí)r需電流約40~60mA。因此必須在C口與LED的位控線之間增加電流驅(qū)動(dòng)器以提高驅(qū)動(dòng)能力,常用的有SN75452(反相)、7406(反相)和7407(同相)等。

這里需要說明兩點(diǎn):第一,當(dāng)LED顯示器的段碼與位控信號均采用反相驅(qū)動(dòng)以后,其控制規(guī)律也要顛倒過來,即共陽極的LED顯示器要按共陰極來控制;而共陰極的LED顯示器要按共陽極來控制,也可以采用一個(gè)同相和一個(gè)反相驅(qū)動(dòng)器,其控制規(guī)律也應(yīng)作相應(yīng)的變

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論