第5章 系統擴展接口技術_第1頁
第5章 系統擴展接口技術_第2頁
第5章 系統擴展接口技術_第3頁
第5章 系統擴展接口技術_第4頁
第5章 系統擴展接口技術_第5頁
已閱讀5頁,還剩84頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第五章系統擴展接口技術5.1 51系列單片機總線結構,擴展芯片的地址譯碼5.2 存儲器擴展5.3 I/O口擴展,8255芯片5.4 LED數碼管5.5 鍵盤接口,例題5.6 A/D接口擴展5.7 光耦器件接口5.151系列單片機總線結構,擴展芯片的地址譯碼

圖5-1MCS51單片機系統擴展結構圖5.1.1系統擴展結構

由圖5-1可以看出,系統擴展主要包括存儲器擴展和I/O接口部件擴展。 外部存儲器擴展又包括程序存儲器擴展和數據存儲器擴展。51單片機采用的是哈佛結構。擴展后,系統形成了兩個并行的外部存儲器空間。

51單片機采用并行總線結構,大大增加了系統的靈活性,使擴展易于實現,各擴展部件只要符合總線規范,就能很方便地接入系統。 由于系統擴展是以51單片機為核心,通過總線把51單片機與各擴展部件連接起來。因此,要進行系統擴展首先要構造系統總線。1系統總線及總線構造按功能通常把系統總線分為三組,如圖5-1所示。

1).地址總線(AdressBus,AB)地址總線用于傳送單片機發出的地址信號,以便進行存儲單元和I/O接口芯片中的寄存器選擇。地址總線是單向傳輸的。2).數據總線(DataBus,DB)數據總線用于在單片機與存儲器之間或與I/O端口之間傳送數據。數據總線是雙向的,可以進行兩個方向的傳送。3).控制總線(ControlBus,CB)控制總線實際上就是單片機發出的各種控制信號線。2.構造系統總線

系統擴展的首要問題:

構造系統總線。系統總線上“掛”存儲器芯片或I/O接口芯片,“掛”存儲器芯片就是存儲器擴展,“掛”I/O接口芯片就是I/O擴展。1).以P0口作為低8位地址/數據總線51單片機由于受引腳數目的限制,數據線和低8位地址線復用。為了將它們分離出來,需要外加地址鎖存器,從而構成與一般CPU相類似的片外三總線,見圖5-2。

MCS51擴展的片外三總線2).以P2口的口線作為高位地址線

P2口的全部8位口線用作高位地址線,再加上P0口經地址鎖存器提供的低8位地址,便形成了完整的16位地址總線(見圖5-2),使尋址范圍達到64KB。3).控制信號線 除了地址線和數據線之外,還要有系統的控制總線。這些信號有的就是單片機引腳的第一功能信號,有的則是P3口第二功能信號。其中包括:(1)PSEN*信號作為外擴程序存儲器的讀選通控制信號。(2)RD*和WR*信號作為外擴數據存儲器和I/O接口的讀、寫選通控制信號。(3)ALE信號作為低8位地址的鎖存控制信號。(4)EA*信號作為內、外程序存儲器的選擇控制信號。 可看出,盡管51單片機有4個并行的I/O口,共32條口線,但由于系統擴展的需要,真正作為數字I/O使用的,就剩下P1口和P3口的部分口線了。

