51单片机矩阵输出矩阵按键扫描
经典扫描方法:(存在一个弊端:当使用一个按键按一次变量加1,真实情况是按一次结果变量加了好多次。)
我个人写了一个矩阵按键扫描可以解决上面那个弊端,代码如下:
* 描述 :延时函数 (具体情况以自己的板子为准) * 描述 :矩阵键盘的键值返回(在没有按任何键时 * 函数返回值为16,只有在按下按键的瞬间返 * 回嘚键值才是你真正按下按键的键值正是这样才能实现长按连续加或减) // 确定矩阵按键被按下位置的键值:列(或0或1或2或3) + 行(或0或4或8或12) // 使用丅面这种形式,则可以达到目的从上面五幅图片我们得到:第一行(0x0E)、第二行(0x0D)、第三行(0x0B)、第四行(0x07)。因为每一行有四列所以定义这四行的起点分别是:0、4、8、12(04、14、24、34)。
从上面的五幅图片中我们得到:第一列(0x70)、第二列(0xB0)、第三列(0xD0)、第四列(0xE0)。因为每一行有四列所以定义这四列分别固定为:0、1、2、3。
【最后确定键值:列号(0/1/2/3)+行起点(0/4/8/12)】
矩阵键盘程序中的扫描原理:首先进行列扫描确定按下的是第几列(即每一列固定的列号),接着进行行扫描确定是第几行(即确定行起点)。