單片機:第八章-51單片機IO接口_第1頁
單片機:第八章-51單片機IO接口_第2頁
單片機:第八章-51單片機IO接口_第3頁
單片機:第八章-51單片機IO接口_第4頁
單片機:第八章-51單片機IO接口_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第八章

51單片機I/O接口

單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第1頁。本章內(nèi)容8.1P0-P3口的功能(重點)和內(nèi)部結(jié)構(gòu)(了解)8.2I/O口編程舉例(重點)8.3用并行口設(shè)計LED數(shù)碼顯示器(掌握)8.4用并行口設(shè)計鍵盤電路(掌握)單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第2頁。8.1P0-P3口的功能和內(nèi)部結(jié)構(gòu)(1)所謂雙向,是既能做輸入,又能做輸出。

所謂準(zhǔn)雙向口,是指該端口在用作輸入線時,必須先寫入“1”。(2)內(nèi)部結(jié)構(gòu)是設(shè)計芯片時決定的,如果以后不設(shè)計單片機,那么不必在意。只簡單的了解即可。(3)各個口的功能和操作,是重點。單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第3頁。P0~P3口功能PO口—1.作為輸入/輸出口。

2.作為地址/數(shù)據(jù)總線,接外圍芯片時PO口分時輸出低

8

位地址與數(shù)據(jù)信號。P1口—1.作為輸入/輸出口。P2口—1.作為輸入/輸出口。

2.作為高8位地址總線。P3口—P3口為雙功能

1.作第一功能使用時,其功能為輸入/輸出口。

2.作第二功能使用時:

單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第4頁。5/63RD(外部數(shù)據(jù)存儲器讀選通信號輸出)

P3.7WR

(外部數(shù)據(jù)存儲器寫選通信號輸出)P3.6T1(定時器1外部計數(shù)脈沖輸入)P3.5T0(定時器0外部計數(shù)脈沖輸入)P3.4P3.3P3.2TXD(串行輸出線)P3.1RXD(串行輸入線)

P3.0第二功能

端口引腳

INT0(外部中斷0輸入線)INT1(外部中斷1輸入線)單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第5頁。8.1P0-P3口的功能和內(nèi)部結(jié)構(gòu)(4)P0口

1)P0口既可以作I/O,也可以作為地址/數(shù)據(jù)線。 2)做I/O口時,可以按字節(jié)進行8位的數(shù)據(jù)輸入輸出,又可以按位單獨進行輸入輸出操作。 3)P0口作數(shù)據(jù)/地址總線使用時:

外接其他存儲器或接口芯片,由于通常情況下單片機不可能不接內(nèi)存芯片或接口芯片多做數(shù)據(jù)總線和低8位地址總線分時復(fù)用使用。 4)P0口作通用I/O端口使用時:P0口用作輸出端口時外部必須接上拉電阻才能正確輸出高電平;P0口用作輸入端口時,在進行輸入操作前,應(yīng)該先向該端口的輸出鎖存器寫“1”

。單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第6頁。P0口位結(jié)構(gòu)11讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址/數(shù)據(jù)控制&T1T2VccP0.x引腳MUX2DQCLP0.x鎖存器Q單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第7頁。8.1P0-P3口的功能和內(nèi)部結(jié)構(gòu)(5)P1口

1)P1口只能作為通用的I/O口使用。 2)做I/O口時,可以按字節(jié)進行8位的數(shù)據(jù)輸入輸出,又可以按位單獨進行輸入輸出操作。 3)P1口作為輸出口使用時,外電路無需再接上拉電阻。 4)P1口作為輸入口使用時,應(yīng)先向其鎖存器寫入“1”

。

單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第8頁。P1口作通用I/O口使用,內(nèi)置上拉電阻。當(dāng)作輸入時,同PO一樣,要先對該口寫“1”。

單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第9頁。8.1P0-P3口的功能和內(nèi)部結(jié)構(gòu)(6)P2口

