OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5251|回复: 8

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

[复制链接]

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

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


最佳答案

查看完整内容[请看2#楼]

当某行输出0时(列采用上拉输入,0有效)其他行输出1,其它行不要输出为1,设置为输入不就触发短路的事情吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2018-11-10 20:44:14 | 显示全部楼层
当某行输出0时(列采用上拉输入,0有效)其他行输出1,其它行不要输出为1,设置为输入不就触发短路的事情吗?
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
 楼主| 发表于 2018-11-10 23:48:43 | 显示全部楼层
操作系统 发表于 2018-11-10 23:09
当某行输出0时(列采用上拉输入,0有效)其他行输出1,其它行不要输出为1,设置为输入不就触发短路的事情吗?

嗯,有道理。谢谢!
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
 楼主| 发表于 2018-11-11 08:30:53 | 显示全部楼层
本帖最后由 xiatianyun 于 2018-11-11 08:32 编辑

尽管如2楼所说可以避免行扫描时同列多个键按下带来的短路问题,但是我现在发现还是不能正确检测出某些情况下出现3个或4个键按下的状态。
比如:1行1、2列按下时不能检测出2行1、2列按下的情形,因为当1行1、2列按下后2行其实是低电平0,这给2行按键提供了采样电平。
这个可能需要多次扫描和读取才能检测出来,目前我还没有细想。

回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2018-11-11 09:09:17 | 显示全部楼层
你说的这个情况,叫鬼键,也叫幻影键.是没有办法的. 硬件上存在这个缺陷.当有三个键成直角三角形的位置时,会多出来一个键按下.
回复

使用道具 举报

8

主题

571

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2922
金钱
2922
注册时间
2016-5-13
在线时间
185 小时
发表于 2018-11-14 13:49:06 | 显示全部楼层
可以考虑用扫描方式来做。就是同时只有一行或一列为0或1,其他都是高组态。不过感觉扫描方式来做有些慢。
虽然不明白你们在说什么,但感觉很厉害的样子。
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
 楼主| 发表于 2018-11-14 15:58:50 | 显示全部楼层
扫描方式在STM32这种芯片上并不慢,如果采用反接法,需要后续处理更复杂的键值,反而是如2楼的扫描法简单。
只是还不能找到理想的处理出现“幻影键”的问题。
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2018-11-17 12:54:41 | 显示全部楼层
幻影键,要解决,只能换成独立按键的接法.机械键盘一般的做法,但是IO口是个问题,不够用.
唯一的办法,检测到出现幻影键时,发出错误的消息.标记这次的键值无效.
我们用的普通的电脑键盘都是这么干的.
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
 楼主| 发表于 2018-11-18 15:38:20 | 显示全部楼层
电脑键盘上也存在这样的幻影键吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 23:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表