单片机按键消抖的方法,硬件软件都可以实现
- 格式:doc
- 大小:13.50 KB
- 文档页数:2
按键消除抖动的措施
按键消除抖动是指在使用电子设备中,当按下按键后可能会出
现的多次触发信号的问题。
为了解决这个问题,可以采取以下措施:
1. 软件滤波,在程序设计中,可以采用软件滤波的方法来消除
按键抖动。
软件滤波可以通过延时、状态机等方式来确保只有真正
的按键按下才会触发相应的操作,而忽略短暂的抖动信号。
2. 硬件滤波,在电路设计中,可以加入电容、电阻等元件来实
现硬件滤波,通过延长按键信号的上升沿或下降沿时间,从而消除
按键抖动带来的干扰。
3. 使用稳定的按键元件,选择质量好、稳定性高的按键元件,
可以减少按键抖动的发生。
4. 金属片设计,在按键设计中,可以添加金属片来增加按键的
稳定性,减少抖动。
5. 硬件消抖器,使用专门的硬件消抖器芯片,这些芯片可以自
动检测和消除按键抖动,提高按键的稳定性。
综上所述,消除按键抖动可以通过软件滤波、硬件滤波、选择稳定的按键元件、金属片设计以及使用硬件消抖器等多种措施来实现。
在实际应用中,可以根据具体情况选择合适的方法或者结合多种方法来解决按键抖动问题。
单片机如何防抖的设置方法
单片机防抖的设置方法有以下几种:
1. 硬件防抖:通过外部电路来进行防抖,常见的方式是使用RC电路或者电容滤波器来消除按键的抖动。
这种方法简单易行,但需要额外的硬件电路支持。
2. 软件防抖:通过编写软件程序来实现防抖功能。
常见的方法是使用延时函数,在按键按下后延时一段时间再进行处理,如果在延时期间按键状态没有发生变化,则认为按键有效。
这种方法相对简单,但可能会引入一定的延迟。
3. 硬件与软件结合防抖:可以同时使用硬件和软件的方式来实现防抖。
例如,使用硬件电路进行初步的滤波,然后在软件中再进行一次判断,确保按键状态的稳定。
需要注意的是,防抖的设置方法需要根据具体的单片机和应用场景来确定,不同的单片机可能有不同的实现方法。
同时,防抖的设置也需要根据实际需求来调整,过长的延时可能会导致按键响应不灵敏,而过短的延时可能会引入抖动。
因此,在设置防抖时需要进行一定的实验和调试。
单片机按键程序设计单片机按键的基本原理其实并不复杂。
通常,按键就是一个简单的开关,当按键按下时,电路接通,对应的引脚电平发生变化;当按键松开时,电路断开,引脚电平恢复到初始状态。
在程序设计中,我们需要不断检测引脚的电平变化,从而判断按键是否被按下。
在实际的按键程序设计中,有多种方式可以实现按键检测。
其中一种常见的方法是查询法。
这种方法是通过不断地读取按键对应的引脚状态来判断按键是否被按下。
以下是一个简单的查询法示例代码:```cinclude <reg51h> //包含 51 单片机的头文件sbit key = P1^0; //定义按键连接的引脚void main(){while(1) //无限循环{if(key == 0) //如果按键按下,引脚为低电平{//执行按键按下的操作//比如点亮一个 LED 灯P2 = 0xfe;while(key == 0);//等待按键松开}}}```上述代码中,我们首先定义了按键连接的引脚`key`,然后在主函数的无限循环中不断检测按键引脚的状态。
当检测到按键按下时,执行相应的操作,并通过`while(key == 0)`等待按键松开。
除了查询法,还有中断法可以用于按键检测。
中断法的优点是能够及时响应按键动作,不会因为程序的其他操作而导致按键响应延迟。
```cinclude <reg51h> //包含 51 单片机的头文件sbit key = P1^0; //定义按键连接的引脚void int0_init()//中断初始化函数{IT0 = 1; //下降沿触发中断EX0 = 1; //使能外部中断 0EA = 1; //开总中断}void int0() interrupt 0 //外部中断 0 服务函数{//执行按键按下的操作//比如点亮一个 LED 灯P2 = 0xfe;}void main(){int0_init();//初始化中断while(1);//无限循环,保持程序运行}```在上述代码中,我们首先在`int0_init` 函数中对中断进行了初始化设置,然后在`int0` 函数中编写了按键按下时的处理代码。
消除键抖动的各种方法作者:刘艳来源:《电脑知识与技术·学术交流》2008年第26期摘要:单片机控制系统中大多使用控制键来实现控制功能。
消除按键瞬间的抖动是设计者必须要考虑的问题。
该文介绍了常用的一些对按键进行去抖动处理的硬件和软件方法,来保证微机系统的正确工作。
关键词:单片机;键处理;去抖动中图分类号:TP334文献标识码:A文章编号:1009-3044(2008)26-1831-03The Ways of Elimination of Key JitterLIU Yan(The Information Department of Ningxia Vocational Technological Institution, Yinchuan 750002, China)Abstract: SCM control system ofen be used control keys to achieve control. Elimination of jitter of the key moment must be consider by the designers. In this paper, some of the commonly used of the hardware and software methods to deal with the jitter of keys are Introducted to ensure that computer systems work correctly.Key words: singlechip; dealing with key; elimination of jitter1 引言键盘是由若干按键组成的开关矩阵,他是单片机最简单的输入设备。
操作员通过键盘输入数据或命令,实现简单的人际对话。
组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
单片机按键去抖
我们首先要清楚为什么要按键去抖。
先看先按键按下的波形图
通过这个图形就很清楚为什么要按键去抖了,要是不去抖的话,当按下按键的时候就会在0~5ms 内出现抖动,相当于在不停地按下按键而就不是只按了一次了。
稳定闭合时间大约是10ms,松手抖动的时间和按下抖动的时间差不多。
去抖的方法有硬件去抖和软件去抖
我们常用牺牲CPU 的时间来软件去抖,就是按下按键后延时5~10ms 时间后再来检查是否有按键按下,松手检测也一样。
硬件去抖的方法如图所示
独立按键的去抖方法很简单,就是在按下和松手后分别加一小段延时再来判断。
例:
sbit key=P1;
........................
.......................
if(!key) //如果有按键按下
{
delay(10); //延时一小段时间
if(!key) //真有按键按下
{。
// 执行按键按下后的操作
}
while(!key); // 松手检测,要是没有松手的话就一直执行while 循环。
单片机按键设计的四个方案详解在单片机系统里,按键是常见的输入设备,在本文将介绍几种按键硬件、软件设计方面的技巧。
一般的在按键的设计上,一般有四种方案:一是GPIO口直接检测单个按键,如图1.1所示;二是按键较多则使用矩阵键盘,如图1.2所示;三是将按键接到外部中断引脚上,利用按键按下产生的边沿信号进行按键检测,如图1.3所示;四是利用单片机的ADC,在不同的按键按下后,能够使得ADC接口上的电压不同,根据电压的不同,则可以识别按键,如图1.4所示。
在以上四种设计上,各有优点和不足。
第一种是最简单和最基础的,对于单片机初学者很容易理解和使用,但是缺点是,需要在主循环中不断检测按键是否按下,并且需要做消抖处理。
若主循环中某个函数任务占用时间较长,则按键会有不同程度的“失灵”。
第二种,优点是能够在有限的GPIO情况下,扩展尽可能多的按键。
但缺点同上,需要不停检测按键是否按下。
第三种方式是效率最高,不需要循环检测按键是否按下,但是缺点是,需要单片机有足够的外部中断接口以供使用;第四种的优点是,只需要单片机的一个ADC接口,一根线,就能对多个按键进行识别,缺点是按键一旦内部接触不良,则可能按键串位,且按键产生的抖动,会造成一定的识别错误。
在以上的三种常见按键设计的基础上,现在分享我学习和工作中总结的按键方案。
改进一:在原方案一的基础上,加上与门电路,使得任何一个按键按下,都能产生中断,然后在中断里面识别是哪个按键被按下。
因此不需要循环扫描,大大提高了效率。
方案如图1.5所示。
只需要每个按键对应地增加一个二极管,利用二极管的线与特性,可以实现按下任何按键,都能产生中断信号,但是按键之间互不影响。
二极管选用普通整流二极管即可,本人亲测可行。
单片机按键去抖动程序设计思路1.硬件电路设计为了能够较好地去抖动按键,我们可以在按键的输入引脚上加一个RC组合电路,以延迟触发信号的上升沿和下降沿,从而消除抖动。
RC组合电路一般由一个电阻R和一个电容C组成,其原理是通过RC的时间常数来控制信号的上升和下降过程。
2.软件设计在单片机程序中,我们需要采取一定的算法来检测按键的真实触发信号,下面是一个简单的按键去抖动的程序设计思路:(1)初始化首先,我们需要对按键的输入引脚进行初始化,配置为输入模式,并设置为上拉电阻模式。
这样可以确保在按键未按下时,输入引脚保持高电平。
(2)读取按键状态通过读取按键的输入引脚状态,来判断当前按键是否处于按下状态。
一般来说,输入引脚为高电平时表示按键未按下,为低电平时表示按键已按下。
(3)去抖动算法当检测到按键状态发生变化时,即从未按下到按下或从按下到未按下,可以认为触发了一次按键操作。
在这个过程中,我们需要使用去抖动算法来过滤掉抖动信号。
常见的去抖动算法有两种:软件延时法和状态延时法。
软件延时法是通过在检测到按键状态发生变化后,延时一段时间,再次读取按键状态来判断是否真正触发了按键操作。
通过调整延时时间,可以达到去抖动的效果。
但是使用软件延时法会占用较多CPU时间,因此在需要很高响应速度的系统中不适用。
状态延时法是通过引入一个状态变量,用来保存按键的状态。
在检测到按键状态发生变化后,将状态置为相反的值,并延时一段时间。
在延时结束后,读取按键状态和状态变量的值,如果相等则认为触发了按键操作,否则不触发。
需要注意的是,为了防止按键的持续震动导致多次触发,我们一般会设置一个最小的按键触发间隔。
即在两次按键操作之间需要间隔一段时间,才能再次触发。
(4)执行按键操作当确认触发了按键操作后,我们可以执行相应的操作,如触发一个中断、改变LED灯的状态等。
通过上述程序设计思路,可以实现按键去抖动的功能,从而得到准确的按键触发信号。
当然,具体的实现还需要根据具体的单片机平台和开发环境来进行调整。
单片机消除按键抖动的方法
单片机中,当按键被按下时,可能会出现按键抖动的现象,即按下按键后,按键会不断地重复触发,导致程序的不稳定性等问题。
为了消除按键抖动,可以采取以下方法:
1. 软件消抖法:在程序中通过延时、多次采样等方法,对按键
进行去抖处理。
但这种方法需要占用一定的CPU资源,容易影响程序的稳定性和响应速度。
2. 硬件消抖法:通过外部电路对按键进行去抖处理,如添加 RC 滤波器、加电容等组合电路,可稳定按键的电平信号,避免按键的震动和干扰。
3. 系统延时法:在按键按下后,延时一段时间再读取按键的状态,可消除按键的抖动。
但这种方法需要根据实际情况设置合适的延时时间,否则会影响系统的响应速度。
4. 确认法:在按键按下后,通过程序对按键的状态进行多次确认,只有当确认多次读取的状态一致时,才认为按键的状态是有效的。
这种方法需要设置合适的确认次数和时间,才能达到较好的去抖效果。
总之,消除按键抖动是单片机程序开发中的一个重要问题,需要根据实际情况选择合适的去抖方案,保证程序的稳定性和可靠性。
- 1 -。
单片机按键消抖的方法,硬件软件都可以实现
不管设计一个什么作品,按键总是少不了的,对于按键你知道那些呢?
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。
图1
抖动时间
抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。
这是一个很重要的时间参数,在很多场合都要用到。
按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒,大家可以用示波器测试一下。
键抖动会引起一次按键被误读多次。
为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。
在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。
下面是两种消抖方法:
一、硬件消抖:
按键防抖电路控制电路
所示利用RC 积分电路来达成杂波的滤除与波形修整的电路(如图1 )。
在S1 ON 的瞬间由于接触弹跳的关系,会使A 点电压呈现高速的断续现象,再S1 OFF 时亦然,详(如图2所示),然而由于电容两端电压需由电压经电阻慢慢充电才会上升,使得B 点电位缓步上升情形:S1 OFF 时亦然,电容电压经R 放电,使B 点电压缓缓下降。
此一变化,经史密特反相修整后,可得一标准负脉波输出,如波形图C 点所示。
用其他的各类触发器,锁存器亦可达到消抖效果。
二、软件消抖:。