标题: 学51单片机-按键的扫描检测与消抖 [打印本页]
作者: jiajiamei 时间: 2015-3-20 23:04
标题: 学51单片机-按键的扫描检测与消抖
触发按键,简称按键,是电路设计中常用的器件之一。种类很多,有贴片式的,有直插式的,有四条腿的,也有两条腿的。一般根据需求,进行高低、大小的选择。
如上图所示,样式非常多。记得我第一次去中发买按键的时候,老板问我要什么样的,我也不知道,就说常用的就行。老板嘿嘿一笑,知道我是新人,就拿了几款常见的给我选。
现在自然不会这么笨,一般来说,选择的参数也就这么几项,尺寸、高度、封装方式。例如我想买一种按键,我就直接问老板:6*6*5,四脚贴片的按键有木有?
6*6是什么意思?占地面积,单位是毫米,就是说长和宽都是6mm的。
5是高度,按键整体高度,单位是毫米。要求精细的,会说明按键座的高度和按键头的高度。
国产按键最上面的那个按键头一般都是硬塑料的,韩国、日本还有台湾的按键,有很多是硅胶的头,按的时候手感挺不错的,不过价格也略贵。
什么样的按键是好的按键?我跟一个卖了十多年货的老板聊过这个问题,抛开用料问题,就说触发的效果,只要买的时候按一下那个按键,听它那个声音,声音越清脆、越响,效果越好,当然了,价格越贵。
接下来说应用电路,如下图所示,这是常见的应用电路:
检测方式有两种,一种是扫描检测,另一种是中断检测。这次先说第一种,什么是扫描检测?
就是单片机每隔一段时间,就去检测一下IO口的状态,未触发的时候,该引脚是高电平,触发的时候是低电平。
有人会有疑问,这种方式会不会有遗漏?基本不会,因为单片机以微秒甚至纳秒的级别运行指令,而触发一次按键至少需要几十毫秒,汽车电子里面用到的触发按键,它的触发时间到了100毫秒。只要扫描次数足够,基本不会有遗漏。
什么是消抖?检测出键闭合后执行一个延时程序,5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。
为什么要消抖?因为按键按下或者抬起时,电平会有剧烈的抖动,这些抖动会对按键的状态判断造成干扰。因此要消抖。
这次的程序用按键触发LED,每次按下的时候,LED的状态进行翻转。
好了,废话少说,上程序
今天先写这些,明个见!
作者: un51hei 时间: 2018-5-10 17:03
我在实验的时候把延时加到30ms,按键就没有用处了,为什么啊
作者: hjc5035 时间: 2023-1-6 15:45
这是个典型的51单片机,P3口内部电路并不是漏极开路。
我不明白在接按键时在外部接一个上拉电阻的作用是什么呢?
不接的话会有什么问题?
作者: wukouyyq 时间: 2023-1-29 17:04
不接上拉电阻 ,有可能出现混乱,就是说不按按键时,引脚可能是“0”,也可能是“1”,
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |