实验05按键消抖

合集下载

按键消除抖动的措施

按键消除抖动的措施

按键消除抖动的措施
按键消除抖动是指在使用电子设备中,当按下按键后可能会出
现的多次触发信号的问题。

为了解决这个问题,可以采取以下措施:
1. 软件滤波,在程序设计中,可以采用软件滤波的方法来消除
按键抖动。

软件滤波可以通过延时、状态机等方式来确保只有真正
的按键按下才会触发相应的操作,而忽略短暂的抖动信号。

2. 硬件滤波,在电路设计中,可以加入电容、电阻等元件来实
现硬件滤波,通过延长按键信号的上升沿或下降沿时间,从而消除
按键抖动带来的干扰。

3. 使用稳定的按键元件,选择质量好、稳定性高的按键元件,
可以减少按键抖动的发生。

4. 金属片设计,在按键设计中,可以添加金属片来增加按键的
稳定性,减少抖动。

5. 硬件消抖器,使用专门的硬件消抖器芯片,这些芯片可以自
动检测和消除按键抖动,提高按键的稳定性。

综上所述,消除按键抖动可以通过软件滤波、硬件滤波、选择稳定的按键元件、金属片设计以及使用硬件消抖器等多种措施来实现。

在实际应用中,可以根据具体情况选择合适的方法或者结合多种方法来解决按键抖动问题。

按键消抖计数原理与测试说明

按键消抖计数原理与测试说明

“按键消抖计数”程序测试与原理说明1程序运行效果说明按下KEY1,数码管上的示数加1。

按下KEY2,数码管上的示数减1。

2程序电路工作原理以及按键抖动原因按键电路示意图(三个按键分别是K1、K2、K3)当按键被按下的时候,电路导通接地,I/O口为低电平;当按键未被下时,电路断开,I/O口保持高电平的。

但一般的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。

因而在闭合及断开的瞬间均伴随有一连串的抖动,假如不加以处理,会导致按键被识别为按下多次。

为了不产生这种现象而作的措施就是按键消抖。

3消抖的方法按键消抖分为硬件消抖和软件消抖。

3.1硬件消抖在键数较少时可用硬件方法消除键抖动。

下图所示的RS触发器为常用的硬件去抖。

硬件消抖电路图图中两个“与非”门构成一个RS触发器。

当按键未按下时,输出为0;当键按下时,输出为1。

此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),只要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。

也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。

这一点通过分析RS触发器的工作过程很容易得到验证。

3.1软件消抖方法1:使用延时如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,5ms~10ms 的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。

当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。

方法2:检测多次可以设定一个检测周期,如果在一个检测周期内,按键被检测为被按下达到了一定次数,则确认为真正被按下。

按键开关去抖动问题

按键开关去抖动问题
按键开关去抖动问
目录
• 引言 • 按键开关抖动的常见解决方法 • 按键开关去抖动的原理 • 去抖动效果的评估和测试 • 实际应用中的按键开关去抖动案例
01
引言
按键开关去抖动的背景和重要性
按键开关在电子设备中广泛应用,但在实际使用中,由 于机械或电气噪声的影响,按键开关可能会出现抖动现 象,即开关状态在短时间内的快速切换。
结合硬件去抖和软件去抖的优点,先通过硬件电路对按键信号进行初步处理,再通过软件算法 进一步去除抖动。
互补滤波法
采用硬件滤波和软件滤波两种方法对按键信号进行互补处理,提高去抖效果。
04
去抖动效果的评估和测试
去抖动效果的评估方法
实际使用评估
在实际使用场景中,观察 按键开关去抖动的表现, 评估其稳定性和可靠性。
在智能家居领域,按键开关被广泛应用于各种智 能设备的控制面板上。由于用户操作频繁,按键 开关容易出现机械疲劳和抖动现象,影响设备的 正常使用。
通过采用去抖动技术,可以有效消除按键开关的 抖动现象,提高设备的响应速度和稳定性,提升 用户的使用体验。
汽车电子中的按键开关去抖动应用
在汽车电子领域,按键开关广泛应用于车载信息娱乐系统、空调控制、车窗升降 等系统中。由于汽车环境的复杂性和使用频率高,按键开关的抖动问题尤为突出 。
实验过程
在实验中模拟按键开关的 抖动情况,记录去抖动电 路的表现和性能数据。
数据处理
对实验数据进行处理和分 析,提取关键性能指标, 如抖动抑制时间、抑制率 等。
结果分析
根据实验结果,分析去抖 动电路的性能表现,评估 其优缺点和适用场景。
实际应用中的按键开关去抖
05
动案例
工业控制中的按键开关去抖动应用

