官术网_书友最值得收藏!

2.2 8051單片機(jī)I/O端口的結(jié)構(gòu)與工作原理

單片機(jī)的I/O端口是輸入信號(hào)和輸出信號(hào)的通道。8051單片機(jī)有P0、P1、P2、P34組I/O端口,每組端口有8個(gè)引腳。要學(xué)好單片機(jī)技術(shù),應(yīng)了解這些端口內(nèi)部電路結(jié)構(gòu)與工作原理。

2.2.1 P0端口

P0端口有P0.0~P0.7共8個(gè)引腳,這些引腳除了可用作輸入引腳和輸出引腳外,在外接存儲(chǔ)器時(shí),還可用作地址數(shù)據(jù)總線引腳。P0端口每個(gè)引腳的內(nèi)部電路結(jié)構(gòu)都相同,其內(nèi)部電路結(jié)構(gòu)如圖2-4所示。

(1)P0端口用作輸出端口的工作原理

以單片機(jī)需要從P0.x引腳輸出高電平“1”為例。單片機(jī)內(nèi)部相關(guān)電路通過控制線送出“0(低電平)”到與門的一個(gè)輸入端和電子開關(guān)的控制端,控制線上的“0”一方面使與門關(guān)閉(即與門的一端為“0”時(shí),不管另一端輸入何種信號(hào),輸出都為“0”),晶體管VT1柵極為“0”處于截止,地址/數(shù)據(jù)線送來的信號(hào)無法通過與門和晶體管VT1;控制線上的“0”另一方面控制電子開關(guān),讓電子開關(guān)與鎖存器的49340-00-47-2.jpg端連接。CPU再?gòu)膬?nèi)部總線送高電平“1”到鎖存器的D端,同時(shí)往鎖存器的CL端送寫鎖存器信號(hào),D端的“1”馬上存入鎖存器并從Q和49340-00-47-3.jpg端輸出,D端輸入“1”,Q端輸出“1”,49340-00-47-4.jpg端則輸出“0”,49340-00-47-5.jpg端輸出“0”經(jīng)電子開關(guān)送到晶體管VT2的柵極,VT2截止,由于VT1也處于截止,P0.x引腳處于懸浮狀態(tài),因此需要在P0.x引腳上接上拉電阻,在VT2截止時(shí),P0.x引腳輸出高電平。

圖2-4 P0端口的內(nèi)部電路結(jié)構(gòu)

也就是說,當(dāng)單片機(jī)需要將P0端口用作輸出端口時(shí),內(nèi)部CPU會(huì)送控制信號(hào)“0”到與門和電子開關(guān),與門關(guān)閉(上晶體管VT1同時(shí)截止,將地址/數(shù)據(jù)線與輸出電路隔開),電子開關(guān)將鎖存器與輸出電路連接,然后CPU通過內(nèi)部總線往P0端口鎖存器送數(shù)據(jù)和寫鎖存器信號(hào),數(shù)據(jù)通過鎖存器、電子開關(guān)和輸出電路從P0端口的引腳輸出。

在P0端口用作輸出端口時(shí),內(nèi)部輸出電路的上晶體管處于截止(開路)狀態(tài),下晶體管的漏極處于開路狀態(tài)(稱為晶體管開漏),因此需要在P0端口引腳接外部上拉電阻,否則無法可靠輸出“1”或“0”。

(2)P0端口用作輸入端口的工作原理

當(dāng)單片機(jī)需要將P0端口用作輸入端口時(shí),內(nèi)部CPU會(huì)先往P0端口鎖存器寫入“1”(往鎖存器D端送“1”,同時(shí)給CL端送寫鎖存器信號(hào)),讓49340-00-47-6.jpg=0,VT2截止,關(guān)閉輸出電路。P0端口引腳輸入的信號(hào)送到輸入三態(tài)門的輸入端,此時(shí)CPU再給三態(tài)門的控制端送讀引腳控制信號(hào),輸入三態(tài)門打開,P0端口引腳輸入的信號(hào)就可以通過三態(tài)門送到內(nèi)部總線。

如果單片機(jī)的CPU需要讀取P0端口鎖存器的值(或稱讀取鎖存器存儲(chǔ)的數(shù)據(jù)),會(huì)送讀鎖存器控制信號(hào)到三態(tài)門(上方的三態(tài)門),三態(tài)門打開,P0鎖存器的值(Q值)給三態(tài)門送到內(nèi)部總線。

(3)P0端口用作地址/數(shù)據(jù)總線的工作原理

