專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)接口擴(kuò)展

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2007年07月07日   【字體:


單片機(jī)接口擴(kuò)展
教學(xué)目標(biāo)
介紹單片機(jī)程序存儲(chǔ)器的擴(kuò)展方法
介紹單片機(jī)數(shù)據(jù)存儲(chǔ)器的擴(kuò)展方法
介紹單片機(jī)I/O口的擴(kuò)展方法
學(xué)習(xí)要求
熟悉單片機(jī)片外三總線結(jié)構(gòu)和擴(kuò)展能力
掌握單片機(jī)接口擴(kuò)展EPROM,RAM,I/O口方法
掌握地址譯碼及片選方法
了解單片機(jī)總線驅(qū)動(dòng)能力和擴(kuò)展方法
通常情況下,采用8051/8751/89C51的最小應(yīng)用系統(tǒng)最能發(fā)揮單片機(jī)體積小,成本低的優(yōu)點(diǎn).但在很多情況下,構(gòu)成一個(gè)工業(yè)測(cè)控系統(tǒng)時(shí),考慮到傳感器接口,伺服控制接口以及人機(jī)對(duì)話接口等的需要,最小應(yīng)用系統(tǒng)常常不能滿足要求,因此,必須在片外擴(kuò)展相應(yīng)的外圍芯片,這就是單片機(jī)接口擴(kuò)展.它包括程序存儲(chǔ)器(ROM)擴(kuò)展,數(shù)據(jù)存儲(chǔ)器(RAM)擴(kuò)展,I/O口擴(kuò)展,定時(shí)/計(jì)數(shù)器擴(kuò)展,中斷單片機(jī)接口擴(kuò)展以及其它特殊功能擴(kuò)展等.
7.1 MCS-51系列單片機(jī)的外部擴(kuò)展性能
7.1.1 MCS-51系列單片機(jī)的片外總線結(jié)構(gòu)
為了滿足單片機(jī)接口擴(kuò)展要求,MCS-51系列單片機(jī)的片外引腳可以構(gòu)成圖7-1所示的三總線結(jié)構(gòu),即地址總線(AB),數(shù)據(jù)總線(DB)和控制總線(CB).所有的外部芯片都是通過這三組總線進(jìn)行擴(kuò)展.
圖7-1 單片機(jī)的片外三總線結(jié)構(gòu)


高8位地址
低8位地址 16位地址總線
__
8位數(shù)據(jù)總線
控制總線
_
P2口
ALE

8051
P0口
RD
EA WR
PSEN

地址
鎖存器
1.地址總線(AB)
地址總線寬度為16位,因此可尋址范圍為216=64KB.地址總線由P0口提供低8位地址A7~A0,由P2口提供高8位地址A15~A8.
2.數(shù)據(jù)總線(DB)
數(shù)據(jù)總線由P0口提供,其寬度為8位.
3.控制總線(CB)
控制總線包括片外單片機(jī)接口擴(kuò)展用線和片外信號(hào)對(duì)單片機(jī)的控制線.
, :用于片外數(shù)據(jù)存儲(chǔ)器(RAM)的讀寫控制.當(dāng)執(zhí)行片外數(shù)據(jù)存儲(chǔ)器操作指令MOVX時(shí),這兩個(gè)信號(hào)自動(dòng)生效.
:用于片外程序存儲(chǔ)器(EPROM)的讀數(shù)控制.
ALE:用于鎖存P0口輸出的低8位地址的控制線.通常,ALE在P0口輸出地址期間用其下降沿控制鎖存器鎖存地址數(shù)據(jù).
:用于選擇片內(nèi)或片外程序存儲(chǔ)器.當(dāng) =0時(shí),只訪問片外程序存儲(chǔ)器,而不管片內(nèi)有無程序存儲(chǔ)器.因此,在擴(kuò)展并使用外部程序存儲(chǔ)器時(shí),必須將 接地.

7.1.2 MCS-51系列單片機(jī)的單片機(jī)接口擴(kuò)展能力
根據(jù)地址總線寬度,MCS-51系列單片機(jī)在片外可擴(kuò)展的存儲(chǔ)器最大容量為64KB,地址范圍為0000H~FFFFH.
1.片外數(shù)據(jù)存儲(chǔ)器與程序存儲(chǔ)器的地址范圍一樣為64KB,地址也可重復(fù),它們由單片機(jī)不同的指令和控制信號(hào)區(qū)分:讀片外程序存儲(chǔ)器的指令為MOVC,讀寫片外數(shù)據(jù)存儲(chǔ)器的指令為MOVX;讀片外程序存儲(chǔ)器的控制信號(hào)為 ,讀寫片外數(shù)據(jù)存儲(chǔ)器的控制信號(hào)為 和 .
2.片外數(shù)據(jù)存儲(chǔ)器與片內(nèi)數(shù)據(jù)存儲(chǔ)器的地址可重復(fù),但操作指令不同.對(duì)片內(nèi)數(shù)據(jù)存儲(chǔ)器讀寫的指令為MOV,對(duì)片外數(shù)據(jù)存儲(chǔ)器讀寫的指令為MOVX.
3.為配置外圍設(shè)備而需要擴(kuò)展的I/O接口,如A/D,D/A等,與片外數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址,
7.1.3 MCS-51系列單片機(jī)的總線驅(qū)動(dòng)能力及擴(kuò)展方法
一,總線的驅(qū)動(dòng)能力
MCS-51系列單片機(jī)作為數(shù)據(jù)總線和低8位地址總線的P0口可驅(qū)動(dòng)8個(gè)LSTTL電路,而P1,P2,P3只能驅(qū)動(dòng)4個(gè)LSTTL電路.當(dāng)應(yīng)用系統(tǒng)規(guī)模過大時(shí),可能造成負(fù)載過重,致使驅(qū)動(dòng)能力不夠,系統(tǒng)不能可靠地工作.
二,總線的擴(kuò)展概述
在設(shè)計(jì)計(jì)算機(jī)應(yīng)用系統(tǒng)硬件電路時(shí),首先要估計(jì)總線的負(fù)載情況,以確定是否需要對(duì)總線的驅(qū)動(dòng)能力進(jìn)行擴(kuò)展.
地址總線和控制總線為單向的,可采用單向三態(tài)線驅(qū)動(dòng)器(如74LS244)進(jìn)行驅(qū)動(dòng)能力的擴(kuò)展.數(shù)據(jù)總線為雙向的,必須采用雙向三態(tài)線驅(qū)動(dòng)器(如74LS245)進(jìn)行驅(qū)動(dòng)能力的擴(kuò)展.
7.2 MCS-51系列單片機(jī)存儲(chǔ)器擴(kuò)展
7.2.1程序儲(chǔ)存器擴(kuò)展
一,_ 儲(chǔ)存器擴(kuò)展概述
外部程序存儲(chǔ)器芯片與單片機(jī)可按如下方式連接:
1.地址線的連接
外部程序存儲(chǔ)器低8位地址線A0~A7與P0口的口線P0.0~P0.7對(duì)應(yīng)相連;外部程序存儲(chǔ)器高8位地址線A8~A15與P2口的口線P2.0~P2.7對(duì)應(yīng)相連.
2.數(shù)據(jù)線的連接
外部程序存儲(chǔ)器8位數(shù)據(jù)線D0~D7與P0口的口線P0.0~P0.7對(duì)應(yīng)相連.
3.控制線的連接
(片外程序存儲(chǔ)器取指信號(hào))和 (程序存儲(chǔ)器輸出允許信號(hào))相連;ALE(地址鎖存允許信號(hào))和 (地址鎖存器鎖存信號(hào))相連; (片內(nèi)/片外程序存儲(chǔ)器選擇信號(hào)),當(dāng)選用8031/8032時(shí),應(yīng)接地;單片機(jī)的相關(guān)地址線經(jīng)過地址譯碼和程序存儲(chǔ)器的片選信號(hào) 相連.
由上面論述可以得到外部擴(kuò)展程序存儲(chǔ)器的一般連接方法,見圖7-2所示.
圖7-2 單片機(jī)的外部程序存儲(chǔ)器一般連接方法
地址
鎖存器
P2.7
P2.0
ALE
8031
P0.7~P0.0
EA PSEN
A15
A8
A7外部程序
A0存儲(chǔ)器
D7~D0
OE
二,程序儲(chǔ)存器EPROM的擴(kuò)展
1.使用單片EPROM的擴(kuò)展電路
圖7-3為8031單片機(jī)外接一片EPROM 27256的擴(kuò)展電路.
圖7-3 8031單片機(jī)擴(kuò)展一片27256的電路
27256的 端是輸出使能端,與8031的
端相連,當(dāng) 有效時(shí),把27256中的指令送上P0口線.由于只擴(kuò)展一片EPROM,27256的片選端 可直接接地.27256的編程電壓端VPP接電源.
當(dāng)用戶熟悉了其它EPROM芯片后,很容易改成其它容量EPROM的單片擴(kuò)展電路:擴(kuò)展27128時(shí),去掉P2.7引出線,將27128的27腳接Vcc;擴(kuò)展2764時(shí),去掉P2.6,P2.5引出線,并將2764的27腳接Vcc,26腳不接;擴(kuò)展2732時(shí),去掉P2.6,P2.5和P2.4引出線;擴(kuò)展2716時(shí),去掉P2.6,P2.5,P2.4和P2.3引出線,并將2764的Vpp接Vcc即可.
3.使用多片EPROM的擴(kuò)展電路
在擴(kuò)展多片EPROM時(shí),所有芯片的片選端都必須按照地址線進(jìn)行選擇.芯片的片選是在保證對(duì)EPROM片內(nèi)存儲(chǔ)空間尋址條件下,使用剩余的地址線進(jìn)行的,分為線選法和譯碼法.現(xiàn)以擴(kuò)展多片2764 EPROM為例來說明這兩種片選法:
2764的片內(nèi)地址為8K,因此片內(nèi)尋址需占用A12~A0的13根地址線,尚剩余3根地址線A13,A14,A15,采用線選法時(shí),剩余的三根地址線每根可接一個(gè)芯片的片選信號(hào),則只能擴(kuò)展3片2764,見圖7-4(a)所示;采用譯碼法時(shí),剩余三根地址線經(jīng)過3-8譯碼得到8根片選信號(hào),可擴(kuò)展8片2764,見圖7-4(b)所示.
圖7-4(a) 線選法擴(kuò)展三片2764的電路