vivado按键消抖原理

vivado按键消抖原理

vivado按键消抖原理按键消抖是指在数字电路中,当按键按下或释放时,由于按键机械开关的特性,会导致电路出现不稳定的信号状态。

这种不稳定状态可能会导致错误的触发,例如出现多次触发或漏触发。

因此,为了确保按键信号的稳定性和可靠性,需要进行按键消抖处理。

按键消抖的原因主要有两个方面。

首先,按键机械开关的接触面存在微小的弹跳现象,当按键按下或释放时,接触面会在短时间内反复接触和分离,导致电路信号出现多次变化。

其次,由于电路中存在的噪声干扰,也会使得按键信号产生抖动。

为了解决按键消抖问题,可以采用硬件和软件两种方法。

硬件方法主要通过添加滤波电路或使用稳定的按键开关来消除按键弹跳现象。

滤波电路可以通过RC电路或者使用专用的按键消抖芯片来实现。

而软件方法主要通过在数字电路中添加按键消抖算法来处理按键信号。

在Vivado中,按键消抖可以通过使用状态机来实现。

状态机是一种用于描述系统行为的模型,可以根据输入信号的状态变化来改变系统的状态和输出。

在按键消抖中,可以使用状态机来检测按键信号的变化,并根据一定的状态转换规则来消除按键弹跳现象。

具体实现时,可以将按键信号作为输入,将按键状态和输出作为状态机的状态和输出。

当按键信号发生变化时,状态机会根据一定的状态转换规则进行状态转换,并输出消抖后的按键信号。

常用的状态转换规则包括按键按下时状态转换为按下状态,按键释放时状态转换为释放状态,以及连续按键时状态不变。

在Vivado中,可以使用Verilog或VHDL等硬件描述语言来编写状态机代码。

首先,需要定义状态机的输入、输出和状态变量,并初始化各个变量的初始值。

然后,需要编写状态转换规则和输出逻辑,根据输入信号的状态变化来改变状态和输出。

最后,需要将状态机代码综合生成对应的逻辑电路,并进行仿真和验证。

总结起来,按键消抖是数字电路设计中常见的问题,为了确保按键信号的稳定性和可靠性,需要进行按键消抖处理。

在Vivado中,可以使用状态机来实现按键消抖,通过定义状态转换规则和输出逻辑,消除按键弹跳现象。

按键去抖课程设计

按键去抖课程设计

按键去抖课程设计一、课程目标知识目标:1. 学生能理解按键去抖的概念,掌握其工作原理;2. 学生能了解按键去抖在电路设计和编程中的应用;3. 学生能掌握相关电子元件的功能和电路连接方式。

技能目标:1. 学生能运用所学知识,设计并搭建简单的按键去抖电路;2. 学生能编写简单的程序,实现对按键去抖功能的控制;3. 学生能通过实际操作,分析并解决按键去抖过程中遇到的问题。

情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发创新意识;2. 培养学生动手实践、合作探究的学习态度;3. 培养学生严谨、细致、勇于克服困难的品质。

课程性质:本课程为电子技术实践课程,旨在帮助学生将理论知识与实际操作相结合,提高学生的动手能力和创新能力。

学生特点:学生处于初中阶段,具有一定的物理知识和电子元件基础,对电子技术有一定的好奇心和兴趣。

