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