`
anlx27
  • 浏览: 491475 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
按键电路:下图是神舟三号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的一个防抖部分例程



 

 

 

 

  • 大小: 12.7 KB
  • 大小: 16 KB
  • 大小: 20 KB
2
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics