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

2019-07-21 07:48发布

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


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
操作系统
1楼-- · 2019-07-21 11:46
当某行输出0时(列采用上拉输入,0有效)其他行输出1,其它行不要输出为1,设置为输入不就触发短路的事情吗?
xiatianyun
2楼-- · 2019-07-21 17:31
操作系统 发表于 2018-11-10 23:09
当某行输出0时(列采用上拉输入,0有效)其他行输出1,其它行不要输出为1,设置为输入不就触发短路的事情吗?

嗯,有道理。谢谢!
xiatianyun
3楼-- · 2019-07-21 23:25
 精彩回答 2  元偷偷看……
操作系统
4楼-- · 2019-07-22 01:36
你说的这个情况,叫鬼键,也叫幻影键.是没有办法的. 硬件上存在这个缺陷.当有三个键成直角三角形的位置时,会多出来一个键按下.
电脑小白
5楼-- · 2019-07-22 04:22
可以考虑用扫描方式来做。就是同时只有一行或一列为0或1,其他都是高组态。不过感觉扫描方式来做有些慢。
xiatianyun
6楼-- · 2019-07-22 04:26
扫描方式在STM32这种芯片上并不慢,如果采用反接法,需要后续处理更复杂的键值,反而是如2楼的扫描法简单。
只是还不能找到理想的处理出现“幻影键”的问题。

一周热门 更多>