Ⅰ 开关抖动 如何消除
开关抖动的处理可以分为硬件去抖动和软件去抖动。
硬件去抖动增加硬件投入
在单片机应用电路中,一般采用软件去抖动,软件去抖动就是执行一段软件延时程序
即键按下先延时消抖,等键稳定后键抬起之前再延时消抖,直至键完全抬起,恢复初始状态。
Ⅱ 单片机按键如何消抖
if (key==0)如果按键按下
for(i=0;i<100;i++):利用延时消除抖动
if (key==0)再次判断按键,如果还是按下状态
(要执行的语句)则执行相关语句
这是常用的软件消抖方法
Ⅲ 单片机的按键开关抖动的产生原因,抖动的特点和如何消除抖动
开关按钮在按下时,表面上只按了一下,但信号的传导并不是单纯的由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当然去处理别的事务)
至于按钮的连按和单按、双按,多按钮同时生效等更复杂的功能,可借助其它的标志位实现。
Ⅳ AT89C51单片机:简述在使用普通按键的时候,为什么要进行去抖动处理,怎么处理
从机械按键的结构来看,在机械按键接触的瞬间,会出现接触或者是没有接触的情况。在机械按键老迹拿化的时候,或者在其他干扰的情况下都会出现按键被误触发的情况。
去除机械按键这种抖动的措施有硬件方法,还有软件方法,硬件方法就是在按键上增加电容去除干扰。在按键上串一个电阻也可以解决静电或者是其他干扰对按键造成的干扰。软件去抖动也是一种非常常宴肢见的去抖动的方法,就是对按键进行多次的检测,每次检测都被按下才认为按键被按下。
(4)单片机如何用软件方法去抖扩展阅读:
单片机使用注意事项:
室外使用的单片机系统或电源线,信号线从室外架空引入室内的要考虑系统的防雷击问题,气体放电管TVS,这类元器件要和抗共模和抗差模干扰的电感配合使用以提高抗干扰效果。
典晌州世型的信号隔离是光电隔离。屏蔽则是用来隔离空间辐射的,对噪声特别大的部件,如开关电源,用金属盒罩起来。对特别怕干扰的模拟电路,如高灵敏度的弱信号放大电路可屏蔽起来。而重要的是金属屏蔽本身必须接真正的地。
Ⅳ 51单片机,用按键实现外部中断,软件如何去抖
外部中断的一般都是采用延时程序,而且延时程序一般是利用定时器做10~15ms的延时去抖,来实现的,而且时间不是特别精确,单片机书上和有关资料上应该都有我写一个参考一下:
void DelayMS(unsigned char a)
{int i;
for(;a>0;a--)
for(i=110;i>梁模0;i--);
}延时约为a毫秒,不过不够准确,可以通过keil软件或者汇编来确立更精确的延时时孝渣卖间!
在中断执行前先做判断:用if语句看看引脚的电平,如果没有跳变,那么再延时判断,如果还没有跳变那么再延时,如此重复;
等到电平跳变了,延时看看是不是电平收其他非操作性因素引起的,比如说电源抖动,延时之后再判断如果的确是跳变了,可巧逗以进行中断后的操作了!
Ⅵ 单片机的软件消抖什么意思
你这是用于按键消抖的代码。
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上辩猛稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产携卜桥生这种现象而作的措施就是按键消抖。
抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。
按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且弊穗必须判别到键释放稳定后再作处理。
按键按下至松开的波形如下图所示:
如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。
Ⅶ 单片机按键去抖动有哪些方法
在按键上增加电容去除干扰,在按键上串一个电阻也可以解决静电或者是其他干扰对按键造成的干扰。
软件去抖动也是一种非常常见的去抖动的方法,就是对按键进行多次的检测,每次检测都被按下,才认为按键被按下。软件去抖动要采用多次采集的方法,中间的间隔可以使用延时或者使用分时的思想来进行去抖动,一般的软件去抖中都是用分时思想去抖动。
(7)单片机如何用软件方法去抖扩展阅读:
注意事项:
按键稳定闭合时间长短是由操作人员决定的,通常都会在100ms以上,刻意快速按的话能达到40-50ms左右,很难再低了。抖动时间是由按键的机械特性决定的,一般都会在10ms以内。
为了确保程序对按键的一次闭合或者一次断开只响应一次,必须进行按键的消抖处理。当检测到按键状态变化时,不是立即去响应动作,而是先等待闭合或断开稳定后再进行处理。
利用电容的充放电特性来对抖动过程中产生的电压毛刺进行平滑处理,从而实现消抖。但实际应用中,这种方式的效果往往不是很好,而且还增加了成本和电路复杂度,所以实际中使用的并不多。