标题: 单片机组合键程序的问题 [打印本页]

作者: 的事发生的    时间: 2022-5-16 21:11
标题: 单片机组合键程序的问题
朋友们,我的51单片机行列式按键可以单独检测到每一个按键,但是我想做个复合键(同时按下两个按键,单独每个按下是都正常,但是2个同时按下对应程序就不执行了,键码是没问题的),是什么原因呢?

作者: 的事发生的    时间: 2022-5-16 21:26
电平都是正常的,我用万用表检测过了
作者: 张天师    时间: 2022-5-16 22:29
如果所有按键功能都是按下执行功能,是不能实现组合键功能的。只有把单键设为弹起(释放)执行,组合键设为按下执行就可以了
作者: yaoyao2022    时间: 2022-5-16 22:31
你代码逻辑的问题,阻塞cpu 太久了,建议分享你的代码。
作者: lkc8210    时间: 2022-5-17 10:17
没有代码,盲猜你是用了高低位反转法或单行扫4列扫4次,应该改用单行单列扫16次
作者: yzwzfyz    时间: 2022-5-17 10:25
程序架构不合理,建议选画出逻辑框图,并走通它,而后再写程序。
作者: 的事发生的    时间: 2022-5-17 16:06
谢谢各位的建议,我再研究下
作者: 的事发生的    时间: 2022-5-17 16:07
lkc8210 发表于 2022-5-17 10:17
没有代码,盲猜你是用了高低位反转法或单行扫4列扫4次,应该改用单行单列扫16次

是的,我是用的行扫描,扫4行
作者: 的事发生的    时间: 2022-5-17 16:08
张天师 发表于 2022-5-16 22:29
如果所有按键功能都是按下执行功能,是不能实现组合键功能的。只有把单键设为弹起(释放)执行,组合键设为 ...

我试下您的建议,但是原因是什么呢?
作者: 188610329    时间: 2022-5-17 16:43
虽然未见代码, 可以确定的是, 代码解析出错.  你用 解析一个键的方式,去解析多个键, 必定是错误的.
举个简单的例子,  按键1, 按键2,  按键1+按键2   你如何定义的 键值?  说的再简单一点,    key1down, key2down,  (key1+key2)down 你如何区分? 说的再直白一点, 你要把 按键1+按键2 定义为按键3。能否理解?
作者: 名字不是重点    时间: 2022-5-17 17:20
的事发生的 发表于 2022-5-17 16:08
我试下您的建议,但是原因是什么呢?

因为从微观上讲,是不存在2个键“同时按下”的,也就是你说的“组合键”
作者: Hephaestus    时间: 2022-5-17 19:42
矩阵键盘想要实现组合键,不仅仅要软件支持,硬件也必须支持,一般的矩阵根本就识别不了组合键。给你个能识别的矩阵键盘电路图。

作者: 的事发生的    时间: 2022-5-26 18:00
188610329 发表于 2022-5-17 16:43
虽然未见代码, 可以确定的是, 代码解析出错.  你用 解析一个键的方式,去解析多个键, 必定是错误的.
举个 ...

送3高1低,检测回收的电平,交叉定位就确定键码了,1列为低和2列同时为低感觉不应该影响按键的判断阿
作者: 的事发生的    时间: 2022-5-26 18:03
Hephaestus 发表于 2022-5-17 19:42
矩阵键盘想要实现组合键,不仅仅要软件支持,硬件也必须支持,一般的矩阵根本就识别不了组合键。给你个能识 ...

谢谢您给的电路,硬件上我这里由于某些原因不能改变,它系统里又有组合键的要求
作者: 的事发生的    时间: 2022-5-26 18:04
名字不是重点 发表于 2022-5-17 17:20
因为从微观上讲,是不存在2个键“同时按下”的,也就是你说的“组合键”

是不是就是因为我们无法确保两个键真的是在同一时刻按下的原因?
作者: 名字不是重点    时间: 2022-5-27 17:08
的事发生的 发表于 2022-5-26 18:04
是不是就是因为我们无法确保两个键真的是在同一时刻按下的原因?

那倒不是。
作者: 名字不是重点    时间: 2022-5-27 17:11
检测不到“同时按下”,但可以检测到“同时按着”
一次按键过程有:按下瞬间、持续按着、放开瞬间、完全放开。。。这些个状态。就看你要用那个状态了。
作者: laowang123222    时间: 2022-5-27 22:47
把扫描程序放到中断里试试




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1