打印
[MCU]

关于矩阵按键的检测与处理问题

[复制链接]
2138|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yylfcxpx168|  楼主 | 2015-7-22 23:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在用单片机做矩阵按键检测的时候,查网上的资料都是用扫描的方法去检测,这个方法是一行一行的扫描,如果扫描到每一行有按键按下时就会退出扫描,那如果不同行的按键同时有2个或者两个按键以上的按下了呢,那不就漏检了。发现这一方法只能实现单个按键的单击,如何实现像独立按键的多功能按键(长按,双击等)功能呢?本人菜鸟,希望能得到大神的指点,在此先谢谢了。

相关帖子

沙发
ayb_ice| | 2015-7-23 08:47 | 只看该作者
这是简化了而已,
也可以说是优先扫描

检测按键的按下与弹开,就可以扩展成长按,双击了
长按就是持续按下一定时间,中间不松开
双击就是一定时间内按下,弹开,又按下
。。。

使用特权

评论回复
板凳
ningling_21| | 2015-7-23 09:17 | 只看该作者
如果检测到有键按下时不退出返回而继续检测其它按键 就可以检测到多个按键按下(如果有),继而判断是不是组合按键

使用特权

评论回复
地板
yylfcxpx168|  楼主 | 2015-7-23 16:49 | 只看该作者
ayb_ice 发表于 2015-7-23 08:47
这是简化了而已,
也可以说是优先扫描

如何检测矩阵按键的每一个按键的按下与松开呢?以前独立按键的话,某一个按键的按下与松开是可以映射到某一个寄存器的某一位的状态,然后在判断这个寄存器的这一位的状态确定按键的按下和松开,现在矩阵按键一个4*4的就有16个按键,那需要16位,需要两个8位的寄存器映射,如果在一位一位的判断那程序都要写一堆,有没有好的处理办法呢?

使用特权

评论回复
5
yylfcxpx168|  楼主 | 2015-7-23 16:51 | 只看该作者
ningling_21 发表于 2015-7-23 09:17
如果检测到有键按下时不退出返回而继续检测其它按键 就可以检测到多个按键按下(如果有),继而判断是不是 ...

这样是可以得到按键的键值,但是如何处理这些键值才能实现多功能按键呢,大牛能给个好方法不

使用特权

评论回复
6
ayb_ice| | 2015-7-24 07:57 | 只看该作者
yylfcxpx168 发表于 2015-7-23 16:49
如何检测矩阵按键的每一个按键的按下与松开呢?以前独立按键的话,某一个按键的按下与松开是可以映射到某 ...

功能复杂,算法当然要复杂,可以通过循环处理

使用特权

评论回复
7
ningling_21| | 2015-7-24 09:26 | 只看该作者
yylfcxpx168 发表于 2015-7-23 16:51
这样是可以得到按键的键值,但是如何处理这些键值才能实现多功能按键呢,大牛能给个好方法不 ...

每一个按键都有一个变量与之对应,按键的状态对应变量的状态,加上复合逻辑就可以实现多功能按键

使用特权

评论回复
8
yylfcxpx168|  楼主 | 2015-7-25 11:08 | 只看该作者
ayb_ice 发表于 2015-7-24 07:57
功能复杂,算法当然要复杂,可以通过循环处理

用怎么样的算法好,能提供个好的思路给我吗?谢谢了

使用特权

评论回复
9
yylfcxpx168|  楼主 | 2015-7-25 11:25 | 只看该作者
ningling_21 发表于 2015-7-24 09:26
每一个按键都有一个变量与之对应,按键的状态对应变量的状态,加上复合逻辑就可以实现多功能按键 ...

如果一个一个大判断,那16个按键不是需要写16个相同的程序,有没有好的办法整合在一块,一个子程序搞定

使用特权

评论回复
10
ningling_21| | 2015-7-25 11:46 | 只看该作者
yylfcxpx168 发表于 2015-7-25 11:25
如果一个一个大判断,那16个按键不是需要写16个相同的程序,有没有好的办法整合在一块,一个子程序搞定 ...

功能越复杂对应的程序也会越复杂

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

44

帖子

0

粉丝