一、總線概述
計算機系統是以微處理器為核心的,各器件要與微處理器相連,且必須協調工作,所以在微處理機中引入了總線的概念,各器件共同享用總線,任何時候隻能有一個器件發送數據(可以有多個器件同時接收數據) 。
計算機的總線分為控制總線、地址總線和數據總線等三種。而數據總線用于傳送數據,控制總線用于傳送控制信号, 地址總線則用于選擇存儲單元或外設。
二、單片機的三總線結構
51系列單片機具有完善的總線接口時序,可以擴展控制對象,其直接尋址能力達到64k( 2的16次方) 。在總線模式下,不同的對象共享總線,獨立編址、分時複用總線,CPU 通過地址選擇訪問的對象,完成與各對象之間的信息傳遞。
單片機三總線擴展示意如圖1 所示。
1、數據總線
51 單片機的數據總線為P0 口,P0 口為雙向數據通道,CPU 從P0 口送出和讀回數據。
2、地址總線
51 系列單片機的地址總線為16 位。
為了節約芯片引腳,采用P0 口複用方式,除了作為數據總線外,在ALE 信号時序匹配下,通過外置的數據鎖存器,在總線訪問前半周期從P0口送出低8位地址,後半周期從P0 口送出8 位數據。
高8位地址則通過P2 口送出。
3、控制總線
51 系列單片機的控制總線包括讀控制信号P3.7 和寫控制信号P3.6 等,二者分别作為總線模式下數據讀和數據寫的使能信号。
三、單片機總線時序分析
51 單片機總線時序如圖2 所示。
從圖2 中可以看出,完成一次總線( 讀寫) 操作周期為T,P0 口分時複用,在T0 期間,P0 口送出低8 位地址,在ALE 的下降沿完成數據鎖存,送出低8位地址信号。在T1 期間,P0 口作為數據總線使用,送出或讀入數據,數據的讀寫操作在讀、寫控制信号的低電平期間完成。
需要注意的是,在控制信号( 讀、寫信号) 有效期間,P2 口送出高8位地址,配合數據鎖存器輸出的低8 位地址,實現16 位地址總線,即64kB 範圍的内的尋址。
由于CPU不可能同時執行讀和寫操作,所以讀、寫信号不可能同時有效。
四、常見單片機編址電路
1、簡單地址擴展
51 單片機的P2 口可以直接作為高8位地址總線使用,在一些簡單系統電路中,常使用P2口直接編址驅動。
下面以使用數據緩沖器74LS273 驅動數碼顯示為例,分析P2 口編址驅動的靜态數碼顯示電路的設計。
一位LED 數碼顯示單元電路如圖3 所示。
WR 與A8( P2.0) 相或提供74LS273的時鐘信号,當執行“MOVX @DPTR,A”指令時,地址信息由DPTR 寄存器确定,會出現有效的寫信号WR,隻有當地址A8 為滿足“0”時,寫信号才可以作為74LS273 的時鐘信号輸入,完成數據鎖存。
P2 口為A8~A15 的8 位地址線,很容易擴展到8 隻LED 數碼管,WR 信号分别與A8~A15 按或關系連接,每位地址線均為低電平有效,即可實現8 個有效地址。
該方案電路簡單,但有效地址數太少,不适用于複雜系統設計。
2、低8 位地址鎖存
通常的設計電路是使用8D 鎖存器74LS373 實現地址鎖存,74HC573 與之邏輯功能相同,隻是引腳布局不一樣,使用74HC573 布線更容易。
74LS373 真值表如圖4所示。
在輸出允許OE 為L、控制使能LE 為H 時,輸出為跟随狀态;OE 為L、LE 為L 時,輸出為保持狀态。
地址鎖存電路如圖5 所示。OE 接地,LE 接單片機的ALE腳将産生滿足時序的低8 位地址信号。
執行以下三條指令會得到如圖6所示的時序圖。
MOV DPTR,# 0FF55H; 低8 位地址為55H
MOV A,# 0AAH; 待發送數據0AAH→A( 55H 取反)
MOVX,@DPTR,A; A 中的0AAH送地址為0FF55H 的對象中會。
從圖6 中可以看出,P0 口先送55H,在ALE 下降沿實現地址鎖存,随後送出數據0AAH,在WR 有效( 低電平) 期間鎖存器輸出低8 位地址55H,P0 口送出數據0AAH。
3、帶譯碼器的複雜地址接口電路
理論上高8 位地址線可以産生256 個有效地址,如何實現地址“擴展”呢? 地址擴展準确描述是地址譯碼,例如3 根地址線可以譯碼成8 個地址,4根譯碼成16 個有效地址。這裡選擇3-8 譯碼器實現地址譯碼,電路圖以及對應的編址如表1 所示。
五、單片機總線編址電路實例
總線擴展接口的單片機系統,包括外部32k RAM 擴展、LCD1602 接口、輸入輸出口。
D0~D7 接數據總線P0 口,地址線A0~A14接單片機地址總線低15 位,單片機地址線A15 接RAM 片選信号,低電平有效,這樣RAM 地址分配從0000H 到7FFFH,與74138 譯碼地址不沖突。
LCD1602 接口電路如圖9 所示。
RS、RW 分别接A12、A13,使能信号編址為Y7,這樣LCD 的四個驅動地址( 數據讀寫和命令讀寫) 為0CFFFH 到0FFFFH ( 無關位為1) 或者8700H 到0B700H( 無關位為0)。
有些時候單片機引腳不夠用,還要進行擴展,輸入口擴展電路如圖10 所示。
利用74HC573( 74LS373) 的高阻态功能,将其輸出Q0~Q7 接P0 口,在滿足總線地址讀操作中,可以把輸入InPORT的數據讀入單片機的累加器,地址為0F8FFH 或8000H。
輸出口擴展電路如圖11 所示。
利用74LS273 數據鎖存功能,在滿足總線地址寫操作中,可以把單片機累加器裡的數據寫入273 鎖存輸出,地址為0F8FFH 或8000H。由于所用控制總線不同,可以和輸入共用地址。
六、結束語
總線擴展是設計單片機控制電路必須掌握的技術,大量的特殊功能IC都支持總線接口, 如ADC0809,TLC7528,DDS 器件AD9851 等。
總線接口的要點就是在嚴格的控制時序下,總線被分時複用,以實現複雜系統設計。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!