利用74LSTTL電路擴(kuò)展并行I/O口
在AT89S51單片機(jī)應(yīng)用系統(tǒng)中,有些場(chǎng)合需要降低成本、縮小體積,這時(shí)采用TTL電路、CMOS電路鎖存器或三態(tài)門(mén)電路也可構(gòu)成各種類(lèi)型的簡(jiǎn)單輸入/輸出口。通常這種I/O都是通過(guò)PO口擴(kuò)展。由于PO口只能分時(shí)復(fù)用,故構(gòu)成輸出口時(shí),接丑一芯片應(yīng)具有鎖存功能;構(gòu)成輸入口時(shí),要求接口芯片應(yīng)能三態(tài)緩沖或鎖存選通,數(shù)據(jù)的輸入、輸出由單片機(jī)的讀/寫(xiě)信號(hào)控制。
下圖所示為一個(gè)利用74LS244和74LS273芯片,將PO口擴(kuò)展成簡(jiǎn)單的輸入/輸出口的電路。74LS244和74LS273的工作受AT89S51單片機(jī)的P2.O、RD、WR 3條控制線控制。74LS244是緩沖驅(qū)動(dòng)器,作為擴(kuò)展輸入口,它的8個(gè)輸入端分別接8個(gè)按鈕開(kāi)關(guān)。74LS273是8D鎖存器擴(kuò)展輸出口,輸出端接8個(gè)LED發(fā)光二極管,以顯示8個(gè)按鈕開(kāi)關(guān)狀態(tài)。當(dāng)某條輸人口線的按鈕開(kāi)關(guān)按下時(shí),該輸入口線為低電平,讀入單片機(jī)后,其相應(yīng)位為0,然后再將口線的狀態(tài)經(jīng)74LS273輸出,某位低電平時(shí)二極管發(fā)光,從而顯示出按下的按鈕開(kāi)關(guān)的位置。
該電路的工作原理如下:
當(dāng)P2.0=0,RD(的反)=0(WR(的反)=l)時(shí),選中74LS244芯片,此時(shí)若無(wú)按鈕開(kāi)關(guān)按下,輸入全為高電平。當(dāng)某開(kāi)關(guān)按下時(shí)則對(duì)應(yīng)位輸入為0,74LS244的輸入端不全為1,其輸入狀態(tài)通過(guò)Po口數(shù)據(jù)線被讀入AT89S51單片機(jī)片內(nèi)。
當(dāng)P2.0=0,WR(的反)=0(RD(的反)=1)時(shí),選中74LS273芯片,CPU通過(guò)PO口輸出數(shù)據(jù)鎖存到74LS273,74LS273的輸出端低電平位對(duì)應(yīng)的LED發(fā)光二極管點(diǎn)亮。
總之,在圖9-20中只要保證P2.0為0,其他地址位或0或1即可。如地址用FEFFH(無(wú)效位全為1),或用0000H(無(wú)效位全為0)都可。
例1:編寫(xiě)程序把按鈕開(kāi)關(guān)狀態(tài)通過(guò)上圖中的發(fā)光二極管顯示出來(lái)。程序如下:
由以上程序可以看出,對(duì)于所擴(kuò)展接口的輸入/輸出就像從外部RAM讀/寫(xiě)數(shù)據(jù)一樣方便。上圖僅僅擴(kuò)展了兩片,如果仍不夠用,還可擴(kuò)展多片74LS244、74LS273之類(lèi)的芯片。但作為輸入口時(shí),一定要求有三態(tài)功能,否則將影響總線的正常工作。