Crystalline 发表于 2023-12-27 19:44:39

按键扫描优化方法

按键扫描怎么样才能做的更精准呢?普遍都是延时20ms消抖,或者说调整延时时间来降低误触发的概率。广大网友有什么更好的办法?

神农鼎 发表于 2023-12-28 11:44:16

假定主循环时间在 【50mS ~ 10mS】
那就查询,主循环中查询到连续2次读按键是按下的状态
就认为有该按键事件 !
处理完该按键事件后,要判断该按键是否已被释放

xxkj2010 发表于 2023-12-28 08:52:11

本帖最后由 xxkj2010 于 2023-12-30 15:17 编辑

我以为是技术分享,原来是求助贴。
网上可以找到一些方法,我试过用定时器来协助检测按键,比直接用普通延时delay_ms(20)复杂些。

社区闲人 发表于 2023-12-28 09:26:29

仅仅按键扫描就使用定时器,很奢侈。我用累计循环次数进行按键扫描。

zhudean11 发表于 2023-12-28 09:45:32

社区闲人 发表于 2023-12-28 09:26
仅仅按键扫描就使用定时器,很奢侈。我用累计循环次数进行按键扫描。

可否分享个例程,谢谢!

zhudean11 发表于 2023-12-28 09:46:00

社区闲人 发表于 2023-12-28 09:26
仅仅按键扫描就使用定时器,很奢侈。我用累计循环次数进行按键扫描。

是的,定时器资源必定有限

_奶咖君_ 发表于 2023-12-28 10:08:29

这个消抖,要么增加硬件电路,,,要么软件处理,,,你这里看到还是普遍延时,,,那还是用用定时器的那种把。
给人机交互接口一个定时器用也不算太奢侈,,毕竟可以用作定时器的片上的资源还是很多的。。

myliuyu 发表于 2023-12-28 11:15:46

amobbs里有几个关于按键的帖子挺不错的可以去参考下

乘风飞扬 发表于 2023-12-28 15:21:29

按键识别
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5753
(出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)

这个帖子也有进行过相关讨论,可以参考一下。
使用定时器做时间片任务调度,或者知道主循环多少时间执行一次的话,就可以设置按键循环扫描次数。

社区闲人 发表于 2023-12-28 16:00:29

zhudean11 发表于 2023-12-28 09:45
可否分享个例程,谢谢!

【分享】新型的按键扫描程序 + 累计循环次数。不占用定时器
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5936
(出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)
页: [1] 2 3
查看完整版本: 按键扫描优化方法