第六课按键的硬件消抖
单片机的按键消抖与几种按键电路

用其他的各类触发器,锁存器亦可达到消抖效果。 二、 软件消抖 : 通过软件延时 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. 硬件消抖器,使用专门的硬件消抖器芯片,这些芯片可以自
动检测和消除按键抖动,提高按键的稳定性。
综上所述,消除按键抖动可以通过软件滤波、硬件滤波、选择稳定的按键元件、金属片设计以及使用硬件消抖器等多种措施来实现。
在实际应用中,可以根据具体情况选择合适的方法或者结合多种方法来解决按键抖动问题。
单片机按键电容消抖电路

单片机按键电容消抖电路1.引言1.1 概述概述部分的内容:在许多电子设备中,按键电路常常被使用来实现用户与设备之间的交互。
然而,由于按键的物理特性,如机械弹性和触点接触的不稳定性,会导致按键的震荡现象,即按键在按下或释放时会产生多次跳变。
这种跳变会导致单片机误读按键的信号,可能引发系统错误操作或不稳定的现象。
因此,为了保证按键信号的可靠性和稳定性,需要对按键进行消抖处理。
本篇文章将详细介绍单片机按键电容消抖电路的设计和实现原理。
通过在按键电路中引入电容元件,可以达到消抖的效果。
电容元件具有快速充放电的特性,可以有效地过滤掉按键震荡带来的干扰信号,确保单片机正确读取按键状态。
文章将首先介绍单片机按键的工作原理,包括按键的接口电路和输入电平变化的检测方式。
接着,将深入探讨按键消抖的必要性,分析不进行消抖处理所带来的潜在问题。
在这之后,将详细介绍按键电容消抖电路的设计原理,包括电容的连接方式和参数的选择。
最后,将给出经过实际测试的电路实现结果和相关性能指标的评估。
通过本文的阅读,读者将能够了解单片机按键的基本原理和消抖处理的必要性,掌握按键电容消抖电路的设计和实现方法,以及了解该电路的性能表现。
这对于开发单片机应用的工程师和爱好者来说,具有一定的指导意义和实践价值。
文章结构部分的内容是对整篇文章的组织和布局进行描述。
它向读者展示了文章的章节和主题,并指导读者理解和阅读文章的内容。
在本文中,文章结构如下:1. 引言1.1 概述1.2 文章结构1.3 目的2. 正文2.1 单片机按键原理2.2 按键消抖的必要性3. 结论3.1 按键电容消抖电路的设计原理3.2 电路实现与测试结果文章的结构分为引言、正文和结论三个主要部分。
在引言部分,概述简要介绍了单片机按键电容消抖电路的背景和重要性;文章结构部分指出了本文的章节组成和布局,为读者提供了阅读指南;目的阐明了文章的目标和意图。
正文部分主要包括单片机按键原理和按键消抖的必要性。
硬件消抖的方法

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

状态机实现去抖动原理:按键去抖动关键在弄提取键稳定的电平状态,滤除前沿、后沿抖动毛刺。
对于一个按键信号,可以用一个脉冲对它进行取样,如果连续三次取样为低电平,可以认为信号已经处于键稳定状态,这时输出一个低电平的按键信号。
继续取样的过程如果不能满足连续三次取样为低,则认为键稳定状态结束,这时输出变为高电平。
设计的状态转换图如图所示。
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下,记数器可能记了3下。
因此,使用按键的记数电路都会增加单稳态电路避免记数错误。
按键消抖:通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号小型如下图。
由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
因而在闭合及断开的瞬间均伴随有一连串的抖动,如下图。
抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。
这是一个很重要的时间参数,在很多场合都要用到。
按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。
键抖动会引起一次按键被误读多次。
为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。
在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。
按键的抖动,可用硬件或软件两种方法。
在键数较少时可用硬件方法消除键抖动。
下图所示的RS触发器为常用的硬件去抖。
图中两个“与非”门构成一个RS触发器。
当按键未按下时,输出为1;当键按下时,输出为0。
此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。
也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。
这一点通过分析RS触发器的工作过程很容易得到验证。
利用电容的放电延时,采用并联电容法,也可以实现硬件消抖:如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms 的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。
按键消抖原理

