矩陣鍵盤識別實驗

2021-09-02 18:59:40 字數 3700 閱讀 5565

矩陣鍵盤識別實驗

一、

實驗目的

掌握微控制器i/o口的輸入檢測的方法、矩陣按鍵的識別方法、鍵盤消抖等。

學會實時程式的除錯技巧。

二、

實驗原理

我們在手動按鍵的時候,由於機械抖動或是其它一些非人為的因素很有可能會造成誤識別,一般手動按下一次鍵然後接著釋放,按鍵兩片金屬膜接觸的時間大約為50ms 左右,在按下瞬間到穩定的時間為5-10ms,在鬆開的瞬間到穩定的時間也為5-10ms,如果我們在首次檢測到鍵被按下後延時10ms 左右再去檢測,這時如果是干擾訊號將不會被檢測到,如果確實是有鍵被按下,則可確認,以上為按鍵識別去抖動的原理。

三、

實驗內容

實驗板上電時,數碼管不顯示,順序按下矩陣鍵盤後,在數碼管上依次顯示0到f,6個數碼管同時靜態顯示即可。

下圖中按鍵s6-s218條線分別聯接p3口相連,p3.0~p3.3控制1~4行,p3.4~p3.7控制1~4列。

1實驗板鍵盤電路原理圖

四.

實驗步驟1、

按實驗要求在

keil

中建立專案,編輯、編譯程式。

2、將編譯生成的目標碼檔案(字尾為

.hex

)傳入實驗板中。

3、在實驗板上執行程式,觀察實驗執行結果並記錄

五.實驗結果

wei bit p2.7

duan bit p2.6

org 0000h

jmp main

org 0040h

main:   mov p3,#0ffh

mov a,p3

setb wei

mov p0,#0ffh

clr wei

mov dptr,#table

m1:     mov p3,#0feh

mov a,p3

cjne a,#0feh,s1

jmp s7

s1:     call delay

mov a,p3

cjne a,#0feh,s2

jmp s7

s2:     mov a,p3

cjne a,#0eeh,s3

mov r2,#0

jmp s8

s3:     mov a,p3

cjne a,#0deh,s4

mov r2,#1

jmp s8

s4:     mov a,p3

cjne a,#0beh,s5

mov r2,#2

jmp s8

s5:     mov a,p3

cjne a,#7eh,s8

mov r2,#3

jmp s8

s8:     mov a,p3

cjne a,#0feh,s8

call display

s7:     nop

jmp m2

m2:     mov p3,#0fdh

mov a,p3

cjne a,#0fdh,l0

jmp l0

l0:     call delay

mov a,p3

cjne a,#0fdh,l2

jmp l7

l2:     mov a,p3

cjne a,#0edh,l3

mov r2,#4

jmp l8

l3:     mov a,p3

cjne a,#0ddh,l4

mov r2,#5

jmp l8

l4:     mov a,p3

cjne a,#0bdh,l5

mov r2,#6

jmp l8

l5:     mov a,p3

cjne a,#7dh,l8

mov r2,#7

jmp l8

l8:     mov a,p3

cjne a,#0fdh,l8

call display

l7:     nop

jmp m3

m3 :    mov p3,#0fbh

mov a,p3

cjne a,#0fbh,a0

jmp a0

a0:     call delay

mov a,p3

cjne a,#0fbh,a2

jmp a7

a2:     mov a,p3

cjne a,#0ebh,a3

mov r2,#8

jmp a8

a3:     mov a,p3

cjne a,#0dbh,a4

mov r2,#9

jmp a8

a4:     mov a,p3

cjne a,#0bbh,a5

mov r2,#10

jmp a8

a5:     mov a,p3

cjne a,#7bh,a8

mov r2,#11

jmp a8

a8:     mov a,p3

cjne a,#0fbh,a8

call display

a7:     nop

jmp m4

m4:     mov p3,#0f7h

mov a,p3

cjne a,#0f7h,b0

jmp b0

b0:     call delay

mov a,p3

cjne a,#0f7h,b2

jmp b7

b2:     mov a,p3

cjne a,#0e7h,b3

mov r2,#12

jmp b8

b3:     mov a,p3

cjne a,#0d7h,b4

mov r2,#13

jmp b8

b4:     mov a,p3

cjne a,#0b7h,b5

mov r2,#14

jmp b8

b5:     mov a,p3

cjne a,#77h,b8

mov r2,#15

jmp b8

b8:     mov a,p3

cjne a,#0f7h,b8

call display

b7:     nop

jmp m1

display:setb wei

mov p0,#0c0h

clr wei

setb duan

mov a,r2

movc a,@a+dptr

mov p0,a

clr duan

retdelay:  mov r4,#20

dl0:    mov r7,#248

djnz r7,$

djnz r4,dl0

ret

table: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

db 77h,7ch,39h,5eh,79h,71h

end

微控制器實驗 4X4矩陣鍵盤識別技術

用at89s51 的並行口p1 接4 4 矩陣鍵盤,以p3.0 p3.3 作輸入線,以p3.4 p3.7 作輸出線 在數碼管上顯示數字按鍵的 0 9 序號,其它按鍵顯示0。原理分析 4x4矩陣鍵盤每個按鍵都有它的行值和列值,當每個按鍵的行值為低電平,列值為高電平時,按鍵為未按下狀態。判斷是否有按鈕按...

PIC16F877矩陣鍵盤的識別

關於矩陣鍵盤的識別方法在51矩陣鍵盤識別中已經說過,現在要說的是pic微控制器與51微控制器的區別,主要是pic微控制器的口子的輸入輸出需要trisn暫存器設定,具體如下 掃瞄法 include define uchar unsigned char define uint unsigned int ...

矩陣鍵盤掃瞄

矩陣鍵盤掃瞄一般採取行列掃瞄法。比如先拉低所有列線,拉高行線,之後讀取行線狀態,如果行線有一行為低,則假設有按鍵按下,此時再延時20毫秒左右後判 斷行線的某一行是否仍然為低,若為低則確認有鍵按下。這時可以進行按鍵鍵值判斷,即判別在哪一行哪一列有按鍵按下。判斷的方法是通過拉高列線,依次置行線 的某一行...