矩陣鍵盤識別實驗
一、
實驗目的
掌握微控制器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毫秒左右後判 斷行線的某一行是否仍然為低,若為低則確認有鍵按下。這時可以進行按鍵鍵值判斷,即判別在哪一行哪一列有按鍵按下。判斷的方法是通過拉高列線,依次置行線 的某一行...