1)P2口作通用I/O端口使用時,是一個準(zhǔn)雙向口,引腳可接I/O設(shè)備,其輸入/輸出操作與P1口完全相同。。 2)做I/O口時,可以按字節(jié)進行8位的數(shù)據(jù)輸入輸出,又可以按位單獨進行輸入輸出操作。 3)P2口作為輸出口使用時,外電路無需再接上拉電阻。由于P2口是準(zhǔn)雙向口,作為輸入口使用時,應(yīng)先向其鎖存器寫入1 4)當(dāng)系統(tǒng)中接有外部存儲器或接口芯片時,P2口作地址總線使用,輸出高8位地址A15-A8。由于單片機通常會外接其他存儲器或接口芯片,在實際使用中P2口一般只作地址總線口使用,不再作I/O端口直接連外部設(shè)備。

注意:當(dāng)P2口的幾位作地址線使用時,剩下的P2口線不能作I/O口線使用。單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第10頁。P2口的位結(jié)構(gòu)比P1多了一個轉(zhuǎn)換控制部分,當(dāng)P2口作通用I/O口時,多路開關(guān)MUX倒向左;單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第11頁。8.1P0-P3口的功能和內(nèi)部結(jié)構(gòu)(7)P3口

1)P3口是一個多用途的端口,也是一個準(zhǔn)雙向口,作為第一功能使用時,其功能同P1口。 2)P3口作為輸出口使用時,外電路無需再接上拉電阻。 3)由于P3口是準(zhǔn)雙向口,作為輸入口使用時,應(yīng)先向其鎖存器寫入“1”。

4)當(dāng)作第二功能使用時,每一位功能定義如下:P3.0:RXD串行口輸入; P3.1:TXD串行口輸出P3.2:/INT0外部中斷0輸入; P3.3:/INT1外部中斷1輸入P3.4:T0定時器0外部輸入; P3.5:T1定時器1外部輸入P3.6:/WR外部寫控制; P3.7:/RD外部讀控制。

單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第12頁。P3口為雙功能I/O口,內(nèi)部增加了第二輸入/輸出功能。單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第13頁。8.1P0-P3口的功能和內(nèi)部結(jié)構(gòu)(8)總結(jié):如果單片機不需要擴展外部存貯器和I/O接口,單片機的四個口均可作I/O口用。四個口在作輸入口使用時,均應(yīng)先對其寫“1”,以避免誤讀。P0口作I/O口使用時應(yīng)外接10K的上拉電阻,其它口則不需要。P2口的某幾根線作地址使用時,剩下的線不能作I/O口線使用。P3口的某些口線作第二功能時,剩下的口線可以單獨作I/O口線使用(此時宜位訪問)。對于8031

單片機而言,P2口是輸出高8位地址,與P0口一起組成16位地址總線。此時P0口和P2口只作為地址總線使用,而不作為I/O線直接與外部設(shè)備相連P0-P3口,是典型的I/O接口,因此也是集成在CPU芯片里面的一種接口電路。單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第14頁。8.2I/O口編程舉例【例8-1】設(shè)計一電路,監(jiān)視某開關(guān)K,用發(fā)光二極管LED顯示開關(guān)K的狀態(tài),如果開關(guān)合上則LED亮、開關(guān)斷開則LED熄滅。單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第15頁。8.2I/O口編程舉例解:開關(guān)接在P1.0,LED接P1.1,當(dāng)開關(guān)斷開時,P1.0為+5V,對應(yīng)數(shù)字量為“1”,開關(guān)合上時P1.0電平為0V,對應(yīng)數(shù)字量為“0”,這樣就可以用JB指令對開關(guān)狀態(tài)進行檢測。在圖8.6中,開關(guān)K的邏輯與LED的驅(qū)動邏輯關(guān)系正好是反相的。編程如下:CLRP1.1 ;使發(fā)光二極管滅AGA:SETBP1.0 ;先對P1口寫入“1”為輸入作準(zhǔn)備 JBP1.0,LIG ;開關(guān)斷開(為1),轉(zhuǎn)LIG SETBP1.1 ;開關(guān)合上(為0),二極管亮 SJMPAGALIG:CLRP1.1 ;開關(guān)斷開,二極管滅 SJMPAGA

單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第16頁。8.2I/O口編程舉例【例8-2】P1.4~P1.7接四個發(fā)光二極管LED,P1.0~P1.3接四個開關(guān),編程將開關(guān)的狀態(tài)反映到發(fā)光二極管上。

