第7章-并行口_第1頁
第7章-并行口_第2頁
第7章-并行口_第3頁
第7章-并行口_第4頁
第7章-并行口_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第5章 輸入、輸出接口P0P3 POPOP3P3端口的功能和內部結構端口的功能和內部結構 POPOP3P3端口的端口的 主要內容主要內容第5章 輸入、輸出接口P0P3 計算機對外設進行數(shù)據(jù)操作時,外設的數(shù)據(jù)是不能計算機對外設進行數(shù)據(jù)操作時,外設的數(shù)據(jù)是不能直接接到直接接到CPU的數(shù)據(jù)線上的,必須經(jīng)過接口。的數(shù)據(jù)線上的,必須經(jīng)過接口。 CPU輸入接口輸入接口輸入設備輸入設備輸出接口輸出接口輸出設備輸出設備圖圖5 51 1輸入接口和輸出接口輸入接口和輸出接口第5章 輸入、輸出接口P0P3 這是由于這是由于CPU的數(shù)據(jù)線是外設或存貯器和的數(shù)據(jù)線是外設或存貯器和CPU進行數(shù)據(jù)傳輸?shù)奈ㄒ还餐ǖ?,進行數(shù)

2、據(jù)傳輸?shù)奈ㄒ还餐ǖ溃瑸榱耸箶?shù)據(jù)線的使用為了使數(shù)據(jù)線的使用對象不產(chǎn)生使用總線的沖突,以及快速的對象不產(chǎn)生使用總線的沖突,以及快速的CPU和慢速和慢速的外設時間上協(xié)調,的外設時間上協(xié)調,CPU和外設之間必須有接口電路和外設之間必須有接口電路(簡稱接口或(簡稱接口或I/O口)??冢?。 接口起著緩沖、鎖存數(shù)據(jù)、地址譯碼、信息格式轉接口起著緩沖、鎖存數(shù)據(jù)、地址譯碼、信息格式轉換、傳遞狀態(tài)(外設狀態(tài)),發(fā)布命令等功能。換、傳遞狀態(tài)(外設狀態(tài)),發(fā)布命令等功能。第5章 輸入、輸出接口P0P3I/O接口種類:接口種類: I/O接口有并行接口、串行接口、定時接口有并行接口、串行接口、定時/計數(shù)器、計數(shù)器、A/

3、D、D/A等,根據(jù)外設的不同情況和要求選擇不同等,根據(jù)外設的不同情況和要求選擇不同的接口。的接口。 單片機已將這些接口作在內部,無需外加接口,單片機已將這些接口作在內部,無需外加接口,外設可直接接于單片機(有時需加驅動)。外設可直接接于單片機(有時需加驅動)。 本章介紹單片機的并行接口,用于和外設的并行本章介紹單片機的并行接口,用于和外設的并行數(shù)據(jù)通信。數(shù)據(jù)通信。第5章 輸入、輸出接口P0P3 51單片機有單片機有P0、P1、P2、P3四個四個8位雙向位雙向I/O口,口,每個端口可以按字節(jié)輸入或輸出,也可以按位進行輸每個端口可以按字節(jié)輸入或輸出,也可以按位進行輸入或輸出,四個口共入或輸出,四個

4、口共32根口線,用作位控制十分方便。根口線,用作位控制十分方便。 P0口為三態(tài)雙向口,能帶口為三態(tài)雙向口,能帶8個個TTL電路;電路; P1、P2、P3口為準雙向口,負載能力為口為準雙向口,負載能力為4個個TTL電路。電路。 第5章 輸入、輸出接口P0P35.1 P0P3端口的功能和內部結構端口的功能和內部結構 P0P3端口的功能如下:端口的功能如下: POPO口口1.1.作為輸入作為輸入/ /輸出口。輸出口。 2.2.作為地址作為地址/ /數(shù)據(jù)總線數(shù)據(jù)總線 , ,接外圍芯片時接外圍芯片時POPO口分口分 時輸出低時輸出低8 8位地址與數(shù)據(jù)信號。位地址與數(shù)據(jù)信號。 P P1 1口口1.1.作為

5、作為輸入輸入/ /輸出口。輸出口。 2. 2.在增強型在增強型(52(52系列系列) )和和ISPISP型型( (在系統(tǒng)編程型在系統(tǒng)編程型) ) 中中P P1 1口還有如下功能:口還有如下功能: 第5章 輸入、輸出接口P0P3 P1.0 T2 P1.0 T2引腳引腳, ,定時定時/ /計數(shù)器計數(shù)器2 2外部計數(shù)脈沖輸入外部計數(shù)脈沖輸入 P1.1 T2EXP1.1 T2EX引腳引腳, ,定時定時/ /計數(shù)器計數(shù)器2 2觸發(fā)和方向控制觸發(fā)和方向控制 P1.5 P1.5 MOSIMOSI引腳引腳, ,在系統(tǒng)編程數(shù)據(jù)輸入在系統(tǒng)編程數(shù)據(jù)輸入 P1.6 P1.6 MISOMISO引腳引腳, ,在系統(tǒng)編程數(shù)

6、據(jù)輸出在系統(tǒng)編程數(shù)據(jù)輸出 P1.7 P1.7 SCKSCK引腳引腳, ,在系統(tǒng)編程時鐘輸入在系統(tǒng)編程時鐘輸入第5章 輸入、輸出接口P0P3lP2P2口口1.1.作為輸入作為輸入/ /輸出口。輸出口。 2.2.作為高作為高8 8位地址總線。位地址總線。 lP3P3口口P3P3口為雙功能口為雙功能 1.1.作第一功能使用時,其功能為輸入作第一功能使用時,其功能為輸入/ /輸出口。輸出口。 2.2.作第二功能使用時,每一位功能定義如下表作第二功能使用時,每一位功能定義如下表所示所示: : 第5章 輸入、輸出接口P0P3第5章 輸入、輸出接口P0P3 5.1.2 5.1.2 端口的內部結構端口的內部結

7、構 四個端口的一位結構見圖四個端口的一位結構見圖5.15.1,同一個端口的各,同一個端口的各位具有相同的結構。由圖可見,四個端口的結構有相位具有相同的結構。由圖可見,四個端口的結構有相同之處:同之處: 依據(jù)每個端口的不同功能,內部結構亦有不同之依據(jù)每個端口的不同功能,內部結構亦有不同之處,以下重點介紹不同之處。處,以下重點介紹不同之處。 都有兩個輸入緩沖器,分別受內部讀鎖存器和讀都有兩個輸入緩沖器,分別受內部讀鎖存器和讀引腳控制信號的控制。引腳控制信號的控制。 都有鎖存器都有鎖存器( (即專用寄存器即專用寄存器POPOP3)P3) 都是場效應管輸出驅動。都是場效應管輸出驅動。第5章 輸入、輸出

8、接口P0P31.1.POPO口口 POPO口的輸出驅動電路由上拉場效應管口的輸出驅動電路由上拉場效應管T1T1和驅動場和驅動場效應效應T2T2組成,控制電路包括一個與門,一個非門和一組成,控制電路包括一個與門,一個非門和一個模擬開關個模擬開關MUXMUX。(a)P0口 位 結 構11讀 鎖 存 器內 部 總 線寫 鎖 存 器讀 引 腳地 址 /數(shù) 據(jù)控 制&T1T2VccP0.x引 腳MUX2DQCLP0.x鎖 存 器Q第5章 輸入、輸出接口P0P3(1)PO(1)PO作作I/OI/O口使用口使用 CPU CPU發(fā)控制電平發(fā)控制電平“0 0”封鎖與門,使封鎖與門,使T1T1管截止,管截止,同時

9、使同時使MUXMUX開關同下面的觸點接通,使鎖存器的開關同下面的觸點接通,使鎖存器的Q Q與與T2T2柵極接通。柵極接通。 第5章 輸入、輸出接口P0P3 當當CPUCPU向端口輸出數(shù)據(jù)時,寫脈沖加在鎖存器的向端口輸出數(shù)據(jù)時,寫脈沖加在鎖存器的 CLCL上、內部總線的數(shù)據(jù)經(jīng)反相,再經(jīng)上、內部總線的數(shù)據(jù)經(jīng)反相,再經(jīng)T2T2管反相,管反相,POPO口口的這一位引腳上出現(xiàn)正好和內部總線同相的數(shù)據(jù)的這一位引腳上出現(xiàn)正好和內部總線同相的數(shù)據(jù)。 由于輸出驅動級是漏極開路電路由于輸出驅動級是漏極開路電路( (因因T1T1截止截止) ),在作在作I/OI/O口使用時應外接口使用時應外接1010K K的上拉電阻

10、。的上拉電阻。 第5章 輸入、輸出接口P0P3 當輸入操作時,端口中兩個三態(tài)緩沖器用于讀操作。當輸入操作時,端口中兩個三態(tài)緩沖器用于讀操作。緩沖器緩沖器2 2用于讀端口引腳的數(shù)據(jù)。用于讀端口引腳的數(shù)據(jù)。 當執(zhí)行端口讀指令時,讀引腳脈沖打開三態(tài)緩沖器當執(zhí)行端口讀指令時,讀引腳脈沖打開三態(tài)緩沖器2 2,于是端口引腳數(shù)據(jù)經(jīng)三態(tài)緩沖器于是端口引腳數(shù)據(jù)經(jīng)三態(tài)緩沖器2 2送到內部總線。送到內部總線。 緩沖器緩沖器1 1用于讀取鎖存器用于讀取鎖存器Q Q端的數(shù)據(jù)。當執(zhí)行端的數(shù)據(jù)。當執(zhí)行“讀讀- -修修改改- -寫寫”指令指令( (即讀端口信息,在片內加以運算修改后,即讀端口信息,在片內加以運算修改后,再輸出

11、到該端口的某些指令如:再輸出到該端口的某些指令如:ANL POANL PO,A A指令指令) ),即,即是讀的鎖存器是讀的鎖存器Q Q的數(shù)據(jù)。的數(shù)據(jù)。 第5章 輸入、輸出接口P0P3 這是為了避免錯讀引腳的電平信號,例如用一根口這是為了避免錯讀引腳的電平信號,例如用一根口線去驅動一個晶體管基極,當向口線寫線去驅動一個晶體管基極,當向口線寫“1 1”,晶體管導,晶體管導通,導通的通,導通的PNPN結會把引腳的電平拉低,如讀引腳數(shù)據(jù),則結會把引腳的電平拉低,如讀引腳數(shù)據(jù),則會讀為會讀為0 0 ,而實際上原口線的數(shù)據(jù)為,而實際上原口線的數(shù)據(jù)為1 1。 因而采用讀鎖存器因而采用讀鎖存器Q Q的值而避免

12、了錯讀。究竟是讀引的值而避免了錯讀。究竟是讀引腳還是讀鎖存器,腳還是讀鎖存器,CPUCPU內部會自行判斷是發(fā)讀引腳脈沖還內部會自行判斷是發(fā)讀引腳脈沖還是讀鎖存器脈沖,讀者不必在意。是讀鎖存器脈沖,讀者不必在意。 第5章 輸入、輸出接口P0P3應注意應注意 : 當作輸入端口使用時,應先對該口寫入當作輸入端口使用時,應先對該口寫入“1 1”使場效應管使場效應管T2T2截止,再進行讀入操作,以防場效截止,再進行讀入操作,以防場效應管處于導通狀態(tài),使引腳箝位到零,而引起誤應管處于導通狀態(tài),使引腳箝位到零,而引起誤讀。讀。 第5章 輸入、輸出接口P0P3 當當POPO口作地址口作地址/ /數(shù)據(jù)線使用時,

13、數(shù)據(jù)線使用時,CPUCPU及內部控制信及內部控制信號為號為“1 1”,轉換開關,轉換開關MUXMUX打向上面的觸點,使反相器打向上面的觸點,使反相器的輸出端和的輸出端和T2T2管柵極接通,輸出的地址或數(shù)據(jù)信號通管柵極接通,輸出的地址或數(shù)據(jù)信號通過與門驅動過與門驅動T1T1管,同時通過反相器驅動管,同時通過反相器驅動T2T2管完成信息管完成信息傳送,數(shù)據(jù)輸入時,通過緩沖器進入內部總線。傳送,數(shù)據(jù)輸入時,通過緩沖器進入內部總線。第5章 輸入、輸出接口P0P32.P12.P1口口 P1P1口的結構見下圖口的結構見下圖 P1 P1口作通用口作通用I/OI/O口使用,因電路結構上輸出驅動部分接口使用,因

14、電路結構上輸出驅動部分接有上拉電阻。當作輸入時,同有上拉電阻。當作輸入時,同POPO一樣,要先對該口寫一樣,要先對該口寫“1 1”。 第5章 輸入、輸出接口P0P3P2P2口口 P2 P2口的位結構比口的位結構比P1P1多了一個轉換控制部分,當多了一個轉換控制部分,當P2P2口口作通用作通用I/OI/O口時,多路開關口時,多路開關MUXMUX倒向左;倒向左;第5章 輸入、輸出接口P0P3當擴展片外存貯器時,當擴展片外存貯器時,MUXMUX開關打向右,開關打向右,P2 P2 口作高八位地址線輸出高八位地址信號。口作高八位地址線輸出高八位地址信號。其其MUXMUX的的倒向是受的的倒向是受CPUCP

15、U內部控制的。內部控制的。應當注意:應當注意: 當當P2P2口的幾位作地址線使用時,剩下的口的幾位作地址線使用時,剩下的P2P2口線不能作口線不能作I /OI /O口線使用。口線使用。第5章 輸入、輸出接口P0P3第5章 輸入、輸出接口P0P34.P34.P3口口 P3 P3口為雙功能口為雙功能I/OI/O口,內部結構中增加了第二輸入口,內部結構中增加了第二輸入/ /輸輸出功能。出功能。讀讀 鎖鎖 存存 器器內 部 總 線寫 鎖 存 器讀 引 腳第 二 輸 出 功 能第 二 輸 入 功 能內 部 上 拉 電 阻P3.x引 腳TVcc1234DCLQP3.x鎖 存 器( (d d) )P P3

16、3口口 位位 結結 構構第5章 輸入、輸出接口P0P3 當作為普通當作為普通I/OI/O口使用時,第二輸出功能端保口使用時,第二輸出功能端保持持“1 1”,打開與非門,打開與非門3 3,用法同,用法同P1P1口。口。 當作第二功能輸出時,鎖存器輸出為當作第二功能輸出時,鎖存器輸出為“1 1”打開打開與非門與非門3 3,第二功能內容通過與非門,第二功能內容通過與非門3 3和和T T送至引腳。送至引腳。 第5章 輸入、輸出接口P0P3 輸入時,引腳的第二功能信號通過三態(tài)緩沖器輸入時,引腳的第二功能信號通過三態(tài)緩沖器4 4進入第二輸入功能端。兩種功能的引腳輸入都應使進入第二輸入功能端。兩種功能的引腳

17、輸入都應使T T截止,此時第二輸出功能端和鎖存器輸出端截止,此時第二輸出功能端和鎖存器輸出端Q Q均為高均為高電平。電平。 P3 P3的各位如不設定為第二功能則自動處于第一功的各位如不設定為第二功能則自動處于第一功能,在更多情況下,根據(jù)需要,能,在更多情況下,根據(jù)需要, 把幾條口線設為第二把幾條口線設為第二功能,剩下的口線可作第一功能功能,剩下的口線可作第一功能( (I/O)I/O)使用,此時,宜使用,此時,宜采用位操作形式。采用位操作形式。 第5章 輸入、輸出接口P0P3歸納四個并行口使用的注意事項如下:歸納四個并行口使用的注意事項如下:1 1. .如果單片機內部有程序存貯器,不需要擴展外部

18、存貯如果單片機內部有程序存貯器,不需要擴展外部存貯器和器和I/OI/O接口,單片機的四個口均可作接口,單片機的四個口均可作I/OI/O口使用??谑褂谩? 2. .四個口在作輸入口使用時,均應先對其寫四個口在作輸入口使用時,均應先對其寫“1 1”,以避,以避免誤讀。免誤讀。第5章 輸入、輸出接口P0P33 3. .P0P0口作口作I/OI/O口使用時應外接口使用時應外接1010K K的上拉電阻,其它口則的上拉電阻,其它口則 可不必??刹槐?。4 4. .P2P2可某幾根線作地址使用時,剩下的線不能作可某幾根線作地址使用時,剩下的線不能作I/OI/O口線口線使用。使用。5 5. .P3P3口的某些口

19、線作第二功能時,剩下的口線可以單獨口的某些口線作第二功能時,剩下的口線可以單獨作作I/OI/O口線使用??诰€使用。第5章 輸入、輸出接口P0P35.2 5.2 編程舉例編程舉例 下面舉例說明端口的輸入、輸出功能,其他功能的應用實例在下面舉例說明端口的輸入、輸出功能,其他功能的應用實例在后面章節(jié)說明。后面章節(jié)說明。 例例5-1.設計一電路,監(jiān)視某開關設計一電路,監(jiān)視某開關K,用發(fā)光二極管用發(fā)光二極管LED顯示開顯示開關狀態(tài),如果開關合上,關狀態(tài),如果開關合上,LED 亮、亮、 開關打開,開關打開,LED熄滅。熄滅。 分析:設計電路如圖分析:設計電路如圖5. 2如示。如示。 開關接在開關接在P1.

20、1口線,口線,LED接接P1.0口線,當開關斷開時,口線,當開關斷開時,P1.1為為+5V,對應數(shù)字量為對應數(shù)字量為“1”,開,開 關合上時關合上時P1.1電平為電平為0V,對應數(shù)字對應數(shù)字量為量為“0”,這樣就可以用,這樣就可以用JB指令對開關狀態(tài)進行檢測指令對開關狀態(tài)進行檢測 。第5章 輸入、輸出接口P0P3 LED正偏時才能發(fā)亮,按電路接法,當正偏時才能發(fā)亮,按電路接法,當P1.0輸出輸出“1”,LED正偏而發(fā)亮,當正偏而發(fā)亮,當P1.0 輸出輸出“0” ,LED 的兩端電壓為的兩端電壓為 0 而而熄滅。熄滅。 第5章 輸入、輸出接口P0P3編程如下:編程如下: CLR P1.0 ;使發(fā)

21、光二極管滅使發(fā)光二極管滅AGA:SETB P1.1 ;先對先對P1口寫入口寫入“1” JB P1.1,LIG ;開關開,轉開關開,轉LIG SETB P1.0 ;開關合上,二極管亮開關合上,二極管亮 SJMP AGALIG: CLR P1.0 ;開關開,二極管滅開關開,二極管滅 SJMP AGA第5章 輸入、輸出接口P0P3用用C 語言編程如下:語言編程如下:#include sbit p1_0=P10; sbit p1_1=P11; /*定義位變量定義位變量*/ void main() p1_0=0; /*使發(fā)光二極管滅使發(fā)光二極管滅*/ while(1) p1_1=1; /*對輸入位對輸入

22、位P1.1寫寫“1” */ if (p1_1=0) p1_0=1; /*開關合上,二極管亮開關合上,二極管亮*/ else p1_0=0; /*開關開,二極管滅開關開,二極管滅*/ 第5章 輸入、輸出接口P0P3 在上述電路圖中二極管亮度不夠,按下面兩在上述電路圖中二極管亮度不夠,按下面兩種電路接法,增加了驅動能力,二極管更亮些。種電路接法,增加了驅動能力,二極管更亮些。接成灌電流形式:接成灌電流形式:加驅動電路:加驅動電路:+5+5V VP1.0P1.0LEDLEDP1.0P1.0+5+5V VLEDLED1第5章 輸入、輸出接口P0P3 例例5-2.5-2.在圖在圖5.35.3中中P1.4

23、P1.4P1.7P1.7接四個發(fā)光二極管接四個發(fā)光二極管LED,LED,P1.0P1.0P1.3P1.3接四個開關,編程將開關的狀態(tài)反映到發(fā)光接四個開關,編程將開關的狀態(tài)反映到發(fā)光二極管上。二極管上。 第5章 輸入、輸出接口P0P3用匯編語言編程用匯編語言編程 ORG 0000H MOV P1,#0FFH ;高四位的高四位的LED全滅,低四位輸入線送全滅,低四位輸入線送“1”, ABC: MOV A,P1 ;讀讀P1口引腳開關狀態(tài),并送入口引腳開關狀態(tài),并送入A SWAP A ;低四位開關狀態(tài)換到高四位低四位開關狀態(tài)換到高四位 ANL A,#0F0H ;保留高四位保留高四位 MOV P1,A

24、;從從P1口輸出口輸出 ORL P1,#0FH ;高四位不變,低四位送高四位不變,低四位送“1”,準備下一,準備下一 輪讀開關輪讀開關 SJMP ABC ;循環(huán)執(zhí)行,方便反復調整開關狀態(tài)觀察執(zhí)循環(huán)執(zhí)行,方便反復調整開關狀態(tài)觀察執(zhí) 行結果行結果第5章 輸入、輸出接口P0P3 上述程序中每次讀開關之前,輸入位都先置“1”,保證了開關狀態(tài)的正確讀入。用C語言編程如下:sfr P1=0 x90;main() P1=0 xff; /*P1低四位置“1”,高四位燈全滅*/while(1) P1=P14; /*讀入P1引腳狀態(tài),左移四位后再從P1口輸出*/ P1=P1|0 x0f; /*P1高四位不變,低四

25、位置“1”,準備下一輪讀開 關*/ 第5章 輸入、輸出接口P0P3例例3.3.用用P1.0P1.0輸出輸出1 1KHzKHz和和500500HzHz的音頻信號驅動揚聲器,作報警的音頻信號驅動揚聲器,作報警信號,要求信號,要求1 1KHzKHz信號響信號響100100msms,500Hz500Hz信號響信號響200200msms,交替進行,交替進行,P1.7P1.7接一開關進行控制,當開關合上響報警信號,當開關斷開接一開關進行控制,當開關合上響報警信號,當開關斷開告警信號停止,編出程序。告警信號停止,編出程序。 第5章 輸入、輸出接口P0P3分析:分析: 500Hz信號周期為信號周期為2ms,信

26、號電平為每信號電平為每1ms變反變反1次。次。1KHz的信號周期為的信號周期為1ms,信號電平信號電平 每每500S變反變反1次,次,編一個延時編一個延時500S子程序,延時子程序,延時1ms只需調用只需調用2次。用次。用R2控制音響時間長短,控制音響時間長短,A作音響頻率的交換控制的標作音響頻率的交換控制的標志。志。A=FF時產(chǎn)生時產(chǎn)生1KHz信號,信號,A=0時產(chǎn)生時產(chǎn)生500Hz信號。信號。 P1.0 波波 形形 圖圖 1ms 1ms100個個T (變反變反200次即次即200ms)。500S500S100個個T (變反變反200次即次即100ms)。TT第5章 輸入、輸出接口P0P3

27、ORG 0000H CLR A ;A作作1KHz,500Hz 轉換控制轉換控制BEG: JB P1.7, ;檢測檢測P1.7的開關狀態(tài)的開關狀態(tài) 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 BEGD500:MOV R7, #250 ;延時延時500 S子程序子程序 DJNZ R7, RET END第5章 輸入、輸出接口P0P3

28、用用C C語言編程如下語言編程如下 #includesbit P10=P10;sbit P17=P17;main()unsigned char i,j;while(1)第5章 輸入、輸出接口P0P3P171;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+); /*延時,完成信號周期時間延時,完成信號周期時間*/

29、第5章 輸入、輸出接口P0P3 上述程序只產(chǎn)生報警音響效果,周期和響的時間上述程序只產(chǎn)生報警音響效果,周期和響的時間長短是準確的,長短是準確的, 欲合乎要求,最好用定時器定時欲合乎要求,最好用定時器定時(第第7章章介紹介紹)。第5章 輸入、輸出接口P0P35.3 5.3 用并行口設計用并行口設計LEDLED數(shù)碼顯示器數(shù)碼顯示器 和鍵盤電路和鍵盤電路 鍵盤和顯示器是單片機應用系統(tǒng)中常用的輸入輸鍵盤和顯示器是單片機應用系統(tǒng)中常用的輸入輸出裝置。出裝置。LEDLED數(shù)碼顯示器是常用的顯示器之一,下面介數(shù)碼顯示器是常用的顯示器之一,下面介紹用單片機并行口設計紹用單片機并行口設計LEDLED數(shù)碼顯示電路

30、和鍵盤電路的數(shù)碼顯示電路和鍵盤電路的方法。方法。 第5章 輸入、輸出接口P0P35.3.15.3.1用并行口設計用并行口設計LEDLED顯示電路顯示電路1. 1. LEDLED顯示器及其原理顯示器及其原理 LEDLED有著顯示亮度高,響應速度快的特點,最常用的有著顯示亮度高,響應速度快的特點,最常用的是七段式是七段式LEDLED顯示器,又稱數(shù)碼管。七段顯示器,又稱數(shù)碼管。七段LEDLED顯示器內部顯示器內部由七個條形發(fā)光二極管和一個小圓點發(fā)光二極管組成,由七個條形發(fā)光二極管和一個小圓點發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。根據(jù)各管的亮暗組合成字符。 常見常見LEDLED的管腳排列見圖的管腳

31、排列見圖5.4(5.4(a)a)。其中其中COMCOM為公共點,為公共點,根據(jù)內部發(fā)光二極管的接線根據(jù)內部發(fā)光二極管的接線 形式,可分成共陰極型圖形式,可分成共陰極型圖(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.45.4gd0 0 1 1 1 1 1 1 3fh dp g f e d c b a a ab bc cd de ef fg gdpdpcdedp12345678910a bfgco

32、mcomabcefcomg LED數(shù)碼管的數(shù)碼管的ga七個發(fā)光二極管因加正電壓而發(fā)亮,因加七個發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不能發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組零電壓而不能發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼合稱之為字形碼(段碼段碼),如顯示,如顯示”0”,字形碼為字形碼為3fh。da ab bc cd de ef fg gdpdp12345678910a bfgcomcomabcefgdp g f e d c b a 0 0 0 0 0 1 1 0 06h 顯示顯示”1”,字形碼為字形碼為06h。d第5章 輸入、輸出接口P0P3顯示顯示”2”,

33、字形碼為字形碼為5bh。dpcoma ab bc cd de ef fg gdpdpcde12345678910comcomabcefgdp g f e d c b a 0 1 0 1 1 0 1 1 5bh d第5章 輸入、輸出接口P0P3 顯然共陽極和共陰極的字形碼是不同的,其字形顯然共陽極和共陰極的字形碼是不同的,其字形碼見表碼見表5.25.2。LEDLED數(shù)碼管每段需數(shù)碼管每段需10102020mama的驅動電流,的驅動電流,可用可用TTLTTL或或CMOSCMOS器件驅動。器件驅動。 字形碼的控制輸出可采用硬件譯碼方式,如采用字形碼的控制輸出可采用硬件譯碼方式,如采用BCD7BCD7

34、段譯碼段譯碼/ /驅動器驅動器7474LS48LS48、74LS4974LS49、CD4511(CD4511(共陰極共陰極) )或或7474LS46LS46、74LS4774LS47、CD4513(CD4513(其陽極其陽極) )也可用軟件查表也可用軟件查表方式輸出。方式輸出。 第5章 輸入、輸出接口P0P3顯示字符段段 符符 號號十六進制代碼dpgfedcba共陰共陽0123456789ABCDEFHP000000000000000001001111101111011111100011101111101111101000101011111111101101101101111000110111

35、1111110100101111100111100100111011011111101011013FH06H5BH4FH66H6DH7DH07H7FH6FH77H7CH39H5EH79H71H76HF3HC0F9A4B0999282F880908883C6A18684FFBF第5章 輸入、輸出接口P0P32.2.LEDLED數(shù)碼管的接口數(shù)碼管的接口 數(shù)碼管的接口有靜態(tài)接口和動態(tài)接口。數(shù)碼管的接口有靜態(tài)接口和動態(tài)接口。 靜態(tài)接口靜態(tài)接口為固定顯示方式,無閃爍,其電路可采為固定顯示方式,無閃爍,其電路可采用一個并行口接一個數(shù)據(jù)管,數(shù)碼管的公共端按共陰用一個并行口接一個數(shù)據(jù)管,數(shù)碼管的公共端按共陰或

36、共陽分別接地或或共陽分別接地或VccVcc。這種接法占用接口多,如果這種接法占用接口多,如果POPO口和口和P2P2口要用作數(shù)據(jù)線和地址線,僅用單片機的并口要用作數(shù)據(jù)線和地址線,僅用單片機的并行口就只能接二個數(shù)碼管。行口就只能接二個數(shù)碼管。 第5章 輸入、輸出接口P0P3動態(tài)接口動態(tài)接口采用各數(shù)碼管循環(huán)輪流顯示的方法,當循環(huán)采用各數(shù)碼管循環(huán)輪流顯示的方法,當循環(huán)顯示頻率較高時,利用人眼的暫留特性顯示頻率較高時,利用人眼的暫留特性 ,看不出閃爍,看不出閃爍顯示現(xiàn)象,這種顯示需要一個接口完成字形碼的輸出顯示現(xiàn)象,這種顯示需要一個接口完成字形碼的輸出(字形選擇字形選擇),另一接口完,另一接口完 成各

37、數(shù)碼管的輪流點亮成各數(shù)碼管的輪流點亮(數(shù)位數(shù)位選擇選擇)。 第5章 輸入、輸出接口P0P3第5章 輸入、輸出接口P0P3(1) #include main() P1=0 x73; P3=0 x10; 第5章 輸入、輸出接口P0P3(2) #include sbit P32=P32; unsigned char code tab5=0 x3f,0 x06,0 x5b,0 x4f,; main() unsigned char I; unsigned char j; while(1)P32=1; for(i=0;i=3;i+) P1=tabi; for(j=0;j=2500;j+); 第5章 輸入、

38、輸出接口P0P3 例如圖例如圖5.5是接有五個共陰極數(shù)碼管的動態(tài)顯示接是接有五個共陰極數(shù)碼管的動態(tài)顯示接口電路,用口電路,用74LS373接成直通的方式作驅動電路,陰接成直通的方式作驅動電路,陰極用非門極用非門74LS04反相門驅動,字形選擇由反相門驅動,字形選擇由P1口提供,口提供,位選擇由位選擇由P3口控制??诳刂?。 當當P3.0P3.4輪流輸出輪流輸出1時,五個數(shù)碼管輪流顯示。時,五個數(shù)碼管輪流顯示。P1.7接開關,當開關打向位置接開關,當開關打向位置“1”時,時, 顯示顯示“12345”字字樣,當開關打向樣,當開關打向“2”時,顯示時,顯示“HELLO”字樣,程序清字樣,程序清單如下:

39、單如下: 第5章 輸入、輸出接口P0P3 用匯編語言編程用匯編語言編程 ORG 0000H MOV P3,#0 ;清顯示清顯示TEST:SETB P1.7 JB P1.7,DIR1 ;檢測開關檢測開關 MOV DPTR,#TAB 1 ; 開關置于開關置于1,12345字形表頭地址字形表頭地址 SJMP DIRDIR1: MOV DPTR,#TAB2 ; 開關置于開關置于2,“HELLO”字形表頭字形表頭DIR: MOV R0,#0 ;R0存字形表偏移量存字形表偏移量 MOV R1,#01 ;R1置數(shù)碼表位選代碼置數(shù)碼表位選代碼NEXT:MOV A,R0 MOVC A,A+DPTR ; 查字形碼

40、表查字形碼表1 MOV P1,A ;送送P1口輸出口輸出 第5章 輸入、輸出接口P0P3 MOV A,R1 MOV P3,A ;輸出位選碼輸出位選碼 ACALL DAY ;延時延時 INC R0 ;指向下一位字形指向下一位字形 RL A ;指向下一位指向下一位 MOV R1,A CJNE R1,#20H,NEXT ;五個五個 數(shù)碼管顯示完數(shù)碼管顯示完? SJMP TESTDAY:MOV R6,#20 ; 延時延時20ms子程序子程序DL2: MOV R7,#7DHDL1: NOP NOP第5章 輸入、輸出接口P0P3 DJNZ R7,DL1 DJNZ R6,DL2 RETTAB1:db 06H

41、,5BH,4FH,66H,6DH ; “15”的字形碼的字形碼TAB2:db 78H,79H,38H,38H,3FH ; “HELLO”的字形碼的字形碼 END第5章 輸入、輸出接口P0P3用用C C語言完成上述功能編程語言完成上述功能編程#include#define uint unsigned int#define uchar unsigned charsbit P17=P17;main( ) uchar code tab15=0 x86,0 xdb,0 xcf,0 xe6,0 xed; /*“15”的字的字 形碼,形碼, 因因P1.7接的開關,最高位送接的開關,最高位送“1”*/ uch

42、ar code tab25=0 xf8,0 xf9,0 xb8,0 xb8,0 xbf; /*“HELLO”的段碼,的段碼, 最高位送最高位送 “1”*/ 第5章 輸入、輸出接口P0P3uchar 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;j+); 第5章 輸入、輸出接口P0P3 5.3.25.3.2用并行口設計鍵盤電路用并行口設計鍵盤電路 鍵盤是計算機系統(tǒng)中不可缺少的輸入設備,當按鍵少時可鍵盤是計算機系統(tǒng)中不可缺少的輸入設備,當按鍵少時可接成線性

43、鍵盤接成線性鍵盤( (如圖如圖5.35.3中的按鍵中的按鍵) ),當按鍵較多時,這樣的接法,當按鍵較多時,這樣的接法占用口線較多。將按鍵接成矩陣的形式,可以節(jié)省口線,例如占用口線較多。將按鍵接成矩陣的形式,可以節(jié)省口線,例如兩個接口可按兩個接口可按8 8* *8 8的形式接的形式接6464個按鍵。個按鍵。第5章 輸入、輸出接口P0P3 每個按鍵有它的行值和列值,行值和列值的組合就是識別每個按鍵有它的行值和列值,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPUCPU通信。每個按鍵的狀態(tài)同樣需變成數(shù)字量通信。每個

44、按鍵的狀態(tài)同樣需變成數(shù)字量“0 0”和和“1 1”,開關,開關的一端通過電阻接的一端通過電阻接Vcc(Vcc(列列) )、而接地是通過程序輸出數(shù)字、而接地是通過程序輸出數(shù)字“0 0”實現(xiàn)的。實現(xiàn)的。 第5章 輸入、輸出接口P0P3鍵盤處理程序的任務是:鍵盤處理程序的任務是:確定有無鍵按下;確定有無鍵按下;判哪一個鍵按下,判哪一個鍵按下, 鍵的功能是什么;鍵的功能是什么;還要消除按鍵在閉合或斷開時的抖動。還要消除按鍵在閉合或斷開時的抖動。 第5章 輸入、輸出接口P0P3 兩個并行口中,一個輸出掃描碼,兩個并行口中,一個輸出掃描碼, 使按鍵逐行動態(tài)接地使按鍵逐行動態(tài)接地( (稱行掃描稱行掃描) )

45、,另一個并行口輸入按鍵狀態(tài),另一個并行口輸入按鍵狀態(tài)( (稱回饋信號,鍵盤的稱回饋信號,鍵盤的列值列值) ), 由行掃描值和回饋信號共同形成鍵編碼而識別按鍵、由行掃描值和回饋信號共同形成鍵編碼而識別按鍵、通過軟件查表,查出該鍵的功能。也可由硬件編碼器完成鍵的通過軟件查表,查出該鍵的功能。也可由硬件編碼器完成鍵的編碼。編碼。第5章 輸入、輸出接口P0P3 下圖中,用下圖中,用8 8XX51XX51的并行口的并行口P1P1接接4 44 4矩陣鍵盤,以矩陣鍵盤,以P1.0P1.0P1.3P1.3作輸出線,以作輸出線,以P1.4P1.4P1.7P1.7作輸入線,鍵盤掃描程序的流程如作輸入線,鍵盤掃描程

46、序的流程如圖圖5.75.7所示。所示。5a第5章 輸入、輸出接口P0P3 EE DE BE 7E ED DD BD 7D EB DB BB 7B E7 D7 B7 77 第5章 輸入、輸出接口P0P3Y返回鍵編碼返回鍵編碼讀讀P1.3P1.4值值置行掃描初值置行掃描初值掃描位從掃描位從P1口輸出口輸出P1口的高四位和低四位口的高四位和低四位相或得鍵編碼相或得鍵編碼掃到最后一行掃到最后一行?NN(有鍵按下)有鍵按下)N開始開始P1.0P1.3輸出輸出0延時去抖動延時去抖動P1.4P1.7全為全為1?P1.4P1.7全為全為1?YY(無鍵按下無鍵按下)第5章 輸入、輸出接口P0P3第5章 輸入、輸