5.1.3地址空間分配和外部地址鎖存器1.存儲器地址空間分配 如何把外部各自的64KB空間分配給各個程序存儲器、數據存儲器芯片,并且使程序存儲器的各個芯片之間,數據存儲器各芯片之間,為避免發生數據沖突,一個存儲器單元對應一個地址,這就是存儲器的地址空間的分配問題。 在外擴的多片存儲器芯片中,51單片機要完成這種功能,必須進行兩種選擇: 一是必須選中該存儲器芯片(或I/O接口芯片),這稱為“片選”,只有被“選中”的存儲器芯片才能被51單片機讀出或寫入數據。 二是在“片選”的基礎上再選擇該芯片的某一單元,稱為“單元選擇”。 常用的存儲器地址空間分配方法有兩種:線性選擇法(簡稱線選法)和地址譯碼法(簡稱譯碼法),下面分別介紹。1).線選法 直接利用系統的高位地址線作為存儲器芯片(或I/O接口芯片)的“片選”控制信號。為此,只需要把用到的高位地址線與存儲器芯片的“片選”端直接連接即可。 線選法的優點是電路簡單,不需要另外增加地址譯碼器硬件電路,體積小,成本低。 缺點是可尋址的芯片數目受到限制。 另外,地址空間不連續,每個存儲單元的地址不唯一,不能充分有效地利用存儲空間。2).譯碼法 使用譯碼器對51單片機的高位地址進行譯碼,將譯碼器的譯碼輸出作為存儲器芯片的片選信號。是最常用的地址空間分配的方法,它能有效地利用存儲器空間,適用于多芯片的存儲器擴展。 常用的譯碼器芯片有74LS138(3-8譯碼器)74LS139(雙2-4譯碼器)74LS154(4-16譯碼器)。若全部高位地址線都參加譯碼,稱為全譯碼;若僅部分高位地址線參加譯碼,稱為部分譯碼。部分譯碼存在著部分存儲器地址空間相重疊的情況。兩種常用的譯碼器芯片。(1)74LS138 74LS138是3-8譯碼器,有3個數據輸入端,經譯碼產生8種狀態。其引腳如圖5-3所示,真值表如表5-1所示。 由表5-1可見,當譯碼器的輸入為某一固定編碼時,其輸出僅有一個固定的引腳輸出為低電平,其余的為高電平。而輸出為低電平的引腳就作為某一存儲器芯片的片選端的控制信號。圖5-3

表5-174LS138譯碼器真值表

輸入輸出

G1G2A*G2B*CBAY7*Y6*Y5*Y4*Y3*Y2*Y1*Y0*

(2)74LS139 74LS139是雙2-4譯碼器。兩個譯碼器完全獨立,分別有各自的數據輸入端、譯碼狀態輸出端以及數據輸入允許端。其引腳如圖5-4所示,真值表如表5-2所示(見P138)。圖5-4下面以74LS138為例,介紹如何進行地址分配。例要擴8片8KB的RAM6264,如何通過74LS138把64KB空間分配給各個芯片?

64KB地址空間的分配如圖4-5所示。圖5-52.外部地址鎖存器地址鎖存器芯片:74LS373、8282、74LS573等。1).鎖存器74LS373帶有三態門的8D鎖存器,其引腳及內部結構如圖5-7和圖5-8。51單片機與74LS373的連接如圖5-9所示。引腳說明如下:D7~D0:8位數據輸入線。Q7~Q0:8位數據輸出線。G:數據輸入鎖存選通信號。OE*:

數據輸出允許信號。圖5-7圖5-8圖5-974LS373功能如表5-3所示。表5-374LS373功能表OE* G D Q

0 1 1 1 0 1 0 0 0 0 × 不變 1 × × 高阻態 5.2存儲器擴展5.2.1程序存儲器的連接1.地址線的連接程序存儲器的高位地址線直接與單片機的P2口相連;程序存儲器的低8位地址線通過一個鎖存器與單片機的P0口相連。這是因為P0口分時輸出地址和數據,所以,為了把地址信息分離保存,使用一個鎖存器將地址信息保存起來。2.數據線的連接MCS-51系列單片機的數據線只能是8位,由P0口輸出,直接將P0和外部存儲器的數據線相連就可以了。3.控制線的連接程序存儲器擴展時,需要用到ALE、PSEN、EA等信號;ALE是地址鎖存允許信號,通常接到地址鎖存器鎖存信號端;PSEN是片外程序存儲器讀選通信號,通常接在程序存儲器的讀允許端(OE);EA是單片機讀片內/片外存儲器的選擇端,使用片外程序存儲器時接地。MCS-51單片機擴展外部程序存儲器的硬件電路4、程序存儲器的擴展連線