單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第17頁。8.2I/O口編程舉例解:4個開關(guān)對應(yīng)4個LED燈,因此適合用字節(jié)的方式進行操作。ORG0000HABC:MOVP1,#0FH;高四位滅,低四位送“1”,確保開關(guān)狀態(tài)的正確讀入MOVA,P1 ;讀P1口引腳開關(guān)狀態(tài)至ASWAPA ;低四位開關(guān)狀態(tài)轉(zhuǎn)換到高四位ANLA,#0F0H ;保留高四位MOVP1,A ;從P1口輸出SJMPABC ;循環(huán)單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第18頁。8.3用并行口設(shè)計LED數(shù)碼顯示器單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第19頁。8.3用并行口設(shè)計LED數(shù)碼顯示器顯示0的情況單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第20頁。abcdefgdp12345678910abfgcomcomabcefgxgfedcba00000110=06h顯示”1”單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第21頁。顯示”2”(b)dpcomabcdefgdpcde12345678910comcomabcefgxgfedcba01011011=5bh單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第22頁。8.3用并行口設(shè)計LED數(shù)碼顯示器單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第23頁。8.3用并行口設(shè)計LED數(shù)碼顯示器(1)數(shù)碼管顯示方式

靜態(tài)方式動態(tài)方式單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第24頁。8.3用并行口設(shè)計LED數(shù)碼顯示器(2)數(shù)碼管譯碼方式

硬件譯碼方式,即字形碼的控制輸出可采用硬件譯碼方式,如采用BCD7段譯碼/驅(qū)動器MC14495、74LS48、74LS49、CD4511(共陰極)或74LS46、74LS47、CD4513等芯片。軟件譯碼方式,通過編寫軟件譯碼程序(通常是查表的方式),通過譯碼程序來得到要顯示的字符的字段碼。

單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第25頁。8.3用并行口設(shè)計LED數(shù)碼顯示器(3)舉例–軟件譯碼【例8-3】接有五個共陰極數(shù)碼管的動態(tài)顯示接口電路,P1.7接開關(guān),當(dāng)開關(guān)打向位置“1”(GND)時,顯示“12345”字樣,當(dāng)開關(guān)打向“2”(高電平)時,顯示“HELLO”字樣,試編寫其程序。單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第26頁。解:采用動態(tài)譯碼的方法,當(dāng)P3.0~P3.4輪流輸出1時,五個數(shù)碼管輪流顯示。由于LED數(shù)碼管每段需10~20ma的驅(qū)動電流,單片機的引腳無法直接驅(qū)動,故用74LS373接成直通的方式作驅(qū)動電路,陰極用非門74LS04反相門驅(qū)動,字形選擇由P1口提供,位選擇由P3口控制。程序清單如下:ORG0000HMOVP3,#0;清顯示,P3.X=1則顯示TEST:MOVDPTR,#TAB1;開關(guān)置于1,取‘12345’字形表頭地址SETBP1.7;給P1.7寫1,為其輸入準(zhǔn)備JNBP1.7,DIR

;檢測開關(guān)=0為狀態(tài)“1”則顯示“12345”

MOVDPTR,#TAB2;開關(guān)置于2,取“HELLO”字形表首址DIR:MOVR0,#0;R0存字形表偏移量MOVR1,#01;R1置數(shù)碼表位選代碼(先為最高位)NEXT: MOVA,R0MOVCA,@A+DPTR;查字形碼表1MOVP1,A;送P1口輸出MOVA,R1MOVP3,A;輸出位選碼ACALLDELAY

;延時幾毫秒,避免閃爍

INCR0;指向下一位字形RLA;指向下一位MOVR1,A;暫存位選碼CJNER1,#20H,NEXT;五個數(shù)碼管顯示完?01H右移;4次則為20HSJMPTEST

;顯示完5個數(shù)碼則返回到開始DELAY;(延時子程序)MOVR6,#20;延時20msDL2: MOVR7,#7DHDL1:NOPNOPDJNZR7,DL1DJNZR6,DL2RETTAB1:db06H,5BH,4FH,66H,6DH;“1~5”的字形碼TAB2:db78H,79H,38H,38H,3FH;“HELLO”的字形碼END單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第27頁。8.4用并行口設(shè)計鍵盤

(1)鍵盤的結(jié)構(gòu)單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第28頁。8.4用并行口設(shè)計鍵盤