圖7-4(b) 譯碼法擴(kuò)展三片2764的電路
目前,隨著大容量EPROM的出現(xiàn),像圖7-4(b)這種多片地址譯碼的方法已不太常用,它完全可以用兩片27256代替.對(duì)于擴(kuò)展兩片27256 EPROM的電路如圖7-5所示,它是帶反相器的線選法:用一根地址線,使它不經(jīng)反相器和經(jīng)反向器后分別連接到兩個(gè)EPROM的片選.
圖7-5 兩片27256的擴(kuò)展電路
三,作為程序儲(chǔ)存器EEPROM的擴(kuò)展
電擦除可編程只讀存儲(chǔ)器EEPROM(Electrically Erasable PROM)具有能在應(yīng)用系統(tǒng)中進(jìn)行在線改寫,并可在斷電情況下保存數(shù)據(jù)而不需保護(hù)電源等優(yōu)點(diǎn),在智能儀表,控制裝置,分布式監(jiān)控系統(tǒng)子站以及開發(fā)裝置中得到了廣泛的應(yīng)用.
圖7-6為8031單片機(jī)的EEPROM 28C16的擴(kuò)展電路,圖中使用了控制線 , , .圖中 線是 由 和
相"與"后提供,無論 有效還是 有效都能使28C16的輸出允許端有效,這種聯(lián)接方法是把EEPROM既作為程序存儲(chǔ)器,也作為數(shù)據(jù)存儲(chǔ)器用;28C16的 與8031的 相連,單片機(jī)可以向28C16寫指令數(shù)據(jù)或數(shù)據(jù),表格;28C16的 與8031的P2.7進(jìn)行線選,當(dāng)系統(tǒng)中有其它程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),要統(tǒng)一考慮地址選擇.
7.2.2數(shù)據(jù)儲(chǔ)存器擴(kuò)展
一, 數(shù)據(jù)儲(chǔ)存器擴(kuò)展概述
外部數(shù)據(jù)存儲(chǔ)器芯片與單片機(jī)可按如下方式連接:
1.地址線的連接
外部程序存儲(chǔ)器低8位地址線A0~A7與P0口的口線P0.0~P0.7對(duì)應(yīng)相連;
外部程序存儲(chǔ)器高8位地址線A8~A15與P2口的口線P2.0~P2.7對(duì)應(yīng)相連.
2.數(shù)據(jù)線的連接
外部程序存儲(chǔ)器8位數(shù)據(jù)線D0~D7與P0口的口線P0.0~P0.7對(duì)應(yīng)相連.
3.控制線的連接
(單片機(jī)片外數(shù)據(jù)讀信號(hào))和 (數(shù)據(jù)存儲(chǔ)器讀信號(hào))相連;
ALE(單片機(jī)地址鎖存允許信號(hào))和G(地址鎖存器鎖存信號(hào))相連;
(單片機(jī)片外數(shù)據(jù)寫信號(hào))和 (數(shù)據(jù)存儲(chǔ)器寫信號(hào))相連;
單片機(jī)的相關(guān)地址線經(jīng)過線譯碼或地址譯碼和數(shù)據(jù)存儲(chǔ)器的片選信號(hào) 相連.
由上面論述可以得到外部擴(kuò)展數(shù)據(jù)存儲(chǔ)器的一般連接方法,見圖7-6所示.
圖7-6 單片機(jī)的外部數(shù)據(jù)存儲(chǔ)器一般連接方法
地址
鎖存器
P2.7
P2.0
ALE
8031
P0.7~P0.0
EA WR
RD
A15 CE
A8
A7
A0 外部數(shù)據(jù)
存儲(chǔ)器
D7~D.0
WE
RD


