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