如果要將P0端口用作地址/數(shù)據(jù)總線,單片機(jī)內(nèi)部相關(guān)電路會(huì)通過控制線發(fā)出“1”,讓與門打開,讓電子開關(guān)和非門輸出端連接。當(dāng)內(nèi)部地址/數(shù)據(jù)線為“1”時(shí),“1”一方面通過與門送到VT1的柵極,VT1導(dǎo)通,另一方面送到非門,反相后變?yōu)椤?”,經(jīng)電子開關(guān)送到VT2的柵極,VT2截止,VT1導(dǎo)通,P0端口引腳輸出為“1”;當(dāng)內(nèi)部地址/數(shù)據(jù)線為“0”時(shí),VT1截止,VT2導(dǎo)通,P0端口引腳輸出“0”。

也就是說,當(dāng)單片機(jī)需要將P0端口用作地址/數(shù)據(jù)總線時(shí),CPU會(huì)給與門和電子開關(guān)的控制端送“1”,與門打開,將內(nèi)部地址/數(shù)據(jù)線與輸出電路的上晶體管VT1接通,電子開關(guān)切斷輸出電路與鎖存器的連接,同時(shí)將內(nèi)部地址/數(shù)據(jù)線經(jīng)非門反相后與輸出電路的下晶體管VT1接通,這樣VT1、VT2狀態(tài)相反,讓P0端口引腳能穩(wěn)定輸出數(shù)據(jù)或地址信號(hào)(1或0)。

2.2.2 P1端口

P1端口有P1.0~P1.7共8個(gè)引腳,這些引腳可作輸入引腳和輸出引腳。P1端口每個(gè)引腳的內(nèi)部電路結(jié)構(gòu)都相同,其內(nèi)部電路結(jié)構(gòu)如圖2-5所示。P1端口的結(jié)構(gòu)較P0端口簡(jiǎn)單很多,其輸出電路采用了一個(gè)晶體管,在晶體管的漏極接了一只內(nèi)部上拉電阻,所以在P1端口引腳外部可以不接上拉電阻。

圖2-5 P1端口內(nèi)部電路結(jié)構(gòu)

(1)P1端口用作輸出端口的工作原理

當(dāng)需要將P1端口用作輸出端口時(shí),單片機(jī)內(nèi)部相關(guān)電路除了會(huì)往鎖存器的D端送數(shù)據(jù)外,還會(huì)往鎖存器CL端送寫鎖存器信號(hào),內(nèi)部總線送來的數(shù)據(jù)通過D端進(jìn)入鎖存器并從Q和49340-00-48-2.jpg端輸出,如D端輸入“1”,則49340-00-48-3.jpg端輸出“0”(Q端輸出“1”),49340-00-48-4.jpg端的“0”送到晶體管的柵極,晶體管截止,從P1端口引腳輸出“1”。

(2)P1端口用作輸入端口的工作原理

當(dāng)需要將P1端口用作輸入端口時(shí),單片機(jī)內(nèi)部相關(guān)電路會(huì)先往P1鎖存器寫“1”,讓Q=1、49340-00-48-5.jpg=0,49340-00-48-6.jpg=0會(huì)使晶體管截止,關(guān)閉P1端口的輸出電路,然后CPU往輸入三態(tài)門控制端送一個(gè)讀引腳控制信號(hào),輸入三態(tài)門打開,從P1端口引腳輸入的信號(hào)經(jīng)輸入三態(tài)門送到內(nèi)部總線。

2.2.3 P2端口

P2端口有P2.0~P2.7共8個(gè)引腳,這些引腳除了可用作輸入引腳和輸出引腳外,在外接存儲(chǔ)器時(shí),還可用作地址總線(高8位)引腳。P2端口每個(gè)引腳的內(nèi)部電路結(jié)構(gòu)都相同,其內(nèi)部電路結(jié)構(gòu)如圖2-6所示。

圖2-6 P2端口內(nèi)部電路結(jié)構(gòu)

(1)P2端口用作輸入/輸出(I/O)端口的工作原理

當(dāng)需要將P2端口用作I/O端口時(shí),單片機(jī)內(nèi)部相關(guān)電路會(huì)送控制信號(hào)到電子開關(guān)的控制端,讓電子開關(guān)與P2鎖存器的Q端連接。

若要將P2端口用作輸出端口,CPU會(huì)通過內(nèi)部總線將數(shù)據(jù)送到鎖存器的D端,同時(shí)給鎖存器的CL端送寫鎖存器信號(hào),D端數(shù)據(jù)存入鎖存器并從Q端輸出,再通過電子開關(guān)、非門和晶體管從P2端口引腳輸出。

