以下为本人学习笔记,多个文章总结出的结果,如有错误请留言,谢谢!
按键消抖分为:硬件消抖,软件消抖
(这里写的是软件消抖,不管按键多少都可以使用软件消抖,设计逻辑简单一点)
机械按键的物理特性,按键在按下的过程中,存在一段时间的抖动,同时在释放按键的过程中也会存在抖动,这就导致在识别按键的时候可以检测到多次的按键按下,而通常检测到一次按键输入信号的状态为低电平,就可以确认按键被按下了,所以我们在使用按键时往往需要进行按键消抖,以确保按键被按下一次只检测到一次低电平。
硬件消抖:
硬件消抖这种方式可以适用于在按键数较少时。采用并联电容或者RS触发器。采用并联电容消抖是由于电容两端电压值不可突破,可以是上升沿和下降沿平滑无抖动。
软件消抖:
硬件消抖具有一定的局限性,当按键数量较多时,硬件消抖的方法就不是很实用了。
软件消抖就是检测到按键闭合后执行一个延时程序,机械按键的抖动一般都在20ms之类,只需要延时20ms后再一次去检测按键的状态,如果仍然保持闭合状态,则确认按键按下。当按键释放的时候也要进行一个20ms的延时。
设计思路:
按键按下为低电平开始计数,高电平记零;计数到最大值 - 1时输出key_flag(如果是最大值输出,容易出现多次输出key_flag),计数到最大值,保持最大值,这样就能保证按下不管多长时间,只输出一次按键有效信号。
消抖模块: