單片機(jī)系統(tǒng)擴(kuò)展是指單片機(jī)內(nèi)部各功能部件不能滿(mǎn)足應(yīng)用系統(tǒng)要求時(shí),在片外連接相應(yīng)的外圍芯片以滿(mǎn)足應(yīng)用系統(tǒng)的要求。
對(duì)單片機(jī)系統(tǒng)擴(kuò)展的方法有并行擴(kuò)展和串行擴(kuò)展兩種。
串行口的擴(kuò)展方法
常用的標(biāo)準(zhǔn)51單片機(jī)內(nèi)部?jī)H含有一個(gè)可編程的全雙工串行通信接口,具有UART的全部功能。該接口電路不僅能同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收,也可作為一個(gè)同步移位寄存器使用。當(dāng)以此類(lèi)型單片機(jī)構(gòu)成分布式多級(jí)應(yīng)用系統(tǒng)時(shí),器件本身的串口資源就不夠用了。筆者在實(shí)際開(kāi)發(fā)中,查閱了有關(guān)資料,總結(jié)出如下兩種常用而有效的串行通道擴(kuò)展方法。
2.1 基于SP2538的擴(kuò)展方法
SP2538是專(zhuān)用低功耗串行口擴(kuò)展芯片,該芯片主要是為解決當(dāng)前基于UART串口通信的外圍智能模塊及器件較多,而單片機(jī)或DSP原有的UART串口又過(guò)少的問(wèn)題而推出的。利用該器件可將現(xiàn)有單片機(jī)或DSP的單串口擴(kuò)展至5個(gè)全雙工串口。使用方法簡(jiǎn)單、高效。
在應(yīng)用SP2538擴(kuò)展串行通道時(shí),母串口波特率K1=2880*Fosc_in,單位是MHz,且Fosc_in小于20.0MHz, 在SP2538輸入時(shí)鐘Fosc_in =20.0MHz時(shí)母串口可自適應(yīng)上位機(jī)的56000bps和57600bps兩種標(biāo)準(zhǔn)波特率輸入。子串口波特率K2=480*Fosc_in。
母串口和所有子串口都是TTL電平接口,可直接匹配其他單片機(jī)或TTL數(shù)字電路,如需連接PC機(jī)則必須增加電平轉(zhuǎn)換芯片如MAX202 、MAX232 等。SP2538具有內(nèi)置的上電復(fù)位電路和可關(guān)閉的看門(mén)狗監(jiān)控電路。上位機(jī)寫(xiě)命令字0x10可實(shí)現(xiàn)喂狗,寫(xiě)命令字0x15關(guān)閉看門(mén)狗,初次上電后看門(mén)狗處于激活狀態(tài)或?qū)懨钭?x20激活看門(mén)狗監(jiān)控功能。上位機(jī)可通過(guò)芯片復(fù)位指令0x35在任何時(shí)候讓芯片進(jìn)行指令復(fù)位,也可通過(guò)芯片睡眠指令0x55在任何時(shí)候讓芯片進(jìn)入微功耗睡眠模式以降低系統(tǒng)功耗。初次上電后芯片不會(huì)自行進(jìn)入睡眠模式,但只能由上位機(jī)通過(guò)母串口任意發(fā)送一個(gè)字節(jié)數(shù)據(jù)將其喚醒,其他子串口不具備這一功能。
圖(1)是AT89C52單片機(jī)與SP2538的電路連接,圖中,AT89C52的全雙工串口與SP2538的母串口5相連,該串口同時(shí)也作為命令/數(shù)據(jù)口。SP2538的ADRI0、ADRI1、ADRI2分別與AT89C52的P2.3、P2.4、P2.5口相連,可用于選擇發(fā)送數(shù)據(jù)是選擇相應(yīng)的串口0~4;ADRO0、ADRO1、ADRO2與P2.0、P2.1、P2.2相連,用于判斷接收的數(shù)據(jù)來(lái)自哪一個(gè)串口。 SP2538的時(shí)鐘頻率選為20.0MHZ,此時(shí)母串口5的波特率為57600bps,串口0~4的波特率為9600bps。
下面是與上述硬件電路相關(guān)的接口程序,該程序用A51匯編語(yǔ)言編制,程序僅說(shuō)明了中斷方式下對(duì)子串口0(TX0、RX0)的操作,其它子串口類(lèi)似。
TBLOCK DATA 20H
RBLOCK DATA 30H
LENGTH DATA 14H
…
TXR_REV_SEND: CLR ES
JBC RI,RECEIVE
CLR TI
MOV A,@R0
CLR P2.0 ; 寫(xiě)數(shù)據(jù)到“SBUF”前必須先置欲發(fā)送子串口的地址
CLR P2.1
CLR P2.2
MOV SBUF,A
DJNZ R2,NEXT
SJMP $
NEXT: INC R0
RETI
RECEIVE: MOV A,P2
AND A,#31H ;判斷是否為子串口0
JNZ ELSE
MOV A,SBUF
MOV @R1,A
INC R1
RETI
圖(1) AT89C52與SP2538的電路連接
2.2 基于Intel8251的串行口擴(kuò)展方法
上面基于SP2538的串口擴(kuò)展方法可以說(shuō)是一種串行的擴(kuò)展方法,這里基于Intel8251的擴(kuò)展方法則是一種并行的方法。Intel8251是一種通用的同步/異步發(fā)送器(USART),它的工作方式可以通過(guò)編程設(shè)置。能夠以同步或異步串行通信方式工作,能自動(dòng)完成幀格式。
Intel8251具有獨(dú)立的接收/發(fā)送器。在異步方式下,用于產(chǎn)生8251內(nèi)部時(shí)序的時(shí)鐘CLK輸入至少應(yīng)為發(fā)送或接收時(shí)鐘的4.5倍。接收/發(fā)送(RXC/TXC)時(shí)鐘應(yīng)為波特率的1倍、16倍或64倍(由8251的工作方式字設(shè)定)。
圖(2)是用Intel8251擴(kuò)展一個(gè)串行通道的電路原理,圖中,11.0592MHZ晶振經(jīng)ALE6分頻后于 、組合,產(chǎn)生1.8432MHZ的時(shí)鐘頻率,分別作為8251與8253的時(shí)鐘輸入,若設(shè)定8251通信波特率為9600bps,波特率因子為16,則需要 153.6KHZ的接收/發(fā)送時(shí)鐘頻率,該頻率可由8253的OUT0產(chǎn)生。
下面的A51程序段說(shuō)明了如何設(shè)置8253使其產(chǎn)生153.6KHZ的方波,以及如何用8251收/發(fā)數(shù)據(jù):
;設(shè)置8253的程序段:
MOV A,#36H ; 計(jì)數(shù)器0輸出方波控制字
MOV DPTR,#0FFFFH ; 指向控制字寄存器
MOVX @DPTR,A
MOV DPTR,#0FFFCH ; 指向0計(jì)數(shù)器地址
MOV A,#0DH
MOVX @DPTR,A
MOV A,#0
MOVX DPTR,A
SETB P1.0
;操作8251的程序段:
…
START: MOV DPTR,#7FFFH ;8251控制、命令口地址
MOV A,#5EH ;一個(gè)停止位,奇校驗(yàn),8位數(shù)據(jù),異步*16
MOVX @DPTR,A ;寫(xiě)入方式字
MOV A,#15H
MOVX @DPTR,A ;命令字,啟動(dòng)發(fā)送和接收器
…
LOOP: SJMP LOOP ;等待8251中斷
8251_INT: ;現(xiàn)場(chǎng)保護(hù)
MOV DPTR,#7FFFH
MOV A,@DPTR
JB ACC.0,TX_INT
JB ACC.1,RX_INT
INT_EXIT: ;恢復(fù)現(xiàn)場(chǎng)
RETI
;發(fā)送數(shù)據(jù)
TX_INT: MOV DPTR,#7FFEH ;8251數(shù)據(jù)口地址
MOV A,20H
MOVX @DPTR,A
…
AJMP INT_EXIT
;接收數(shù)據(jù)
RX_INT: MOV DPTR,#7FFEH
MOVX A,@DPTR
MOV 30H,A
…
AJMP INI_EXIT
圖(2)用8251擴(kuò)展串行通道的硬件電路原理
并行擴(kuò)展是指利用單片機(jī)三組總線(xiàn)(AB,DB,CB)進(jìn)行的系統(tǒng)擴(kuò)展。
串行擴(kuò)展是指利用SPI(Serial Peripheral Interface)三線(xiàn)總線(xiàn)和I2C雙總線(xiàn)的串行系統(tǒng)擴(kuò)展。
1,外部并行擴(kuò)展
單片機(jī)是通過(guò)芯片的引腳進(jìn)行系統(tǒng)擴(kuò)展的。為了滿(mǎn)足系統(tǒng)擴(kuò)展的要求,MCS-51系列單片機(jī)芯片引腳可以構(gòu)成可以構(gòu)成下圖所示的三總線(xiàn)結(jié)構(gòu),單片機(jī)所有的外部芯片都是通過(guò)這三組總線(xiàn)進(jìn)行擴(kuò)展。
2,外部串行擴(kuò)展
串行擴(kuò)展包括SPI三線(xiàn)總線(xiàn)和I2C雙總線(xiàn)兩種。在單片機(jī)內(nèi)不具有串行總線(xiàn)時(shí),可利用兩根或三根I/O口線(xiàn)用軟件來(lái)虛擬串行總線(xiàn)的功能。下圖所示:
P2
ALE
P0
WR
RD
PSEN
EA
RESET
MCS-51
地址鎖存器
A8-A15
A0-A7
地址總線(xiàn)
D0-D7
數(shù)據(jù)總線(xiàn)
控制總線(xiàn)
MCS-51單片機(jī)的三總線(xiàn)結(jié)構(gòu)
4.1單片機(jī)三總線(xiàn)的形成(外部并行擴(kuò)展)
有I2C接口的主機(jī)
有I2C接口的RAM或I/O芯片
有I2C接口
的從機(jī)
SCL
SDL
Vcc
Rf
I2C總線(xiàn)
I2C 總線(xiàn)系統(tǒng)示意圖
AB,DB,CB 各自的作用
(AB,DB,CB)三組總線(xiàn)稱(chēng)為系統(tǒng)總線(xiàn)。
系統(tǒng)總線(xiàn)的含義是指計(jì)算機(jī)各芯片之間的公共連線(xiàn)。總線(xiàn)的根數(shù)(位數(shù))稱(chēng)為總線(xiàn)寬度。
地址總線(xiàn):?jiǎn)纹瑱C(jī)外部有存儲(chǔ)器或接口芯片,其中都有存儲(chǔ)單元或寄存器單元,這些單元地位平等,需要被分配地址編號(hào)才能予以區(qū)分,分配地址當(dāng)然也是以電信號(hào)形式給出,由于存儲(chǔ)器的容量很大,所以用于分配地址的線(xiàn)也較多,這些線(xiàn)被稱(chēng)為地址線(xiàn)總線(xiàn).51單片機(jī)的地址總線(xiàn)AB(address bus)為16位,可尋址216 (64K)存儲(chǔ)空間
數(shù)據(jù)總線(xiàn):起著在CPU和存儲(chǔ)器或外圍接口電路之間傳遞數(shù)據(jù)的作用。我們常說(shuō)的8位機(jī),16位機(jī),32位機(jī),是說(shuō)CPU的外數(shù)據(jù)總線(xiàn)(DB )(data bus) )寬度(位數(shù))。
控制總線(xiàn):通常包括時(shí)序信號(hào)(時(shí)鐘,定時(shí),應(yīng)答),數(shù)據(jù)傳送控制(如存儲(chǔ)器的讀寫(xiě),IO設(shè)備的讀寫(xiě))信號(hào),中斷的請(qǐng)求和響應(yīng),總線(xiàn)請(qǐng)求,復(fù)位等信號(hào),控制總線(xiàn)CB(control bus)隨CPU的不同而各具特色。
單片機(jī)的擴(kuò)展
MCS-51單片機(jī)本身是一個(gè)基本的微型計(jì)算機(jī),內(nèi)部已經(jīng) 具有一定數(shù)量的存儲(chǔ)單元和I/O接口,但在內(nèi)部的資源不能夠滿(mǎn)足系統(tǒng)的需要時(shí),就需要進(jìn)行資源的擴(kuò)展,單片機(jī)的擴(kuò)展主要包括以下
兩方面的內(nèi)容:
存儲(chǔ)器的擴(kuò)展
I/O接口的擴(kuò)展
注: MCS-51系列的單片機(jī)在進(jìn)行擴(kuò)展時(shí),需要把P0口和P2口作為擴(kuò)展總線(xiàn)使用,不能夠再作為一般的I/O口使用。
存儲(chǔ)器的擴(kuò)展
在單片機(jī)系統(tǒng)中,存儲(chǔ)器的擴(kuò)展包括:
程序存儲(chǔ)器擴(kuò)展
隨著半導(dǎo)體技術(shù)的發(fā)展,單片機(jī)內(nèi)部的程序存儲(chǔ)器數(shù)量越來(lái)越大,在一般的單片機(jī)系統(tǒng)中,對(duì)于程序存儲(chǔ)器的擴(kuò)展已經(jīng)使用的比較少。但對(duì)于一些比較早的片內(nèi)沒(méi)有程序存儲(chǔ)器的單片機(jī)(8031,8032),在使用時(shí)還需要進(jìn)行存儲(chǔ)器的擴(kuò)展。
但建議用戶(hù)盡量避免外擴(kuò)ROM,51系列單片機(jī)1000多種型號(hào),一定可以找到內(nèi)部ROM容量符合要求的單片機(jī)。即便是單片機(jī)略微貴點(diǎn)也值得。
數(shù)據(jù)存儲(chǔ)器擴(kuò)展
在MCS-51系列單片機(jī)構(gòu)成的系統(tǒng)中,內(nèi)部RAM的數(shù)量比較有限(128B或256B),在面對(duì)大容量的數(shù)據(jù)處理時(shí),就需要進(jìn)行RAM的擴(kuò)展。
程序存儲(chǔ)器擴(kuò)展
常用的外部程序存儲(chǔ)器:
EPROM(紫外線(xiàn)可擦除)
常用的EPROM以27xx系列為主。
EEPROM(電可擦除)
目前的EEPROM分為:串行EEPROM和并行EEPROM,在使用時(shí),常常把串行的EEPROM作為數(shù)據(jù)存儲(chǔ)器使用。以28xx系列為主。
FlashROM(快閃電可擦除)
主要以29Cxx系列為主。
常用的EPROM芯片引腳封裝示意圖
常用的EPROM芯片引腳封裝示意圖
不同容量的EPROM只是在地址線(xiàn)的數(shù)目和編程信號(hào)引腳有一點(diǎn)區(qū)別,各重要的引腳含義如下:
A0-Ai:地址輸入線(xiàn),決定存儲(chǔ)器的容量;
Q0-Q7:雙向三態(tài)數(shù)據(jù)線(xiàn);
E:片選信號(hào)輸入線(xiàn);
G:讀選通輸入信號(hào)線(xiàn);
P:編程脈沖輸入線(xiàn);
VPP:編程電源輸入線(xiàn);
VCC:工作電源輸入線(xiàn)(常為+5V);
GND/VSS:工作時(shí)接地線(xiàn)。
2817A
2864A
常用的EEPROM芯片引腳封裝示意圖
不同容量的EEPROM只是在地址線(xiàn)的數(shù)目和編程信號(hào)引腳有一點(diǎn)區(qū)別,各重要的引腳含義如下:
A0-Ai:地址輸入線(xiàn),決定存儲(chǔ)器的容量;
I/O0- I/O7(D0-D7):雙向三態(tài)數(shù)據(jù)線(xiàn);
CE:片選信號(hào)輸入線(xiàn);
OE:讀選通輸入信號(hào)線(xiàn);
WE:讀選通信號(hào)輸入線(xiàn);
VCC:工作電源輸入線(xiàn)(常為+5V);
GND:工作時(shí)接地線(xiàn)。
29c256
29c512
常用的FlashROM芯片引腳封裝示意圖
2.程序存儲(chǔ)器擴(kuò)展實(shí)例
MCS-51單片機(jī)與27256芯片的接口。
利用EPROM擴(kuò)展一個(gè)存儲(chǔ)容量為32KB的程序存儲(chǔ)器
MCS-51單片機(jī)與2864芯片的接口。
由于2864不僅可以存放程序也可以在線(xiàn)寫(xiě)入數(shù)據(jù),可通過(guò)一定的方式來(lái)擴(kuò)展一個(gè)程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器一體的存儲(chǔ)空間,其容量為8KB.
MCS-51單片機(jī)與27256芯片的接口
27256的基本地址范圍:0000H—7FFFH
P0連接:
74LS373的1D-8D
27256的DQ1-DQ8
PSEN接OE
CE接地
P2連接
27256的A8-A14
MCS-51單片機(jī)與2864芯片的接口
2864的基本地址范圍:0000H—1FFFH
P0連接:
74LS373的1D-8D
27256的DQ1-DQ8
P2連接
27256的A8-A12
PSEN和RD相與接OE,WR接WE,CE接P2.7
讀外部程序存儲(chǔ)器時(shí)序
ALE
PSEN
注意:上述時(shí)序是在取指令過(guò)程中自動(dòng)產(chǎn)生
一個(gè)機(jī)器周期
送地址
取出指令
程序存儲(chǔ)器擴(kuò)展實(shí)例思考:
MCS-51單片機(jī)與27256芯片的接口中,為什么片選信號(hào)可以直接接地 它的地址范圍還可以是多少
MCS-51單片機(jī)與2864芯片的接口中,EEPROM可以在線(xiàn)寫(xiě)入數(shù)據(jù),它能否像寫(xiě)RAM一樣寫(xiě)入 它的地址范圍還可以是多少
數(shù)據(jù)存儲(chǔ)器擴(kuò)展
常用的數(shù)據(jù)存儲(chǔ)器:
靜態(tài)RAM
靜態(tài)RAM在應(yīng)用時(shí)存取速度快,使用方便并且價(jià)格比較的低廉。但它具有在掉電時(shí),內(nèi)部的數(shù)據(jù)會(huì)丟失。典型的有6116,6264,62256等芯片。為了避免掉電數(shù)據(jù)丟失,出現(xiàn)了自動(dòng)保護(hù)的靜態(tài)RAM,如:DS1225,DS1235.
串行EEPROM
串行EEPROM的與并行的EEPROM特性一樣,只是在數(shù)據(jù)的讀寫(xiě)使用串行方式。常用的有24Cxx系列(I2C接口)和X25系列(SPI接口)的串行EEPROM.
一,靜態(tài)RAM
不同容量的靜態(tài)RAM只是在地址線(xiàn)的數(shù)目和編程信號(hào)引腳有一點(diǎn)區(qū)別,各重要的引腳含義如下:
A0-Ai:地址輸入線(xiàn),決定存儲(chǔ)器的容量;
I/O0-I/O7:雙向三態(tài)數(shù)據(jù)線(xiàn);
CE:片選信號(hào)輸入線(xiàn);
OE:讀選通輸入信號(hào)線(xiàn);
WE:寫(xiě)選通輸入信號(hào);
VPP:編程電源輸入線(xiàn);
VCC:工作電源輸入線(xiàn)(常為+5V);
GND:工作時(shí)接地線(xiàn)。
6264
62256
常用的靜態(tài)RAM芯片引腳封裝示意圖
二,串行ROM
不同容量的串行ROM存儲(chǔ)容量上有區(qū)別,各重要的引腳含義如下:
A0,A1,A2:芯片的地址輸入線(xiàn);
SDA:串行數(shù)據(jù)輸入端;
SCL:串行時(shí)鐘輸入端;
RESET:復(fù)位信號(hào)輸入;
WP:寫(xiě)保護(hù)輸入端,為低電平時(shí)不允許寫(xiě)數(shù)據(jù);
SCK:串行時(shí)鐘輸入端;
SI:串行數(shù)據(jù)輸入端;
VCC:工作電源輸入線(xiàn)(常為+5V);
GND:工作時(shí)接地線(xiàn)。
AT24CXX和X25043的芯片引腳封裝示
意圖封裝
AT24Cxx
X25043
三,利用6116擴(kuò)展一個(gè)2KB的
數(shù)據(jù)存儲(chǔ)器
在利用6116對(duì)MCS-51系列的單片機(jī)進(jìn)行存儲(chǔ)器擴(kuò)展時(shí),基本的連接為:
OE與RD控制相連;
WE與WR控制相連;
CE與P2.7相連;
A0-A7與鎖存器74LS373的Q0-Q7相連;
A8-A10分別與P2.0-P2.2相連;
6116的基本地址范圍:0000H—07FFH.
MCS-51單片機(jī)與6116芯片的接口
6116的基本地址范圍:0000H—07FFH
P0連接:
74LS373的1D-8D
6116的DQ1-DQ8
OE接RD
WR接WD
P2連接片選和
6116的A8-A10
四,利用DS1235擴(kuò)展一個(gè)32KB的數(shù)據(jù)存儲(chǔ)器
在利用DS1235對(duì)MCS-51系列的單片機(jī)進(jìn)行擴(kuò)展時(shí),基本的連接為:
OE與RD控制相連;
WE與WR控制相連;
CE與P2.7相連;
A0-A7與鎖存器74LS373的Q0-Q7相連;
A8-A14分別與P2.0-P2.6相連;
DS1235的基本地址范圍:0000H—7FFFH.
MCS-51單片機(jī)與DS1235芯片的接口
DS1235的基本地址范圍:0000H—7FFFH
P0連接:
74LS373的1D-8D
DS1235的DQ1-DQ8
OE接RD
WR接WD
P2連接片選和
DS1235的A8-A14
DS1235數(shù)據(jù)存儲(chǔ)單元的操作方法
例1:從DS1235的地址單元2000H讀取數(shù)據(jù)到累加器ACC中。
例2:從累加器ACC向DS1235的地址為2000H的單元寫(xiě)入數(shù)據(jù)。
讀取數(shù)據(jù)方法1
READB: MOV DPTR,#2000H
MOVX A,@DPTR
讀取數(shù)據(jù)方法2
READB: MOV P2,#20H
MOV R0,#00H
MOVX A,@R0
寫(xiě)入方法1
WRITE: MOV DPTR,#2000H
MOVX @DPTR,A
寫(xiě)入方法2
WRITE: MOV P2,#20H
MOV R0,#00H
MOVX @R0,A
P2口的地址由單片機(jī)自動(dòng)產(chǎn)生
P2口的地址由P2口以I/O方式產(chǎn)生
P2口的地址由單片機(jī)自動(dòng)產(chǎn)生
P2口的地址由P2口以I/O方式產(chǎn)生
讀/寫(xiě)外部數(shù)據(jù)存儲(chǔ)器時(shí)序
PSEN
一個(gè)機(jī)器周期
ALE
一個(gè)機(jī)器周期
RD/WR
訪(fǎng)問(wèn)ROM,取出MOVX指令
訪(fǎng)問(wèn)RAM讀/寫(xiě)數(shù)據(jù)
送地址
-
接口電路
+關(guān)注
關(guān)注
8文章
469瀏覽量
57684 -
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44989瀏覽量
650357 -
uart
+關(guān)注
關(guān)注
22文章
1276瀏覽量
103916
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論