使用硬件方式对按键进行消抖处理
单片机的按键消抖与几种按键电路

用其他的各类触发器,锁存器亦可达到消抖效果。 二、 软件消抖 : 通过软件延时 10ms 达到消除抖动的效果,不加文字赘述。 三、 按键电路 : 独立按键
矩阵按键 译码按键 AD 模拟按键 锁定按键
单片机的按键消抖与几种按键电路
一、 硬件消抖 : 按键防抖电路控制电路 所示利用 RC 积分电路来达成杂波的滤除与波形修整的电路(如图 1 )。 在 S1 ON 的瞬间由于接触弹跳的关系,会使 A 点电压呈现高速的断 续现象,再 S1 OFF 时亦然,详(如图 2 所示),然而由于电容两端电压需由 电压经电阻慢慢充电才会上升,使得 B 点电位缓步上升情形:S1 OFF 时亦 然,电容电压经 R 放电,使 B 点电压缓缓下降。此一变化,经史密特反相 修整后,可得一标准负脉波输出,如波
按键在按下的过程中通常会产生一段时间的抖动

按键在按下的过程中通常会产生一段时间的抖动,为了消除这种抖动,一般采取两种方法。
一种为硬件消抖,另一种为软件消抖。
硬件消抖是利用了RS锁存器的相关原理。
如下图所示,开关在B处时,5处为低电平,1处为高电平。
根据与非门“有零出一”的特点,6处为高电平,即2处为高电平。
所以此时3处为低电平。
当开关从B拨到A时,5处变为高电平,一旦1处出现低电平,输出将一直为高电平。
(读者不妨自己假设一下)。
开关在A处时,情况类似。
软件消抖主要是通过延时跳过按键抖动的阶段,检测稳定阶段的情况。
下面是代码。
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity sw_debounce_module isPort ( clk: in STD_LOGIC;rst: in STD_LOGIC;switch : in STD_LOGIC_VECTOR (1downto0);led : out STD_LOGIC_VECTOR (1downto0));end sw_debounce_module;architecture Behavioral of sw_debounce_module issignal tmp : STD_LOGIC_VECTOR (1downto0);signal cnt : INTEGER range0to1000000;constant max : INTEGER :=500000;beginprocess(clk,rst,switch(1),switch(0))beginif(rst = '1') thentmp(1downto0)<="00";cnt <= 0;elseif(switch(0)='1')thenif(cnt <max and clk='1')thencnt <=cnt+1;elsif(cnt = max) thencnt <= 0;end if;if(switch(0)='1')thentmp(0)<=not tmp(0);end if;end if;if(switch(1)='1')thenif(cnt < max and clk='1') thencnt<=cnt+1;elsif(cnt = max) thencnt <= 0;end if;if(switch(1)='1')thentmp(1)<=not tmp(1);end if;end if;end if;end process;led(1downto0)<=tmp(1downto0);end Behavioral;由于时钟频率为50MHZ,延时500000周期即为10ms。
按键消除抖动的措施

按键消除抖动的措施
按键消除抖动是指在使用电子设备中,当按下按键后可能会出
现的多次触发信号的问题。
为了解决这个问题,可以采取以下措施:
1. 软件滤波,在程序设计中,可以采用软件滤波的方法来消除
按键抖动。
软件滤波可以通过延时、状态机等方式来确保只有真正
的按键按下才会触发相应的操作,而忽略短暂的抖动信号。
2. 硬件滤波,在电路设计中,可以加入电容、电阻等元件来实
现硬件滤波,通过延长按键信号的上升沿或下降沿时间,从而消除
按键抖动带来的干扰。
3. 使用稳定的按键元件,选择质量好、稳定性高的按键元件,
可以减少按键抖动的发生。
4. 金属片设计,在按键设计中,可以添加金属片来增加按键的
稳定性,减少抖动。
5. 硬件消抖器,使用专门的硬件消抖器芯片,这些芯片可以自
动检测和消除按键抖动,提高按键的稳定性。
综上所述,消除按键抖动可以通过软件滤波、硬件滤波、选择稳定的按键元件、金属片设计以及使用硬件消抖器等多种措施来实现。
在实际应用中,可以根据具体情况选择合适的方法或者结合多种方法来解决按键抖动问题。
按键消抖电路中可能遇到的问题