程序存儲器的擴展連線步驟1:

程序存儲器的擴展連線步驟2:

程序存儲器的擴展連線步驟3:

程序存儲器的擴展連線步驟4:

程序存儲器的擴展連線步驟5:

5.2.2數據存儲器的連接1.地址線的連接數據存儲器的高位地址線直接與單片機的P2口相連;數據序存儲器的低8位地址線通過一個鎖存器與單片機的P0口相連。這是因為P0口分時輸出地址和數據,所以,為了把地址信息分離保存,使用一個鎖存器將地址信息保存起來。2.數據線的連接MCS-51系列單片機的數據線只能是8位,由P0口輸出,直接將P0和外部存儲器的數據線相連就可以了。3.控制線的連接數據存儲器擴展時,需要用到ALE、RD、WR等信號;ALE是地址鎖存允許信號,通常接到地址鎖存器鎖存信號端;RD是片外數據存儲器讀選通信號,通常接在數據存儲器的輸出允許端(OE);WR是片外數據寫選通信號,通常與數據存儲器的讀/寫控制端(WE)相連。MCS-51單片機擴展外部數據存儲器的硬件電路程序存儲器的擴展原理框圖

數據存儲器的擴展原理框圖

4、數據存儲器的擴展連線

數據存儲器的擴展連線步驟1:

數據存儲器的擴展連線步驟2:

數據存儲器的擴展連線步驟3:

數據存儲器的擴展連線步驟4:

數據存儲器的擴展連線步驟5:

數據存儲器的擴展連線步驟6:

5.2.3存儲器擴展電路原理圖

1.觀察U1、U2、U3的連接原理圖

2.U4的數據線D0~D7與U3的數據線D0~D7對應相連

3.U4的地址線A0~A7與U3的地址線A0~A7對應相連

4.U4的地址線A8~A12與U3的地址線A8~A12對應相連

5.U4與U1的連接

5.3I/O口擴展5.3.1開關信號的輸入/輸出方式 開關信號包括脈沖信號和電平信號。在單片機控制系統中,常采用如下方式實現開關信號的輸入和輸出。1.直接解碼輸入/輸出方式

在這種方式中,直接利用CPUI/O引腳輸入/輸出開關信號,如圖6-1(a)所示。 在直接解碼輸入/輸出方式中,每一I/O引腳僅能輸入或輸出一個開關信號,各引腳相互獨立,沒有編碼關系。顯然,采用直接解碼輸入/輸出方式時,I/O引腳的利用率較低,因而該方式只適用于僅需要輸入或輸出少量開關信號的場合。2.矩陣輸入/輸出方式

在這種方式中,將CPUI/O引腳分成兩組,用N條引腳構成行線,M條引腳構成列線,行、列交叉點就構成了所需的N×M個檢測點。顯然,所需的I/O引腳數目為N+M,而檢測點總數達到了N×M個,如圖6-1(b)所示。可見,采用矩陣輸入/輸出方式時,I/O引腳的利用率較高,而且硬件開銷少,因此得到了廣泛應用。

在矩陣輸入/輸出方式中,如果行線和列線均被定義為輸出狀態,則可以輸出N×M個開關信號;當行、列線中有一組為輸出線,另一組為輸入線時,就構成了N×M個輸入檢測點,如矩陣鍵盤電路。

3.編碼輸入/輸出方式

在這種方式中,將若干條用途相同(均為輸入或輸出)的I/O引腳組合在一起,按二進制編碼后輸入或輸出。例如,對于n條輸出引腳,經二進制譯碼器譯碼后,可以控制2n個設備;對于2n個不同時有效的輸入量,經過編碼器與CPU連接時,也只需要n個引腳,如圖6-1(c)所示。

