一个4*4的键盘矩阵,可以采用逐行扫描或全扫描的方式实现按键的读取。
行列扫描
若行线和列线加驱动后空载时为高电平,逐行扫描的方法为逐行使行线的每位为低,再判断列线的返回信号,如果没有键按下,返回的信号全为高;如果返回的信号中有列线为低,那么肯定是有按键按下,根据列线和行线的交点可以判断按键的具体位置。
可以设置一个数组,存放从1到F对应的16个代码,比如将P2_0与P2_7的交点处定为0,那么数组第0个元素则为0X7E(二进制0111 1110),当正确求出P2对应的数值时与数组对照便可求得按键的值。
uchar keyboard[16]={0x7e,0x7d,0x7b,0x77,0xbe,0xbd,0xbb,0xb7,0xde,
0xdd,0xdb,0xd7,0xee,0xed,0xeb,0xe7},这个数组就是对应键盘扫描值的0~F。