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