关于单片机按键的抖动与消抖

合集下载

单片机的按键消抖与几种按键电路

单片机的按键消抖与几种按键电路

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

单片机51 去抖按键程序

单片机51 去抖按键程序
#define STOP_TIMER0 TR0=0
#define START_TIMER1 TR1=1
#define STOP_TIMER10 TR1=0
#define KD_VAL 15
sbit Ktemph=P1^0;
sbit Ktempl=P1^1;
sbit Ktime=P1^2;
sbit Kset=P1^3;
unsigned char Irbufnum;
unsigned char Irbuf[6];
unsigned char Recposi;
unsigned int idata Irbuffer[50];
unsigned char Kscanbuf[8];
unsigned char Kscan[8];
unsigned char Kcount[8];
RCAP2L = 0XB8 ;
TR2=1;
EX0=1;/*ÔÊÐíÍⲿ0ÖжÏ*/
EA = 1;/*¿ªÈ«¾ÖÖжÏ*/
TR0=0;
TMOD|=1<<4;/*¼ÆʱÆ÷1×÷Ϊ16λ*/
ET1=1;
TH1=0xf8;
TL1=0xcc;
TR1=1;
PX0=1;/*ÍⲿÖжÏ0ÓÅÏÈ*/
IT0=1;/*ϽµÑØ´¥·¢ÖжÏ*/
/*ET0=1;*/
/*ES = 1;*//*ÔÊÐí´®ÐпÚÖжÏ*/
TCLK = 1 ; /*¶¨Ê±Æ÷2ÓÃ×÷²¨ÌØÂÊ·¢ÉúÆ÷*/
RCLK = 1 ;
/*¾§Õñ 22.1184 £¬ 6T £¬²¨ÌØÂÊ9600*/
RCAP2H = 0xff ;

按键消除抖动的措施

按键消除抖动的措施

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

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

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

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

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

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

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

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

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

按键消抖与时间按键

按键消抖与时间按键
case 0xef:return 5;break;
case 0xdf:return 6;break;
case 0xbf:return 7;break;
case 0x7f:return 0;break;
}
}
}
定时器函数
void timer0 ()interrupt1
TR0=1;
if(T>100)
{
TR0=0;
T=0;
}
if(TR0=1&&T<100)
continue;//在定时器里面设置初值让定时器中断一次1ms并且T自加1,100次就100ms
switch(key)
{//返回键值
case 0xfe:return 1;break;
case 0xfd:return 2;break;
消抖分硬件和软件消抖,
硬件消抖有《模拟电子技术》上提到用三态门实现,当然还有周立功那个7920(管理数码管和按键的芯片),当然还有很多硬件电路以及一些按键有自带消抖电路,但是如果要做产品硬件消抖肯定会增加成本,一般都会考虑软件消抖
软件消抖我们先来看看书上消抖方法如下图
例程
Unsignedchar keyscan()//这里是用的P2口作为按键的输入口
第4个问题了,从物理上我们可以知道,既然是阻尼振动,必定到振动到某个时候肯定是和稳定的状态一致的,所以肯定不是必须10ms的延时的,比如按下去假设10ms振动后机械才稳定,但是电平上当触点挨得很近振动的时候就算触点不是挨着,还是显示低电平
第5个问题实际上前面已经说了,有硬件消抖肯定对CPU占用最少,软件消抖当然就是尽量不要用些没用的语句,分配好时序
2.如何消抖
3.是不是按键都要消抖,不是的话,哪些需要消抖,哪些不需要消抖

单片机按键电容消抖电路

单片机按键电容消抖电路

单片机按键电容消抖电路1.引言1.1 概述概述部分的内容:在许多电子设备中,按键电路常常被使用来实现用户与设备之间的交互。

然而,由于按键的物理特性,如机械弹性和触点接触的不稳定性,会导致按键的震荡现象,即按键在按下或释放时会产生多次跳变。

这种跳变会导致单片机误读按键的信号,可能引发系统错误操作或不稳定的现象。

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

本篇文章将详细介绍单片机按键电容消抖电路的设计和实现原理。

通过在按键电路中引入电容元件,可以达到消抖的效果。

电容元件具有快速充放电的特性,可以有效地过滤掉按键震荡带来的干扰信号,确保单片机正确读取按键状态。

文章将首先介绍单片机按键的工作原理,包括按键的接口电路和输入电平变化的检测方式。

接着,将深入探讨按键消抖的必要性,分析不进行消抖处理所带来的潜在问题。

在这之后,将详细介绍按键电容消抖电路的设计原理,包括电容的连接方式和参数的选择。

最后,将给出经过实际测试的电路实现结果和相关性能指标的评估。

通过本文的阅读,读者将能够了解单片机按键的基本原理和消抖处理的必要性,掌握按键电容消抖电路的设计和实现方法,以及了解该电路的性能表现。

这对于开发单片机应用的工程师和爱好者来说,具有一定的指导意义和实践价值。

文章结构部分的内容是对整篇文章的组织和布局进行描述。

它向读者展示了文章的章节和主题,并指导读者理解和阅读文章的内容。

在本文中,文章结构如下:1. 引言1.1 概述1.2 文章结构1.3 目的2. 正文2.1 单片机按键原理2.2 按键消抖的必要性3. 结论3.1 按键电容消抖电路的设计原理3.2 电路实现与测试结果文章的结构分为引言、正文和结论三个主要部分。

在引言部分,概述简要介绍了单片机按键电容消抖电路的背景和重要性;文章结构部分指出了本文的章节组成和布局,为读者提供了阅读指南;目的阐明了文章的目标和意图。

正文部分主要包括单片机按键原理和按键消抖的必要性。

单片机按键消抖方式详解

单片机按键消抖方式详解
unsigned char code LedChar[] = { //数码管显示字符转换表 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E };
void delay(); void main(){
程序如下: #include <reg52.h>
sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; sbit KEY1 = P2^4; sbit KEY2 = P2^5; sbit KEY3 = P2^6; sbit KEY4 = P2^7;
KeySta = 1; } else{
//其它情况则说明按键状态尚未稳定,则不对 KeySta 变量值进行更新 } } 这个算法是我们在实际工程中经常使用按键所总结的一个比较好的方法,介绍给大家,
今后都可以用这种方法消抖了。当然,按键消抖也还有其它的方法,程序实现更是多种多样,
大家也可以再多考虑下其它的算法,拓展下思路。
那么消抖操作所需要的延时该怎么处理呢?
举个例子:我们启用一个定时中断,每 2ms 进一次中断,扫描一次按键状态并且存储 起来,连续扫描 8 次后,看看这连续 8 次的按键状态是否是一致的。8 次按键的时间大 概是 16ms,这 16ms 内如果按键状态一直保持一致,那就可以确定现在按键处于稳定的 阶段,而非处于抖动的阶段,如图 8-12。
keybuf = (keybuf<<1) | KEY4; //连续 8 次扫描值都为 0,即 16ms 内都只检测到按下状态时,可认为按键已按下 if (keybuf == 0x00){

单片机技术与应用教学单元5.3 抖动与去抖动5.11.2 PPT课件

单片机技术与应用教学单元5.3 抖动与去抖动5.11.2 PPT课件
输入-输出端口同时应用
应用电子学院 《51单片机技术与应用》精品资源共享课
4-1
实例演练4-3-5
BCD数字型 拨码开关实验
应用电子学院 《51单片机技术与应用》精品资源共享课
4-2
BCD数字型拨码开关实验电路图
应用电子学院 《51单片机技术与应用》精品资源共享课
4-3
实际接线(使用黄板)
应用电子学院 《51单片机技术与应用》精品资源共享课
4-25
放开按钮后动作实验 (ch4-3-7.c)-1
应用电子学院 《51单片机技术与应用》精品资源共享课
4-26
放开按钮后动作实验 (ch4-3-7.c)-2
应用电子学院 《51单片机技术与应用》精品资源共享课
4-27
思考一下!
• 在本实验里,若将按钮按住不放会如何?
应用电子学院 《51单片机技术与应用》精品资源共享课
16进位数字型拨码开关,程序应如何修改?
应用电子学院 《51单片机技术与应用》精品资源共享课
4-8
实例演练4-3-6
多重按钮开关实验
应用电子学院 《51单片机技术与应用》精品资源共享课
4-9
多重按钮开关实验电路图
应用电子学院 《51单片机技术与应用》精品资源共享课
4-10
实际接线
应用电子学院 《51单片机技术与应用》精品资源共享课
1-30
电机on-off控制_电路图
应用电子学院 《51单片机技术与应用》精品资源共享课
1-31
电机on-off控制_程序
应用电子学院 《51单片机技术与应用》精品资源共享课
1-32
电机正反转控制_电路图
应用电子学院 《51单片机技术与应用》精品资源共享课

单片机消除按键抖动的方法

单片机消除按键抖动的方法

单片机消除按键抖动的方法
单片机中,当按键被按下时,可能会出现按键抖动的现象,即按下按键后,按键会不断地重复触发,导致程序的不稳定性等问题。

为了消除按键抖动,可以采取以下方法:
1. 软件消抖法:在程序中通过延时、多次采样等方法,对按键
进行去抖处理。

但这种方法需要占用一定的CPU资源,容易影响程序的稳定性和响应速度。

2. 硬件消抖法:通过外部电路对按键进行去抖处理,如添加 RC 滤波器、加电容等组合电路,可稳定按键的电平信号,避免按键的震动和干扰。

3. 系统延时法:在按键按下后,延时一段时间再读取按键的状态,可消除按键的抖动。

但这种方法需要根据实际情况设置合适的延时时间,否则会影响系统的响应速度。

4. 确认法:在按键按下后,通过程序对按键的状态进行多次确认,只有当确认多次读取的状态一致时,才认为按键的状态是有效的。

这种方法需要设置合适的确认次数和时间,才能达到较好的去抖效果。

总之,消除按键抖动是单片机程序开发中的一个重要问题,需要根据实际情况选择合适的去抖方案,保证程序的稳定性和可靠性。

- 1 -。

按键的硬件消抖电路原理

按键的硬件消抖电路原理

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

因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。

按键的抖动对于人类来说是感觉不到的,但对单片机来说,则是完全可以感应到的,而且还是一个很“漫长”的过程,因为单片机处理的速度在“微秒”级,而按键抖动的时间至少在“毫秒”级。

一次按键动作的电平波形如下图。

存在抖动现象,其前后沿抖动时间一般在5ms~10ms之间。

由于单片机运行速度非常快,经过A时刻的时候会检测到低电平判断按键被按下。

当到了B时刻的时候,单片机同样会检测到高电平,误以为松开按键,然后又到了C时刻检测到低电平,判断到按键被按下。

周而复始,在5-10ms内可能会出现很多次按下的动作,每一次按键的动作判断的次数都不相同。

为确保单片机对按键的一次闭合仅作一次处理,必须处理按键抖动问题。

在按键闭合或者释放稳定时再读取按键的状态。

硬件消抖电路硬件消抖一般有两种实现方式:o RS触发器o电容滤波RS触发器利用RS触发器来吸收按键的抖动。

一旦有键按下,触发器立即翻转,触电的抖动便不会再对输出产生影响,按键释放时也一样。

RS触发电路消抖电路图如下。

电容滤波将电容并联在按键的两端,利用电容的放电的延时特性。

将产生抖动的电平通过电容吸收掉。

从而达到消抖的作用,电容消抖电路图如下图所示。

总结实际上,在没有MCU的情况下,对按键进行消抖通常是通过硬件消抖电路来实现。

而在嵌入式开发中,大多数情况下都是通过程序来实现按键消抖。

简单说就是加合适的延迟,显然这实现成本要比硬件电路方式低得多。

关于单片机按键的抖动与消抖

关于单片机按键的抖动与消抖

关于单片机按键的抖动与消抖关于单片机按键的抖动与消抖在单片机的程序中,如果涉及到按键,一般都会看到几行注释着消抖的代码。

比如下面这一段:if((KeyV|0xc3)==0xff){//无键按下return 0; } mDelay(10);//延时,去键抖KeyV=P3; if((KeyV|0xc3)==0xff){//无键按下return 0; } 关于其作用与目的,有如下解释:按键在按下时会产生电平的变化,通常是由高电平变为低电平,而且这一过程也不是瞬间完成的,按键按下之后,电平会有一段不稳定变化的时间。

一般情况下,我们的程序读取这个电平变化并做相关的动作。

但由于机械按键的局限性,当系统受到外力而产生抖动或其它动作时,也可能使系统内部产生电平变化(通常这种变化持续的时间非常短),这种现象称之为按键的抖动。

这种抖动显然不是我们期望出现的,一旦程序中没有针对它进行特殊处理,这种隐患很可能导致系统执行我们不希望出现的动作。

进而可能酿成一场悲剧。

避免按键抖动的操作就称之为消抖。

目前,单片机的消抖主要分为软件消抖和硬件消抖。

其中,软件消抖增加软件资源,但不增加硬件成本;硬件消抖反之。

现在普遍采用的是软件消抖的方式。

软件消抖具体的操作思路是:当监听到按键被按下时,不立刻执行相关的操作,而进行一定时间的延时(通常是50ms),之后再次检测按键是否被按下,如果此时按键仍然被按下,则判定按键确实被按下了(因为不论是异常情况导致的抖动还是正常情况下按键被按下产生的电平变化都会在这一段时间内过去,紧接着的电平将会是稳定的),然后进行按键被按下之后所需要的操作,否则判定按键未被按下,继续监听按键状态。

实际上,以上所说的软件消抖的方法在真正的软件中应用的不多,只是在练习的时候使用。

真正的应用上,会在可能产生抖动的那一段时间内等间隔多次监听按键状态(电流状态),等到数次(可以是连续5 次)电流平稳了才确定按键被按下。

按键被放开时采取同样操。

按键消抖程序设计在单片机中的运用

按键消抖程序设计在单片机中的运用

按键消抖程序设计在单片机中的运用【摘要】按键开关在电子类的开发者中运用较多,但它却专有一个按键抖动的特性。

由于机械触点的弹性作用,按键开关断开或闭合时不会马上稳定地断开或接通,而是不断的抖动,即不断的闭合、断开。

这一连串的抖动给系统带来一些不稳定的因素,甚至是错误的结果,为了不产生这种现象而需采取相应消抖措施。

【关键词】按键抖动;消抖措施;单片机运用1.按键开关开发单片机系统的人都知道,按键开关共有四个引脚,分别是两个引脚短路作为一端,不分正负极,焊接时只需将短路一端焊接在电路的一个焊盘,将另外一个短路端口焊接在电路的另外一个焊盘即可,即为开关的两端。

在电路设计中或者是软件编写程序过程中如果遇到按键,则需要考虑按键的抖动情况。

因为按键开关是机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,不会马上稳定地接通或者断开。

2.按键抖动及影响按键开关抖动时间的长短主要是由按键的机械特性决定的,一般时间为为5ms~10ms。

按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。

键抖动会引起一次按键被误读多次,即在按键的过程中被误认为是有多次的断开和闭合,为确保CPU对按键的一次闭合仅作一次处理,所以必须去除键抖动。

在按键闭合稳定时才读取键的状态,并且必须判别到键释放稳定后再作处理。

3.消抖措施为了消除按键抖动及其带来的不利影响,一般可以用以下两种措施。

3.1电路消抖可采用设计硬件电路方法消除按键的抖动。

最常用的就是用RS触发器。

设计原理是:利用两个“与非”门构成一个RS触发器。

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

此时即使按键的机械性能,使按键因弹性抖动而产生瞬时断开,按键不返回原始状态,双稳态电路的状态不会改变,继而输出保持为“0”,这样就不会产生抖动的波形,消除抖动带来的影响。

3.2程序消抖若系统的按键较多,可采用编写程序的方法进行去抖,即软件消抖。

按键消抖

按键消抖

end
else
cnt <= 0; end
always @(posedge clk or negedge nrst) begin
if(nrst == 0)
key_out <= 0;
else if(cnt == TIME_20MS - 1)
key_out <= key_in; endendmodule
方案3
// key down, bounce 19ms
repeat(951) @(negedge clk) key_in = ~key_in;
// last 60ms
repeat(3000) @(negedge clk);
cnt <= 0;
//
end always @(posedge clk or negedge nrst) begin
if(nrst == 0)
key_cnt
<= 0;
else if(key_cnt == 0 && key_in != key_out)
key_cnt <= 1;
else
if(cnt == TIME_20MS - 1)
// clock .key_out(key_out) );
initial begin
clk = 1;
forever #(T/2) clk
= ~clk; end
// reset initial begin
nrst = 1;
@(negedge clk) nrst = 0;
@(negedge clk) nrst
按键消抖
按键去抖:由上图可以看出理想波形与实际波形之间是有区别的,实际波形在按下和释放的瞬间都有抖动的现象,抖动 时间的长短和按键的机械特性有关,一般为5~10ms。通常我们手动按键然后释放,这个动作中稳定闭合的时间超过了 20ms。因此单片机在检测键盘是否按下时都要加上去抖动操作,有专用的去抖动电路,也有专门的去抖动芯片,但通常 我们采用软件延时的方法就可以解决抖动问题。

单片机的按键控制电路原理

单片机的按键控制电路原理

单片机的按键控制电路原理
单片机的按键控制电路原理如下:
1. 按键连接:按键通过两个引脚(通常是输入引脚)与单片机相连。

一个引脚连接到单片机的输入引脚,另一个引脚连接到地。

2. 按键操作:当按键按下时,按键两个引脚之间的电阻减小,导致电流从单片机的输入引脚流向地。

而当按键未按下时,两个引脚之间的电阻变大,导致电流无法流过,单片机的输入引脚处于高电平状态。

3. 单片机输入引脚设置:单片机输入引脚一般采用上拉电阻或下拉电阻来保持输入引脚的电平状态。

在按键未按下时,上拉电阻连接到单片机的电源电压上,将输入引脚上拉至高电平;在按键按下时,通过按键连接到地,产生低电平。

4. 电平检测:单片机在程序中通过读取输入引脚的电平状态来判断按键是否按下。

一个常见的做法是使用中断,当检测到按键按下时,中断服务程序会被触发执行相关操作。

5. 消抖:由于按键被按下或弹起时可能会产生抖动,为了消除抖动影响,常在按键控制电路中加入消抖电路,例如RC电路或者软件延时等。

总结:按键通过连接到单片机输入引脚实现电平状态的检测,单片机通过对输入
引脚的电平状态进行判定来实现按键操作的控制。

单片机按键去抖原理

单片机按键去抖原理

3楼
要不硬件上消下抖,加个电容?
为什么某个IO状态翻转呢?为什么不像电脑 一样,有kbhit这样 的判断存在,我们可以在有键按下 时锁住所按 键的扫描码吧,当然视 你要完成的功能而定 这样 的话,由于所按的 键已锁存,后面的中 断判断的就是有 无按键了,调节好其判 断条件如 时间 什么的,就像电 脑设置了按键响应速度一样,这样可以解决吧。
它们和我们的单片机系统的I/O口连接一般如下:
对于单片机I/O内部有上拉电阻的微控制器而言,还可以省掉外部的那个上拉电阻。简单分析一下按键检测的原理。当按键没有按下的时候,单片机 I/O通过上拉电阻R接到VCC,我们在程序中读取该I/O的电平的时候,其值为1(高电平); 当按键S按下的时候,该I/O被短接到GND,在程序中读取该I/O的电 平的时候,其值为0(低电平) 。这样,按键的按下与
否,就和与该按键相连的I/O的电平的变化相对应起来。结论:我们在程序中通过检测到该I/O口电平的变化与否,即可以知道按键是否被按下,从而 做出相应的响应。一切看起来很美好,是这样的吗?
◎现实并非理想 在我们通过上面的按键检测原理得出上述的结论的时候,其实忽略了一个重要的问题,那就是现实中按键按下时候的电平变化状态。我们的结论是基 于理想的情况得出来的,就如同下面这幅按键按下时候对应电平变化的波形图一样:
讨论下吧!
C语言也能 写图形的俄 罗斯方 块?!! TOP
发表于 2010-5-12 23:58 | 只看该作者
4楼
硬件上可以用电容消抖,并接一个104即可 ,如果还想要更好的效果,可以用74HC14对波形整形。我见过的按键除了上述的硬件处 理之外,软件上面同样要消抖,因为是用在工业环境里,什么情况都有可能出现。 “我们可以在有 键按下时锁住所按 键的扫描码吧,当然视你要完成的功能而定 这样的话,由于所按的 键已锁存,后面的中 断判断的就 是有 无按键了,调节好其判 断条件如 时间 什么的,就像电脑设 置了按 键响应 速度一 样,这样 可以解 决吧。” 呵呵,想法太简单。 按键处 理也要分情 况,对于很重要的,一般接中 断,剩下的应用级的,在主循 环中循环检测 即可。 比较好的做好是,开辟一个环形缓冲。确定按键按下,丢到缓冲区,任务根据当前状态取键值,作处理。

单片机按键消抖技术及其扩展应用

单片机按键消抖技术及其扩展应用

动 。即在键 闭合稳 定时读取键 的状态 ,并 且必须判别到键释 放稳
定后再 作处理 。目的在 于消除干扰 以 达到 接近图 1所示的 理想
输入特性 。
有 两个阶段可 以设法消 除此干扰 :1、在键盘 信号输入系统
之前 系统外 ):2、键盘信号输入系统以后(系统内 ).
1 硬件消抖
然而实 际的键 盘受制造工艺等影响 其 输 入特 性不可能如图
是相当宝贵的 所 以很少有人采用这种方法。
思路二 在判断行程感应器的电平状态时 加入了软件的抗
2 软件延时消抖
干扰处理 即软件消抖技术 )厂-旦发现低电平 ,一_个计时器开始 计时 在计时的期间 如果发现出现高电平就马上把计时器清零 ,
如前所 述 若 采 用硬 件消抖电路 那 么 N个 键就 必须配有 N 如果一直 是低电平 r并且期 间没有 出现高 电平 就 认为是稳 定的
The technique of single chip m icrocom puter and its extension application
Yang We
(Zhuji Zhejiang Technician College,312000) \
Abstract:Due to the flexibility of the role of mechanical contact,button switch are the characteristics of a Jitter,if not treated the Jitter wii1 bring some unstable fac%ors system,even wrong results,in order not to cause thiS phenomenon must take eorresponding jitter elimination measures.In thiS paper,the elimination of shaking technology for the relevant introduction,both as an example of an example of the application of the technology to eliminate chattering. Keyw ords:key jitter:jitter:single chip microcomputer:extended application

单片机防抖电路

单片机防抖电路

单片机防抖电路
单片机防抖电路是一种用于消除开关抖动的电路。

开关抖动是由于机械开关的接触不良或者机械振动等原因造成的瞬时开合动作,这些瞬时的开合动作会产生不稳定的信号,影响系统的正常工作。

单片机防抖电路通过延时、滤波等方式来消除开关抖动产生的干扰信号,使系统稳定可靠。

常见的单片机防抖电路有软件防抖电路和硬件防抖电路两种,软件防抖电路通常使用延时、去抖动等算法实现,硬件防抖电路则通常采用RC滤波器等电路元件实现。

在实际应用中,根据具体的需求和系统特点选择合适的防抖电路非常重要。

- 1 -。

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

关于单片机按键的抖动与消抖
在单片机的程序中,如果涉及到按键,一般都会看到几行注释着消抖
的代码。

比如下面这一段:if((KeyV|0xc3)==0xff){//无键按下return 0; } mDelay(10);//延时,去键抖KeyV=P3; if((KeyV|0xc3)==0xff){//无键按下return 0; } 关于其作用与目的,有如下解释:按键在按下时会产生电平的变化,通常是由高电平变为低电平,而且这一过程也不是瞬间完成的,按键按下之后,
电平会有一段不稳定变化的时间。

一般情况下,我们的程序读取这个电平变化
并做相关的动作。

但由于机械按键的局限性,当系统受到外力而产生抖动或其
它动作时,也可能使系统内部产生电平变化(通常这种变化持续的时间非常短),这种现象称之为按键的抖动。

这种抖动显然不是我们期望出现的,一旦程序中没有针对它进行特殊处理,这种隐患很可能导致系统执行我们不希望出现
的动作。

进而可能酿成一场悲剧。

避免按键抖动的操作就称之为消抖。

目前,单片机的消抖主要分为软件消抖和硬件消抖。

其中,软件消抖增加软件资源,但不增加硬件成本;硬件消抖反之。

现在普遍采用的是软件消抖的方式。

软件消抖具体的操作思路是:当监听到按键被按下时,不立刻执行相关的操作,而进行一定时间的延时(通常是50ms),之后再次检测按键是否被按下,如果
此时按键仍然被按下,则判定按键确实被按下了(因为不论是异常情况导致的
抖动还是正常情况下按键被按下产生的电平变化都会在这一段时间内过去,紧
接着的电平将会是稳定的),然后进行按键被按下之后所需要的操作,否则判
定按键未被按下,继续监听按键状态。

实际上,以上所说的软件消抖的方法在
真正的软件中应用的不多,只是在练习的时候使用。

真正的应用上,会在可能
产生抖动的那一段时间内等间隔多次监听按键状态(电流状态),等到数次
(可以是连续5 次)电流平稳了才确定按键被按下。

按键被放开时采取同样操。

相关文档
最新文档