按键(键盘)消抖

按键电路:下图是神舟三号stm32开发板中的按键原理图。由图可知,按键按下时GPIO端口清零 。

 

 

 

 



按键消抖



理想情况下按键按下弹起过程是一个理想的方波,如下图2。

 

 

但通常的按键所用开关为机械弹性开关,由于机械触点的弹性作用在闭合及断开的瞬间均伴随有一连串的抖动,如下图3。

抖动时间的长短由按键的机械特性决定,一般为5ms~10ms这是一个很重要的时间参数,在很多场合都要用到。



 

为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。按键的抖动,可用硬件或软件两种方法。

<1> 硬件消抖:在键数较少时使用。下图所示的RS触发器为常用的硬件去抖。

 


1°  按键并上RS触发器。

 

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

 

2°   在按键旁边直接并上一个电容。

 

利用电容的几分作用让方波边沿不会产生毛刺。



<2> 软件消抖:如果按键较多时使用。

原理:检测出键闭合后执行一个5ms~10ms的延时程序,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。

 

下面是stm32的一个防抖部分例程



 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值