按键消抖原理
按键消抖原理是指通过某种方法在按键被按下或松开时,消除或减少按键的抖动现象,使输入信号得到稳定的识别和处理。
在实际应用中,按键在被按下或松开时,由于机械结构的原因,往往会引起按键的不稳定状态,表现为按键在短时间内多次触发开关。
这种按键抖动不仅会导致输入信号的波动,还可能对系统造成误操作或不良影响。
为了解决按键抖动问题,常用的按键消抖原理主要有以下几种:
1. 软件延时消抖:通过在程序中设定一个适当的延时时间,当按键被按下或松开后,延时一段时间再读取按键状态,以判断按键是否稳定。
如果经过延时后按键状态仍然相同,则可以认为按键已经稳定按下或松开,从而减少抖动的影响。
2. 硬件滤波消抖:通过在按键电路上设计滤波器或添加电容元件,可以对按键信号进行滤波处理,去除短时间内的干扰信号,使输入信号更加稳定。
常用的滤波电路包括RC滤波电路、OTA滤波电路等。
3. 状态改变检测消抖:在按键电路中,通过检测按键的状态变化来判断按键是否按下或松开。
当按键在短时间内发生多次状态变化时,只会认为按键状态发生了一次改变,从而忽略了抖动现象。
这种方式适用于按键状态改变的速度较慢的情况。
通过以上的按键消抖原理,可以有效地减少按键抖动现象,提
高按键输入的可靠性和稳定性。
在实际应用中,可以根据具体情况选择适合的原理和方法来实现按键消抖,以满足不同的需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机进阶篇
---按键的硬件消抖
本文作者:Cepark
更新时间:2010/07/20
作者博客:
按键的硬件消抖
在上一节课中,我们介绍了使用软件延时的方法来进行消抖从而进行按键的检测,软件延时的优点是硬件电路简单,但是程序相对来讲会复杂,而且一般的延时函数是使用计数延时,这会增加CPU的负担。
硬件消抖电路可以简化程序的编写,但是需要额外的器件支持。
两种方法各有利弊,在不同的情况下根据不同的情况来选择使用哪一种消抖方法,这一节课我们主要介绍一下常见的硬件消抖电路。
1、RS触发器构成的消抖电路的主要原理
用R-S触发器形成消抖电路时单片机外围电路设计中的常用手段,它可以减少单片机软件对按键动作的延时和计算。
要使用R-S触发器形成的消抖电路,首先用了解R-S触发器的基本工作原理图和工作特点。
R-S触发器的基本构成如图所示,它是由两个与非门交叉耦合而成,S和R是信号的输
Q既表示触发器的状态,又是触发器的输出端。
入端,低电平有效,Q和
在启动过程中,S端一旦下降到开门电平,Q端电平就会上升,反馈到门B的输入端,
Q端的电平下降,反馈到门A的输入端,进一步促使门A截止,促使B由截止转向导通,
Q的电平进一步下降,这样的过程,是Q端电平进一步上升,Q端电平上升的结果又会使
的门A很快截止、门B很快导通,触发器在极短的时间内完成由截止到导通的转换。
通过R 段的复位时也有类似的正反馈过程发生,从而完成按键开关的消抖功能。
典型的硬件消抖方法是在单片机和检测管脚之间加入由74LS02或者其他的门电路组成的R-S触发器消抖电路。
如下所示。
通过这个电路,在软件编程上就不用考虑去抖的问题了,可以将外界的按键信号做理想的上升沿或者下降沿信号来处理。
2、RC电路应将消抖
下面这个电路也是一种非常经济实用的电路,阻容的作用就是实现硬件的消抖,这个电路的原理图是比较易懂的了,只有在按键确实按下之后,INT0(也就是单片机的IO管脚)才会产生一个低电平。
利用电容的充放电过程来实现抖动的消除。
作业:理解硬件消抖的几种方法,试搜集更多的硬件消抖方法。
1、电子园网站简介
CEPARK 电子园是一个以讨论电源、单片机、MCU、DSP、嵌入式软件、电子DIY等电子技术的开放社区网站。
CEPARK电子园的宗旨是给所有爱好电子的朋友提供一个自由、开放、免费的交流空间,并通过零利润的公益助学活动,让爱好电子的朋友能用相当低廉的价格开始学习电子,而CEPARK电子园的论坛、“家园”、资源中心、博客、群组等功能,又为您提供了开放的学习、讨论、请教求助的空间和渠道。
CEPARK电子园的目标是建成中国最好的电子技术开放共享社区,为推动中国电子工程师终生学习以及电子产品研发作出贡献。
为广大网友提供一个自由、开放、专业的技术交流空间,并努力与广大CEPARK电子园的朋友们一起建设一个更轻松的、更惬意、更完善的技术、生活交流家园!
CEPARK电子园创办于2008年。
在短短的时间里,因其便利的学习方式和货真价实的助学产品,获得了广大电子爱好者的支持和帮助,并对网站的内容建设提出了建设性的意见和建议。
CEPARK电子网今天已经成为获得了Alexa排名15万以内、论坛每天的平均在线交流人数超过300多人、每天平均PaveView超过5万次、访问独立IP数超过1万的活跃社区。
2、电子园分站点
电子园论坛
电子园百科
电子园商城
电子园家园
电子园网址
3、电子园子站点
51单片机学习网
USB开发学习网
CAN总线学习网
A VR单片机学习网
ARM开发学习网
FTPA开发学习网
DIY开发学习网
GPS开发学习网
GUI开发学习网
STM32开发学习网 EDA软件学习网
DSP开发学习网
PIC单片机学习网
电源技术专区 射频技术专区
医疗电子专区 汽车电子专区 消费电子专区
更多子站建设中,敬请关注!。