單片機(jī)與接口技術(shù)-12 IO口控制鍵盤(pán)_第1頁(yè)
單片機(jī)與接口技術(shù)-12 IO口控制鍵盤(pán)_第2頁(yè)
單片機(jī)與接口技術(shù)-12 IO口控制鍵盤(pán)_第3頁(yè)
單片機(jī)與接口技術(shù)-12 IO口控制鍵盤(pán)_第4頁(yè)
單片機(jī)與接口技術(shù)-12 IO口控制鍵盤(pán)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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)介

單片機(jī)與接口技術(shù)第12日IO口控制鍵盤(pán)例7.

如圖所示的8鍵鍵盤(pán),用P1口連接成并行輸入形式。要求識(shí)別按下的鍵,并將相應(yīng)的值通過(guò)P0口送至LED顯示。

ORG 0000H

LJMP LOOP ORG 0100HLOOP:

MOV

A,P1

CPL

A

MOV

P0,A

LJMP LOOPEND太簡(jiǎn)單了,就不解釋了。。。例8.如圖所示的8鍵鍵盤(pán),用P1口連接成并行輸入形式。要求識(shí)別按下的鍵,并將相應(yīng)的值通過(guò)P0口送至數(shù)碼管顯示。 ORG 0000H

LJMP START

ORG 0100HSTART:

MOV P0,#0 ;全部熄滅

MOV DPTR,#TABLE ;顯示碼表初始化:TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0-7的代碼查詢鍵位:LOOP:

MOV

A,P1 ;讀取P1口

JNB

ACC.0,KEY0 ;如果第0位按下,跳轉(zhuǎn)KEY0

JNB

ACC.1,KEY1

JNB

ACC.2,KEY2 JNB

ACC.3,KEY3 JNB

ACC.4,KEY4 JNB

ACC.5,KEY5 JNB

ACC.6,KEY6 JNB

ACC.7,KEY7

MOV

P0,#0 ;如果沒(méi)有任何一位按下則不顯示

LJMP LOOP ;繼續(xù)循環(huán)顯示數(shù)字:KEY0: MOV

A,#0 ;查表地址偏移量

MOVC

A,@A+DPTR ;查表

LCALL

DISP ;調(diào)用顯示程序

LJMP

LOOP ;返回循環(huán)查詢KEY1: MOV A,#1

MOVC A,@A+DPTR LCALL DISP

LJMP LOOPKEY2: MOV A,#2

MOVC A,@A+DPTR

LCALL DISP

LJMP LOOP……(總共8段)DISP:

MOV

P0,A

RET

鍵盤(pán)可分為編碼式鍵盤(pán)和非編碼式鍵盤(pán)。(1)編碼鍵盤(pán)能夠由硬件自動(dòng)提供與被按鍵對(duì)應(yīng)的ASCII碼或其它編碼。但是它要求采用較多的硬件,價(jià)格昂貴。(2)非編碼鍵盤(pán)則僅提供行和列的矩陣,其硬件邏輯與按鍵編碼不存在嚴(yán)格的對(duì)應(yīng)關(guān)系,而要由所用的程序來(lái)確定。非編碼鍵盤(pán)的硬件接口簡(jiǎn)單,但是要占用較多的CPU時(shí)間。本課程研究非編碼鍵盤(pán)的實(shí)現(xiàn)。矩陣鍵盤(pán)接口非編碼鍵盤(pán)接口技術(shù)主要是如何確定被按鍵的行、列位置,即鍵碼(值)。按鍵識(shí)別是接口技術(shù)的關(guān)鍵問(wèn)題。常用按鍵識(shí)別方法有行/列掃描法(Row/column-Scanning)。典型非編碼鍵盤(pán)結(jié)構(gòu)

非編碼鍵盤(pán)大都采用按行、列排列的矩陣開(kāi)關(guān)結(jié)構(gòu),這種結(jié)構(gòu)可以減少硬件和連線。

數(shù)據(jù)總線行驅(qū)動(dòng)列驅(qū)動(dòng)+VccR1R2R3R4行掃描法識(shí)別按鍵

行掃描法是采用步進(jìn)掃描方式,CPU通過(guò)輸出口把一個(gè)“步進(jìn)的0”逐行加至鍵盤(pán)的行線上,然后通過(guò)輸入口檢查列線的狀態(tài)。由行線列線電平狀態(tài)的組合來(lái)確定是否有鍵按下,并確定被按鍵所處的行、列位置。列信息行信息R1R2R3R4C1C2C3C40111列信息行信息1011列信息行信息1101列信息行信息1110例9.

如圖所示的4×4鍵盤(pán),用P3口連接成矩陣形式。要求識(shí)別按下的鍵,并將相應(yīng)的值通過(guò)P0口送值數(shù)碼管顯示。R10123R24567R389ABR4CDEFC1C2C3C4鍵位與行列線關(guān)系表

上表列出了識(shí)別按鍵位置與各行之間的關(guān)系。其中,R1、R2、R3、R4表示行,C1、C2、C3、C4表示列。

當(dāng)掃描第一行時(shí),R1=0,若讀入的列值C1=0,則表明按鍵0被壓下,如果C3=0,則表明按鍵2被壓下。第一行掃描完畢后再掃描第二行,逐行掃描至最后一行為止,即可識(shí)別出所有的按鍵(注意,節(jié)省硬件資源的代價(jià)是時(shí)分復(fù)用)。存儲(chǔ)器地址顯示數(shù)字共陰極接法的七段狀態(tài)gfedcba共陰極接法段碼(十六進(jìn)制數(shù))共陽(yáng)極接法段碼(十六進(jìn)制數(shù))SEG001111113F40SEG+1100001100679SEG+2210110115B24SEG+3310011114F30SEG+4411001106619SEG+5511011016D12SEG+6611111017D02SEG+7700001110778SEG+8811111117F00SEG+9911001116F18SEG+10A11101117708SEG+11B11111007C03SEG+12C01110013946SEG+13D10111105E21SEG+14E11110017906SEG+15F1110001710E開(kāi)始行號(hào)=4?NP1左移一位讀取P3查詢碼字刷新P0顯示行號(hào)+1Y開(kāi)始:

ORG 0000H

LJMP START

ORG

0100HSTART:

MOV

P0,#0 ;顯示清零 MOV

DPTR,#TABLE

MOV B,#4 ;4列

MOV R0,#0 ;行號(hào)(初值)

MOV

R1,#0 ;列號(hào)(初值)

MOV

R2, #11111110B ;行碼(初值)TABLE:

DB

3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H讀取P3口:SCAN:

MOV

A,R2

;掃描行

MOV

P3,A

MOV

A,P3 ;讀取狀態(tài)

SWAP

A ;高低字節(jié)交換

JB

ACC.0,COLUM2 ;沒(méi)有鍵按下使拉低,跳到驅(qū)動(dòng)第2列

MOV

A,#0 ;第1列有鍵按下使拉低,跳到讀取顯示碼

LJMP

CHECKCOLUM2: JB

ACC.1,COLUM3 ;沒(méi)有鍵按下使拉低,跳到驅(qū)動(dòng)第3列

MOV

A,#1 ;第2列有鍵按下使拉低,跳到讀取顯示碼

LJMP

CHECKCOLUM3: JB

ACC.2,COLUM4 ;沒(méi)有鍵按下使拉低,跳到驅(qū)動(dòng)第4列

MOV

A,#2 ;第3列有鍵按下使拉低,跳到讀取顯示碼

LJMP

CHECKCOLUM4: JB

ACC.3,NEXT

;沒(méi)有鍵按下使拉低,跳到掃描下一行

MOV

A,#3 ;第4列有鍵按下使拉低,跳到讀取顯示碼

LJMP

CHECK

CHECK:

MOV

R1,A

;暫存列號(hào)

MOV

A,R0

;調(diào)取行號(hào)

MUL

AB

ADD

A,R1

;獲取碼字地址偏移量

MOVC

A,@A+DPTR ;查表

MOV

P0,A

;顯

溫馨提示

  • 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)論