47、出接口P0P3 對鍵盤的程序流程圖對鍵盤的程序流程圖5.7說明如下:說明如下: 當當P1.0P1.3輸出輸出0時,如無鍵按下,時,如無鍵按下,P1.4P1.7的輸?shù)妮斎胫稻鶠槿胫稻鶠椤?”,如果其中有一個不是,如果其中有一個不是 “1”,說明有鍵按下,說明有鍵按下,再使再使P1.0P1.3逐個輸出零逐個輸出零(行掃描行掃描),檢查,檢查P1.4P1.7的的輸入值有無零,從而查出是哪行哪列的鍵按下。在判按輸入值有無零,從而查出是哪行哪列的鍵按下。在判按鍵時,按鍵有抖動,可采用延時后再重讀以跳過抖動時鍵時,按鍵有抖動,可采用延時后再重讀以跳過抖動時段段(也可用也可用R-S觸發(fā)器閂鎖電路硬件消抖,但

48、這樣電路復雜,觸發(fā)器閂鎖電路硬件消抖,但這樣電路復雜,在矩陣鍵盤中不采用在矩陣鍵盤中不采用)。第5章 輸入、輸出接口P0P3ORG 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,無鍵按下,重檢測鍵盤,無鍵按下,重檢測

49、鍵盤HAVE: ACALL DAY ;延時去抖動;延時去抖動MOV A,#0FE ;有鍵按下,逐行掃描鍵盤,置掃描初值;有鍵按下,逐行掃描鍵盤,置掃描初值第5章 輸入、輸出接口P0P3 NEXT: MOV B,A ;掃描碼暫存于;掃描碼暫存于BMOV P1,A ;輸出掃描碼;輸出掃描碼READ: MOV A,P1 ;讀鍵盤;讀鍵盤ANL A,#0F0H ; 屏蔽屏蔽P1.0P1.3, 檢測檢測P1.4P1.是否全為是否全為1CJNE A,0F0H, AREAD ;P1.4P1.7不全為不全為1, 該行有鍵按下該行有鍵按下MOV A,B ;被掃行無鍵按下,準備查下一行;被掃行無鍵按下,準備查下一

