![](http://d.aap5.com/20230209/t01e556a1c4054a76f6.webp)
按键消来自抖通常的按键所用开关为机械弹性开关,当机360百科械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会妒印务基马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖农古动现象,为了不产生这种现象而作的措施就是表按键消抖。
- 中文名 按键消抖
- 外文名 removing jo ggle for push button
- 性质 消抖
- 属性 按键
- 抖动时间 一般为5ms~10ms
原因
在机械按键的触点闭合和断开时,都会产生抖动,为了保证系统能正确识别按键的开来自关,就必须对按键的抖动进行处理固。
按键的抖动对于人类来说是感觉不到的,但对单片机来说,则是完全可以感应到的,方效云而且还是一个很“漫长”的过程,因为单片机处理的速度在“微秒”级,而按键抖动的时间至少在“毫秒”级。
单片信危表众划机如果在触点抖动期间检测按键的通断状态,则可能导致判断出错,即按键一次按下或重程所害益英火欢娘绍释放被错误地认为是多次操作,从而引起误处理。因此,为了确保单片机对一次按键动作只作一次响应,就必须考虑如何消除按键抖动的影响。
抖动时间
抖动时济传它克间的长短由按键的机械特360百科性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次全紧秋我年孩谓表处理,必须去除键抖动。在键闭合乙爱剧斤刘觉利稳定时读取键的状身素宗话露句红眼脸端态,并且必须判别到键释放稳定后再作处理。
![](http://d.aap5.com/20230209/t0113fd125ce9ac752d.jpg)
方法
消抖是为了避免在按键按下或是抬起时电平剧烈抖动带来的影响。按键的消抖,可用硬件或软件两种方法。
硬件消抖
在键数较干少时可用硬件方法消除键抖动。下图所示的RS触发器为常用的硬件去抖。图中跑孔轻管岁黑两个"与非"门构成一个RS触发来自器。当按键未按下360百科时,输出为0;当键按下时,输出为1。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),只要按键不返回原始状态A,双稳态电路的状态不改变,输出保提节事诉持为0,不会产生抖动的波形。也就是说,即使跟扩植报B点的电压波形是抖动级元金即巴术席五形宪的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。
![](http://d.aap5.com/20230209/t01e0bbc93fe2d2ee68.jpg)
软件消抖
如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延轮点顶皮掉般关责育处地时程序,5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处置克坐班终好指具理程序。
一般来说,软件消抖的方法是不断检测按键值,直到按键值稳定。实现方法:假设未按键时输入1,按键后输入为0,抖动时不定。可以做以下检测:检测到按键输入为0之后,延时5ms~10ms之规固族材画,再次检测,如果按键还为0,那么就认为有按键输入。延时的5ms~1错气氧众般工领女龙才止0ms恰好避开了抖动期。
其他关线音血丝翻考艺攻营代相关
在用基于Verilog语言的时序逻辑电路设计按键消抖电路时,通常认为机械抖动的最大周期是20ms,对每一个时钟脉冲信号对按键状态进行取样,以区一便进行按键消抖处理。在程序光二请营几矿片福就中设置一个计数器,来采集按键的值,若按键的值在20ms内都怎段每停派向是低电平或者高电平,则可确定这次是人为按键。
Verilog HDL语言特生信实现按键消抖
assig妈支系神用燃类尽奏n key_done = 历(dout1 | dout2 | dout3); //按键消抖输出
always 研@(posedge count[17])
begin
dout1 <= key_in;
dout2 <= dout情课投留1;
dout3 <= dout2;
end
always @(negedge key_done[0])
begin
keyen = ~keyen; //将琴键开关转换为乒乓开关
end
程序中所用的方法是不断检测按键值。每当Count[17]上升沿到来,就进行检测输入信号。其中dout1,dout2,dout3分别为当前、上个Count[17]上升沿、上上个Count[17]上升沿输入数值。正常情况下为1,假如连续三次为0,三个信号作或运算,使得key_done信号为0,出现下降沿,这样就认为是有按键。