重温FPGA开发18

基于状态机的按键消抖

课程重点:学会分析状态

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

理想中认为是,上面的状态,但是实际可能是下面的状态。

首先按键分为几个工作状态:
1 没有被按下,空闲静止态,高电平
2 按下过程中,抖动过程,会高低电平多次变化
3 按下过后,抖动结束,处于按下静止态,输出低电平
4 释放过程中,抖动过程,会高低电平多次变化,最终稳定在高电平

按下过后开始计时,如果在没有达到20ms的情况下,出现了上升沿、高电平。就认为这是一次抖动直到低电平持续时间超过20ms,才认为按键稳定了,抖动结束了。

  1. 空闲态,等待按键按下(等待下降沿),一旦出现下降沿,就开始20ms的计时
  2. 按下消抖状态:20ms的计时状态,在这个状态里,一边计时,一边检测有没有出现上升沿,如果有出现上升沿,回到空闲态;如果计时满20ms,没有出现上升沿,发出按键按下的通知信号。
  3. 等待释放:等待按键释放(等待上升沿),一旦出现上升沿,就开始20ms的计时。
  4. 释放消抖状态:20ms的计时状态,在这个状态里,一边计时,一边检测按键有没有出现下降沿,如果出现下降沿,则回到等待释放状态;如果计时满20ms没有出现下降沿,发出按键释放的通知信号。

状态转移图绘制:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值