50、行RL A ;置下一行掃描碼;置下一行掃描碼CJNE A,#0EFH,NEXT ;未掃到到最后一行循環(huán);未掃到到最后一行循環(huán)第5章 輸入、輸出接口P0P3AREAD: MOV A,P1 ;再讀鍵盤;再讀鍵盤ANL A,#0F0H ; 屏蔽屏蔽P1.0P1.3,保留,保留P1.4P1.7(列碼列碼)MOV R2,A ;暫存列碼;暫存列碼MOV A, B ANL A,#0FH ;取行掃描碼;取行掃描碼ORL A,R2 ;行碼、列碼合并為鍵編碼;行碼、列碼合并為鍵編碼YES1: MOV B,A ;鍵編碼存于;鍵編碼存于BLJMP SAM38 ;轉鍵分析處理程序(見例;轉鍵分析處理程序(見例3-8)第

51、5章 輸入、輸出接口P0P3第5章 輸入、輸出接口P0P3void dlms (void) /* 延時延時 */uchar i;for (i=200;i0;i-) 第5章 輸入、輸出接口P0P3uchar kbscan (void) /* 鍵盤掃描函數(shù)鍵盤掃描函數(shù) */uchar sccode, recode;P1=0 xf0; /* P1.0P1.3發(fā)全發(fā)全0, P1.4P1.7輸入輸入 */ if(P1 & 0 xf0)!=0 xf0) /* 如如P1口高四位不全為口高四位不全為1有鍵有鍵 按下按下 */ dlms ( ); /* 延時去抖動延時去抖動 */ if (P1 & 0 xf0)!=0 xf0) /*再讀輸入值再讀輸入值*/ sc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論