找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1556|回复: 17
收起左侧

单片机组合键程序的问题

[复制链接]
ID:811381 发表于 2022-5-16 21:11 | 显示全部楼层 |阅读模式
朋友们,我的51单片机行列式按键可以单独检测到每一个按键,但是我想做个复合键(同时按下两个按键,单独每个按下是都正常,但是2个同时按下对应程序就不执行了,键码是没问题的),是什么原因呢?
回复

使用道具 举报

ID:811381 发表于 2022-5-16 21:26 | 显示全部楼层
电平都是正常的,我用万用表检测过了
回复

使用道具 举报

ID:814525 发表于 2022-5-16 22:29 | 显示全部楼层
如果所有按键功能都是按下执行功能,是不能实现组合键功能的。只有把单键设为弹起(释放)执行,组合键设为按下执行就可以了
回复

使用道具 举报

ID:1026496 发表于 2022-5-16 22:31 | 显示全部楼层
你代码逻辑的问题,阻塞cpu 太久了,建议分享你的代码。
回复

使用道具 举报

ID:161164 发表于 2022-5-17 10:17 来自手机 | 显示全部楼层
没有代码,盲猜你是用了高低位反转法或单行扫4列扫4次,应该改用单行单列扫16次
回复

使用道具 举报

ID:123289 发表于 2022-5-17 10:25 | 显示全部楼层
程序架构不合理,建议选画出逻辑框图,并走通它,而后再写程序。
回复

使用道具 举报

ID:811381 发表于 2022-5-17 16:06 | 显示全部楼层
谢谢各位的建议,我再研究下
回复

使用道具 举报

ID:811381 发表于 2022-5-17 16:07 | 显示全部楼层
lkc8210 发表于 2022-5-17 10:17
没有代码,盲猜你是用了高低位反转法或单行扫4列扫4次,应该改用单行单列扫16次

是的,我是用的行扫描,扫4行
回复

使用道具 举报

ID:811381 发表于 2022-5-17 16:08 | 显示全部楼层
张天师 发表于 2022-5-16 22:29
如果所有按键功能都是按下执行功能,是不能实现组合键功能的。只有把单键设为弹起(释放)执行,组合键设为 ...

我试下您的建议,但是原因是什么呢?
回复

使用道具 举报

ID:624769 发表于 2022-5-17 16:43 | 显示全部楼层
虽然未见代码, 可以确定的是, 代码解析出错.  你用 解析一个键的方式,去解析多个键, 必定是错误的.
举个简单的例子,  按键1, 按键2,  按键1+按键2   你如何定义的 键值?  说的再简单一点,    key1down, key2down,  (key1+key2)down 你如何区分? 说的再直白一点, 你要把 按键1+按键2 定义为按键3。能否理解?
回复

使用道具 举报

ID:824490 发表于 2022-5-17 17:20 | 显示全部楼层
的事发生的 发表于 2022-5-17 16:08
我试下您的建议,但是原因是什么呢?

因为从微观上讲,是不存在2个键“同时按下”的,也就是你说的“组合键”
回复

使用道具 举报

ID:883242 发表于 2022-5-17 19:42 | 显示全部楼层
矩阵键盘想要实现组合键,不仅仅要软件支持,硬件也必须支持,一般的矩阵根本就识别不了组合键。给你个能识别的矩阵键盘电路图。
51hei图片20220517194042.png
回复

使用道具 举报

ID:811381 发表于 2022-5-26 18:00 | 显示全部楼层
188610329 发表于 2022-5-17 16:43
虽然未见代码, 可以确定的是, 代码解析出错.  你用 解析一个键的方式,去解析多个键, 必定是错误的.
举个 ...

送3高1低,检测回收的电平,交叉定位就确定键码了,1列为低和2列同时为低感觉不应该影响按键的判断阿
回复

使用道具 举报

ID:811381 发表于 2022-5-26 18:03 | 显示全部楼层
Hephaestus 发表于 2022-5-17 19:42
矩阵键盘想要实现组合键,不仅仅要软件支持,硬件也必须支持,一般的矩阵根本就识别不了组合键。给你个能识 ...

谢谢您给的电路,硬件上我这里由于某些原因不能改变,它系统里又有组合键的要求
回复

使用道具 举报

ID:811381 发表于 2022-5-26 18:04 | 显示全部楼层
名字不是重点 发表于 2022-5-17 17:20
因为从微观上讲,是不存在2个键“同时按下”的,也就是你说的“组合键”

是不是就是因为我们无法确保两个键真的是在同一时刻按下的原因?
回复

使用道具 举报

ID:824490 发表于 2022-5-27 17:08 | 显示全部楼层
的事发生的 发表于 2022-5-26 18:04
是不是就是因为我们无法确保两个键真的是在同一时刻按下的原因?

那倒不是。
回复

使用道具 举报

ID:824490 发表于 2022-5-27 17:11 | 显示全部楼层
检测不到“同时按下”,但可以检测到“同时按着”
一次按键过程有:按下瞬间、持续按着、放开瞬间、完全放开。。。这些个状态。就看你要用那个状态了。
回复

使用道具 举报

ID:1013784 发表于 2022-5-27 22:47 | 显示全部楼层
把扫描程序放到中断里试试
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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