訪問外部數(shù)據(jù)區(qū)可只采用低8位地址線尋址,這時(shí)可尋址空間為256B,采用下面讀,寫指令來訪問此數(shù)據(jù)存儲(chǔ)區(qū):
MOVX A,@Ri (i=0,1)
MOVX @Ri,A (i=0,1)
由于8位尋址指令所占字節(jié)少,指令執(zhí)行速度快,故在數(shù)據(jù)量不大的情況下,應(yīng)盡可能采用這種8位尋址指令.在單片機(jī)系統(tǒng)中通常選用8155外圍芯片,其內(nèi)部的256B就可以作為外部擴(kuò)展RAM使用.
也可以采用16位地址線尋址外部數(shù)據(jù)區(qū),這時(shí)可尋址空間為64KB,采用下面8位尋址指令來讀,寫此數(shù)據(jù)存儲(chǔ)區(qū):
MOVX A,@DPTR
MOVX @DPTR,A
當(dāng)外部RAM容量較大(大于256B)時(shí),采用此尋址方法.
二,數(shù)據(jù)儲(chǔ)存器靜態(tài)RAM的擴(kuò)展
由于單片機(jī)是面向測(cè),控為主的,實(shí)際所需要的數(shù)據(jù)存儲(chǔ)器的擴(kuò)展容量不會(huì)很大,所以在擴(kuò)展時(shí)為了電路的簡(jiǎn)單,一般使用靜態(tài)RAM,如6116和6264.
圖7-7為擴(kuò)展單片6116時(shí)的電路.前面講過,擴(kuò)展單片程序存儲(chǔ)器時(shí),片選端直接接地即可,因?yàn)橄到y(tǒng)中不會(huì)再有其它程序存儲(chǔ)器芯片.但擴(kuò)展單片數(shù)據(jù)存儲(chǔ)器時(shí),其片選端能否直接接地則還要考慮應(yīng)用系統(tǒng)中有無I/O口及外圍設(shè)備擴(kuò)展,如果有,則要統(tǒng)一進(jìn)行片選選擇.
圖7-7 6116的擴(kuò)展電路
三,作為數(shù)據(jù)儲(chǔ)存器EEPROM的擴(kuò)展
EEPROM兼有程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器的特點(diǎn),故在單片機(jī)應(yīng)用系統(tǒng)中既可作為程序存儲(chǔ)器,又可作為數(shù)據(jù)存儲(chǔ)器.作為程序存儲(chǔ)器,其操作主要是程序運(yùn)行操作,必須嚴(yán)格按照程序存儲(chǔ)器的地址總線,數(shù)據(jù)總線,控制總線的聯(lián)接方式.而將EEPROM作為數(shù)據(jù)存儲(chǔ)器時(shí),與單片機(jī)的接口較靈活,既可直接將EEPROM作為片外數(shù)據(jù)存儲(chǔ)器擴(kuò)展,也可以作為一般外圍設(shè)備電路擴(kuò)展,而不影響數(shù)據(jù)的存取.
圖7-8為并行EEPROM的數(shù)據(jù)存儲(chǔ)器擴(kuò)展電路.圖中2816A可按照典型的數(shù)據(jù)存儲(chǔ)器擴(kuò)展電路聯(lián)接方式,如2814A(1)芯片.也可以作為外設(shè)電路,通過擴(kuò)I/O口8255連接,如2816A(2).可以看出,作為數(shù)據(jù)存儲(chǔ)器時(shí)其電路連接較為靈活.2816A(2)工作時(shí),要使8255進(jìn)入工作狀態(tài)(P2.7使8255有效),2816A所需的地址采用通過8255用MOVX指令送入.
圖7-8 28C16作為數(shù)據(jù)存儲(chǔ)器的擴(kuò)展電路
7.3 MCS-51系列單片機(jī)I/O口擴(kuò)展
MCS-51單片機(jī)共有四個(gè)8位并行I/O口,但這些I/O口并不能完全提供給用戶使用.只有對(duì)于片內(nèi)有ROM/EPROM/FLASH-RAM單片機(jī)8051/8751/89C51,在不使用外部擴(kuò)展時(shí),才允許這四個(gè)I/O口作為用戶I/O口使用.然而對(duì)于大多數(shù)使用8031以及使用8051/8751/89C51需外部擴(kuò)展時(shí),MCS-51單片機(jī)可提供給用戶使用的I/O只有P1口和部分P3口線.因此,在大部分的MCS-51單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)中都不可避免地要進(jìn)行I/O口的擴(kuò)展.
擴(kuò)展I/O口可以通過MCS-51單片機(jī)的數(shù)據(jù)總線進(jìn)行,也可以利用移位寄存器通過MCS-51單片機(jī)的串行口進(jìn)行.
7.3.1通過數(shù)據(jù)總線擴(kuò)展
通過數(shù)據(jù)總線擴(kuò)展I/O口,是采用外部數(shù)據(jù)存儲(chǔ)器映射方式進(jìn)行輸入,輸出的,與外部數(shù)據(jù)存儲(chǔ)器的擴(kuò)展在方法上是基本相同的.從功能上看,通過數(shù)據(jù)總線擴(kuò)展的I/O口有兩種基本類型:簡(jiǎn)單I/O口擴(kuò)展和可編程I/O口的擴(kuò)展.
一,采用簡(jiǎn)單并行I/O接口芯片擴(kuò)展
P0口是數(shù)據(jù)總線口,通過P0口擴(kuò)展I/O口時(shí),P0口只能分時(shí)使用,故輸出時(shí),接口電路應(yīng)具有鎖存功能,如采用8D鎖存器74LS273,74LS373,74LS377組成輸出口;輸入時(shí),接口電路應(yīng)能三態(tài)緩沖,如采用8位三態(tài)緩沖器74LS244組成輸入口.
1.用三態(tài)門擴(kuò)展8位輸入并行口
圖7-9是用74LS244通過P0口擴(kuò)展的8位并行輸入接口.74LS244由兩組4位三態(tài)緩沖器組成,分別由選通端和控制.當(dāng)它們?yōu)榈碗娖綍r(shí),這兩組緩沖器被選通,數(shù)據(jù)從輸入端A送到輸出端Y. 和 同時(shí)由P2.7和相或后控制,由此可知74LS244的地址為7FFFH,其數(shù)據(jù)的輸入使用以下幾條指令即可:
MOVX DPTR,#7FFFH ;數(shù)據(jù)指針指向74LS244口地

