




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第4章 AT89S51片內(nèi)并行端口的片內(nèi)并行端口的 原理及編程原理及編程 1【內(nèi)容概要內(nèi)容概要】本章介紹本章介紹AT89S51單片機片內(nèi)的單片機片內(nèi)的4個雙向的個雙向的8位位并行并行I/O端口端口P0、P1、P2和和P3的內(nèi)部電路結(jié)構(gòu)、工作原的內(nèi)部電路結(jié)構(gòu)、工作原理及應(yīng)用,并介紹使用理及應(yīng)用,并介紹使用C51對對4個個8位并行位并行I/O端口的編程端口的編程。 24.1 AT89S51的并行的并行I/O端口的結(jié)構(gòu)及工作原理端口的結(jié)構(gòu)及工作原理AT89S51共有共有4個雙向的個雙向的8位并行位并行I/O端口:端口:P0、P1、P2和和P3,它們的輸出鎖存器屬于特殊功能寄存器。,它們的輸出鎖存器屬
2、于特殊功能寄存器。4個端口除個端口除了按字節(jié)輸入了按字節(jié)輸入/輸出外,還可位尋址,便于實現(xiàn)位控功能輸出外,還可位尋址,便于實現(xiàn)位控功能。4.1.1 P0口口雙功能的雙功能的8位并行端口,字節(jié)地址為位并行端口,字節(jié)地址為 80H,位地址為,位地址為80H87H。端口的各位具有完全相同但又相互獨立的電路結(jié)構(gòu)。端口的各位具有完全相同但又相互獨立的電路結(jié)構(gòu),P0口某一位的位電路結(jié)構(gòu)如圖口某一位的位電路結(jié)構(gòu)如圖4-1所示。所示。 4圖圖4-1 P0口某一位的位電路結(jié)構(gòu)口某一位的位電路結(jié)構(gòu)1位電路結(jié)構(gòu)位電路結(jié)構(gòu)P0口某位的電路包括:口某位的電路包括:(1)一個數(shù)據(jù)輸出鎖存器,用于數(shù)據(jù)位鎖存。)一個數(shù)據(jù)輸出
3、鎖存器,用于數(shù)據(jù)位鎖存。(2)兩個三態(tài)數(shù)據(jù)輸入緩沖器,分別是用于讀鎖存器的輸入)兩個三態(tài)數(shù)據(jù)輸入緩沖器,分別是用于讀鎖存器的輸入緩沖器緩沖器BUF1和讀引腳的輸入緩沖器和讀引腳的輸入緩沖器BUF2。(3)一個多路轉(zhuǎn)接開關(guān))一個多路轉(zhuǎn)接開關(guān)MUX,一個輸入來自鎖存器的端,另,一個輸入來自鎖存器的端,另一輸入為地址一輸入為地址/數(shù)據(jù)信號的反相輸出。數(shù)據(jù)信號的反相輸出。MUX由由“控制控制”信號信號控制,實現(xiàn)鎖存器的輸出和地址控制,實現(xiàn)鎖存器的輸出和地址/數(shù)據(jù)信號之間的轉(zhuǎn)接。數(shù)據(jù)信號之間的轉(zhuǎn)接。 (4)數(shù)據(jù)輸出的控制和驅(qū)動電路,由兩個場效應(yīng)管()數(shù)據(jù)輸出的控制和驅(qū)動電路,由兩個場效應(yīng)管(FET)組成
4、。組成。52工作過程分析工作過程分析(1)P0口用作地址口用作地址/數(shù)據(jù)總線數(shù)據(jù)總線當(dāng)當(dāng)AT89S51外擴存儲器或外擴存儲器或I/O時,時,P0口作為單片機系統(tǒng)復(fù)用的口作為單片機系統(tǒng)復(fù)用的地址地址/數(shù)據(jù)總線使用。數(shù)據(jù)總線使用。當(dāng)作為地址或數(shù)據(jù)輸出時,當(dāng)作為地址或數(shù)據(jù)輸出時,“控制控制”信號為信號為1,硬件自動使轉(zhuǎn),硬件自動使轉(zhuǎn)接開關(guān)接開關(guān)MUX打向上面,接通反相器的輸出,同時使打向上面,接通反相器的輸出,同時使“與門與門”處于開啟狀態(tài)。當(dāng)輸出的地址處于開啟狀態(tài)。當(dāng)輸出的地址/數(shù)據(jù)信息為數(shù)據(jù)信息為1時,時,“與門與門”輸輸出為出為1,上方的場效應(yīng)管導(dǎo)通,下方的場效應(yīng)管截止,上方的場效應(yīng)管導(dǎo)通,下
5、方的場效應(yīng)管截止,P0.x引腳輸出為引腳輸出為1;當(dāng)輸出的地址;當(dāng)輸出的地址/數(shù)據(jù)信息為數(shù)據(jù)信息為0時,上方的場效時,上方的場效應(yīng)管截止,下方的場效應(yīng)管導(dǎo)通,應(yīng)管截止,下方的場效應(yīng)管導(dǎo)通,P0.x引腳輸出為引腳輸出為0。這說。這說明明P0.x引腳的輸出狀態(tài)隨地址引腳的輸出狀態(tài)隨地址/數(shù)據(jù)的狀態(tài)的變化而變化。輸數(shù)據(jù)的狀態(tài)的變化而變化。輸出電路出電路6是上、下兩個場效應(yīng)管形成的推拉式結(jié)構(gòu),大大提高了負載是上、下兩個場效應(yīng)管形成的推拉式結(jié)構(gòu),大大提高了負載能力,上方的場效應(yīng)管這時起到內(nèi)部上拉電阻的作用。能力,上方的場效應(yīng)管這時起到內(nèi)部上拉電阻的作用。 當(dāng)當(dāng)P0口作為數(shù)據(jù)線輸入時,僅從外部存儲器(或外
6、部口作為數(shù)據(jù)線輸入時,僅從外部存儲器(或外部I/O)讀)讀入信息,對應(yīng)的入信息,對應(yīng)的“控制控制”信號為信號為0,MUX接通鎖存器的端。接通鎖存器的端。由于由于P0口作為地址口作為地址/數(shù)據(jù)復(fù)用方式訪問外部存儲器時,數(shù)據(jù)復(fù)用方式訪問外部存儲器時,CPU自動向自動向P0口寫入口寫入FFH,使下方的場效應(yīng)管截止,由于控制,使下方的場效應(yīng)管截止,由于控制信號為信號為0,上方的場效應(yīng)管也截止,從而保證數(shù)據(jù)信息的高,上方的場效應(yīng)管也截止,從而保證數(shù)據(jù)信息的高阻抗輸入,從外部存儲器輸入的數(shù)據(jù)信息直接由阻抗輸入,從外部存儲器輸入的數(shù)據(jù)信息直接由P0.x引腳引腳通過輸入緩沖器通過輸入緩沖器BUF2進入內(nèi)部總線
7、。進入內(nèi)部總線。真正的雙向口,應(yīng)該是具有高電平、低電平和高阻抗輸入真正的雙向口,應(yīng)該是具有高電平、低電平和高阻抗輸入3種種狀態(tài)的端口。因此,狀態(tài)的端口。因此,P0口作為地址口作為地址/數(shù)據(jù)總線使用時是一個數(shù)據(jù)總線使用時是一個7真正的雙向端口,簡稱雙向口。真正的雙向端口,簡稱雙向口。 (2)P0口用作通用口用作通用I/O口口當(dāng)當(dāng)P0口不作為系統(tǒng)的地址口不作為系統(tǒng)的地址/數(shù)據(jù)總線使用時,也可作為通用數(shù)據(jù)總線使用時,也可作為通用I/O使用。使用。當(dāng)用作通用當(dāng)用作通用I/O口時,對應(yīng)的口時,對應(yīng)的“控制控制”信號為信號為0,MUX打向下打向下面,接通鎖存器的端,面,接通鎖存器的端,“與門與門”輸出為輸
8、出為0,上方的場效應(yīng),上方的場效應(yīng)管截止,形成的管截止,形成的P0口輸出電路為漏極開路輸出??谳敵鲭娐窞槁O開路輸出。P0口用作輸出時,來自口用作輸出時,來自CPU的的“寫寫”脈沖加在脈沖加在D鎖存器的鎖存器的CP端,內(nèi)部總線上的數(shù)據(jù)寫入端,內(nèi)部總線上的數(shù)據(jù)寫入D鎖存器,并由引腳鎖存器,并由引腳P0.x輸輸出。當(dāng)出。當(dāng)D鎖存器為鎖存器為1時,端為時,端為0,下方場效應(yīng)管截止,輸出,下方場效應(yīng)管截止,輸出為漏極開路,此時,須外接上拉電阻才能有高電平輸出;為漏極開路,此時,須外接上拉電阻才能有高電平輸出;8當(dāng)當(dāng)D鎖存器為鎖存器為0時,下方場效應(yīng)管導(dǎo)通,時,下方場效應(yīng)管導(dǎo)通,P0口輸出為低電平??谳?/p>
9、出為低電平。P0口作為輸入口使用時,有兩種讀入方式:口作為輸入口使用時,有兩種讀入方式:“讀鎖存器讀鎖存器”和和“讀引腳讀引腳”。當(dāng)。當(dāng)CPU發(fā)出發(fā)出“讀鎖存器讀鎖存器”指令時,鎖存器的狀態(tài)指令時,鎖存器的狀態(tài)由由Q端經(jīng)上方的三態(tài)緩沖器端經(jīng)上方的三態(tài)緩沖器BUF1進入內(nèi)部總線;當(dāng)進入內(nèi)部總線;當(dāng)CPU發(fā)發(fā)出出“讀引腳讀引腳”指令時,鎖存器的輸出狀態(tài)指令時,鎖存器的輸出狀態(tài)=1(即端為(即端為0),),從而使下方場效應(yīng)管截止,引腳的狀態(tài)經(jīng)下方的三態(tài)緩沖器從而使下方場效應(yīng)管截止,引腳的狀態(tài)經(jīng)下方的三態(tài)緩沖器BUF2進入內(nèi)部總線。進入內(nèi)部總線。3P0口的特點口的特點P0口有如下特點:口有如下特點:P
10、0口為雙功能口口為雙功能口地址地址/數(shù)據(jù)復(fù)用口和通數(shù)據(jù)復(fù)用口和通用用I/O口。口。 9(1)當(dāng))當(dāng)P0口用作地址口用作地址/數(shù)據(jù)復(fù)用口時,是一個真正的雙向口,數(shù)據(jù)復(fù)用口時,是一個真正的雙向口,用作與外部存儲器的連接,輸出低用作與外部存儲器的連接,輸出低8位地址和輸出位地址和輸出/輸入輸入8位位數(shù)據(jù)。數(shù)據(jù)。(2)當(dāng))當(dāng)P0口用作通用口用作通用I/O口時,由于需在片外接上拉電阻,端口時,由于需在片外接上拉電阻,端口不存在高阻抗(懸?。顟B(tài),因此是一個準(zhǔn)雙向口。為??诓淮嬖诟咦杩梗☉腋。顟B(tài),因此是一個準(zhǔn)雙向口。為保證引腳信號的正確讀入,應(yīng)首先向鎖存器寫證引腳信號的正確讀入,應(yīng)首先向鎖存器寫1。單片
11、機復(fù)位。單片機復(fù)位后,鎖存器自動被置后,鎖存器自動被置1;當(dāng);當(dāng)P0口由原來的輸出狀態(tài)轉(zhuǎn)變?yōu)檩斂谟稍瓉淼妮敵鰻顟B(tài)轉(zhuǎn)變?yōu)檩斎霠顟B(tài)時,應(yīng)首先置鎖存器為入狀態(tài)時,應(yīng)首先置鎖存器為1,方可執(zhí)行輸入操作。,方可執(zhí)行輸入操作。一般情況下,一般情況下,P0口大多作為地址口大多作為地址/數(shù)據(jù)復(fù)用口使用,這時就不數(shù)據(jù)復(fù)用口使用,這時就不能再作為通用能再作為通用I/O口使用??谑褂?。 104.1.2 P1口口單功能單功能I/O口,字節(jié)地址為口,字節(jié)地址為 90H,位地址為,位地址為 90H97H。P1口某一位的位電路結(jié)構(gòu)如口某一位的位電路結(jié)構(gòu)如圖圖4-2所示。所示。1位電路結(jié)構(gòu)位電路結(jié)構(gòu)位電路由位電路由3部分組成
12、:部分組成:(1)一個數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)位的鎖存。)一個數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)位的鎖存。(2)兩個三態(tài)的數(shù)據(jù)輸入緩沖器)兩個三態(tài)的數(shù)據(jù)輸入緩沖器BUF1和和BUF2,分別用于,分別用于讀鎖存器數(shù)據(jù)和讀引腳數(shù)據(jù)的輸入緩沖。讀鎖存器數(shù)據(jù)和讀引腳數(shù)據(jù)的輸入緩沖。(3)輸出驅(qū)動電路,由一個場效應(yīng)管()輸出驅(qū)動電路,由一個場效應(yīng)管(FET)和一個片內(nèi))和一個片內(nèi)上拉電阻組成。上拉電阻組成。 11圖圖4-2 P1口某一位的位電路結(jié)構(gòu)口某一位的位電路結(jié)構(gòu)2工作過程分析工作過程分析P1口只能作為通用的口只能作為通用的I/O口使用。口使用。(1)P1口作為輸出口時,若口作為輸出口時,若CPU輸出
13、輸出1,Q=1,Q*=0,場效,場效應(yīng)管截止,應(yīng)管截止,P1口引腳的輸出為口引腳的輸出為1;若;若CPU輸出輸出0,Q=0,Q*= 1,場效應(yīng)管導(dǎo)通,場效應(yīng)管導(dǎo)通,P1口引腳的輸出為口引腳的輸出為0。(2)P1口作為輸入口時,分為口作為輸入口時,分為“讀鎖存器讀鎖存器”和和“讀引腳讀引腳”兩兩種方式。種方式?!白x鎖存器讀鎖存器”時,鎖存器的輸出端時,鎖存器的輸出端Q的狀態(tài)經(jīng)輸入的狀態(tài)經(jīng)輸入緩沖器緩沖器BUF1進入內(nèi)部總線;進入內(nèi)部總線;“讀引腳讀引腳”時,先向鎖存器寫時,先向鎖存器寫1,使場效應(yīng)管截止,使場效應(yīng)管截止,P1.x引腳上的電平經(jīng)輸入緩沖器引腳上的電平經(jīng)輸入緩沖器BUF2進入內(nèi)部總線
14、。進入內(nèi)部總線。133P1口的特點口的特點P1口由于有內(nèi)部上拉電阻,沒有高阻抗輸入狀態(tài),故為準(zhǔn)雙口由于有內(nèi)部上拉電阻,沒有高阻抗輸入狀態(tài),故為準(zhǔn)雙向口。作為輸出口時,不需要在片外接上拉電阻。向口。作為輸出口時,不需要在片外接上拉電阻。P1口口“讀引腳讀引腳”輸入時,必須先向鎖存器寫入輸入時,必須先向鎖存器寫入1。4.1.3 P2口口P2口是一個雙功能口,字節(jié)地址為口是一個雙功能口,字節(jié)地址為A0H,位地址為,位地址為 A0HA7H。P2口某一位的位電路結(jié)構(gòu)如口某一位的位電路結(jié)構(gòu)如圖圖4-3所示。所示。1415圖圖4-3 P2口某一位的位電路結(jié)構(gòu)口某一位的位電路結(jié)構(gòu)1位電路結(jié)構(gòu)位電路結(jié)構(gòu)位電路包
15、括:位電路包括:(1)一個數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)位的鎖存。)一個數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)位的鎖存。(2)兩個三態(tài)數(shù)據(jù)輸入緩沖器)兩個三態(tài)數(shù)據(jù)輸入緩沖器BUF1和和BUF2,分別用于讀鎖,分別用于讀鎖存器數(shù)據(jù)和讀引腳數(shù)據(jù)的輸入緩沖。存器數(shù)據(jù)和讀引腳數(shù)據(jù)的輸入緩沖。(3)一個多路轉(zhuǎn)接開關(guān))一個多路轉(zhuǎn)接開關(guān)MUX,它的一個輸入是鎖存器的,它的一個輸入是鎖存器的Q端端,另一個輸入是地址的高,另一個輸入是地址的高8位。位。(4)輸出驅(qū)動電路,由場效應(yīng)管()輸出驅(qū)動電路,由場效應(yīng)管(FET)和內(nèi)部上拉電阻組成)和內(nèi)部上拉電阻組成。 162工作過程分析工作過程分析(1)P2口用作地址總線口用作地址
16、總線在內(nèi)部控制信號作用下,在內(nèi)部控制信號作用下,MUX與與 “地址地址”接通。當(dāng)接通。當(dāng)“地址地址”線為線為0時,場效應(yīng)管導(dǎo)通,時,場效應(yīng)管導(dǎo)通,P2口引腳輸出口引腳輸出0;當(dāng);當(dāng)“地址地址”線為線為1時,場效應(yīng)管截止,時,場效應(yīng)管截止,P2口引腳輸出口引腳輸出1。(2)P2口用作通用口用作通用I/O口口在內(nèi)部控制信號作用下,在內(nèi)部控制信號作用下,MUX與與 鎖存器的鎖存器的Q端接通。端接通。CPU輸出輸出1時,時,Q=1,場效應(yīng)管截止,場效應(yīng)管截止,P2.x引腳輸出引腳輸出1;CPU輸輸出出0時,時,Q=0,場效應(yīng)管導(dǎo)通,場效應(yīng)管導(dǎo)通,P2.x引腳輸出引腳輸出0。17輸入時,分為輸入時,分為
17、“讀鎖存器讀鎖存器”和和“讀引腳讀引腳”兩種方式。兩種方式?!白x鎖存讀鎖存器器”時,時,Q端信號經(jīng)輸入緩沖器端信號經(jīng)輸入緩沖器BUF1進入內(nèi)部總線;進入內(nèi)部總線;“讀讀引腳引腳”時,先向鎖存器寫時,先向鎖存器寫1,使場效應(yīng)管截止,使場效應(yīng)管截止,P2.x引腳上引腳上的電平經(jīng)輸入緩沖器的電平經(jīng)輸入緩沖器BUF2進入內(nèi)部總線。進入內(nèi)部總線。3P2口的特點口的特點作為地址輸出線使用時,作為地址輸出線使用時,P2口可以輸出外部存儲器的高口可以輸出外部存儲器的高8位地位地址,與址,與P0口輸出的低口輸出的低8位地址一起構(gòu)成位地址一起構(gòu)成16位地址,可以尋址位地址,可以尋址64KB的地址空間。當(dāng)?shù)牡刂房臻g
18、。當(dāng)P2口作為高口作為高8位地址輸出口時,輸出位地址輸出口時,輸出鎖存器的內(nèi)容保持不變。鎖存器的內(nèi)容保持不變。 18作為通用作為通用I/O口使用時,口使用時,P2口為一個準(zhǔn)雙向口。功能與口為一個準(zhǔn)雙向口。功能與P1口口一樣。一樣。一般情況下,一般情況下,P2口大多作為高口大多作為高8位地址總線口使用,這時就位地址總線口使用,這時就不能再作為通用不能再作為通用I/O口???。4.1.4 P3口口由于由于AT89S51的引腳數(shù)目有限,因此在的引腳數(shù)目有限,因此在P3口電路中增加了口電路中增加了引腳的第二功能(第二功能定義見表引腳的第二功能(第二功能定義見表2-1)。)。P3口的每一口的每一位都可以分
19、別定義為第二輸入功能或第二輸出功能。位都可以分別定義為第二輸入功能或第二輸出功能。P3口的字節(jié)地址為口的字節(jié)地址為B0H,位地址為,位地址為B0HB7H。P3口某一口某一位的位電路結(jié)構(gòu)如位的位電路結(jié)構(gòu)如圖圖4-4所示。所示。 1920圖圖4-4 P3口某一位的位電路結(jié)構(gòu)口某一位的位電路結(jié)構(gòu)1位電路結(jié)構(gòu)位電路結(jié)構(gòu)位電路包括:位電路包括:(1)一個數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)位的鎖存。)一個數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)位的鎖存。(2)3個三態(tài)數(shù)據(jù)輸入緩沖器個三態(tài)數(shù)據(jù)輸入緩沖器BUF1、BUF2和和BUF3,分別,分別用于讀鎖存器、讀引腳數(shù)據(jù)和第二功能數(shù)據(jù)的輸入緩沖。用于讀鎖存器、讀引腳數(shù)據(jù)和第二功
20、能數(shù)據(jù)的輸入緩沖。(3)輸出驅(qū)動電路,由)輸出驅(qū)動電路,由“與非門與非門”、場效應(yīng)管(、場效應(yīng)管(FET)和)和內(nèi)部上拉電阻組成。內(nèi)部上拉電阻組成。 212工作過程分析工作過程分析(1)P3口用作第二輸入口用作第二輸入/輸出功能輸出功能當(dāng)選擇第二輸出功能時,該位的鎖存器需要置當(dāng)選擇第二輸出功能時,該位的鎖存器需要置“1”,使,使“與非門與非門” 開啟。當(dāng)?shù)诙敵鰹殚_啟。當(dāng)?shù)诙敵鰹?時,場效應(yīng)管截止,時,場效應(yīng)管截止,P3.x引腳輸出為引腳輸出為1;當(dāng)?shù)诙敵鰹?;?dāng)?shù)诙敵鰹?時,場效應(yīng)管導(dǎo)通,時,場效應(yīng)管導(dǎo)通,P3.x引腳輸出為引腳輸出為0。當(dāng)選擇第二輸入功能時,該位的鎖存器和第二輸出功能端
21、均應(yīng)置當(dāng)選擇第二輸入功能時,該位的鎖存器和第二輸出功能端均應(yīng)置1,保證場效應(yīng)管截止,保證場效應(yīng)管截止,P3.x引腳的信息由輸入緩沖器引腳的信息由輸入緩沖器BUF3的輸出獲得。的輸出獲得。(2)P3口用作第一功能口用作第一功能通用通用I/O口口當(dāng)當(dāng)P3口用作第一功能通用輸出時,第二輸出功能端應(yīng)保持高電口用作第一功能通用輸出時,第二輸出功能端應(yīng)保持高電22平,平,“與非門與非門”為開啟狀態(tài)。為開啟狀態(tài)。CPU輸出輸出1時,時,Q=1,場效應(yīng)管,場效應(yīng)管截止,截止,P3.x引腳輸出為引腳輸出為1;CPU輸出輸出0時,時,Q=0,場效應(yīng)管,場效應(yīng)管導(dǎo)通,導(dǎo)通,P3.x引腳輸出為引腳輸出為0。當(dāng)當(dāng)P3口
22、用作第一功能通用輸入時,口用作第一功能通用輸入時,P3.x位的輸出鎖存器和第位的輸出鎖存器和第二輸出功能均應(yīng)置二輸出功能均應(yīng)置1,場效應(yīng)管截止,場效應(yīng)管截止,P3.x引腳信息通過輸引腳信息通過輸入入BUF3和和BUF2進入內(nèi)部總線,完成進入內(nèi)部總線,完成“讀引腳讀引腳”操作。操作。當(dāng)當(dāng)P3口實現(xiàn)第一功能通用輸入時,也可以執(zhí)行口實現(xiàn)第一功能通用輸入時,也可以執(zhí)行“讀鎖存器讀鎖存器”操作,此時操作,此時Q端信息經(jīng)過緩沖器端信息經(jīng)過緩沖器BUF1進入內(nèi)部總線。進入內(nèi)部總線。3P3口的特點口的特點P3口內(nèi)部有上拉電阻,不存在高阻抗輸入狀態(tài),為準(zhǔn)雙向口口內(nèi)部有上拉電阻,不存在高阻抗輸入狀態(tài),為準(zhǔn)雙向口。
23、23P3口作為第二功能的輸出口作為第二功能的輸出/輸入,或第一功能的通用輸入,或第一功能的通用I/O輸入,輸入,均須將相應(yīng)位的鎖存器置均須將相應(yīng)位的鎖存器置1。實際應(yīng)用中,由于復(fù)位后。實際應(yīng)用中,由于復(fù)位后P3口口鎖存器自動置鎖存器自動置1,滿足第二功能所需的條件,所以不需要任,滿足第二功能所需的條件,所以不需要任何設(shè)置工作,就可以進入第二功能操作。何設(shè)置工作,就可以進入第二功能操作。當(dāng)某位不作第二功能使用時,可作為第一功能的通用當(dāng)某位不作第二功能使用時,可作為第一功能的通用I/O使用。使用。引腳輸入部分有兩個緩沖器,第二功能的輸入信號取自緩沖器引腳輸入部分有兩個緩沖器,第二功能的輸入信號取自
24、緩沖器BUF3的輸出端,第一功能的輸入信號取自緩沖器的輸出端,第一功能的輸入信號取自緩沖器BUF2的輸?shù)妮敵龆恕3龆恕?44.1.5 P1P3口驅(qū)動口驅(qū)動LED發(fā)光二極管的問題發(fā)光二極管的問題在實際應(yīng)用中,常用在實際應(yīng)用中,常用P1P3端口驅(qū)動端口驅(qū)動LED發(fā)光二極管,下面來發(fā)光二極管,下面來討論討論P1P3端口與端口與LED發(fā)光二極管的驅(qū)動連接問題。發(fā)光二極管的驅(qū)動連接問題。P0口與口與P1、P2、P3口相比,口相比,P0口的驅(qū)動能力較大,每位可驅(qū)口的驅(qū)動能力較大,每位可驅(qū)動動8個個LSTTL輸入,而輸入,而P1、P2、P3口的每一位的驅(qū)動能力,口的每一位的驅(qū)動能力,只有只有P0口的一半。當(dāng)
25、口的一半。當(dāng)P0口的某位為高電平時,可提供口的某位為高電平時,可提供400 A的電流;當(dāng)?shù)碾娏鳎划?dāng)P0口的某位為低電平(口的某位為低電平(0.45V)時,可提)時,可提供供3.2mA的灌電流,如低電平允許提高,灌電流可相應(yīng)加大的灌電流,如低電平允許提高,灌電流可相應(yīng)加大。所以,任一個口要想獲得較大的驅(qū)動能力,只能用低電平。所以,任一個口要想獲得較大的驅(qū)動能力,只能用低電平輸出。例如,使用單片機的并行端口輸出。例如,使用單片機的并行端口P1P3直接驅(qū)動發(fā)光二直接驅(qū)動發(fā)光二極管,電路如極管,電路如圖圖4-5所示。所示。 25(a)不恰當(dāng)?shù)倪B接:高電平驅(qū)動 (b)恰當(dāng)?shù)倪B接:低電平驅(qū)動圖4-5 發(fā)光
26、二極管與AT89S51并行口的直接連接由于由于P1P3口內(nèi)部有口內(nèi)部有30k左右的上拉電阻,如果高電平輸出,左右的上拉電阻,如果高電平輸出,則強行從則強行從P1、P2和和P3口輸出的電流口輸出的電流Id會造成單片機端口的損壞會造成單片機端口的損壞,如圖,如圖4-5(a)所示。如果端口引腳為低電平,能使電流)所示。如果端口引腳為低電平,能使電流Id從單從單片機的外部流入內(nèi)部,則將大大增加流過的電流值,如圖片機的外部流入內(nèi)部,則將大大增加流過的電流值,如圖4-5(b)所示。所以,當(dāng))所示。所以,當(dāng)P1P3端口驅(qū)動端口驅(qū)動LED發(fā)光二極管時,應(yīng)該采發(fā)光二極管時,應(yīng)該采用低電平驅(qū)動。用低電平驅(qū)動。4.
27、2 并行并行I/O端口的端口的C51編程舉例編程舉例本節(jié)通過幾個應(yīng)用舉例,介紹片內(nèi)本節(jié)通過幾個應(yīng)用舉例,介紹片內(nèi)I/O端口的應(yīng)用以及端口的應(yīng)用以及C51的編的編程。程。 274.2.1 從左到右的流水燈的制作從左到右的流水燈的制作片內(nèi)片內(nèi)I/O端口作為輸出使用時,最常用的應(yīng)用是控制相應(yīng)的端口作為輸出使用時,最常用的應(yīng)用是控制相應(yīng)的I/O引腳上的引腳上的LED點亮與熄滅。點亮與熄滅?!纠?-1】 如圖如圖4-6所示,所示,8個發(fā)光二極管個發(fā)光二極管LED0LED7經(jīng)限經(jīng)限流電阻分別接至流電阻分別接至P1口的口的P1.0P1.7引腳上,陽極共同接引腳上,陽極共同接高電平。編程來實現(xiàn)發(fā)光二極管的從
28、左到右的流水點亮,高電平。編程來實現(xiàn)發(fā)光二極管的從左到右的流水點亮,即按照即按照LED0LED1LED7的順序,每次點亮一個的順序,每次點亮一個發(fā)光二極管,延時一段時間后熄滅這個發(fā)光二極管,然后發(fā)光二極管,延時一段時間后熄滅這個發(fā)光二極管,然后點亮下一個發(fā)光二極管,重復(fù)循環(huán)。參考程序如下:點亮下一個發(fā)光二極管,重復(fù)循環(huán)。參考程序如下: 28圖圖4-6 8個發(fā)光二極管與并行口個發(fā)光二極管與并行口P1的連接的連接#include #include /*包含移位函數(shù)的頭文件包含移位函數(shù)的頭文件*/#define uchar unsigned char #define uint unsigned in
29、t void delay(uint i) /*延時函數(shù)延時函數(shù)*/uchar t;while (i-);for(t = 0; t 120; t+);void main( )/*主程序主程序*/P1=0 xfe;while (1)P1=_crol_( 0,1) ; /*C51函數(shù)庫中的左移函數(shù),函數(shù)庫中的左移函數(shù),P1中的數(shù)據(jù)循環(huán)左移中的數(shù)據(jù)循環(huán)左移1位位*/delay( 500 ); /*500為延時參數(shù),可根據(jù)實際需要調(diào)整為延時參數(shù),可根據(jù)實際需要調(diào)整*/4.2.2 左右來回循環(huán)的流水燈的制作左右來回循環(huán)的流水燈的制作下面介紹在下面介紹在【例例4-1】的基礎(chǔ)上,增加了從右到左點亮發(fā)光的基礎(chǔ)上
30、,增加了從右到左點亮發(fā)光二極管的功能,即制作左右來回循環(huán)的節(jié)日彩燈,顯示規(guī)二極管的功能,即制作左右來回循環(huán)的節(jié)日彩燈,顯示規(guī)律如圖律如圖4-7所示。具體電路如圖所示。具體電路如圖4-6所示。所示。 31圖圖4-7 節(jié)日彩燈的花樣顯示的規(guī)律節(jié)日彩燈的花樣顯示的規(guī)律為了使顯示效果更加絢麗多彩,圖為了使顯示效果更加絢麗多彩,圖4-6中的中的P1端口端口8個引腳分個引腳分別接有不同顏色的發(fā)光二極管。具體如表別接有不同顏色的發(fā)光二極管。具體如表4-1所示。所示。 32【例例4-2】左右來回循環(huán)的流水燈的電路連接見圖左右來回循環(huán)的流水燈的電路連接見圖4-6,顯示,顯示規(guī)律如圖規(guī)律如圖4-7。實現(xiàn)本任務(wù)要求
31、,可以有多種軟件實現(xiàn)方。實現(xiàn)本任務(wù)要求,可以有多種軟件實現(xiàn)方法。下面列出了法。下面列出了3種,具體如下。種,具體如下。(1)數(shù)組的字節(jié)操作實現(xiàn))數(shù)組的字節(jié)操作實現(xiàn)本方法是建立一個字符型數(shù)組,將控制本方法是建立一個字符型數(shù)組,將控制8個個LED顯示的顯示的8位位數(shù)據(jù)作為數(shù)組元素,依次送到數(shù)據(jù)作為數(shù)組元素,依次送到P1口來實現(xiàn)。參考程序如口來實現(xiàn)。參考程序如下:下: #include #define uchar unsigned char uchar tab = 0 xfe , 0 xfd , 0 xfb , 0 xf7 , 0 xef , 0 xdf , 0 xbf , 0 x7f ,0 xbf
32、 , 0 xdf , 0 xef , 0 xff7 , 0 xf7 , 0 xfb , 0 xfe , 0 xff;/*前前8個數(shù)據(jù)為個數(shù)據(jù)為左移點亮數(shù)據(jù),后左移點亮數(shù)據(jù),后8個為右移點亮數(shù)據(jù)個為右移點亮數(shù)據(jù)*/33void delay( )uchar i,j;for(i = 0; i 255; i+);for(j = 0; j 255; j+);void main( )/*主函數(shù)主函數(shù)*/uchar iwhile (1)for(i = 0; i ”“”來把送到來把送到P1口的顯示控制數(shù)口的顯示控制數(shù)據(jù)進行移位,從而實現(xiàn)發(fā)光二極管依次點亮。參考程序如下:據(jù)進行移位,從而實現(xiàn)發(fā)光二極管依次點亮。
33、參考程序如下:#include #define uchar unsigned char void delay( )uchar i,j;for(i=0; i 255; i+);for(j=0; j 255; j+);void main( ) /*主函數(shù)主函數(shù)*/uchar i,temp;while (1)temp=0 x01; /*左移初值左移初值賦給賦給temp*/for(i= 0; i 8; i+);35P1=temp;/* temp取反后送取反后送P1口口*/delay( );temp=temp1; /* temp 中數(shù)據(jù)左移一位中數(shù)據(jù)左移一位*/ temp=0 x80; /*賦右移初值給
34、賦右移初值給temp*/for(i=0; i 1; /* temp 中數(shù)據(jù)右移一位中數(shù)據(jù)右移一位*/(3)用移位函數(shù)實現(xiàn))用移位函數(shù)實現(xiàn) 本方法是使用本方法是使用C51中提供的庫函數(shù),即左移中提供的庫函數(shù),即左移n位函數(shù)和右移位函數(shù)和右移n位函數(shù),實現(xiàn)發(fā)光二極管的依次點亮。參考程序如下:位函數(shù),實現(xiàn)發(fā)光二極管的依次點亮。參考程序如下:36#include #include /*包含左、右移位函數(shù)的頭文件包含左、右移位函數(shù)的頭文件*/#define uchar unsigned char void delay( )uchar i,j;for(i=0; i 255; i+);for(j=0; j
35、255; j+);void main( )/*主函數(shù)主函數(shù)*/uchar i,temp;while (1)temp=0 xfe; /*初值為初值為0 x11111110*/37for(i=0; i 7; i+);P1=temp;/* temp 值送入值送入P1口口*/delay( ); /*延時延時*/temp=_crol_( temp,1) ;/*執(zhí)行左移函數(shù),執(zhí)行左移函數(shù),temp 中的數(shù)據(jù)循環(huán)中的數(shù)據(jù)循環(huán) 左移左移1位位*/for(i=0; i7; i+);P1=temp;/* temp 值送入值送入P1口口*/delay( ); /*延時延時*/temp=_cror_( temp,1) ;/*執(zhí)行右移函數(shù),執(zhí)行右移函數(shù),temp中的數(shù)中的數(shù)據(jù)循環(huán)右據(jù)循環(huán)右 移移1位位*/384.2.3 開關(guān)量檢測指
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)合同范例個體
- 醫(yī)療器械廣告服務(wù)合同范本
- 變更經(jīng)營人合同范本
- 原址回遷合同范本
- 古玩拍賣合同范本
- 健身房代賣健身卡合同范本
- 醫(yī)用眼罩采購合同范本
- 醫(yī)療員工合同范本
- 《晚上的太陽》教案
- 單位購買門合同范本
- 航天集團人才隊伍建設(shè)經(jīng)驗介紹
- 牙周炎-侵襲性牙周炎
- 心理委員工作記錄表
- 新教科版五下科學(xué)1-5《當(dāng)環(huán)境改變了》公開課課件
- 教師的十大轉(zhuǎn)變課件
- 焦化廠生產(chǎn)工序及工藝流程圖
- 可下載打印的公司章程
- 中藥熏洗法課件
- 本特利探頭應(yīng)用
- QMR-110-00員工手部、接觸面等微生物檢驗記錄記錄
- 外陰及陰道炎癥
評論
0/150
提交評論