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

下載本文檔

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

文檔簡(jiǎn)介

第八章

51單片機(jī)I/O接口

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

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

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

8

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

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

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

2.作第二功能使用時(shí):

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

P3.7WR

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

P3.0第二功能

端口引腳

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

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

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

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

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

。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

;延時(shí)幾毫秒,避免閃爍

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

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

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

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

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

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

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

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

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

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

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

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

MOVA,P1;讀鍵盤,檢測(cè)有無(wú)鍵按下

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

SJMPKEYTEST;若P1.4~P1.7全為1,則無(wú)鍵按下,重檢測(cè)鍵盤

HAVEKEY:

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

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

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

注意是ORL指令

CPLA;取反,為JZ指令做準(zhǔn)備

溫馨提示

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

評(píng)論

0/150

提交評(píng)論