MOVX A,@DPTR ;讀入數(shù)據(jù)
圖7-9 簡(jiǎn)單I/O口的擴(kuò)展電路
2.用鎖存器擴(kuò)展簡(jiǎn)單的8位輸出口
圖7-9是用74LS273通過P0口擴(kuò)展的8位并行輸出接口.74LS273是帶三態(tài)門控的鎖存器,CLR為數(shù)據(jù)清零端,其為低電平時(shí)有效,故此處應(yīng)接高電平.CLK為鎖存時(shí)鐘端,由P2.7和相或后控制,當(dāng)同時(shí)為低電平時(shí),將P0口的數(shù)據(jù)鎖存到74LS273.因此74LS273的地址為7FFFH,和輸入口地址相同,但由于它們分別由和信號(hào)控制,仍然不會(huì)發(fā)生沖突.其數(shù)據(jù)的輸出使用以下幾條指令即可:
MOVX DPTR,#7FFFH;數(shù)據(jù)指針指向 74LS273口地址
MOVX A,#data ;輸出數(shù)據(jù)要通過累加器傳送
MOVX @DPTR,A ;P0口通過74LS273輸出數(shù)據(jù)
當(dāng)要擴(kuò)展多個(gè)簡(jiǎn)單的8位輸入口和輸出口,多個(gè)74LS244的選通端和和多個(gè)74LS273的鎖存時(shí)鐘CLK,應(yīng)采用類似前面所講述的多片EPROM擴(kuò)展時(shí)的片選方法.但要注意8031的I/O口驅(qū)動(dòng)能力,在實(shí)際應(yīng)用時(shí),要根據(jù)負(fù)載的大小適當(dāng)增設(shè)驅(qū)動(dòng)電路.
二,采用可編程并行I/O接口芯片擴(kuò)展
在單片機(jī)接口中,常使用一些結(jié)構(gòu)復(fù)雜的接口芯片,以完成各種復(fù)雜的操作.這類芯片一般具有多種功能,在使用前,必須由CPU對(duì)其編程,以確定其工作方式,之后才能使芯片按設(shè)定的方式進(jìn)行操作,這就是可編程接口.下面將通過使用8255擴(kuò)展并行I/O口重點(diǎn)說明這個(gè)問題.
1. 8255的初始化
使用8255時(shí),首先要由CPU對(duì)8255寫入控制命令字,有兩種控制命令字:一個(gè)是方式選擇控制字,另一個(gè)是C口按位置位/復(fù)位控制字,8255的各種工作方式都要由控制命令字來設(shè)定,這個(gè)設(shè)置過程稱為"初始化".
(1)方式選擇控制字(D7=1)
D0~D2三位用來對(duì)B組的端口進(jìn)行工作方式設(shè)定.D2設(shè)置B口的工作方式,D2=1為方式1;D2=0為方式0.D1位設(shè)定B口的輸入或輸出,D1=1為輸入;D1=0為輸出.D0位設(shè)定C口的低半部,D0=1為輸入,D0=0為輸出.
D3~D6四位用來對(duì)A組的端口進(jìn)行設(shè)定.D6D5組合起來設(shè)定A口工作方式,D6D5=00,為方式0;D6D5=01為方式1;D6D5=10和11都為方式2.D4位用來設(shè)定A口的輸入或輸出.D3位用來設(shè)定C口上半部的輸入或輸出,D3=1為輸入,D3=0為輸出.
(2)_ C口按位置/復(fù)位控制字(D7=0)
因?yàn)镃口共有8個(gè)二進(jìn)制位,要確定對(duì)其中某一位進(jìn)行操作,就要在控制字中指定該位的編號(hào).圖中用了D3D2D1三位的編碼與C口的某一位相對(duì)應(yīng),對(duì)指定位進(jìn)行的操作則由D0確定,如D0=1時(shí),將指定位置"1".D0=0則將指定位置"0".
2. 8255和8031的接口方法
MCS-51單片機(jī)與8255的接口邏輯簡(jiǎn)單,其接口電路如圖7-10所示.圖中,8255的片選信號(hào)及口地址選擇線A0,A1分別由8031的P0.7和P0.0,P0.1經(jīng)地址鎖存后提供.故8255的A,B,C口及控制口地址分別為FF7CH,FF7DH,FF7EH,FF7FH.8255的復(fù)位端與8031的復(fù)位端相連,都接到8031的復(fù)位電路上.
_
圖7-10 8031與8255接口電路
7.3.2通過串行口擴(kuò)展
一,用并入串出移位寄存器擴(kuò)展并行輸入口
圖7-11是利用兩片74LS165擴(kuò)展2個(gè)8位并行輸入口的電路.74LS165是8位并行輸入串行輸出移位寄存器,單片機(jī)的RXD(P3.0)作為串行數(shù)據(jù)輸入端與74LS165的串行輸出端Q7相連;單片機(jī)的TXD(P3.1)為移位脈沖輸出端,與所有的74LS164芯片的移位脈沖輸入端CLK相連;用1根I/O線(P1.0)與74LS165的移位/置位端相連,來控制其移位與置位.當(dāng) 為低電平時(shí),并行數(shù)據(jù)置入74LS165的寄存器;當(dāng) 為高電平時(shí),開始串行移位.當(dāng)擴(kuò)展多個(gè)8位輸入口時(shí),相鄰兩芯片的首尾(串行輸出端Q7與串行輸入端SER)相連.
串行接收時(shí),由RI引起中斷或?qū)I查詢來決定何時(shí)接受下一個(gè)字符(在采用查詢方式時(shí),也需預(yù)先關(guān)閉中斷).
 單片機(jī)擴(kuò)展中斷的簡(jiǎn)便方法(zz)

 

MCS—51系列單片機(jī)內(nèi)部只有兩個(gè)外部中斷源輸入端,當(dāng)外部中斷源多于兩個(gè)時(shí),就必須進(jìn)行擴(kuò)展,下面介紹兩種簡(jiǎn)單的擴(kuò)展方法:
  一、采用硬件請(qǐng)求和軟件查詢的方法:
這種方法是:把各個(gè)中斷源通過硬件“或非”門引入到單片機(jī)外部中斷源輸入端(INT0或INT1),同時(shí)再把外部中斷源送到單片機(jī)的某個(gè)輸入輸出端口,這樣當(dāng)外部中斷時(shí),通過“或非”門引起單片機(jī)中斷,在中斷服務(wù)程序中再通過軟件查詢,進(jìn)而轉(zhuǎn)相應(yīng)的中斷服務(wù)程序。顯然,這種方法的中斷優(yōu)先級(jí)取決于軟件查詢的次序。其硬件連接和軟件編程如下:
         

  Void zhongduan (void) interrupt 0 using 3 //中斷函數(shù)
{
EX0=0;//關(guān)中斷
If(P0_0=1) { *****}//中斷查詢
If(P0_1=1) { *****}//中斷查詢
If(P0_2=1) { *****}//中斷查詢
EX0=1;開中斷
}

  二、用定時(shí)器/計(jì)數(shù)器作外部中斷
單片機(jī)的定時(shí)器/計(jì)數(shù)器是一個(gè)加一計(jì)數(shù)器,每當(dāng)計(jì)數(shù)輸入端有一個(gè)“1—0”的負(fù)跳變時(shí),計(jì)數(shù)器加一,當(dāng)加一計(jì)數(shù)器溢出時(shí),就向CPU發(fā)出中斷,利用這個(gè)特性來擴(kuò)展中斷的方法是:首先把定時(shí)器/計(jì)數(shù)器設(shè)置成計(jì)數(shù)方式,并預(yù)置滿值,把外部中斷源輸入到P3口第4引腳或第5引腳(計(jì)數(shù)器輸入端),這樣就可以利用定時(shí)器/計(jì)數(shù)器作為單片機(jī)外部中斷了。注意這種方法的中斷服務(wù)的入口地址應(yīng)在000BH或001BH。
 

 

 