教学要求:结合学生特点,注重理论与实践相结合,以学生为主体,教师为主导,引导学生主动探究,培养学生的实践能力和创新精神。

通过本课程的学习,使学生能够将所学知识应用于实际生活中,提高解决实际问题的能力。

二、教学内容1. 按键去抖概念及工作原理- 理解按键抖动的产生原因及影响;- 掌握按键去抖的常用方法和技术;- 学习相关电子元件(如电容、电阻、二极管等)的作用和选型。

2. 按键去抖电路设计与搭建- 学习并应用电路图绘制软件;- 设计简单的按键去抖电路;- 搭建电路,进行实际测试和调试。

3. 按键去抖编程控制- 学习编程语言(如C语言、Arduino等)的基本语法;- 编写按键去抖的程序代码;- 调试程序,实现按键去抖功能。

4. 实际应用案例分析- 分析实际应用中按键去抖的解决方案;- 学习如何根据需求选择合适的按键去抖方法;- 探讨按键去抖在电子产品中的重要性。

教学内容安排与进度:第1课时:按键去抖概念及工作原理第2课时:按键去抖电路设计与搭建第3课时:按键去抖编程控制第4课时:实际应用案例分析及总结教材章节及内容:《电子技术基础》第四章第三节:按键去抖技术《电子技术实践》第二章第五节:按键去抖电路设计与搭建《编程语言》第一章:基本语法与结构《Arduino编程与实践》第三章:数字输入输出控制三、教学方法1. 讲授法:- 在介绍按键去抖的概念、工作原理及相关电子元件的基础知识时,采用讲授法进行教学,使学生在短时间内快速掌握理论要点。

按键消抖

按键消抖

状态机实现去抖动原理:按键去抖动关键在弄提取键稳定的电平状态,滤除前沿、后沿抖动毛刺。

对于一个按键信号,可以用一个脉冲对它进行取样,如果连续三次取样为低电平,可以认为信号已经处于键稳定状态,这时输出一个低电平的按键信号。

继续取样的过程如果不能满足连续三次取样为低,则认为键稳定状态结束,这时输出变为高电平。

设计的状态转换图如图所示。

Reset信号有效时,电路进入复位状态s0,这时认为取样没有检测到低电平,在输入取样过程中,每次检测到一个低电平,发生依次向下的状态转移,直到连续检测到三个低电平时,进s3态,这时输出置低(按键信号稳定态),在中间状态s1,s2时,一旦检测到高电平,就进入s0状态,重新检测。

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xiaod isport(clk : in std_logic ;reset : in std_logic ;din : in std_logic ;dout : out std_logic);end entity;architecture rtl of xiaod isTYPE state IS( s0,s1,s2,s3);SIGNAL pre_s, next_s: state;beginprocess( reset, clk )beginif reset = '0' thenpre_s <= s0;elsif rising_edge( clk ) thenpre_s <= next_s;elsenull;end if;end process;process( pre_s, next_s, din ) begincase pre_s iswhen s0 =>dout <= '1';if din = '1' thennext_s <= s0;elsenext_s <= s1;end if;when s1 =>dout <= '1';if din = '1' thennext_s <= s0;elsenext_s <= s2;end if;when s2 =>dout <= '1';if din = '1' thennext_s <= s0;elsenext_s <= s3;end if;when s3 =>dout <= '0';if din = '1' thennext_s <= s0;elsenext_s <= s1;end if;end case;end process ;end rtl;程序中din为要去抖动的热键信号,dou为去抖后输出的稳定信号。

按键消抖的原理

按键消抖的原理

按键消抖的原理一、引言在电子设备中,按键是常见的输入方式。

然而,由于按键的机械结构,当按下或松开按键时,会产生机械弹跳现象,导致信号出现多次跳变,这就是所谓的“按键抖动”现象。

为了避免这种现象对电路造成干扰,需要进行按键消抖处理。

二、什么是按键消抖?按键消抖是指在接收到按键信号后,在一定时间内只处理一次信号,并且保证该信号为有效信号。

