自学内容网 自学内容网

基于FPGA的按键消抖

按键工作原理

当KEY1按下时,整条电路就会导通,这个时候KEY1就是低电平;

当KEY1松开时,整条电路就会断开,这个时候KEY1就是高定平;

我们可以通过判断KEY1的高低电平来判断按键是否被按下。 

为什么按键消抖 

由于机械按键的物理特性缘故,按键在按下的过程中,会出现一段时间的抖动,同时在放开按键的过程中也出现一段时间的抖动,这就导致在判断时候可能检测为多次的按键按下,一般我们认为检测到一次按键为低电平,就可以认为按键被按下了,所以我们在使用按键时必须进行消抖,以保证按键被按下时只检测到一次低电平。

图1是未消消抖,可以看到按键在按下和松开是会存在抖动,一般是在20ms左右,如果在这个抖动区间对按键进行判断就会出现多次按下的结果,影响实际应用。

 图2是按键消抖后的结果,我们判断到抖动后,做一个固定的时间延迟,延迟之后对按键进行对应的采样判断即可。

 

按键框计图 

 key_debouncer模块实现计数功能:当按键输入有变化时,计时器清零,否则就累加,直到加到一个预定值(例如 10ms),就认为按键稳定,输出按键值,这样就得到以后没有抖动的按键值。

edge_detect:对输出的稳定按键值做上升沿或者下降沿判断就可以了。

 系统程序框架

本实验是通过按键来控制流水灯的变化,每当按键按下一次,流水灯就变化一次。

视频讲解可以关注B站账号


原文地址:https://blog.csdn.net/weixin_45962327/article/details/137449350

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!