微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机的消抖

单片机的消抖

时间:11-25 来源:互联网 点击:
机械抖动: 按键按下时,电平的变化并不是马上到位,而是会有一个不稳定的状态过程,再进入电平稳定状态。
软件消抖:如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序
可以在去抖程序里加入检测松手程序例如 …… …… if(!key) //检测键盘是否按下 delay()://去抖延时一般是50ms if(!key)//再次检测键盘是否按下 ×××++: //这里写数码管加"1"程序 while(key);//加入写句,目的是等待key变为原来的状态才会执行下一条指令!

1、按键在按下的时候、由于机械连接的不稳定,导致刚刚被按键连通的电路中出现电平抖动。 2、在某些情况下,例如系统受到外部震动,也会在按键电路中出现电平抖动,但这种抖动不是控制者所希望的操作,如果没有防抖动程序,那么系统会因这种不希望出现的干扰而错误动作。 3、为了避免系统误判,可以编写防抖动程序。程序流程的文字说明如下(假设按键按下后,低电平送到单片机): (1)是否有低电平输入(按键电路按键被按下了吗)?如果是,到(2)步执行;不是,继续执行(1) (2)延时等待(可以使用定时器或非定时器都可以),然后执行(3)步 (3)是否有低电平输入?是的话,执行后面的其他程序;不是,则跳转到(1)步执行 4、说明:干扰抖动的持续时间很短,为了防止(1)中的低电平是系统内的干扰抖动,则延时等待一会,然后判断是否真的按键按下。
并联电容消抖:
用10K的上拉电阻与按键串联,然后按键并联一个去抖电容,以用来消除按键的机械抖动 电容的计算方法如下: 电容的容值是根据机械按键的触点抖动频率而定,一般机械按键的抖动频率为100Hz左右,当按键闭合抖动时接触时间在毫秒级,根据电容充放电的时间t=0.7*根号RC R=10K,C选0.1uF,电容的充放电时间约20ms,大于抖动时间,可将抖动滤除掉 通常电容C选取0.01uF~1uF
硬件消抖2:在键数较少时可用硬件方法消除键抖动。下图所示的RS触发器为常用的硬件去抖。

图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top