其目的是消除因机械结构引起的多次跳变信号。

三、按键消抖的原理1. 机械弹跳原理在了解按键消抖原理之前,需要先了解机械弹跳原理。

当按下或松开一个开关时,由于接触面积有限和金属表面不完全平整等因素影响,开关触点会发生不稳定震荡,并在短时间内反复接通和断开。

这种现象称为“机械弹跳”。

2. 软件处理原理软件处理原理是通过程序来实现对按键状态进行检测和判断的方式。

具体实现方法包括:轮询法、中断法、计时法等。

(1)轮询法轮询法是指通过循环检测按键状态的方式来实现按键消抖。

具体实现方法为:在主程序中设置一个循环,不断检测按键状态,当检测到按键被按下时,进行一定的延时后再次检测按键状态,如果依然是按下状态,则判断为有效信号。

(2)中断法中断法是指通过外部中断来实现对按键状态进行检测和判断的方式。

具体实现方法为:将按键连接到微控制器的外部中断引脚上,在程序中设置好相应的中断服务程序,当检测到外部中断信号时,进入相应的中断服务程序进行处理。

(3)计时法计时法是指通过定时器来实现对按键状态进行检测和判断的方式。

具体实现方法为:当检测到按键被按下时,启动定时器并开始计数,在一定时间内只处理一次信号,并保证该信号为有效信号。

四、硬件处理原理硬件处理原理是通过使用电路元件来实现对按键消抖的方式。

具体包括RC滤波器、Schmitt触发器、反相器等。

1. RC滤波器RC滤波器是将电容和电阻组合在一起,利用电容的充放电特性实现对信号的滤波。

当按键被按下时,由于电容的充放电时间常数较长,可以使机械弹跳信号被滤除。

按键消抖原理

按键消抖原理

按键消抖原理
按键消抖原理是指通过某种方法在按键被按下或松开时,消除或减少按键的抖动现象,使输入信号得到稳定的识别和处理。

在实际应用中,按键在被按下或松开时,由于机械结构的原因,往往会引起按键的不稳定状态,表现为按键在短时间内多次触发开关。

这种按键抖动不仅会导致输入信号的波动,还可能对系统造成误操作或不良影响。

为了解决按键抖动问题,常用的按键消抖原理主要有以下几种:
1. 软件延时消抖:通过在程序中设定一个适当的延时时间,当按键被按下或松开后,延时一段时间再读取按键状态,以判断按键是否稳定。

如果经过延时后按键状态仍然相同,则可以认为按键已经稳定按下或松开,从而减少抖动的影响。

2. 硬件滤波消抖:通过在按键电路上设计滤波器或添加电容元件,可以对按键信号进行滤波处理,去除短时间内的干扰信号,使输入信号更加稳定。

常用的滤波电路包括RC滤波电路、OTA滤波电路等。

3. 状态改变检测消抖:在按键电路中,通过检测按键的状态变化来判断按键是否按下或松开。

当按键在短时间内发生多次状态变化时,只会认为按键状态发生了一次改变,从而忽略了抖动现象。

这种方式适用于按键状态改变的速度较慢的情况。

通过以上的按键消抖原理,可以有效地减少按键抖动现象,提
高按键输入的可靠性和稳定性。

在实际应用中,可以根据具体情况选择适合的原理和方法来实现按键消抖,以满足不同的需求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五按键消抖一. 实验目的1. 掌握QuartusII的硬件描述语言设计方法2. 了解同步计数器的原理及应用3. 设计一个带使能输入、进位输出及同步清零的增1四位N (N<16)进制同步计数器二. 准备知识在按键使用的过程中,常常遇到按键抖动的问题,开关在闭合(断开)的瞬间,不能一接触就一直保持导通(断开),因为开关的机械特性,重要经历接触-断开-再接触-再断开,最终稳定在接触位置,这就是开关的抖动,即虽然只是按下按键一次然后放掉,结果在按键信号稳定前后,竟出现了一些不该存在的噪声,这样就会引起电路的误动作。