若要將P2端口用作輸入端口,CPU會(huì)先往P2鎖存器寫“1”,讓Q=1、49340-00-49-3.jpg=0,Q=1會(huì)使晶體管截止,關(guān)閉P2端口的輸出電路,然后CPU往輸入三態(tài)門控制端送一個(gè)讀引腳控制信號(hào),輸入三態(tài)門打開,從P2端口引腳輸入的信號(hào)經(jīng)輸入三態(tài)門送到內(nèi)部總線。

(2)P2端口用作地址總線引腳的工作原理

如果要將P2端口用作地址總線引腳,單片機(jī)內(nèi)部相關(guān)電路會(huì)發(fā)出一個(gè)控制信號(hào)到電子開關(guān)的控制端,讓電子開關(guān)與內(nèi)部地址線接通,地址總線上的信號(hào)就可以通過電子開關(guān)、非門和晶體管后從P2端口引腳輸出。

2.2.4 P3端口

P3端口有P3.0~P3.7共8個(gè)引腳,P3端口除了可用作輸入引腳和輸出引腳外,還具有第二功能。P3端口每個(gè)引腳的內(nèi)部電路結(jié)構(gòu)都相同,其內(nèi)部電路結(jié)構(gòu)如圖2-7所示。

圖2-7 P3端口內(nèi)部電路結(jié)構(gòu)

(1)P3端口用作I/O端口的工作原理

當(dāng)需要將P3端口用作I/O端口時(shí),單片機(jī)內(nèi)部相關(guān)電路會(huì)送出“1”到與非門的一個(gè)輸入端(第二功能輸出端),打開與非門(與非門的特點(diǎn)是:一個(gè)輸入端為“1”時(shí),輸出端與另一個(gè)輸入端狀態(tài)始終相反)。

若要將P3端口用作輸出端口,CPU給鎖存器的CL端送寫鎖存器信號(hào),內(nèi)部總線送來的數(shù)據(jù)通過D端進(jìn)入鎖存器并從Q端輸出,再通過與非門和晶體管兩次反相后從P3端口引腳輸出。

若要將P2端口用作輸入端口,CPU會(huì)先往P3鎖存器寫“1”,讓Q=1,與非門輸出“0”,晶體管截止,關(guān)閉P3端口的輸出電路,然后CPU往輸入三態(tài)門控制端送一個(gè)讀引腳控制信號(hào),輸入三態(tài)門打開,從P3端口引腳輸入的信號(hào)經(jīng)過輸入緩沖器和輸入三態(tài)門送到內(nèi)部總線。

(2)當(dāng)P3端口用作第二功能時(shí)

P3端口的每個(gè)引腳都有第二功能,具體見表2-1。P0端口用作第二功能(又稱復(fù)用功能)時(shí),實(shí)際上也是在該端口輸入或輸出信號(hào),只不過輸入、輸出的是一些特殊功能的信號(hào)。

表2-1 8051單片機(jī)P3端口各引腳的第二功能

當(dāng)單片機(jī)需要將P3端口用作第二功能輸出信號(hào)(如RD、WR信號(hào))時(shí),CPU會(huì)先往P3鎖存器寫“1”,Q=1,它送到與非門的一個(gè)輸入端,與非門打開,內(nèi)部的第二功能輸出信號(hào)送到與非門的另一個(gè)輸入端,反相后輸出去晶體管的柵極,經(jīng)晶體管再次反相后從P0端口引腳輸出。

當(dāng)單片機(jī)需要將P3端口用作第二功能輸入信號(hào)(如T0、T1信號(hào))時(shí),CPU也會(huì)往P3鎖存器寫“1”,Q=1,同時(shí)第二功能輸出端也為“1”,與非門輸出為“0”,晶體管截止,關(guān)閉輸出電路,P0端口引腳輸入的第二功能信號(hào)經(jīng)輸入緩沖器送往特定的電路(如T0、T1計(jì)數(shù)器)。

主站蜘蛛池模板: 沂南县| 建阳市| 视频| 满洲里市| 襄城县| 若尔盖县| 扎鲁特旗| 新乡县| 开江县| 麻栗坡县| 凤冈县| 肥乡县| 浑源县| 稷山县| 紫阳县| 富平县| 阜宁县| 阳曲县| 延边| 西畴县| 南充市| 英德市| 郯城县| 墨玉县| 沂水县| 永仁县| 常宁市| 阿克苏市| 襄樊市| 桑日县| 炎陵县| 雷波县| 九寨沟县| 佛坪县| 阿荣旗| 闽侯县| 松滋市| 贡嘎县| 清水县| 晋州市| 泊头市|