
在机械按键内部都会有弹簧,当我们按下时会发生抖动,这可能导致我们系统对电信号的判断有误。所以可以用状态机进行消抖,我的理解就是在只要按键保持的时间没有达到一定的数值,在这个中间的抖动对归为一种状态。设计START,F1,DOWN,F2这四种状态,只有当计数器记满20ms才会发生相应跳变。
先设计计数模块
对输入的单bit信号进行同步处理

最后用case语句写出4种状态的转变

写出激励文件,观察波形,输入波动的值随意跳动,不能超过20ms,不然认为是稳定的。


在抖动器件输出的状态并没有变化。


当保持20ms之后,输出的信号有相应的改变,与预期设计的一样,还有其他方式的消抖,大家也可以自行研究,用状态机来写还是比较麻烦的。
机械按键因弹簧抖动可能导致误判,通过状态机进行消抖处理。设计START,F1,DOWN,F2四个状态,计数器在20ms内无变化则视为稳定。采用计数模块、同步处理及case语句描述状态转换,实现在抖动期间输出状态不变,保持20ms后输出信号发生变化,符合预期。"
114222844,10538440,Java利用Fastjson递归反序列化复杂嵌套JSON对象,"['Java', '序列化', '反序列化', 'Fastjson', '对象映射']

962

被折叠的 条评论
为什么被折叠?



