不是抖动,而是 延时!!
抖动引起的现象是:①太灵敏,按一下,似乎按了上百次。②误动作,没按,自己就动了。
延时引起的现象是:①反应迟钝,按了没反应,或者按久一点才能动。②相互影响,这个的按键按下,其他按键就用不了了。
这里说的按键抖动只是说操作者产生的误动作,有可能有,有可能没有,所以要进行一个消抖动的程序防止误操作。
抖动的概念,多是出自
人工手动操作按键,引发的短期的、不连续的、跳变的信号;通俗讲就是,你按下按键,在那微观的接触面,并不是一接触就直接到底的,而是因为在手按动过程的细微摆动,加上按键本身的机械弹性,导致按键接触面在接触的瞬间,出现接触→不接触→接触→不接触……的跳动过程,称为抖动。
抖动带来的程序问题:如果不进行消抖处理,将导致系统多次响应按键,体现一个重复动作的误效果。
消抖可以采用:硬件消抖(线路并联滤波电容,成本增加),软件消抖(软件过滤掉短时间的触发电平,增加程序工作量),多数人采用软件消抖方式。
单片机 按键去抖, 就是单片机的 按键 在正常操作中 在按压过程时 不能一下 完全接通,
就是按压抖动,单片机在接收这种 信息时 会判断错误,所有要去掉这种抖动因素,
去抖 有 硬件 去抖 就是在 按键与单片机连接的 IO 口 加 消抖电容 。
还有 用 软件 去抖 就是 在单片机 接收按键 信息时 多次 判断 相同 才确认 是 与 否。
开关按钮在按下时,表面上只按了一下,但信号的传导并不是单纯的由1直接跳到0。这是由于机械触点断开/闭合时会有抖动,信号如图示会在HIGH和LOW之间抖动。这种抖动对人来说是感觉不到的,但对单片机来说,则是完全可以感应到的。
当按钮被按下时,你所期待的效果应该是:111111111000000000…,
而事与愿违,单片机读到的信号可能会是:111110110110000000…,
这中间连续的1和0过渡处,短暂的几个随机交错出现的01就是我们不期望产生的抖动,虽然我们只按了一下按钮,可能会被电路误读成按了好几下按钮,而给人的感觉就是有时候按钮会不灵。消抖的目的就是为了要除去信号在高低电位之间弹跳所造成的不正确输入,就是交错出现的01那段,一般抖动持续的时间是3-10毫秒。所以简单的去抖动操作,只要在这段抖动出现的时间跨度两端进行两次按钮状态检测即可:
假设放开按钮信号为1,按下为0,
那么当首次检测到按钮为0,过10ms再次检测,若依然为0,按钮按下有效;若为1,说明为抖动,去除。
更可靠,更灵敏的消抖做法为:
首次检测到按钮为0后,以后的3-5ms持续检测,若检测到信号一直为0,则按钮有效,若中间有一次不为0,时间清0,重新计时,直到连续3-5ms按钮信号一直为0,方为有效。(补充一下,持续检测的意思,并不是让你把全部的CPU时间全部花在这上面,否则这几ms时间内单片机相当于死机了,影响其它进程,而是间隔性地采样一下,比如5ms之内检测10次,10次全为0有效,其它时间CPU当然去处理别的事务)
至于按钮的连按和单按、双按,多按钮同时生效等更复杂的功能,可借助其它的标志位实现。
单片机按键抖动是什么意思的介绍就聊到这里吧,感谢您花时间阅读,谢谢。
本文标签:单片机按键抖动是什么意思