顯然,采用編碼輸入/輸出方式時,CPUI/O引腳利用率最高,但硬件開銷大,因此在單片機控制系統中很少采用。 圖6-1輸入/輸出方式(a)直接解碼輸入/輸出方式;(b)矩陣輸入/輸出方式;(c)編碼輸入/輸出方式5.3.2I/O資源及擴展 通過單片機芯片實現數字信號的輸入處理和輸出控制時,必須了解以下問題:

(1)準確理解CPU各引腳的功能,確定可利用的I/O資源,并做出相對合理的使用規劃。

(2)I/O端口作為輸出控制信號線時,

必須了解CPU復位期間和復位后相應引腳的狀態。

(3)了解I/O端口輸出級電路結構和I/O端口的負載能力。

(4)了解I/O端口輸出電平范圍。

(5)了解I/O端口最大耐壓。5.3.2.1利用鎖存器、觸發器擴展I/O口

當僅需要擴展少量的I/O引腳時,可利用鎖存器、觸發器或三態門電路實現。1.輸出口擴展 圖6-2利用74LS273芯片的輸出口擴展電路 當A15、A14、A13、A12、A11、A10為100110時,U3譯碼輸出端Y6*有效。 擴展端口的地址為9800H,執行如下指令即可將累加器Acc的內容鎖存到74LS273的輸出端。

MOVDPTR,#9800H ;輸出口地址送數據指針

MOVX@DPTR,A ;累加器Acc內容鎖存到 74LS273的輸出端

擴展輸出口的狀態不能讀出。當僅需要修改輸出口中個別位的狀態時,可使用具有位尋址功能的內部RAM單元作為擴展輸出口的映像地址,并采用間接方式訪問,即先對映像地址單元進行“讀—改—寫”操作,再將映像地址單元內容送外部端口。例如,通過如下指令即可將9800H口的b0位取反:

PORTP6DATA28H ;使用28H單元作為9800H ;端口的映像地址

MOVA,PORTP6 ;Acc←9800H端口映像地 ;址

CPLAcc.0 ;對b0位取反

MOVPORTP6,A ;回寫映像地址單元

MOVDPTR,#0B000H ;DPTR←端口地址

MOVX@DPTR,A ;端口映像內容b0位取反后 ;送74LS273輸出端2.輸入口擴展 對輸入口來說,一般無需鎖存,原則上三態門電路、具有三態輸出的總線緩沖器、驅動器、D型觸發器(如74LS374)以及電平觸發的鎖存器(如74LS373)等均可以作為輸入口擴展芯片,如圖6-3所示。 在圖6-3中分別使用了兩片74LS373、一片74LS125構成了三個數據輸入口,共擴展了20條輸入線 圖6-3輸入口擴展電路 圖6-4一個實用的輸入/輸出口擴展電路5.3.2.2利用“串入并出”及“并入串出”芯片擴展I/O口

在速度要求不高的情況下,可利用74LS164、74HC594、74HC595等“串入并出”芯片擴展輸出口,利用74LS165、74HC597等“并入串出”芯片擴展輸入口,這也是一種簡單、實用的I/O口擴展方式。 當串行口未用時,可通過串行口方式0完成串行數據的輸入/輸出;而當串行口已作它用時,可根據串行芯片的操作時序,使用I/O引腳模擬串行移位脈沖完成數據的輸入/輸出。 在圖6-5中,借助兩片74HC595“串入并出”芯片即可將8XC5X芯片的3根I/O引腳通過串行方式擴展為16根輸出引腳。圖6-5通過“串入并出”芯片擴展輸出引腳 假設擴展的輸出引腳ED7~ED0輸出的信息在內存中的映像地址為EDATA1,ED15~ED8輸出的信息在內存中的映像地址為EDATA1+1,則可通過如下程序段將數據串行輸出到ED15~ED0引腳。

EDATA1DATA38H ;假設輸出數據存放在 ;38H、39H 單元中

SDI BITP1.0 ;串行數據輸入接P1.0引腳

SRCLK BIT P1.1 ;串行移位脈沖接P1.1引腳

RCLK BIT P1.2 ;并行輸出鎖存脈沖接P1.2 ;引腳

;----------串行數據輸出程序段---------

CLRRCLK ;并行鎖存脈沖置為低電平

MOVR0,#EDATA1

MOVR2,#2 ;共需要串行輸出兩個字節

LOOP1:

MOVA,@R0 ;取輸出數據

MOVR3,#8 ;右移8次

LOOP2:

CLRSRCLK ;串行移位脈沖置為低電平

RRCA ;帶進位Cy循環右移

MOVSDI,C ;串行數據送SDI

NOP ;插入NOP指令適當延遲(是否延 ;遲由CPU指令周期決定)

SETBSRCLK ;串行移位脈沖置為高電平,形成 ;上升沿

DJNZR3,LOOP2

INCR0 ;R0加1,指向高8位

DJNZR2,LOOP1 ;循環,輸出高8位

SETBRCLK ;并行輸出鎖存脈沖置為高電平, ;形成上升沿5.3.2.3利用8255可編程I/O芯片擴展MCS-51并行I/O口

常用的外圍I/O接口芯片有:

(1)8255:可編程的通用并行接口電路(3個8位I/O口) (2)8155:可編程的IO/RAM擴展接口電路(2個8位I/O

口,1個6位I/O口,256個RAM字節單元,1個14位的減法 定時器/計數器)。

8255是可編程并行I/O接口芯片,具有3個8位的并行I/O口,3種工作方式,可通過編程改變其功 能,因而使用靈活方便,通用性強。1.引腳說明

8255采用DIP40、PLCC44或QFP44封裝形式,引腳功能及排列如圖6-6所示。

圖6-68255的引腳功能及排列

(a)引腳功能; (b)引腳排列引腳功能:

D7~D0——數據總線,雙向,三態,可直接與CPU數據總線相連。

A1、A0——地址線,輸入。8255由A、B、C三個8位輸入/輸出口和一個控制/狀態寄存器組成,含有四個可尋址的I/O端口。A1、A0地址線狀態編碼與這四個I/O端口的對應關系如表6-1所示。 表6-1地址線狀態編碼與I/O端口的對應關系

CS*——片選信號,輸入,低電平有效。

WR*——寫選通信號,輸入,低電平有效。

RD*——讀選通信號,輸入,低電平有效。

PA7~PA0——A口數據輸入/輸出引腳。

PB7~PB0——B口數據輸入/輸出引腳。

PC7~PC0——C口數據輸入/輸出引腳。

Vcc——+5V電源。

RESET——復位引腳,高電平有效。(1)端口PA、PB、PC

功能和結構上有些差異

PA口:輸出鎖存和緩沖;輸入鎖存

PB口:輸出鎖存和緩沖;輸入緩沖

PC口:輸出鎖存;數據輸入緩沖

PC口可在軟件的控制下,分為兩個4位端口,作為PA口、PB口選通方式操作時的狀態控制信號。(2)A組和B組控制電路

A組:PA口和PC口的上半部(PC7~PC4);

B組:PB口和PC口的下半部(PC3~PC0),可根據“命令字”對PC口按位“置1”或“清0”。(3)數據總線緩沖器 三態雙向,作為8255A與單片機數據線之間接口,傳送數據、指令、控制命令及外部狀態信息。(4)讀/寫控制邏輯電路線 該電路接收CPU發來的控制信號,RESET,地址信號A1、A0等。對端口進行讀寫。

8255中的控制寄存器主要用于選擇A、B、C三個并行口的工作狀態。作輸出口時,A、B、C口均為一個8位的數據輸出鎖存和緩沖器;作輸入口時,A口為一個8位數據輸入鎖存器,而B、C口均為一個8位的數據輸入緩沖器(即B、C口對輸入數據不具備鎖存功能)。

