EDA365电子论坛网
标题: 学51单片机-按键的扫描检测与消抖 [打印本页]
作者: Terran 时间: 2022-9-26 10:00
标题: 学51单片机-按键的扫描检测与消抖
本帖最后由 Terran 于 2022-9-26 16:50 编辑
/ x9 j f, _% Y6 x* {5 T) q7 F. z. J6 h+ A4 S; m9 @+ [
触发按键,简称按键,是电路设计中常用的器件之一。种类很多,有贴片式的,有直插式的,有四条腿的,也有两条腿的。一般根据需求,进行高低、大小的选择。(采购图)
/ }% ~& X5 t( i7 @6 `- N
如图所示,样式非常多。记得我第一次去中发买按键的时候,老板问我要什么样的,我也不知道,就说常用的就行。老板嘿嘿一笑,知道我是新人,就拿了几款常见的给我选。
现在自然不会这么笨,一般来说,选择的参数也就这么几项,尺寸、高度、封装方式。例如我想买一种按键,我就直接问老板:6*6*5,四脚贴片的按键有木有?
6*6是什么意思?占地面积,单位是毫米,就是说长和宽都是6mm的。
5是高度,按键整体高度,单位是毫米。要求精细的,会说明按键座的高度和按键头的高度。
国产按键最上面的那个按键头一般都是硬塑料的,韩国、日本还有台湾的按键,有很多是硅胶的头,按的时候手感挺不错的,不过价格也略贵。
什么样的按键是好的按键?我跟一个卖了十多年货的老板聊过这个问题,抛开用料问题,就说触发的效果,只要买的时候按一下那个按键,听它那个声音,声音越清脆、越响,效果越好,当然了,价格越贵。
接下来说应用电路,如下图所示,这是常见的应用电路:
检测方式有两种,一种是扫描检测,另一种是中断检测。这次先说第一种,什么是扫描检测?
就是单片机每隔一段时间,就去检测一下IO口的状态,未触发的时候,该引脚是高电平,触发的时候是低电平。
有人会有疑问,这种方式会不会有遗漏?基本不会,因为单片机以微秒甚至纳秒的级别运行指令,而触发一次按键至少需要几十毫秒,汽车电子里面用到的触发按键,它的触发时间到了100毫秒。只要扫描次数足够,基本不会有遗漏。
什么是消抖?检测出键闭合后执行一个延时程序,5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。
为什么要消抖?因为按键按下或者抬起时,电平会有剧烈的抖动,这些抖动会对按键的状态判断造成干扰。因此要消抖。
这次的程序用按键触发LED,每次按下的时候,LED的状态进行翻转。
好了,废话少说,上程序
5 @# h' j" L# m8 b7 | K4 O, b9 x* v0 R- s8 y4 x9 B5 U$ @6 R# O
作者: jack_are 时间: 2022-9-26 11:30
按键旁边,就加上一个电容,就可以了。硬件防抖,最好了
作者: Crash 时间: 2022-9-26 15:24
软件消抖,用一个延时程序,进行5ms~10ms的延时,比硬件消抖,少使用一些元器件,降低了成本。
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) |
Powered by Discuz! X3.2 |