按键消抖电路的问题及解决方案引言在很多电子设备和系统中,我们经常会遇到按键输入的问题,尤其是当按键被长时间按下或快速频繁按下时,可能会出现按键误触或重复触发的现象。
为了解决这个问题,需要使用按键消抖电路。
按键消抖电路是一种用于解决按键输入中抖动问题的电路,其主要功能是确保每个按键信号只被触发一次。
本文将介绍按键消抖电路可能遇到的问题,并提供相应的解决方案。
问题一:按键抖动按键抖动是指在按键被按下或释放的瞬间,由于机械开关的弹性导致的电气接触不稳定现象。
抖动会导致信号在短时间内多次切换,从而可能引起系统错误触发或功能失效。
解决方案: - 硬件滤波:可以使用外部电容器和电阻器组成的RC电路来进行硬件滤波。
通过适当选择电容和电阻值,可以使抖动信号被滤除,只有稳定的按键信号被传递给后续电路。
- 软件滤波:可以在微控制器或数字逻辑芯片中使用软件滤波算法来处理按键信号。
软件滤波可以通过设置特定的时间窗口,在此期间内检测和记录按键状态变化,并在时间窗口结束时确定按键的最终状态。
这种方式可以有效抑制按键抖动,但需要相应的处理算法支持。
问题二:按键重复触发当按键被长时间按下时,由于机械开关的弹性使得接触点会产生微小的颤动,这可能会导致按键信号以较高频率持续触发,而不是期望的单次触发。
解决方案: - 软件消抖:可以在软件中设置合适的按键触发间隔。
当按键被按下时,记录触发时间,并在下一次检测到按键状态变化时,检查与上次触发时间的间隔是否超过设定的阈值。
如果超过阈值,则认为新的按键触发有效,否则忽略。
这种方式可以防止按键重复触发,但要求相应的处理算法支持。
- 硬件消抖:可以使用SR触发器或者集成了消抖功能的按键开关来进行硬件消抖。
SR触发器可以稳定输入信号,并将其作为触发器的输出,以确保只输出一次触发信号。
问题三:按键失效按键失效是指按键无法产生正确的信号输出。
这可能是由于电路连接不良、开关接触不良或按键磨损等原因导致的。
vivado按键消抖原理

vivado按键消抖原理按键消抖是指在数字电路中,当按键按下或释放时,由于按键机械开关的特性,会导致电路出现不稳定的信号状态。
这种不稳定状态可能会导致错误的触发,例如出现多次触发或漏触发。
因此,为了确保按键信号的稳定性和可靠性,需要进行按键消抖处理。
按键消抖的原因主要有两个方面。
首先,按键机械开关的接触面存在微小的弹跳现象,当按键按下或释放时,接触面会在短时间内反复接触和分离,导致电路信号出现多次变化。
其次,由于电路中存在的噪声干扰,也会使得按键信号产生抖动。
为了解决按键消抖问题,可以采用硬件和软件两种方法。
硬件方法主要通过添加滤波电路或使用稳定的按键开关来消除按键弹跳现象。
滤波电路可以通过RC电路或者使用专用的按键消抖芯片来实现。
而软件方法主要通过在数字电路中添加按键消抖算法来处理按键信号。
在Vivado中,按键消抖可以通过使用状态机来实现。
状态机是一种用于描述系统行为的模型,可以根据输入信号的状态变化来改变系统的状态和输出。
在按键消抖中,可以使用状态机来检测按键信号的变化,并根据一定的状态转换规则来消除按键弹跳现象。
具体实现时,可以将按键信号作为输入,将按键状态和输出作为状态机的状态和输出。
当按键信号发生变化时,状态机会根据一定的状态转换规则进行状态转换,并输出消抖后的按键信号。
常用的状态转换规则包括按键按下时状态转换为按下状态,按键释放时状态转换为释放状态,以及连续按键时状态不变。
在Vivado中,可以使用Verilog或VHDL等硬件描述语言来编写状态机代码。
首先,需要定义状态机的输入、输出和状态变量,并初始化各个变量的初始值。
然后,需要编写状态转换规则和输出逻辑,根据输入信号的状态变化来改变状态和输出。
最后,需要将状态机代码综合生成对应的逻辑电路,并进行仿真和验证。
总结起来,按键消抖是数字电路设计中常见的问题,为了确保按键信号的稳定性和可靠性,需要进行按键消抖处理。
在Vivado中,可以使用状态机来实现按键消抖,通过定义状态转换规则和输出逻辑,消除按键弹跳现象。
硬件消抖的方法

硬件消抖的方法
在硬件设计中,为了处理输入信号中的抖动现象,我们需要采用一些技术来确保稳定的信号传输。
消抖是指通过特定的电路设计或组件选择,去除输入信号中的噪声或干扰,以得到可靠的输入信号。
以下是几种常见的硬件消抖的方法:
1. RC滤波器:RC滤波器是最简单和常见的消抖方法之一。
它由一个电阻和一个电容器组成。
当输入信号发生变化时,电阻和电容器共同作用,使得输入信号的变化平稳过渡。
这种消抖方法适用于低频信号的消抖。
2. 基于Schmitt触发器的消抖:Schmitt触发器是一种具有两个阈值的比较器。
它可以通过调整阈值电压来消除输入信号中的抖动。
当输入信号的幅值超过高阈值时,输出保持高电平;当输入信号的幅值低于低阈值时,输出保持低电平。
这种方法适用于需要阈值控制的数字信号消抖。
3. 状态机消抖:状态机消抖是一种使用状态机来处理输入信号抖动的方法。
通过定义不同的状态和状态转换条件,可以消除输入信号中的短暂抖动。
这种方法适用于处理复杂的输入信号抖动情况,可以提供更高的消抖效果。
4. 使用稳压器:在某些情况下,电源电压的波动可能会导致输入信号的抖动。
使用稳压器可以使电源电压保持稳定,从而减少输入信号的抖动。
这种方法适用于需要稳定电源供电的系统。
综上所述,硬件消抖的方法包括RC滤波器、Schmitt触发器、状态机消抖和使用稳压器等。
根据具体情况选择适合的消抖方法,可以确保系统可靠地处理输入信号,提高整体性能和稳定性。
硬件消抖总结

硬件消抖
摘要:在系统的信号输入中我们时常要借助一些输入设备,而作为单片机,键盘又是我们使用最多的,在一般使用时我们采用的是软件延时,避开抖动的时间在读取键值,这样无疑会消耗系统资源,在较大的系统中,系统资源是十分宝贵的,所以我们设计是节省一部分系统资源,让系统能够有更多的资源来处理其他的任务。
一、方案的论证与选择
1.RS触发器消抖
适合于有三个接线端子的,其中中间和触头相连的接线端接地,另外两个端子分别接RS触发器的两端,因为触头每次只接触RS中的一个,每接触一个时RS触发器的输出端状态改变,这种电路一般不适合我们现在所使用的两个接线端的按键,故不能选用此方法。
2.利用电容平波和反相器整形
利用电路类似于复位电路,波形震荡的幅度减小,在经过施密特反相器整形之后就得到了没有毛刺的脉冲波,就是我们所需要的波形。
所以我们选择这种放方法实现消抖。
二、参数测试
测试条件:VCC=3.3V,芯片工作电压3.3V(芯片为74HC14,工作电压范围为2~6V)
图2为芯片引脚3处的波形,经过74HC14之后的图形为图3,经过示波器的观察确定波形比较好,用单片机读信号没有出现误读。
图1 电路原理图
图2 图3。
单片机按键消抖的方法,硬件软件都可以实现

单片机按键消抖的方法,硬件软件都可以实现
不管设计一个什么作品,按键总是少不了的,对于按键你知道那些呢?
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。
图1
抖动时间
抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。
这是一个很重要的时间参数,在很多场合都要用到。
按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒,大家可以用示波器测试一下。
键抖动会引起一次按键被误读多次。
为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。
在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。
下面是两种消抖方法:
一、硬件消抖:
按键防抖电路控制电路
所示利用RC 积分电路来达成杂波的滤除与波形修整的电路(如图1 )。
在S1 ON 的瞬间由于接触弹跳的关系,会使A 点电压呈现高速的断续现象,再S1 OFF 时亦然,详(如图2所示),然而由于电容两端电压需由电压经电阻慢慢充电才会上升,使得B 点电位缓步上升情形:S1 OFF 时亦然,电容电压经R 放电,使B 点电压缓缓下降。
此一变化,经史密特反相修整后,可得一标准负脉波输出,如波形图C 点所示。
用其他的各类触发器,锁存器亦可达到消抖效果。
二、软件消抖:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
按键电路:常用的非编码键盘,每个键都是一个常开开关电路。
按键消抖:
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号小型如下图。
由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
因而在闭合及断开的瞬间均伴随有一连串的抖动,如下图。
抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。
这是一个很重要的时间参数,在很多场合都要用到。
按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。
键抖动会引起一次按键被误读多次。
为确保CPU对键的一次闭合仅作一次处理,必须去除键抖
动。
在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。
按键的抖动,可用硬件或软件两种方法。
<1> 硬件消抖:在键数较少时可用硬件方法消除键抖动。
下图所示的RS触发器为常用的硬件去抖。
图中两个“与非”门构成一个RS触发器。
当按键未按下时,输出为1;当键按下时,输出为0。
此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。
也就是说,即使B 点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。
这一点通过分析RS触发器的工作过程很容易得到验证。
<2> 软件消抖:如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。
当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。
按键消抖。