矩陣鍵盤掃瞄原理

2021-09-01 20:48:09 字數 719 閱讀 5206

當乙個按鍵兩端分別接乙個io口,乙個io口置高電平另乙個置低電平,當按下按鍵時高電平io口電平被拉低,另一端還是為低電平,這時檢測io口值就是兩個低電平。

把上述方法應用到矩陣鍵盤上,如果把4個行引腳接p2前4位io口(p2.0~p2.3),都置低電平,把4個列引腳接p2後4位io口(p2.4~p2.7),都置高電平,這時p2=0xf0, 如果按下第一列第一行按鍵,那麼第一列的io口電平變低,其他io口電平不變,這時儲存p2值,確定了列值。

同樣,用這種方法確定行值,就是在儲存列值後把4個行引腳置高電平,4個列引腳置低電平,p2=0x0f(這時按鍵還處於按下的狀態),確定行值,最後把列值行值進行或運算得出乙個儲存了行值和列值的數(每個按鍵都有乙個對應的數值)

這是我的程式:

每按下乙個按鍵就點亮對應數量的led,

#include"reg52.h"

int zhi=1;

void iojiance();   //檢測p2 i/o口訊號輸入

void led(int);         //點亮led函式,使用匯流排方式

void delay1s();

main()

}void iojiance()

void led(int x)

void delay1s(void)   //延時1s

矩陣鍵盤掃瞄

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

矩陣鍵盤掃瞄

矩陣鍵盤掃瞄 module matrix keyboard input clk 50m,50m時鐘 input rst n,復位 input 3 0 row,矩陣鍵盤行輸入 output reg 3 0 col,矩陣鍵盤列輸出 output reg key flag,按鍵按下標誌 output re...

矩陣鍵盤掃瞄

根據矩陣鍵盤的原理圖可知,當沒有按鍵按下時,p1 0xf0 然後依次將p1 0 p1 3單獨置低電平,其他置高,再掃瞄各列的狀態,來判斷是哪個按鍵按下,比如,將p1 0輸出低電平,其他的引腳都輸出高電平,即p1 0xfe,那麼當第1行有按鍵按下時p1的相應值為,1x1 01111110 0x7e 1...