




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 POPOP3P3端口的功能和內部結構端口的功能和內部結構 POPOP3P3端口的端口的 本章介紹的主要內容本章介紹的主要內容 CPU輸入接口輸入接口輸入設備輸入設備輸出接口輸出接口輸出設備輸出設備圖圖5 51 1輸入接口和輸出接口輸入接口和輸出接口 51單片機有單片機有P0、P1、P2、P3四個四個8位雙向位雙向I/O口,每口,每個端口可以按字節輸入或輸出,也可以按位進行輸入或個端口可以按字節輸入或輸出,也可以按位進行輸入或輸出,四個口共輸出,四個口共32根口線,用作位控制十分方便。根口線,用作位控制十分方便。P0口口為三態雙向口,能帶為三態雙向口,能帶8個個TTL電路;電路;P1、P2、P
2、3口為準口為準雙向口,負載能力為雙向口,負載能力為4個個TTL電路。電路。 51 P0P3端口的功能和內部結構端口的功能和內部結構 P0P3端口的功能如下:端口的功能如下: lPOPO口口1.1.作為輸入作為輸入/ /輸出口。輸出口。 2.2.作為地址作為地址/ /數據總線數據總線 , ,接外圍芯片時接外圍芯片時POPO口分時口分時輸出低輸出低 8 8 位地址與數據信號。位地址與數據信號。lP P1 1口口1.1.作為作為輸入輸入/ /輸出口。輸出口。 2. 2.在增強型在增強型(52(52系列系列) )和和ISPISP型型( (在系統編程型在系統編程型) )中中P P1 1口還有如下功能(僅
3、了解即可)口還有如下功能(僅了解即可): : P1.0 T2 P1.0 T2引腳引腳, ,定時定時/ /計數器計數器2 2外部計數脈沖輸入外部計數脈沖輸入 P1.1 T2EXP1.1 T2EX引腳引腳, ,定時定時/ /計數器計數器2 2觸發和方向控制觸發和方向控制 P1.5 P1.5 MOSIMOSI引腳引腳, ,在系統編程數據輸入在系統編程數據輸入 P1.6 P1.6 MISOMISO引腳引腳, ,在系統編程數據輸出在系統編程數據輸出 P1.7 P1.7 SCKSCK引腳引腳, ,在系統編程時鐘輸入在系統編程時鐘輸入lP2P2口口1.1.作為輸入作為輸入/ /輸出口。輸出口。 2.2.作為
4、高作為高8 8位地址總線。位地址總線。 lP3P3口口P3P3口為雙功能口為雙功能 1.1.作第一功能使用時,其功能為輸入作第一功能使用時,其功能為輸入/ /輸出口。輸出口。 2.2.作第二功能使用時,每一位功能定義如下表作第二功能使用時,每一位功能定義如下表所示所示: : RD (外部數據存儲器讀選通信號入)外部數據存儲器讀選通信號入) P3.7 P3.7 WR (外部數據存儲器寫選通信號入)外部數據存儲器寫選通信號入)P3.6 P3.6 T1 T1 (定時器定時器1 1外部計數脈沖輸入)外部計數脈沖輸入)P3.5 P3.5 T0 T0 (定時器定時器0 0外部計數脈沖輸入)外部計數脈沖輸入
5、)P3.4 P3.4 P3.3 P3.3 P3.2 P3.2 TXD TXD (串行輸出線)串行輸出線)P3.1 P3.1 RXD RXD (串行輸入線)串行輸入線) P3.0 P3.0 第第 二二 功功 能能 端口引腳端口引腳 INT0 INT0(外部中斷外部中斷0 0輸入線)輸入線)INT1INT1 (外部中斷外部中斷1 1輸入線)輸入線) 5.1.2 5.1.2 端口的內部結構端口的內部結構 四個端口的一位結構見圖四個端口的一位結構見圖5.15.1,同一個端口,同一個端口的各位具有相同的結構。由圖可見,四個端口的各位具有相同的結構。由圖可見,四個端口的的 結構有相同之處:結構有相同之處:
6、 依據每個端口的不同功能,內部結構亦有依據每個端口的不同功能,內部結構亦有不同之處,以下重點介紹不同之處。不同之處,以下重點介紹不同之處。 都有兩個輸入緩沖器,分別受內部讀鎖存都有兩個輸入緩沖器,分別受內部讀鎖存器和讀引腳控制信號的控制。器和讀引腳控制信號的控制。 都有鎖存器都有鎖存器( (即專用寄存器即專用寄存器POPOP3)P3) 都是場效應管輸出驅動。都是場效應管輸出驅動。1.1.POPO口口 POPO口的輸出驅動電路由上拉場效應管口的輸出驅動電路由上拉場效應管T1T1和驅動場效和驅動場效應應T2T2組成,控制電路包括一個與門,組成,控制電路包括一個與門, 一個非門和一個一個非門和一個模
7、擬開關模擬開關MUXMUX。(a)P0口 位 結 構11讀 鎖 存 器內 部 總 線寫 鎖 存 器讀 引 腳地 址 /數 據控 制&T1T2VccP0.x引 腳MUX2DQCLP0.x鎖 存 器Q 1.1.POPO作作I/OI/O口使用口使用 CPU CPU發控制電平發控制電平“0”“0”封鎖與門,使封鎖與門,使T1T1管截止,管截止,同時使同時使MUXMUX開關同下面的觸點接通,使鎖存器的開關同下面的觸點接通,使鎖存器的 Q Q 與與T2T2柵極接通。柵極接通。 當當CPUCPU向端口輸出數據時,寫脈沖加在鎖存向端口輸出數據時,寫脈沖加在鎖存器的器的 CLCL上、內部總線的數據經反相,再經上
8、、內部總線的數據經反相,再經T2T2管反管反相,相,POPO口的這一位引腳上出現正好和內部總線同口的這一位引腳上出現正好和內部總線同相的數據相的數據。由于輸出驅動級是漏極開路電路由于輸出驅動級是漏極開路電路( (因因T1T1截止截止) ),在作在作I/OI/O口使用時應外接口使用時應外接1010K K的上拉電阻。的上拉電阻。 當輸入操作時,端口中兩個三態緩沖當輸入操作時,端口中兩個三態緩沖器用于讀操作。緩沖器器用于讀操作。緩沖器2 2用于讀端口引腳用于讀端口引腳的數據。當執行端口讀指令時,讀引腳脈的數據。當執行端口讀指令時,讀引腳脈沖打開三態緩沖器沖打開三態緩沖器2 2,于是端口引腳數據,于是
9、端口引腳數據經三態緩沖器經三態緩沖器2 2送到內部總線。緩沖器送到內部總線。緩沖器1 1用用于讀取鎖存器于讀取鎖存器Q Q端的數據。當執行端的數據。當執行“讀讀- -修修改改- -寫寫”指令指令( (即讀端口信息,在片內加以即讀端口信息,在片內加以運算修改后,再輸出到該端口的某些指令運算修改后,再輸出到該端口的某些指令如:如:ANL POANL PO,A A指令指令) ),即是讀的鎖存器,即是讀的鎖存器Q Q的數據。的數據。 這是為了避免錯讀引腳的電平信號,例如用這是為了避免錯讀引腳的電平信號,例如用一根口線去驅動一個晶體管基極,當向口線一根口線去驅動一個晶體管基極,當向口線寫寫“1 1”,晶
10、體管導通,導通的,晶體管導通,導通的PNPN結會把引腳結會把引腳的電平拉低,如讀引腳數據,則會讀為的電平拉低,如讀引腳數據,則會讀為0 0 ,而實際上原口線的數據為而實際上原口線的數據為1 1。因而采用讀鎖存。因而采用讀鎖存器器Q Q的值而避免了錯讀。究竟是讀引腳還是讀的值而避免了錯讀。究竟是讀引腳還是讀 鎖存器,鎖存器,CPUCPU內部會自行判斷是發讀引腳脈沖內部會自行判斷是發讀引腳脈沖還是讀鎖存器脈沖,讀者不必在意。還是讀鎖存器脈沖,讀者不必在意。 應注意應注意 ,當作輸入端口使用時,應先對,當作輸入端口使用時,應先對該口寫入該口寫入“1 1”使場效應管使場效應管T2T2截止,再進行讀截止
11、,再進行讀入操作,以防場效應管處于導通狀態,使引入操作,以防場效應管處于導通狀態,使引腳箝位到零,而引起誤讀。腳箝位到零,而引起誤讀。 當當POPO口作地址口作地址/ /數據線使用時,數據線使用時,CPUCPU及內部及內部控制信號為控制信號為“1 1”,轉換開關,轉換開關MUXMUX打向上面的觸打向上面的觸點,點, 使反相器的輸出端和使反相器的輸出端和T2T2管柵極接通,輸出管柵極接通,輸出的地址或數據信號通過與門驅動的地址或數據信號通過與門驅動T1T1管,同時通管,同時通過反相器驅動過反相器驅動T2T2管完成信息傳送,數據輸入時,管完成信息傳送,數據輸入時,通過緩沖器進入內部總線。通過緩沖器
12、進入內部總線。 P1P1口作通用口作通用I/OI/O口使用,因電路結構上輸出驅口使用,因電路結構上輸出驅動部分接有上拉電阻。當作輸入時,同動部分接有上拉電阻。當作輸入時,同POPO一樣,一樣, 要先對該口寫要先對該口寫“1 1”。 (b)P1口 位 結 構1讀 鎖 存 器內 部 總 線寫 鎖 存 器讀 引 腳TVccP1.x引 腳2DQCLP1.x鎖 存 器內 部 上 拉 電 阻Q2.P12.P1口口 P1P1口的結構見下圖口的結構見下圖地址控制Vcc內部上拉電阻T1MUX12DCLQP2.x鎖存器P2.x引腳讀鎖存器內部總線寫鎖存器讀引腳P2P2口口 P2 P2口的位結構比口的位結構比P1P
13、1多了一個轉換控制部分,多了一個轉換控制部分,當當P2P2口作通用口作通用I/OI/O口時,多路開關口時,多路開關MUXMUX倒向左;倒向左; 當擴展片外存貯器時,當擴展片外存貯器時,MUXMUX開關打向右,開關打向右,P2P2口口作高八位地址線輸出高八位地址信號。作高八位地址線輸出高八位地址信號。 其其MUXMUX的的倒向是受的的倒向是受CPUCPU內部控制的。內部控制的。 應當注意:應當注意:當當P2P2口的幾位作地址線使用時,剩口的幾位作地址線使用時,剩下的下的P2P2口線不能作口線不能作I /OI /O口線使用。口線使用。讀讀 鎖鎖 存存 器器內 部 總 線寫 鎖 存 器讀 引 腳第
14、二 輸 出 功 能第 二 輸 入 功 能內 部 上 拉 電 阻P3.x引 腳TVcc1234DCLQP3.x鎖 存 器( (d d) )P P3 3口口 位位 結結 構構 4.P3 4.P3口口 P3 P3口為雙功能口為雙功能I/OI/O口,內部結構中增加了第二輸口,內部結構中增加了第二輸入入/ /輸出功能。輸出功能。 當作為普通當作為普通I/OI/O口使用時,第二輸出功能端保口使用時,第二輸出功能端保持持“1 1”,打開與非門,打開與非門3 3,用法同,用法同P1P1口。口。 當作第二功能輸出時,鎖存器輸出為當作第二功能輸出時,鎖存器輸出為“1”“1”打打開與非門開與非門3 3,第二功能內容
15、通過與非門,第二功能內容通過與非門3 3和和T T送至引送至引腳。腳。 輸入時,引腳的第二功能信號通過三態緩沖器輸入時,引腳的第二功能信號通過三態緩沖器4 4進入第二輸入功能端。兩種功能的引腳輸入都應進入第二輸入功能端。兩種功能的引腳輸入都應使使T T截止,此時第截止,此時第 二輸出功能端和鎖存器輸出端二輸出功能端和鎖存器輸出端Q Q均為高電平。均為高電平。 P3 P3的各位如不設定為第二功能則自動處于第一的各位如不設定為第二功能則自動處于第一功能,在更多情況下,根據需要,功能,在更多情況下,根據需要, 把幾條口線設把幾條口線設為第二功能,剩下的口線可作第一功能為第二功能,剩下的口線可作第一功
16、能( (I/O)I/O)使用,使用,此時,宜采用位操作形式此時,宜采用位操作形式 。 歸納四個并行口使用的注意事項如下:歸納四個并行口使用的注意事項如下:1 1。如果單片機內部有程序存貯器,不需要擴展外如果單片機內部有程序存貯器,不需要擴展外部存貯器和部存貯器和I/OI/O接口,單片機的四個口均可作接口,單片機的四個口均可作I/OI/O口使用。口使用。2 2。四個口在作輸入口使用時,均應先對其寫四個口在作輸入口使用時,均應先對其寫“1”“1”,以避免誤讀。,以避免誤讀。3 3。P0P0口作口作I/OI/O口使用時應外接口使用時應外接1010K K的上拉電阻,其的上拉電阻,其它口則可不必。它口則
17、可不必。4 4。P2P2可某幾根線作地址使用時,剩下的線不能作可某幾根線作地址使用時,剩下的線不能作I/OI/O口線使用。口線使用。5 5。P3P3口的某些口線作第二功能時,剩下的口線可口的某些口線作第二功能時,剩下的口線可以單獨作以單獨作I/OI/O口線使用。口線使用。 下面舉例說明端口的輸入、輸出功能,其他下面舉例說明端口的輸入、輸出功能,其他功能的應用實例在后面章節說明。功能的應用實例在后面章節說明。 例例5-1.設計一電路,監視某開關設計一電路,監視某開關K,用發光用發光二極管二極管LED顯示開關狀態,如果開關合上,顯示開關狀態,如果開關合上,LED 亮、亮、 開關打開,開關打開,LE
18、D熄滅。熄滅。 分析:設計電路如圖分析:設計電路如圖5. 3如示。如示。 開關接在開關接在P1.1口線,口線,LED接接P1.0口線,當口線,當開關斷開時,開關斷開時,P1.1為為+5V,對應數字量為對應數字量為“1”,開開 關合上時關合上時P1.1電平為電平為0V,對應數字量為對應數字量為“0”,這樣就可以用這樣就可以用JB指令對開關狀態進行檢測指令對開關狀態進行檢測 。 LED正偏時才能發亮,按電路接法,正偏時才能發亮,按電路接法,當當P1.0輸出輸出“1”,LED正偏而發亮,當正偏而發亮,當P1.0 輸出輸出“0” ,LED 的兩端電壓為的兩端電壓為 0 而熄滅。而熄滅。 3030P P
19、LEDLED+5 5V VVccVcc-EAEARSTRST1010uFuF 1 1K KP1.0P1.08989S51S51P1.1P1.13030P PXTAL1XTAL1XTAL2XTAL2GNDGND8989C51C51VccVcc-EAEARSTRST8989S51S51+5+5V VP1.1P1.11 1K K3030P PXTAL1XTAL18989C51C51K K編程如下:編程如下: CLR P1.0 ;使發光二極管滅使發光二極管滅 AGA:SETB P1.1 ;先對先對P1口寫入口寫入“1” JB P1.1,LIG ;開關開,轉開關開,轉LIG SETB P1.0 ;開關合
20、上,二極管亮開關合上,二極管亮 SJMP AGA LIG: CLR P1.0 ;開關開,二極管滅開關開,二極管滅 SJMP AGA 用用C 語言編程如下:語言編程如下:#include sbit p1_0=P10; sbit p1_1=P11; /*定義位變量定義位變量*/ void main() p1_0=0; /*使發光二極管滅使發光二極管滅*/ while(1) p1_1=1; /*對輸入位對輸入位P1.1寫寫“1” */ if (p1_1=0) p1_0=1; /*開關合上,二極管亮開關合上,二極管亮*/ else p1_0=0; /*開關開,二極管滅開關開,二極管滅*/ +5+5V
21、VP1.0P1.0LEDLED 在上述電路圖中二極管亮度不夠,按下在上述電路圖中二極管亮度不夠,按下面兩種電路接法,增加了驅動能力,二極管面兩種電路接法,增加了驅動能力,二極管更亮些。更亮些。接成灌電流形式:接成灌電流形式:P1.0P1.0+5+5V VLEDLED1加驅動電路:加驅動電路: 例例5-2.5-2.在圖在圖5 5-4-4中中P1.4P1.4P1.7P1.7接四個發光二接四個發光二極管極管LED,P1.0LED,P1.0P1.3P1.3接四個開關,編程將開關接四個開關,編程將開關的狀態反映到發光二極管上。的狀態反映到發光二極管上。 8989C51/89S51C51/89S51P1.
22、0P1.0P1.1P1.1P1.2P1.2P1.3P1.3P1.4P1.4P1.5P1.5P1.6P1.6P1.7P1.7+5+5V V+5+5V V1 1K K4 4330330 4 4圖圖5-5-4 4 例例5-25-2圖圖EA用匯編語言編程用匯編語言編程 ORG 0000H MOV P1,#0FFH ;高四位的高四位的LED全滅,全滅, 低四位輸入線送低四位輸入線送“1”, ABC: MOV A,P1 ;讀讀P1口引腳開關狀態,并送入口引腳開關狀態,并送入A SWAP A ;低四位開關狀態換到高四位低四位開關狀態換到高四位 ANL A,#0F0H ;保留高四位保留高四位 MOV P1,A
23、 ;從從P1口輸出口輸出 ORL P1,#0FH ;高四位不變,低四位送高四位不變,低四位送“1”, 準備下一輪讀開關準備下一輪讀開關 SJMP ABC ;循環執行,方便反復調整開關循環執行,方便反復調整開關 狀態觀察執行結果狀態觀察執行結果 上述程序中每次讀開關之前,輸入位都先上述程序中每次讀開關之前,輸入位都先置置“1 1”,保證了開關狀態的正確讀入。,保證了開關狀態的正確讀入。 用用C語言編程如下:語言編程如下:sfr P1=0 x90; main() P1=0 xff; /*P1低四位置低四位置“1”,高四位燈全滅,高四位燈全滅*/ while(1) P1=P14; /*讀入讀入P1引
24、腳狀態,左移四位后引腳狀態,左移四位后 再從再從P1口輸出口輸出*/ P1=P1|0 x0f; /*P1高四位不變,低四位置高四位不變,低四位置“1”,準,準備備 下一輪讀下一輪讀 開開 關關*/ 例例5-3.5-3.用用P1.0P1.0輸出輸出1 1KHzKHz和和500500HzHz的音頻信號驅動揚聲器,的音頻信號驅動揚聲器,作報警信號,要求作報警信號,要求1 1KHzKHz信號響信號響100100ms ms ,500Hz500Hz信號響信號響200200msms,交替進行,交替進行,P1.7P1.7接一開關進行控制,當開關合上接一開關進行控制,當開關合上響報警信號,當開關斷開告警信號停止
25、,編出程序。響報警信號,當開關斷開告警信號停止,編出程序。 分析:分析:500Hz信號周期為信號周期為2ms,信號電平為每信號電平為每1ms變反變反1次。次。1KHz的信號周期為的信號周期為1ms,信信號電平號電平 每每500S變反變反1次,編次,編一個延時一個延時500S子程序,延時子程序,延時1ms只需調用只需調用2次。用次。用R2控制控制音響時間長短,音響時間長短,A作音響頻率作音響頻率的交換控制的標志。的交換控制的標志。A=FF時時產生產生1KHz信號,信號,A=0時產生時產生500Hz信號。信號。 P1.0 波波 形形 圖圖 1ms 1ms100個個T (變反變反200次即次即200
26、ms)。500S500S100個個T (變反變反200次即次即100ms)。TT ORG 0000H CLR A ;A作作1KHz,500Hz 轉換控制轉換控制 BEG: JB P1.7, ;檢測檢測P1.7的開關狀態的開關狀態 MOV R2, #200 ;開關閉合報警,開關閉合報警,R2控制音響時間控制音響時間DV:CPL P1.0 CJNE A, #0FFH, N1 ;AFFH,延時延時500S ACALL D500 ;A=FFH ; 延時延時1ms P1.0變反變反 N1:ACALL D500 DJNZ R2,DV CPL A SJMP BEG D500:MOV R7, #250 ;延時
27、延時500 S子程序子程序 DJNZ R7, RET END 用用C C語言編程如下語言編程如下 #include sbit P10=P10; sbit P17=P17; main() unsigned char i,j; while(1) P171;while(P17=0) for(i=1; i=200; i+) /*控制音響時間控制音響時間*/ P10=P10; for(j=0; j=50; j+); /*延時完成信號周期時間延時完成信號周期時間*/ for(i=1; i=200; i+) /*控制音響時間控制音響時間*/ P10=P10; for(j=0; j=100; j+); /*延
28、時,完成信號周期時間延時,完成信號周期時間*/ 上述程序只產生報警音響效果,周期和響的時間上述程序只產生報警音響效果,周期和響的時間長短是準確的,長短是準確的, 欲合乎要求,最好用定時器定時欲合乎要求,最好用定時器定時(第第7章章介紹介紹)。 鍵盤和顯示器是單片機應用系統中常用的鍵盤和顯示器是單片機應用系統中常用的輸入輸出裝置。輸入輸出裝置。LEDLED數碼顯示器是常用的顯示器數碼顯示器是常用的顯示器之一,下面介紹用單片機并行口設計之一,下面介紹用單片機并行口設計LEDLED數碼顯數碼顯示電路和鍵盤電路的方法。示電路和鍵盤電路的方法。 5.3.1 5.3.1用并行口設計用并行口設計LEDLED
29、顯示電路顯示電路1. 1. LEDLED顯示器顯示器及及其原理其原理 LEDLED有著顯示亮度高,響應速度快的特點,有著顯示亮度高,響應速度快的特點,最常用的是七段式最常用的是七段式LEDLED顯示器,又稱數碼管。顯示器,又稱數碼管。 七段七段LEDLED顯示器內部由七個條形發光二極管和一顯示器內部由七個條形發光二極管和一個小圓點發光二極管組成,根據各管的亮暗組個小圓點發光二極管組成,根據各管的亮暗組合成字符。常見合成字符。常見LEDLED的管腳排列見圖的管腳排列見圖5.4(5.4(a)a)。其其中中COMCOM為公共點,根據內部發光二極管的接線為公共點,根據內部發光二極管的接線 形式,可分成
30、共陰極型圖形式,可分成共陰極型圖(5.4(5.4(b)b)和共陽極型和共陽極型圖圖(5.4(5.4(c)c)。 a ab bc cd de ef fg gdpdp(a)(b)(c)cdedp12345678910a bfgcomcomabcefabcdefgdpcomcom圖圖5.5.4 4gd0 0 1 1 1 1 1 1 3fh x g f e d c b a a ab bc cd de ef fg gdpdpcdedp12345678910a bfgcomcomabcefcomg LED數碼管的數碼管的ga七個發光二極管因加正電壓而發亮,因加七個發光二極管因加正電壓而發亮,因加零電壓而不
31、能發亮,不同亮暗的組合就能形成不同的字形,這種組零電壓而不能發亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼合稱之為字形碼(段碼段碼),如顯示,如顯示”0”,字形碼為字形碼為3fh.da ab bc cd de ef fg gdpdp12345678910a bfgcomcomabcefgx g f e d c b a 0 0 0 0 0 1 1 0 06h 顯示顯示”1”,字形碼為字形碼為06h.d顯示顯示”2”,字形碼為字形碼為5bh.dpcoma ab bc cd de ef fg gdpdpcde12345678910comcomabcefgx g f e d c b a
32、0 1 0 1 1 0 1 1 5bh d 顯然共陽極和共陰極的字形碼是不同的顯然共陽極和共陰極的字形碼是不同的 ,其字形碼見表其字形碼見表5.25.2。LEDLED數碼管每段需數碼管每段需10102020mama的驅動電流,可用的驅動電流,可用TTLTTL或或CMOSCMOS器件驅動。器件驅動。 字形碼的控制輸出可采用硬件譯碼方式,字形碼的控制輸出可采用硬件譯碼方式,如采用如采用BCD 7BCD 7段譯碼段譯碼/ /驅動器驅動器7474LS48LS48、74LS4974LS49、CD4511(CD4511(共陰極共陰極) )或或7474LS46LS46、74LS4774LS47、CD4513
33、CD4513( (其陽極其陽極) )也可用軟件查表方式輸出。也可用軟件查表方式輸出。 顯示字符段段 符符 號號十六進制代碼dpgfedcba共陰共陽0123456789ABCDEFHP0000000000000000010011111011110111111000111011111011111010001010111111111011011011011110001101111111110100101111100111100100111011011111101011013FH06H5BH4FH66H6DH7DH07H7FH6FH77H7CH39H5EH79H71H76HF3HC0F9A4B099
34、9282F880908883C6A18684FFBF2.2.LEDLED數碼管的接口數碼管的接口 數碼管的接口有靜態接口和動態接口。數碼管的接口有靜態接口和動態接口。 靜態接口靜態接口為固定顯示方式,無閃爍,其電路可采為固定顯示方式,無閃爍,其電路可采用一個并行口接一個數據管,數碼管的公共端按共陰用一個并行口接一個數據管,數碼管的公共端按共陰或共陽分別接地或或共陽分別接地或VccVcc。這種接法占用接口多,如果這種接法占用接口多,如果POPO口和口和P2P2口要用作數據線和地址線,僅用單片機的并口要用作數據線和地址線,僅用單片機的并行口就只能接二個數碼管。也可以用串行接口的方法行口就只能接二個
35、數碼管。也可以用串行接口的方法接多個數碼管,接多個數碼管, 使之靜態顯示使之靜態顯示. . 動態接口動態接口采用各數碼管循環輪流顯示的方法,采用各數碼管循環輪流顯示的方法,當循環顯示頻率較高時,利用人眼的暫留特性當循環顯示頻率較高時,利用人眼的暫留特性 ,看,看不出閃爍顯示現象,這種顯示需要一個接口完成字形不出閃爍顯示現象,這種顯示需要一個接口完成字形碼的輸出碼的輸出(字形選擇字形選擇),另一接口完,另一接口完 成各數碼管的輪流成各數碼管的輪流點亮點亮(數位選擇數位選擇)。 11111+5VVcc/EARSTP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0P3.1P3.
36、2P3.3P3.4XTAL1XTAL2GND89C51Q0Q6/OED0D6G373ag圖 5-5 接 五 個 共 陰 極 數 碼 管 的 動 態 顯 示 接 口12 例如例如圖圖5.8是接有五個共陰極數碼管的動態顯示接口是接有五個共陰極數碼管的動態顯示接口電路,用電路,用74LS373接成直通的方式作驅動接成直通的方式作驅動 電路,陰極電路,陰極用非門用非門74LS04反相門驅動,字形選擇由反相門驅動,字形選擇由P1口提供,位口提供,位選擇由選擇由P3口控制。口控制。(1)編程使在最右邊的數碼管上顯示)編程使在最右邊的數碼管上顯示 “P”。匯編語言程序:匯編語言程序:ORG 0000HMOV
37、 P1, #73H;P1口輸出口輸出“P”的段碼的段碼MOC P3,#10H;最右邊的數碼管亮最右邊的數碼管亮SJMP $C語言程序:語言程序:#includeMain() P1 = 0 x73; P3 = 0 x10; 如果不對如果不對P1和和P3重新輸出新的數據,最右重新輸出新的數據,最右邊的數碼管將一直顯示邊的數碼管將一直顯示“P”。思考一下為什么。思考一下為什么。(2)要求在中間的數碼管上循環顯示)要求在中間的數碼管上循環顯示“0” “3”。分析:中間的數碼管的陰極受分析:中間的數碼管的陰極受P3.2控制,控制,P3.2輸出輸出1,P1口循環送出口循環送出“0” “3”的段的段碼,數碼
38、變化多,采用查表方式會使程碼,數碼變化多,采用查表方式會使程序簡潔,每亮一個數碼都要延時,保證序簡潔,每亮一個數碼都要延時,保證它的導通時間,才能保證數碼管發亮。它的導通時間,才能保證數碼管發亮。C語言編程如下:語言編程如下:#inludesbit P32 =P32;unsigned char code tab5 = 0 x3f, 0 x06, 0 x5b, 0 x4f,; /* 03的字形碼的字形碼 */main() unsigned char i;unsigned int j;while(1)P32 = 1;for(i=0; i=3; i+)P1 = tabi;for(j=0; j=250
39、00; j+);/* 延時延時 */你能編出匯編語言程序嗎?你能編出匯編語言程序嗎?(3) 當當P3.0P3.4輪流輸出輪流輸出1時,五個數碼管輪流顯示。時,五個數碼管輪流顯示。P1.7接開關,當開關打向位置接開關,當開關打向位置“1”時,時, 顯示顯示“12345” ,當開關打向當開關打向“2”時,顯示時,顯示“HELLO” 樣,如下圖:樣,如下圖: ORG 0000H MOV P3,#0 ;清顯示清顯示 TEST:SETB P1.7 JB P1.7,DIR1 ;檢測開關檢測開關 MOV DPTR,#TAB 1 ; 開關置于開關置于1,12345字形表頭地字形表頭地址址 SJMP DIR D
40、IR1: MOV DPTR,#TAB2 ; 開關置于開關置于2,“HELLO”字形表頭字形表頭DIR: MOV R0,#0 ;R0存字形表偏移量存字形表偏移量 MOV R1,#01 ;R1置數碼表位選代碼置數碼表位選代碼 NEXT:MOV A,R0 MOVC A,A+DPTR ; 查字形碼表查字形碼表1 MOV P1,A ;送送P1口輸出口輸出 用匯編語言編程:用匯編語言編程: MOV A,R1 MOV P3,A ;輸出位選碼輸出位選碼 ACALL DAY ;延時延時 INC R0 ;指向下一位字形指向下一位字形 RL A ;指向下一位指向下一位 MOV R1,A CJNE R1,#20H,N
41、EXT ;五個五個 數碼管顯示完數碼管顯示完? SJMP TEST DAY:MOV R6,#20 ; 延時延時20ms子程序子程序DL2: MOV R7,#7DH DL1: NOP NOP DJNZ R7,DL1 DJNZ R6,DL2 RET TAB1:db 06H,5BH,4FH,66H,6DH ; “15”的字形碼TAB2:db 78H,79H,38H,38H,3FH ; “HELLO”的字形碼 END 用用C C語言完成上述功能編程語言完成上述功能編程#include #define uint unsigned int #define uchar unsigned char sbit
42、P17=P17; main( ) uchar code tab15=0 x86,0 xdb,0 xcf,0 xe6,0 xed; /*“15”的字的字 形碼,形碼, 因因P1.7接的開關,最高位送接的開關,最高位送“1”*/ uchar code tab25=0 xf8,0 xf9,0 xb8,0 xb8,0 xbf; /*“HELLO”的段碼,的段碼, 最高位送最高位送 “1”*/ uchar i; uint j;while(1) P3=0 x01; for(i=0;i5;i+) if(P17=1)P1=tab1i; else P1=tab2i; P3=1; for(j=0;j=25000;
43、j+); l5.3.2 5.3.2 用并行口設計鍵盤電路用并行口設計鍵盤電路 鍵盤是計算機系統中不可缺少的輸入設備,鍵盤是計算機系統中不可缺少的輸入設備,當按鍵少時可接成線性鍵盤當按鍵少時可接成線性鍵盤( (如圖如圖5.35.3中的按中的按鍵鍵 ) ),當按鍵較多時,這樣的接法占用口線較,當按鍵較多時,這樣的接法占用口線較多。將按鍵接成矩陣的形式,可以節省口線,多。將按鍵接成矩陣的形式,可以節省口線,例如兩個接口可按例如兩個接口可按8 8* *8 8的形式接的形式接6464個按鍵。每個個按鍵。每個按鍵有它的行值和列值,行值和列值的組合就按鍵有它的行值和列值,行值和列值的組合就是識別這個按鍵的編
44、碼。矩陣的行線和列線分是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和別通過兩并行接口和CPUCPU通信。每個按鍵的狀態通信。每個按鍵的狀態同樣需變成數字量同樣需變成數字量“0 0”和和“1 1”,開關的一端,開關的一端通過電阻接通過電阻接VccVcc( (列列) )、而接地是通過程序輸出數、而接地是通過程序輸出數字字“0 0”實現的。實現的。 鍵盤處理程序的任務是:鍵盤處理程序的任務是:l確定有無鍵按下;確定有無鍵按下;l判哪一個鍵按下,判哪一個鍵按下, l鍵的功能是什么;鍵的功能是什么;l還要消除按鍵在閉合或斷開時的抖動。還要消除按鍵在閉合或斷開時的抖動。 兩個并行口中,一個輸出
45、掃描碼,兩個并行口中,一個輸出掃描碼, 使按使按鍵逐行動態接地鍵逐行動態接地( (稱行掃描稱行掃描) ),另一個并行口輸,另一個并行口輸入按鍵狀態入按鍵狀態( (稱回饋信號,鍵盤的列值稱回饋信號,鍵盤的列值) ), 由由行掃描值和回饋信號共同形成鍵編碼而識別按行掃描值和回饋信號共同形成鍵編碼而識別按鍵、通過軟件查表,查出該鍵的功能。也可由鍵、通過軟件查表,查出該鍵的功能。也可由硬件編碼器完成鍵的編碼。硬件編碼器完成鍵的編碼。 下下圖圖中,用中,用8 8XX51XX51的并行口的并行口P1P1接接4 44 4矩陣鍵盤,矩陣鍵盤, 以以P1.0P1.0P1.3P1.3作輸出線,以作輸出線,以P1.
46、4P1.4P1.7P1.7作輸入線,鍵盤作輸入線,鍵盤掃描程序的流程如圖掃描程序的流程如圖5.75.7所示。所示。 5a EE DE BE 7E ED DD BD 7D EB DB BB 7B E7 D7 B7 77 Y返回鍵編碼返回鍵編碼讀讀P1.3P1.4值值置行掃描初值置行掃描初值掃描位從掃描位從P1口輸出口輸出P1口的高四位和低四位口的高四位和低四位相或得鍵編碼相或得鍵編碼掃到最后一行掃到最后一行?NN(有鍵按下)有鍵按下)N開始開始P1.0P1.3輸出輸出0延時去抖動延時去抖動P1.4P1.7全為全為1?P1.4P1.7全為全為1?YY(無鍵按下無鍵按下) 對鍵盤的程序流程圖對鍵盤的
47、程序流程圖5.7說明如下:說明如下: 當當P1.0P1.3輸出輸出0時,如無鍵按下,時,如無鍵按下,P1.4P1.7的輸入值均為的輸入值均為“1”,如果其中有一個不是,如果其中有一個不是 “1”,說明有鍵按下,再使,說明有鍵按下,再使P1.0P1.3逐個輸出逐個輸出零零(行掃描行掃描),檢查,檢查P1.4P1.7的輸入值有的輸入值有 無零,從無零,從而查出是哪行哪列的鍵按下。在判按鍵時,按鍵而查出是哪行哪列的鍵按下。在判按鍵時,按鍵有抖動,可采用延時后再重讀以跳有抖動,可采用延時后再重讀以跳 過抖動時段過抖動時段(也也可用可用R-S觸發器閂鎖電路硬件消抖,但這樣電路復觸發器閂鎖電路硬件消抖,但
48、這樣電路復雜,在矩陣鍵盤中不采用雜,在矩陣鍵盤中不采用)。程序清單如下:程序清單如下:ORG 0000H TEST: MOV P1,#0F0H ; P1.0P1.3輸出輸出0, P1.4P1.7 輸出輸出1,作輸入位作輸入位 MOV A,P1 ;讀鍵盤,檢測有無鍵按下;讀鍵盤,檢測有無鍵按下ANL A,#0F0H ; 屏蔽屏蔽P1.0P1.3, 檢測檢測P1.4P1.是否全為是否全為1 CJNE A, #0F0H,HAVE ; P1.4P1.7不全為不全為1, 有鍵按下有鍵按下SJMP TEST ;P1.4P1.7全為全為1, 無鍵按下,重檢測鍵盤無鍵按下,重檢測鍵盤HAVE: MOV A,#
49、0FE ;有鍵按下,逐行掃描鍵盤,;有鍵按下,逐行掃描鍵盤, 置掃描初值置掃描初值NEXT: MOV B,A ;掃描碼暫存于;掃描碼暫存于BMOV P1,A ;輸出掃描碼;輸出掃描碼READ: MOV A,P1 ;讀鍵盤;讀鍵盤ANL A,#0F0H ; 屏蔽屏蔽P1.0P1.3, 檢測檢測P1.4P1.是否全為是否全為1CJNE A,0F0H,YES ;P1.4P1.7不全為不全為1, 該行有鍵按下該行有鍵按下MOV A,B ;被掃行無鍵按下,準備查下一行;被掃行無鍵按下,準備查下一行RL A ;置下一行掃描碼;置下一行掃描碼CJNE A,#0EFH,NEXT ;未掃到到最后一行循環;未掃到
50、到最后一行循環YES: ACALL DAY ;延時去抖動;延時去抖動AREAD: MOV A,P1 ;再讀鍵盤;再讀鍵盤ANL A,#0F0H ; 屏蔽屏蔽P1.0P1.3,保留,保留P1.4 P1.7(列碼列碼)MOV R2,A ;暫存列碼;暫存列碼MOV A, B ANL A,#0FH ;取行掃描碼;取行掃描碼ORL A,R2 ;行碼、列碼合并為鍵編碼;行碼、列碼合并為鍵編碼YES1: MOV B,A ;鍵編碼存于;鍵編碼存于BLJMP SAM38 ;轉鍵分析處理程序(見例;轉鍵分析處理程序(見例3-8)void dlms (void) /* 延時延時 */ uchar i; for (i=200;i0;i-) uchar kbscan (void) /* 鍵盤掃描函數鍵盤掃描函數 */uchar sccode, recode; P1=0 xf0; /* P1.0P1.3發全發全0, P1.4P1.7輸入輸入 */ if(P1 & 0 xf0)!=0 xf0) /* 如如P1口高四位不全為口高四位不全為1有鍵有鍵 按下按下 */
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司參加展覽管理辦法
- 企業債權基金管理辦法
- 麗江閑置物資管理辦法
- 人員信息存檔管理辦法
- 住宅項目開發管理辦法
- 井下輔助運輸管理辦法
- 保險統籌規范管理辦法
- 企業檔案出境管理辦法
- 中途更改績效管理辦法
- 臨渭區招投標管理辦法
- 2025至2030高壓氧艙行業市場深度調研及發展前景趨勢與投融資報告
- 熱控專業考試題庫及答案
- 高齡臥床高危靜脈血栓栓塞癥防治中國專家共識解讀 2
- 2025年中遠海運集團招聘筆試備考題庫(帶答案詳解)
- 2025至2030兒童安全椅市場發展趨勢分析與未來投資戰略咨詢研究報告
- 酒精所致精神障礙護理查房
- 長期臥床患者的并發癥與護理
- 水淹車培訓課件
- 杭州市2024-2025學年高一下學期6月期末考試-物理試卷及答案
- 前臺物業收費管理制度
- T/ISEAA 006-2024大模型系統安全測評要求
評論
0/150
提交評論