(2)三個主要問題1)去抖動:消除按鍵盤抖動通常有兩種方法:硬件消抖和軟件消抖。

硬件消抖是通過在按鍵輸出電路上加一定的硬件線路來消除抖動,一般采用RS觸發(fā)器或單穩(wěn)態(tài)電路。另一種方法是利用軟件延時。單片機基本采用軟件的方式去抖動。2)串鍵保護:串鍵保護是指兩個鍵同時按下時的選擇問題。3)按鍵識別:識別鍵盤中被按鍵對應(yīng)的編碼。編碼鍵盤可以通過硬件直接提供按鍵與被按鍵對應(yīng)的ASCII碼或其它編碼。非編碼鍵盤則需要通過編程方式提供按鍵編碼,其優(yōu)點是結(jié)構(gòu)簡單、成本低廉。單片機基本采用軟件的方式識別。單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第29頁。8.4用并行口設(shè)計鍵盤

(3)獨立鍵盤和矩陣鍵盤單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第30頁。8.4用并行口設(shè)計鍵盤

(4)獨立鍵盤編程舉例START:MOVA,#0FFH;MOVP1,A;置P1口為輸入狀態(tài)MOVA,P1;鍵狀態(tài)輸入CPLAJZSTART

;沒有鍵按下,則轉(zhuǎn)開始JBACC.0,K0;檢測0號鍵是否按下,按下轉(zhuǎn)JBACC.1,K1;檢測1號鍵是否按下,按下轉(zhuǎn)JBACC.2,K2;檢測2號鍵是否按下,按下轉(zhuǎn)JBACC.3,K3;檢測3號鍵是否按下,按下轉(zhuǎn)JBACC.4,K4;檢測4號鍵是否按下,按下轉(zhuǎn)JBACC.5,K5;檢測5號鍵是否按下,按下轉(zhuǎn)JBACC.6,K6;檢測6號鍵是否按下,按下轉(zhuǎn)JBACC.7,K7;檢測7號鍵是否按下,按下轉(zhuǎn)JMPSTART

;無鍵按下返回,再順次檢測單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第31頁。K0: …… ;調(diào)用去抖動子程序AJMPKEY0K1: …… ;調(diào)用去抖動子程序AJMPKEY1……K7: …… ;調(diào)用去抖動子程序AJMPKEY7KEY0:……;0號鍵功能程序,比如該鍵盤是回車鍵,則執(zhí)行回車功能程序JMPSTART;0號鍵功能程序執(zhí)行完返回KEY1:……;0號鍵功能程序JMPSTART;1號鍵功能程序執(zhí)行完返回……KEY7:……;7號鍵功能程序JMPSTART

;7號鍵功能程序執(zhí)行完返回單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第32頁?!纠縋1接4×4矩陣鍵盤,以P1.0~P1.3作輸出線,以P1.4~P1.7作輸入線。EEDEBE7EEDDDBD7DEBDBBB7BE7D7B777

鍵碼:單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第33頁。Y返回鍵編碼讀P1.4~P1.7值置行掃描初值掃描位從P1口輸出P1口的高四位和低四位相或得鍵編碼掃到最后一行?NN(有鍵按下)N開始P1.0~P1.3輸出0延時去抖動P1.4~P1.7全為1?P1.4~P1.7全為1?YY(無鍵按下)單片機:第八章-51單片機IO接口全文共36頁,當(dāng)前為第34頁。ORG0000HKEYTEST:

MOVP1,#0F0H;P1.0~P1.3輸出0,P1.4~P1.7輸出1,作為輸入

MOVA,P1;讀鍵盤,檢測有無鍵按下

ANLA,#0F0H;屏蔽P1.0~P1.3,檢測P1.4~P1.7是否全為1CJNEA,#0F0H,HAVEKEY;若P1.4~P1.7不全為1,則有鍵按下

SJMPKEYTEST;若P1.4~P1.7全為1,則無鍵按下,重檢測鍵盤

HAVEKEY:

LCALLDY10ms;調(diào)用10ms延時子程序消抖

MOVA,P1;再次讀行線數(shù)據(jù)

ORLA,#0FH;屏蔽P1.0~P1.3,檢測P1.4~P1.7是否全為1,

注意是ORL指令

CPLA;取反,為JZ指令做準(zhǔ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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論