矩阵键盘的问题:不能识别同时有多个按键按下。

2019-07-21 07:48发布

4*4的矩阵键盘,实现的原理主要有行或列逐次扫描,以及反转端口读取方法。
这两种方法我都试验过,如果同一时刻只有一个按键按下,那么都是好方法。
如果有多个按键按下的情形,那么这两种方法中第一种行列扫描法比较危险,而第二种安全。但是都不能有效识别多个按键在某种情形下的状态。
行列扫描方式(比如逐行扫描),行作为列的采样电平输出端口,当某行输出0时(列采用上拉输入,0有效)其他行输出1,如果此时同一列上有多个按键按下,则输出口的高低电平短接,比较危险,且不能正确检测出列值。如果不是同一列的多个按键则能够识别。
反接方法没有这种危险,4个输出口(行)一次都输出0,不会出现有的0有的1的情形。读取列值后配置列为输出而行为输入,再次列全输出采样电平0而读取行值。
但是反接法确定位置也很啰嗦,需要循环处理,当还算简单。
反接法的问题也是不能识别多个按键同时按下的情形:这次不是同一行或同一列不能识别了,而是不同行不同列出现多个按键按下时不能正确识别。
请问大家用的矩阵键盘都是如何处理的?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。