在很多应用按键的场合,要求具有消抖措施。

按键抖动与开关的机械特性有关,其抖动期一般为5-10ms。

键按下键稳定前沿抖动后沿抖动图5.1 按键电平抖动示意图按键的消除抖动分为硬件消除抖动和软件消除抖动。

硬件消除抖动一般采用滤波的方法,通常在按键两端并联一个1~10u左右的电容,有时这样也不能完全消除按键的抖动。

软件消除抖动的方法有多种,常用的是延时扫描和定时器扫描。

延时扫描其原理为:检测到按键操作后延时一端时间(如10ms)后,再检测是否为仍然为同样的按键操作状态,如果相同,就认为是进行了按键操作,然后对该操作进行相应的处理。

定时器扫描的原理是:每隔一端时间(几毫秒)扫描一次键盘,如果连续两次(或3次)的所获得的按键状态相同,就输出按键状态,然后再对这种按键状态进行处理,这里的扫描时间间隔和连续判断按键状态的次数是有关系的,一般总时间要大于按键的抖动期。

如果总时间太长,则感觉按键迟钝,太短可能不能完全消除抖动,要根据实际的情况合适的选择。

在实际电路设计中,经常采用的是软硬件相结合对按键进行消除抖动的处理方法。

本实验采用的方法:实验箱按键的硬件电路是共阳极电路,按下按键时输出到FPGA管脚的电平为低电平,松开按键时为高电平。

我们采用5ms的定时器扫描FPGA管脚电平,如果连续3次为低电平时,存储连续按键状态的次数CNT的值加1,直到该计数值等于10(或再大一些),就不再累加(防止长按该值溢出而重新计数),此时认为按键已稳定,输出按键操作标志;在该过程中,一旦FPGA管脚电平为低电平就对CNT复位清零并同时对按键操作标志位复位,即一个异步复位。

本实验采用的方法:实验箱按键的硬件电路是共阳极电路,按下按键时输出到FPGA管脚的电平为低电平,松开按键时为高电平。

我们采用5ms的定时器扫描采样FPGA管脚电平,如果连续3次为低电平时,可以认为此时按键已稳定,输出一个低电平按键信号;继续采样的过程中如果不能满足连续3次采样为低,则认为键稳定状态结束,这时输出变为高电平(连线3次采用信号相“或”),认为按键松开。

其原理图如图5.2所示。

时间间隔可以更小、采样次数更多效果可能会更好,但是增加了硬件的复杂度和资源利用。

CLRNDPRNQ DFF instCLRN DPRNQ DFF inst1CLRN DPRNQDFFinst2OR3inst3VCCKey _inINPUT VCCCLK200Hz INPUT Key _outOUTPUT Key _inCLK200Hz Key _out图5.2 按键抖动硬件原理图本实验的思路为:用按键消抖与不消抖的信号,分别当作时钟信号触发16进制计数器,计数结果用数码管静态显示,比较按键消抖与不消抖的区别。

三. 实验步骤1、 新建工程antiwobble新建文件夹,并在该文件夹下新建工程。

2、 编写硬件描述语言文件将图3.2所示的电路用语言描述出来,并扩展多个通道(多路按键输入,多路消抖信号输出)。

文件名为debounce ,并封装生成模块符号文件。

编写16进制计数器文件CNT16,并封装生成模块符号文件,或添加兆功能计数器模块实现16进制的计数器。

编写译码电路文件DECODE7,并封装生成模块符号文件。

添加计数器分频模块DIV200Hz ,我们需要周期为5ms 的时钟信号,故分频次数240000。

最后生成顶层原理图文件antiwobble 如图5.3所示。

