微機接口-第13章鍵盤與_第1頁
微機接口-第13章鍵盤與_第2頁
微機接口-第13章鍵盤與_第3頁
微機接口-第13章鍵盤與_第4頁
微機接口-第13章鍵盤與_第5頁
免費預(yù)覽已結(jié)束,剩余30頁可下載查看

下載本文檔

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

文檔簡介

13.1鍵盤

鍵盤是微型計算機系統(tǒng)中最基本的人機對話輸入設(shè)備。組成鍵盤有機械式、電容式、導(dǎo)電橡膠式、薄膜式等多種,但不管何種形式,其作用都是一個使電路接通與斷開的開關(guān)。1.編碼鍵盤

鍵盤本身帶有實現(xiàn)接口主要功能所必需的硬件電路。2.非編碼鍵盤(有線性鍵盤和矩陣式鍵盤兩種)線性鍵盤——即每個按鍵開關(guān)直接逐一與輸入線相連。

矩陣式鍵盤——鍵盤是一個簡單地通過行列線將按鍵連接起來的行列矩陣,故稱之為矩陣式鍵盤(本課程討論對象)

+5V鍵盤的矩陣式結(jié)構(gòu)

一、矩陣式鍵盤的按鍵識別

1.矩陣式鍵盤接口硬件連線

D3D2D1D0行口

D3D2D1D0列口

CPUDBDB+5V按鍵識別兩個步驟

第一步應(yīng)該判斷是否有鍵按下第二步是判斷哪一個鍵被按下對行輸出全“0”從列口讀入信息全“1”否有鍵按下YN判有無鍵按下流程圖轉(zhuǎn)識別被按鍵判斷是否有鍵被按下(設(shè)行端口地址200H,列為201H)

WAIT:MOVAL,00H;各行輸出0MOVDX,200HOUTDX,ALMOVDX,201H;讀入列值

INAL,DXCMPAL,0FFH;判斷有鍵按下嗎?

JZWAIT

、、、2識別按鍵的法

(1)行掃描法先使第0行輸出低電平,然后讀入列線的值,看是否有低電平,若有,則表示第0行與該列相交位置的鍵被按下;否則,繼續(xù)下一行的判別,直到最后一行。

行掃描法判斷閉合鍵的流程掃描法判斷閉合鍵的程序:PROG: MOV BL,0 ;鍵號初值為0MOV CL, 0FEH ;送掃描初值MOV DL, 8 ;計數(shù)值為行數(shù)FROW: MOV AL, CLOUT ROWPORT, AL ;掃描一行ROL AL, 1MOV CL, AL ;修改掃描值IN AL, COLPORTCMPAL,0FFH ;讀進(jìn)列值,并判別是否有哪條列線接地JNZ FCOL ;有列線接地,則轉(zhuǎn)FCOLMOV AL, BLADDAL, 8 ;如沒有列線接地,則使鍵號=鍵號+列數(shù)/行MOV BL, AL DEC DL ;是否各行都掃完JNZ FROW ;未掃完,則掃下一行JMP DONE ;已掃完,則轉(zhuǎn)DONEFCOL: RCR AL,1JNC PROCE ;如此列接地,則轉(zhuǎn)PROCEINC BLJMP FCOL ;如未找到接地的列線,則轉(zhuǎn)FCOL繼續(xù)尋找PROCE: ;鍵命令處理程序DONE: ;后續(xù)處理程序(2)行反轉(zhuǎn)法先使行線都輸出低電平,然后讀入列線的值,若此時有鍵被按下,則列線對應(yīng)位為0。然后將剛才列線上讀入的值輸出到列線上,再讀入行線的值,那么,閉合鍵所在行線的值必定為0。這樣,當(dāng)一個鍵被按下時,必定可以獲得一對唯一的行值和列值。

鍵的識別——行反轉(zhuǎn)法行反轉(zhuǎn)法的工作示意圖(a)行線輸出,列線輸入;(b)列線輸出,行線輸入

確定被按鍵對應(yīng)二進(jìn)制碼

確定被按鍵之值(即鍵功能);

例如:0BDH查表可知其功能D2D2D3D0D1D0D3D111011011行列0BDH行反轉(zhuǎn)法的鍵盤連接行反轉(zhuǎn)法判別閉合鍵的程序流程ST: MOV AL,82HOUT PORT1, AL ;PORT1是8255A的控制口地址,設(shè)控制字,A口為輸出,B為輸入WAIT1: MOV AL,0OUT PORTA, AL ;往端口A輸出全0IN AL, PORTB ;輸入列值A(chǔ)ND AL, 0FFHCMP AL, 0FFH ;看是否有鍵閉合JZ WAIT1 ;如無閉合鍵,則等待PUSH AXPUSH AX ;保留列值CALL DELAY ;延遲20msMOV AL, 90HOUT PORT1, AL ;將8255A的A口設(shè)置為輸入,B口設(shè)置為輸出POP AXOUT PORTB,A L ;將讀得的列值輸出到端口BIN AL, PORTA ;讀進(jìn)行值POP BXMOV AH, BL ;使AH中為列值,而AL中為行值MOV SI, TABLE+3FH ;取鍵碼表末地址MOV CX, 40H ;CX作為鍵計數(shù)器LOOP1: CMP AX,〔SI+0〕;行值列值與鍵碼表比較JZ KEYPRO ;如相等,則轉(zhuǎn)鍵命令處理DEC SIDEC SI ;修改表指針和鍵計數(shù)器DEC CX JNZ LOOP1 ;未比較完,則再比JMP ST ;如已比較完,但沒有在鍵碼表中找到相同碼,則重新開始找KEYPRO: …

