新闻中心

EEPW首页 > 嵌入式系统 > 牛人业话 > 【从零开始走进FPGA】非同于MCU的独立按键消抖动

【从零开始走进FPGA】非同于MCU的独立按键消抖动

作者:时间:2015-03-02来源:网络收藏
编者按: 进入电子,无处不用到按键, FPGA中的按键消抖动更是非同一般,并针对不同情况有相应的对策。

  简单的说,进入了电子,不管是学纯模拟,还是学单片机,DSP、ARM等处理器,或者是我们的,一般没有不用到按键的地方。按键:人机交互控制,主要用于对系统的控制,信号的释放等。因此在这里,上应用的动,也不得不讲!

本文引用地址:http://www.eepw.com.cn/article/270304.htm

  一、为什么要消抖动


wps_clip_image-30136


  如上图所示,在按键被按下的短暂一瞬间,由于硬件上的抖动,往往会产生几毫秒的抖动,在这时候若采集信号,势必导致误操作,甚至系统崩溃;同样,在释放按键的那一刻,硬件上会相应的产生抖动,会产生同样的后果。因此,在模拟或者数字电路中,我们要避免在最不稳定的时候采集信号,进行操作。

  对此一般产用消抖动的原理。一般可分为以下几种:

  (1)延时

  (2)N次低电平计数

  (3)低通滤波

  在数字电路中,一般产用(1)(2)种方法。后文中将详细介绍。

  二、各种消抖动

  1. 模拟电路

  对于模拟电路中,一般消抖动用的是电容消抖动或者施密特触发等电路,再次不做具体介绍。施密特触发电路如下所示,具体可参考百度文库:http://wenku.baidu.com/view/c77025d9ce2f0066f5332276.html


wps_clip_image-10731



wps_clip_image-976


  2. 单片机中

  对于单片机中的按键消抖动,本节Bingo根据自己当年写过的单片机其中的一个代码来讲解,代码如下所示:

  unsigned char key_scan(void)

  {

  if(key == 0) //检测到被按下

  {

  delay(5); //延时5ms,消抖

  if(key != 0)

  retrurn 0; //是抖动,返回退出

  while(!key1); // 确认被按下,等下释放

  delay(5); //延时5ms,消抖

  while(!key1); //确认被释放

  return 1; //返回按下信号

  }

  return 0; //没信号

  }

  针对以上代码,消抖动的顺序如下所示:

  (1)检测到信号

  (2)延时5ms,消抖动

  (3)继续检测信号,确认是否被按下

  a) 是,则开始等待释放

  b) 否,则返回0,退出

  (4)延时5ms,消抖动

  (5)确认,返回按下信号,退出

  当然在单片机中也可以循环计数来确认是否被按下。Bingo认为如此,太耗资源,因此再次不做讲述。

fpga相关文章:fpga是什么



上一页 1 2 3 下一页

关键词: FPGA MCU 按键消抖

评论


相关推荐

技术专区

关闭