P IN_121VCCkey 1INPUT P IN_122VCC key 2INPUT P IN_164P IN_163P IN_166P IN_165P IN_168P IN_167P IN_170P IN_169seg[7..0]OUTPUTP IN_214P IN_213P IN_216P IN_215P IN_161P IN_162P IN_159P IN_160dig[7..0]OUTPUTup counter modulus 240000clockq[17..0]coutDIV200HzinstAND2inst2G N DKEY_WIDTH 1Parameter Value clk key _in[key _width-1..0]key _out[key _width-1..0]debounceinst1DIN[3..0]DOUT[7..0]DECODE7inst4CLKQ[3..0]CNT16inst3key 2V C C c l o c kI N P U TP IN_28key 1图5.3 按键消抖顶层模块说明:48MHz的系统晶振时钟频率经模240,000的计数器,得到的进位cout,其频率为200Hz,也可以使用其计数值的最高位Q[17]作为消抖模块的时钟信号。

二者的区别是占空比不同。

消抖模块“debounce”使用了参数传递说明语句,以关键词GENERIC引导一个类属参量表,在表中提供总线宽度等静态信息。

类属表说明用于设计实体和外部环境通信的参数和传递信息。

GENERIC语句在所定义的环境中的地位与常数相似,但却能从环境(如外部实体)外部动态地接受赋值,其行为又类似于端口PORT。

其使用本实验见参考程序。

在类属表的“KEY_WIDTH”参数的“Value”栏设为1,就是对一个按键进行消抖处理。

这时其模块输入输出管脚key_in、key_out为1位的逻辑位信号而非总线信号,但其模块间连线可以是总线连线(粗线),也可以是节点连线(细线)。

在debounce程序中,尽管设定了位宽KEY_WIDTH=8,但是在顶层文件中调用该模块时,可以重新更改其位宽设置,编译时以顶层文件的设置进行编译。

尽管在debounce程序中设置的位宽在顶层文件中无效,但必须进行设置,否则debounce文件封装生成模块符号文件时会报错。

Key1经过消抖处理,作为时钟信号触发计数器CNT16,而key2则位经过消抖处理。

3、编译、锁定管脚、再编译指定antiwobble原理图文件为顶层文件。

为了方便锁定管脚,我们先进行编译,发现错误进行纠正,直至成功为止。

锁定管脚(管脚表)再编译,把管脚锁定的信息编译到下载文件中去。

4、下载连接电源,进行下载观察按键key1和key2进行操作时,计数器变化结果的区别,以认识按键存在抖动以及对按键需要进行消抖处理才能使用正常。

四. 实验参考程序程序清单debounce.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_Arith.ALL;USE IEEE.STD_LOGIC_Unsigned.ALL;ENTITY debounce ISGENERIC(KEY_WIDTH:Integer:=8); --参数传递说明语句PORT(clk: IN STD_LOGIC; --系统时钟输入key_in: IN STD_LOGIC_VECTOR(KEY_WIDTH-1 DOWNTO 0); --外部按键输入key_out:OUT STD_LOGIC_VECTOR(KEY_WIDTH-1 DOWNTO 0) ); --按键消抖输出END;ARCHITECTURE one OF debounce ISSIGNAL dout1,dout2,dout3:STD_LOGIC_VECTOR(KEY_WIDTH-1 DOWNTO 0);BEGINkey_out<=dout1 OR dout2 OR dout3;--按键消抖输出PROCESS(clk)BEGINIF RISING_EDGE(clk)THEN --上升沿触发dout1<=key_in; --寄存dout2<=dout1;dout3<=dout2;END IF;END PROCESS;END one;说明:key_out<=dout1 OR dout2 OR dout3;是3个信号“或”。

对总线数据而言,相同的位进行“或”把运算后的结果赋值给输出的相同位。

即key_out[i]<=dout1[i] OR dout2[i] OR dout3[i]。

程序清单debounce.V五. 实验报告1.4位10进制、进位/借位功能、异步复位、使能功能、加减切换的硬件描述语言程序及仿真结果图。

2.理解图2.8所示的RTL电路图的含义。

3.利用10进制计数器设计0~99的百进制计数器。

画出原理图。

4.。

相关文档
最新文档