;鍵命令處理TABLE: DW 0FEFEH ;鍵碼表開始,K0鍵

DW 0FEFDH ;K1鍵

DW 0FEFBH ;K2鍵

DW 0FEF7H ;K3鍵3.去抖動所謂抖動是指當(dāng)一個鍵被按下或放開時,鍵的接觸點在達(dá)到穩(wěn)定的閉合或斷開之前會有幾次抖動跳變。在識別被按鍵和釋放鍵時必須避開這種抖動狀態(tài),被按鍵才能保證正確無誤地被識別,這就是去抖動。

去抖動問題可通過軟件延時解決。4、防串鍵(重鍵問題的解決)

防串鍵是為了解決多個鍵同時按下或者前一按鍵沒有釋放又有新的鍵按下時產(chǎn)生的問題。解決方法常用:

①連鎖法(行反轉(zhuǎn)法)

只承認(rèn)第一個鍵,當(dāng)所有的鍵都釋放后,才識別下一個鍵。

②巡回法(行掃描法)

當(dāng)前面所識別的鍵釋放后,就識別下一個鍵。抖動和重鍵問題的解決巡回法

巡回法的流程圖acbdefgdp+5V共陽acbdefgdp共陰LED顯示器(工作原理與分類)13.2LED數(shù)字顯示agfedcbdp2.LED顯示器的驅(qū)動問題可以顯示0-9,A-F共16個字母數(shù)字工作電流:10-20mA共陽極:8255,74LS273,限流電阻,電源+5V提供共陰極:8255,74LS273,驅(qū)動電路(電流放大)gcdebadpf01110010例如:

顯示接口D7D4D6D3D5D1D2D0aDBgfedcbdpCPUCPU3.CPU與LED顯示器的接口cdbefgdpaa

顯示接口PA7PA4PA6PA3PA5PA1PA2PA0DBgfedcbdpCPUCPU+5vabedcgfgcdebadpf10001101例如:4.LED顯示器的譯碼功能

(軟件譯碼與專用芯片)

軟件譯碼(p369)a

顯示接口PA7PA4PA6PA3PA5PA1PA2PA0DBgfedcbdpCPUCPU+5vabedcgf軟件譯碼LED顯示gfedcba顯示代碼0100000040H1111100179H7111100078H軟件譯碼XLAT換碼指令(P109)XLAT指令可以累加器中的一個值變換為內(nèi)存表中的某個值。MOVBX,OFFSETDATA;LEABX,DATAMOVAL,[BX];MOVBX,OFFSETLEDADD;LEABX,LEDADDXLAT ;執(zhí)行換碼指令MOVDX,PORTOUTDX,AL…….LEDADD:DB40HDB79H

DB24H…….DB78H

換碼指令執(zhí)行前: 主存建立一個字節(jié)量表格,含要轉(zhuǎn)換成的目的代碼,表格首地址存放于BX,AL存放相對表格首址的位移量換碼指令執(zhí)行后:將AL寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼專用芯片譯碼(7447,CD4511)

采用專用的帶驅(qū)動器的LED段譯碼器,可以實現(xiàn)對BCD碼的譯碼,但不能對大于9的數(shù)譯碼

7447必須使用共陽極七段顯示器。4511等則使用共陰極七段顯示器。

7447在正常操作時,當(dāng)輸入DCBA=0010則輸出abcdefg=0100100。故使顯示器顯示“2”。

當(dāng)輸入DCBA=0110時,輸出abcdefg=10000010,顯示器顯示"6"。

顯示接口8255DegdfbcaDBgfedcbdpCPUCPU+5vabedcgfa

7447ABC5、LED的多位顯示硬件上采用公用的驅(qū)動電路來驅(qū)動各顯示管,在軟件上用掃描方法來實現(xiàn)數(shù)碼顯示。一個端口:段碼(顯示碼)輸出端口一個端口:位碼輸出端口顯示程序只要做到每送一次段碼就接著送一次位碼,并且每送一次位碼后,將位碼中的右一位作為下次的位碼。位碼應(yīng)保證一位為0,其余各位為1(共陰極)P370371

PORTBD3D2D1D0CPUDB

顯示接口D7D4D6D3D5D1D2D0agfedcbdpabcdefgdpagfedcbdpagfedcbdpagfedcbdpPORTAL1:MOVSI,OFFSETLEDBUF;LEDBUF存放了0~F的LED碼

MOVBX,OFFSETDISBUF;DISBUF存放了要顯示的數(shù)

MOVCX,4MOVAH,0F7H;字選碼L2:MOVAL,[SI]XLATMOVDX,PORTAOUTDX,AL;輸出段選碼

MOVDX,PORTBMOVAL,AHOUTDX,AL;輸出字選碼

CALLDELAYINCSIRORAH,1;字選碼右移一位

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論