按键消抖模块(硬件消抖与软件消抖)(自用 仅供参考)

硬件消抖:

在按键个数较少时可用硬件方法消除键抖动。 硬件去抖常见的是使用RS触发器。

图为与非门 RS 触发器。当按键未按下时,输出为 0;当键按下时, 输出为 1。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开 B), 只要按键不返回原始状态 A,双稳态电路的状态不改变,输出保持为 0,不会产生抖动的波形。

即使 B 点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。

软件消抖:

方法一:按下键后,通过计数器计数到一定时间后(等抖动消除,按键完全按下,一般为30ms以上)再进行检测有效的按键信号;

方法二(推荐、避免浪费不必要的时间):若按键信号为低电平有效,则计数器在按键信号为低电平时计数,按键信号在高电平时清零,只有当按键信号保持低电平且计数器计数到20ms时,此时的低电平信号便是有效信号,可以拉高一个clk的flag信号来作为有效脉冲。

问题如下图,时间过长产生了多个有效信号,从而变得错误(只需要一个)?

解决:发现cnt_20ms计数器计数到999_998的次数只有一个,而且最接近999_999,在既保证去抖动时间的前提下使key_flag信号只产生一个脉冲信号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值