前面提到了独立按键,可见,独立按键是由矩阵键盘分离而来的。接下来看的是 4*4 的矩阵键盘,这里使用的还是上节所使用的,延时消抖检测。
先附上矩阵键盘的原理图:
在使用据矩阵键盘时,J5 排针处的跳帽连接 1 脚和 2 脚,使所有按键的有效端口全部连接至 I/O 口。
具体的扫描方式为:
先把P3^0~P3^7高四位和第四位赋不一样的电平值,当确定有键按下时,检测按下的是哪一行或哪一列(原本高电平的四位中有一位会变低电平),再将高四位和第四位赋与上一次相反的电平。再检测,即可找到所按下的按键。
实例为:把S4~S19 这16个按键,从上到下、从左至右,分别设置为1~16不同的键值,当S4按下时,数码管显示为 1;当S19按下时,数码管显示为16。
其核心代码如下(数码管段码,显示函数等变量的定义,请参照前面给出的数码管的博文):
uchar temp; //用于存储 P3 口的状态
uchar key_value = 0; //键值的定义
void matrixKeyScan()
{
P3 = 0x0f;