圖7-11 利用串行口擴(kuò)展并行輸入口
下面程序?yàn)槔脠D7-11讀入16位數(shù)據(jù)并存入8031的片內(nèi)RAM30H和31H兩個(gè)端單元中:
MOV R0,#30H ;建立指針
MOV R7,#02H ;字節(jié)計(jì)數(shù)初值
CLR P1.0 ;=0,并置入數(shù)據(jù)
SETB P1.0 ;=1,允許串行移位
LOOP:MOV SCON,#10H ;置串行口方式0,REN=1,RI=0
NB RI,$ ;等待一幀數(shù)據(jù)接受完
MOV A,SBUF ;讀接受數(shù)據(jù)
MOV @R0,A ;存入RAM緩沖區(qū)
INC R0 ;調(diào)整指針
DJNZ R7,LOOP ;數(shù)據(jù)未接受完,繼續(xù)
CLR RI ;清接收標(biāo)志
二,采用串入并出移位寄存器擴(kuò)展并行輸出口
圖7-12是利用兩片74LS164擴(kuò)展2個(gè)2位輸出口的接口電路. 74LS164是8位串入并出移位寄存器,單片機(jī)的RXD(P3.0)為串行輸出與74LS164數(shù)據(jù)輸入端(1,2)相連;TXD(P3.1)為移位脈沖輸出,與74LS164的時(shí)鐘脈沖輸出端(8)相連;由P1.0口線控制74LS164的清除端
(9).當(dāng) 為低電平時(shí),清除74LS165中的數(shù)據(jù);當(dāng) 為高電平時(shí),開始串行移位.當(dāng)擴(kuò)展多個(gè)8位輸入口時(shí),相鄰兩芯片的首尾(串行輸出端Q7與串行輸入端A,B)相連.
圖7-12 利用串行口擴(kuò)展并行輸出口
下面程序?yàn)槔脠D7-12擴(kuò)展一個(gè)16位并行輸出口,將8031的片內(nèi)RAM30H和31H兩個(gè)單元中的數(shù)據(jù)通過兩片74LS164輸出:
MOV R0,#30H ;建立指針
MOV R7,#02H ;字節(jié)計(jì)數(shù)初值
SETB P1.0 ;=1,清零端無效
LOOP:MOV SCON,#10H ;置串行口方式0,REN=1,RI=0
MOV A,@R0 ;取RAM緩沖區(qū)內(nèi)容
MOV SBUF,A ;發(fā)送
JNB RI,$ ;等待一幀數(shù)據(jù)發(fā)送完
INC R0 ;調(diào)整指針
DJNZ R7,LOOP ;數(shù)據(jù)未發(fā)送完,繼續(xù)
CLR TI ;清發(fā)送標(biāo)志
應(yīng)當(dāng)指出,再兩次發(fā)送過程中,兩片74LS164的16位輸出端是連續(xù)變化的.每個(gè)移位脈沖使數(shù)據(jù)自Q0向Q7方向移動(dòng)一位,待兩個(gè)字節(jié)全部發(fā)送完畢時(shí),輸出穩(wěn)定下來.
小 結(jié)
在很多情況下,構(gòu)成一個(gè)單片機(jī)應(yīng)用系統(tǒng)時(shí),考慮到傳感器接口,伺服控制接口以及人機(jī)對(duì)話接口等的需要,必須在片外擴(kuò)展相應(yīng)的外圍芯片,這就是單片機(jī)接口擴(kuò)展.它包括程序存儲(chǔ)器(ROM)擴(kuò)展,數(shù)據(jù)存儲(chǔ)器(RAM)擴(kuò)展,I/O口擴(kuò)展等.
MCS-51單片機(jī)片外引腳可以構(gòu)成三總線結(jié)構(gòu),即地址總線(AB),數(shù)據(jù)總線(DB)和控制總線(CB),所有的外部芯片都是通過這三組總線進(jìn)行擴(kuò)展.由于P0口分時(shí)用作數(shù)據(jù)總線和地址總線的低8位,因此必須采用地址鎖存器將P0口輸出的低8位地址進(jìn)行鎖存.
根據(jù)地址總線寬度,在片外可擴(kuò)展的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器最大容量都為64KB,地址范圍為0000H~FFFFH.擴(kuò)展的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的地址范圍雖然相同,但可通過不同的指令和控制信號(hào)加以區(qū)別.讀片外程序存儲(chǔ)器采用MOVC指令和 取指信號(hào) ;讀和寫片外數(shù)據(jù)存儲(chǔ)器采用MOVX指令和 ,
片外數(shù)據(jù)讀,寫信號(hào).
擴(kuò)展的I/O口與片外數(shù)據(jù)存儲(chǔ)器采用統(tǒng)一編址,這樣做的優(yōu)點(diǎn)是不必為擴(kuò)展的I/O另外提供地址線,減少單片機(jī)的引腳數(shù).但當(dāng)應(yīng)用系統(tǒng)需要擴(kuò)展較多的I/O口時(shí),要占去大量的數(shù)據(jù)存儲(chǔ)器的地址.
當(dāng)片外擴(kuò)展單一芯片(存儲(chǔ)器和I/O芯片)時(shí),該芯片的片選信號(hào)可以直接接地;當(dāng)擴(kuò)展多片程序存儲(chǔ)器或多片數(shù)據(jù)存儲(chǔ)器(包括I/O口芯片)時(shí),所有芯片的片選端都必須按照地址線進(jìn)行選擇,常用線選法或地址譯碼法.
片外擴(kuò)展的程序存儲(chǔ)器常用EPROM和EEPROM,片外擴(kuò)展的數(shù)據(jù)存儲(chǔ)器常用靜態(tài)RAM和EEPROM.擴(kuò)展I/O口常用數(shù)據(jù)總線進(jìn)行,在串行口不作它用時(shí),還可以用串行口外接并入串出移位寄存器和串入并出移位寄存器,擴(kuò)展并行輸入口和并行輸出口.用數(shù)據(jù)總線擴(kuò)展并行I/O時(shí),可采用簡(jiǎn)單的8位三態(tài)緩沖器和8位三態(tài)鎖存器擴(kuò)展并行輸入口和輸出口,也可以采用可編程I/O芯片擴(kuò)展并行I/O口.
思考題與習(xí)題七
1.MCS-51單片機(jī)與外部擴(kuò)展的存儲(chǔ)器相接時(shí),為何低8位地址信號(hào)需通過地址鎖存器,而高8位不需經(jīng)過地址鎖存器
2.在MCS-51擴(kuò)展系統(tǒng)中,程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器共有16位地址和8位數(shù)據(jù)線,為什么兩個(gè)存儲(chǔ)空間不會(huì)發(fā)生沖突
3.利用74LS138設(shè)計(jì)一個(gè)譯碼電路,分別選中8片6116,且列出各芯片所占的地址空間范圍.
4.程序存儲(chǔ)器的擴(kuò)展和數(shù)據(jù)存儲(chǔ)器的擴(kuò)展有何異同 試在8031芯片外采用2732作ROM,6116作RAM,擴(kuò)展具有12KB ROM和6KB RAM的存儲(chǔ)系統(tǒng).
5.8255芯片內(nèi)部有哪幾個(gè)主要部分 各部分的功能如何
6.用8255和8031構(gòu)成一個(gè)EPROM2732的編程器接口,該系統(tǒng)含2K字節(jié)的EPROM外部程序存儲(chǔ)器和兩片6116共4K字節(jié)的數(shù)據(jù)存儲(chǔ)器.用8255作為EPROM2732的編程器接口,8255的A,B,C口均設(shè)置為方式0輸出,A口作為編程數(shù)據(jù)輸出口,B口為編程器的低8位地址輸出口,PC0~PC3為高4位地址輸出口,PC7為編程信號(hào)輸出端.試設(shè)計(jì)該編程器的硬件電路和編程寫出子程序.
7.試?yán)?031的串行口設(shè)計(jì)一個(gè)接口電路和相應(yīng)的軟件,用于讀取8位開關(guān)信號(hào),并用8個(gè)LED顯示對(duì)應(yīng)開關(guān)的狀態(tài).
 單片機(jī)擴(kuò)展中斷的簡(jiǎn)便方法(zz)

 

