单片机独立按键去抖动问题

单片机独立按键去抖动问题视频讲按下时因为变低电平,有抖动,所以加上延时程序去抖动,但是松开按键直接一个while判断后直接退出了,而没有加上去抖动延时。我看书上写,松开后不需要去抖动,为什么啊?

按键按下的时候加了延时,你已经知道原因了。是为了消除抖动,你的疑问是为什么松开的时候没有再加上延时函数,原因很简单,看图片。

因为进行了两次if判断,松开按键的时候无非会出现电平的跳变,理论上松开按键之后就一直为高电平1111111111,如果出现1110101111,中间的第一个10就发生了跳变,因为cpu的运算速度非常快,当程序又到了第一个if时,此时key1为0,那么满足条件,执行延时函数,后面第二个10就直接忽略了,后面的电平已经为1,所以这一个延时函数就同时起到消除按下和松开的电平抖动的作用。(如果松开按键之后的电平为低电平,那么把我上面的所有的程序和电平取反就行了,再来阅读)。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-02-03
我们检测的是按键按下,松开了由于没有消抖,抖动的结果最多也就被当成了再次按下,但由于按下有延时消抖,所以并不会发生松开被当再次按下的情况,就没必要消抖了本回答被网友采纳

单片机独立按键去抖动问题
按键按下的时候加了延时,你已经知道原因了。是为了消除抖动,你的疑问是为什么松开的时候没有再加上延时函数,原因很简单,看图片。因为进行了两次if判断,松开按键的时候无非会出现电平的跳变,理论上松开按键之后就一直为高电平1111111111,如果出现1110101111,中间的第一个10就发生了跳变,因为cpu的运算...

请教高手,用51单片机独立按键控制数码管数字加减,为什么在按下独立按...
因为你按键的时候影响了数码管刷新;数码管一般都是动态扫描的,利用人眼的视觉暂留做的,你按下按键的时候,肯定有延时消抖,延时的时候就影响了数码管显示,所以数码管刷新的慢了,人眼就能分辨出来亮和灭的状态...解决办法 1、改进按键扫描 2、改进数码管显示 3、用嵌入式系统 以上三选一即可解决 ...

单片机菜鸟求教,关于延迟和按键去抖的问题
解决办法就是采用定时器中断。不管是按键用中断也好,显示用中断也好,只要其中一个进入定时器中断,问题就解决了。程序就不写了,描述一下意思就好 你的主程序保留键盘部分,但是显示那一大段不要了 中断本来是50ms,建议改成20ms 然后呢,设置一个变量,每次进入中断就把变量的值加1 加完以后,根据...

c51单片机:两个独立按键控制一个led,k1按下松开led闪烁,k2按下松开le...
}led=0;}思路很简单,就是用检测的方法去扫描相应的按键是否被触发,然后执行相应的子程序。

【51单片机系列】独立按键介绍
首先,按键作为一种电子开关,通过IO口作为输入,利用其机械特性中的短暂抖动,需要通过软件消抖技术来确保CPU准确识别按键状态。软件消抖通常通过延时读取按键状态,如10ms,如果两次读取都为按下状态,则确认按键被按下。独立按键检测原理是通过将按键的一端接地,另一端连接到单片机的输入IO口。当按键按下...

单片机独立按键的抖动原因是什么
AD按键指的是使用模数转换的方法得到按键值,与矩阵按键和独立按键相比大大节省了端口数目,因为一个端口可以输入几百到几千个按键。

单片机按键问题
1.中断方式(这个比较可靠)一般程序按键按下后 灯亮 然后按键松开灯还是亮的 采用的是边沿检测,即有电平跳变就改变输出。如果想按键按住的时候灯亮,不按的时候灯不亮 采用电平触发,即当电平维持是正或者负的时候才稳定输出。2.也可以用查询方式 比如 一般程序按键按下后 灯亮 然后按键...

单片机 键盘检测与应用
独立键盘检测原理基于按键与I\/O口的连接,通过程序赋值为高电平,不断检测I\/O口电平变化。当按键未按下,电平为高;按键按下时,I\/O口电平变为低。程序检测到电平变化,即认定按键被按下,执行相应操作。按键在闭合和断开时存在抖动现象,对单片机I\/O口产生干扰。为解决这一问题,常采用硬件和软件...

51单片机怎样实现不同独立按键按下出现不同情况
实现该功能的操作步骤参考如下:1、先将每个独立按键连接到51单片机的不同输入引脚上,并通过下拉电阻将其拉低。2、在程序中,使用循环或定时器中断的方式不断读取每个按键的引脚状态。当某个按键被按下时,其对应的引脚电平会变为高电平。3、根据读取到的按键引脚状态,执行相应的操作。例如,如果按键A...

若51单片机的P1.0口接了一个独立按键,编写程序完成按键检测程序要求每...
sbit button P1^0;if(button == 0) \/\/一旦检测到键值 { Delay(); \/\/延时20ms,有效滤除按键的抖动 if(button == 0) \/\/再次确定键值是否有效 { \/\/Do somethinghere!} }

相似回答