硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1079|回复: 9
收起左侧

[有问必答] 有没有坛友用过矩阵按键,它能否任意按键组合?

[复制链接]

39

主题

199

回帖

326

积分

高级会员

积分
326
发表于 2022-9-5 16:39:10 | 显示全部楼层 |阅读模式
矩阵按键有办法任意组合键吗?

我思考了一下,应该是不行,不知道坛友们有没有什么好方法。

我看网络上的做法,矩阵按键扫描有两种,一种逐行扫描(逐列扫描),另外一种行列切换扫描(这个方法应该没办法识别不同行列的组合键)。
Snipaste_2022-09-05_16-11-39.png
以上图为例,逐列扫描(低电平为按键按下)的伪代码如下:
Snipaste_2022-09-05_16-15-45.png
Snipaste_2022-09-05_16-18-59.png

用这种思路去判断按键“1”和“2”同时按下的情况,貌似无法判断(我的结论)。
Snipaste_2022-09-05_16-22-01.png
如上图,当这两个按键被同时按下的时候,是不是就相当于C1和C2导通的?
所以R1和R2始终都是读到了1。所以同时按下的时候就相当于没按。。无法被识别到。


回复

使用道具 举报

1

主题

369

回帖

372

积分

高级会员

积分
372
发表于 2022-9-6 02:10:55 | 显示全部楼层
目前知道两种,一种是矩阵加二极管方式,另一种是稚辉君最近弄的键盘项目,用74HC165并转串,3个IO检测8个按键。比如同样检测64个按键,矩阵需要16个IO,用165只需要8个IO,省点IO,还可以省二极管
回复

使用道具 举报

39

主题

199

回帖

326

积分

高级会员

积分
326
 楼主| 发表于 2022-9-6 08:13:57 | 显示全部楼层
挖东衣宇 发表于 2022-9-6 02:10
目前知道两种,一种是矩阵加二极管方式,另一种是稚辉君最近弄的键盘项目,用74HC165并转串,3个IO检测8个 ...

二极管个什么方式。能详细讲讲吗?74HC165估计板子上放不下。
回复

使用道具 举报

210

主题

1044

回帖

1684

积分

至尊会员

More we do, more we can do.

积分
1684
发表于 2022-9-6 12:52:56 | 显示全部楼层
矩阵按键支持任意组合
回复

使用道具 举报

3

主题

66

回帖

75

积分

初级会员

积分
75
发表于 2022-9-7 08:27:53 | 显示全部楼层
参考Micrium的键盘程序,写的非常规整
回复

使用道具 举报

39

主题

199

回帖

326

积分

高级会员

积分
326
 楼主| 发表于 2022-9-7 16:34:01 | 显示全部楼层
R1,R2,R3需要配置先成浮空输入,然后C1,C2,C3配置成下拉输入。
引脚检测到高电平说明被按下。

逐行扫描的时候,把其中一路ROW配置成推挽输出高电平,其他的依旧配置成浮空输入。

这样子去逐行扫描,就可以实现任意IO组合键了。
回复

使用道具 举报

39

主题

199

回帖

326

积分

高级会员

积分
326
 楼主| 发表于 2022-9-7 17:41:38 | 显示全部楼层
BaseApp.7z (994.55 KB, 下载次数: 29)
这是我最后的工程。模仿安富莱的按键FIFO魔改的一个矩阵按键FIFO。
支持单击,双击,长按,组合键。

回复

使用道具 举报

0

主题

20

回帖

20

积分

新手上路

积分
20
发表于 2022-9-30 15:06:56 | 显示全部楼层
78028048 发表于 2022-9-7 08:27
参考Micrium的键盘程序,写的非常规整

有链接可以分享吗      
回复

使用道具 举报

39

主题

199

回帖

326

积分

高级会员

积分
326
 楼主| 发表于 2022-10-12 16:27:43 | 显示全部楼层
会飞的猪_2020 发表于 2022-9-7 17:41
这是我最后的工程。模仿安富莱的按键FIFO魔改的一个矩阵按键FIFO。
支持单击,双击,长按,组合键。

这个例程里的驱动代码有问题,它是5ms阻塞的。
后来改成了用状态机去实现了一个非阻塞的。
回复

使用道具 举报

39

主题

199

回帖

326

积分

高级会员

积分
326
 楼主| 发表于 2022-10-12 16:27:43 | 显示全部楼层
会飞的猪_2020 发表于 2022-9-7 17:41
这是我最后的工程。模仿安富莱的按键FIFO魔改的一个矩阵按键FIFO。
支持单击,双击,长按,组合键。

这个例程里的驱动代码有问题,它是5ms阻塞的。
后来改成了用状态机去实现了一个非阻塞的。

drv_matrix_keyboard.zip

4.89 KB, 下载次数:

回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-9 17:42 , Processed in 0.210888 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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