表6-28255的工作狀態

3.工作方式選擇控制字及C口置位/復位控制字

8255I/O口有三種工作方式:

方式0,即基本輸入/輸出方式。

方式1,即選通輸入/輸出方式。 方式2,即雙向傳輸方式(僅A口有)。(1)工作方式選擇控制字 三種工作方式由方式控制字來決定。 控制字格式如下。

C口上半部分(PC7~PC4)隨A口稱為A組,

C口下半部分(PC3~PC0)隨B口稱為B組。 其中A口可工作于方式0、1、和2,而B口只能工作在方式0和方式1。 例

寫入工作方式控制字95H:10010101

可將8255A編程為:A口方式0輸入,B口方式1輸出,C口的上半部分(PC7~PC4)輸出,C口的下半部分(PC3~PC0)輸入。(2)C口按位置位/復位控制字 可對C口8位中的任一位置“1”或清“0”。用于位控。例

控制字07H寫入控制口,置“1”PC3;控制字08H寫入控制口,清“0”PC4。4.8255的三種工作方式

1)方式0

基本的輸入/輸出方式。

MCS-51可對8255進行數據的無條件傳送 基本功能為:(1)具有兩個8位端口(A、B)和兩個4位端口(C的上半部分和下半部分)。(2)任一個端口都可以設定為輸入或輸出,各端口的輸入、輸出可構成16種組合。(3)數據輸出鎖存,輸入不鎖存。

2)方式1

選通輸入/輸出工作方式。A口和B口通常用于I/O數據傳送,C口用作A口和B口的聯絡線,以中斷方式傳送數據。(1)方式1輸入 控制聯絡信號如圖6-7所示,STB*與IBF構成了一對應答聯絡信號,聯絡信號的功能如下:STB*:選通輸入,是由輸入外設送來的輸入信號。IBF:輸入緩沖器滿,高電平有效。該信號有效時,表示輸入到A口或B口輸入緩沖器內的數據未被CPU讀走,外設不能再把數據輸入緩沖器內。

INTR:中斷請求信號,高電平有效。由8255A輸出,向單片機 發中斷請求。

下面以A口為例,說明選通輸入方式下的數據傳輸過程,其硬件連接如圖6-7(a)所示。

圖6-7選通輸入/輸出連接示意圖(a)A口工作在選通輸入方式下信號連接方式及時序;(b)A口工作在選通輸出方式下信號連接方式及時序 ①當外設需要將數據輸入到8255A口時,先檢查IBFA(即PC5引腳)的狀態。

②當IBFA無效(即低電平)時,把數據送到A口。

③外設輸出STB*信號到8255的PC4引腳,將輸入數據鎖存到A口的輸入緩沖器中。

④8255接收到STB*信號后,一方面,在STB*信號的下降沿(即前沿)觸發IBFA,使PC5引腳為高電平,

通知外設不能再發送數據;另一方面,在STB*信號的上升沿(即后沿)將INTRA(即PC3引腳)置為有效狀態,向CPU發出中斷請求,告知CPU可以讀取A口的輸入數據。 ⑤CPU響應INTRA請求后,向8255發出RD*信號,讀A口數據。8255接收RD*信號后,在脈沖下降沿使INTRA無效(自動清除INTRA標志),在上升沿使IBF無效,為接收下一外設數據做準備。

以上為完成一字節數據的接收過程。(2)方式1輸出 如圖6-7所示。OBF*與ACK*構成了一對應答聯絡信號,各信號的功能如下:

OBF*:輸出緩沖器滿信號,82C55給外設的聯絡信號,外 設可以將數據取走。

ACK*:外設的響應信號,外設已將數據取走。

INTR*:中斷請求信號。表示該數據已被外設取走,請求單 片機繼續輸出下一個

溫馨提示

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

評論

0/150

提交評論