MCS—51系列單片機(jī)內(nèi)部只有兩個(gè)外部中斷源輸入端,當(dāng)外部中斷源多于兩個(gè)時(shí),就必須進(jìn)行擴(kuò)展,下面介紹兩種簡(jiǎn)單的擴(kuò)展方法:
  一、采用硬件請(qǐng)求和軟件查詢的方法:
這種方法是:把各個(gè)中斷源通過硬件“或非”門引入到單片機(jī)外部中斷源輸入端(INT0或INT1),同時(shí)再把外部中斷源送到單片機(jī)的某個(gè)輸入輸出端口,這樣當(dāng)外部中斷時(shí),通過“或非”門引起單片機(jī)中斷,在中斷服務(wù)程序中再通過軟件查詢,進(jìn)而轉(zhuǎn)相應(yīng)的中斷服務(wù)程序。顯然,這種方法的中斷優(yōu)先級(jí)取決于軟件查詢的次序。其硬件連接和軟件編程如下:
         

  Void zhongduan (void) interrupt 0 using 3 //中斷函數(shù)
{
EX0=0;//關(guān)中斷
If(P0_0=1) { *****}//中斷查詢
If(P0_1=1) { *****}//中斷查詢
If(P0_2=1) { *****}//中斷查詢
EX0=1;開中斷
}

  二、用定時(shí)器/計(jì)數(shù)器作外部中斷
單片機(jī)的定時(shí)器/計(jì)數(shù)器是一個(gè)加一計(jì)數(shù)器,每當(dāng)計(jì)數(shù)輸入端有一個(gè)“1—0”的負(fù)跳變時(shí),計(jì)數(shù)器加一,當(dāng)加一計(jì)數(shù)器溢出時(shí),就向CPU發(fā)出中斷,利用這個(gè)特性來擴(kuò)展中斷的方法是:首先把定時(shí)器/計(jì)數(shù)器設(shè)置成計(jì)數(shù)方式,并預(yù)置滿值,把外部中斷源輸入到P3口第4引腳或第5引腳(計(jì)數(shù)器輸入端),這樣就可以利用定時(shí)器/計(jì)數(shù)器作為單片機(jī)外部中斷了。注意這種方法的中斷服務(wù)的入口地址應(yīng)在000BH或001BH。 
 

關(guān)閉窗口