按键防抖一般多少时间,单片机按键防抖动延时多长才合适
来源:整理 编辑:亚灵电子网 2023-11-10 18:59:56
本文目录一览
1,单片机按键防抖动延时多长才合适

2,单片机按键防抖动延时多长才合适
20~50ms吧,我个人比较喜欢用50的,设的短了还是会有干扰进来的。其实将防抖的代码放在中断程序里,时间的长短对整个程序的运行速度几乎没有影响。

3,买了个凯酷的机械键盘上面标着可以切换按键防抖动时间想问下
你按健时,由于按健有反应时间、有抖动,你按一次机器感应可能会有几次感应,防抖就是让在按键正常反应时间内机器只感应一次按键效果,防止误操作。
4,单片机按键防抖动延时多长才合适
20~50ms吧,我个人比较喜欢用50的,设的短了还是会有干扰进来的。其实将防抖的代码放在中断程序里,时间的长短对整个程序的运行速度几乎没有影响。
5,按键去抖
楼上说的延时最好不要用,这样会很不稳定,有按键要消抖的话最好用定时中断进去扫描,判断上一状态和这一状态的值是否相等,相等就把时间累加,不相等的话,就保持当前值并清除时间累加,中断时间最好是不影响主程序的运行就行,不宜过长,我一般是用50us-200us之间(看震荡频率),消抖时间一般在50ms到100ms(主要看用在什么地方)。当然你如果只是做实验的话上面的延时方法也是可以用的,不过个人建议先用中断做,虽然开始会有点不麻烦,多做些练习就很快掌握了。
6,常用的按键消抖方法有哪些分别用什么方法来实现
按键的消抖,可用硬件或软件两种方法。1、硬件消抖在键数较少时可用硬件方法消除键抖动。硬件消抖的典型做法是:采用R-S触发器或RC积分电路。双稳态消抖电路的工作过程如下:当按键未按下时,a=0,b=1,输出A=1,B=0。当按键按下时,按键的机械弹性作用使按键产生前沿抖动。当释放按键时,按键的机械弹性作用使按键产生后沿抖动。滤波消抖电路的工作过程如下:当按键未按下时,电容C两端的电压为V,非门输出为1。当按键按下时,由于电容C两端的电压不能突变,因此即使在接触过程中出现抖动,只要C两端的充电电压波动不超过非门的开启电压(TTL为0.8V左右),非门的输出就不会改变(可通过选取合适的R1、R2和C的值来实现)。当按键断开时,即使出现抖动,由于C两端的电压不能突变(它要经过R2放电),因此只要C两端的放电电压波动不超过非门的关闭电压,非门的输出就不会改变所以,RC电路滤波消抖成败的关键在于R1、R2和C时间常数的选取。必须保证C由稳态电压充电到开启电压或放电到关闭电压的延迟时间大于或等于10ms。参数的数值可由计算或实验确定,图中的参数仅供参考。若釆用输入端有施密特触发特性的门电路,则效果更好。2、软件消抖实现方法:假设未按键时输入1,按键后输入为0,抖动时不定。可以做以下检测:检测到按键输入为0之后,延时5ms~10ms,再次检测,如果按键还为0,那么就认为有按键输入。延时的5ms~10ms恰好避开了抖动期,从而消除了前沿抖动的影响同理,在检测到按键释放后,再延时5~10ms,消除后沿抖动,然后再对键值进行处理。不过一般情况下,我们通常不对按键释放的后沿进行处理,实践证明,这样也能满足一定的要求。扩展资料在机械按键的触点闭合和断开时,都会产生抖动,为了保证系统能正确识别按键的开关,就必须对按键的抖动进行处理。按键的抖动对于人类来说是感觉不到的,但对单片机来说,则是完全可以感应到的,而且还是一个很“漫长”的过程,因为单片机处理的速度在“微秒”级,而按键抖动的时间至少在“毫秒”级。单片机如果在触点抖动期间检测按键的通断状态,则可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,从而引起误处理。因此,为了确保单片机对一次按键动作只作—次响应,就必须考虑如何消除按键抖动的影响。参考资料来源:百度百科-按键消抖
7,按键开关抖动计数及去抖
按键的机械抖动,我举例说明一下,例如,按键1是连接一个带外部中断的端口,控制开关s1到sn的开启,当你需要开启s1的时候,你只需要按下s1,如果产生机械抖动,就会把s2也打开,甚至打开s3(程序的运行速度太快)。在写中断服务程序程序的时候(如何开启和关闭中断服务程序我就忽略了),需要最后用语句控制关闭中断,在关闭中断的语句前面加一个延时缉龚光夹叱蝗癸伟含连语句,也就是说,当中断开启后必须要延时一定的时间才能结束中断程序,这个延时一般在500毫秒左右就可以了。这样做得好处就是,当按下按键1以后,需要按住500毫秒中断程序才能执行结束,s1才能打开,这样就能避免由于机械抖动所产生的不必要动作。
8,按键程序须有10ms的去抖但我不想死等这10ms该怎么办希望用汇
对,不知你不想在这里S等,要做什么?如果 要显示,可以调用显示子程序作防抖(如果显示子程序达不到10MS,可以多次显示)可以调用一个显示程序或者其它什么程序也可以选硬件去抖。再看看别人怎么说的。采集啊,谁会这么写等待10ms,如果是电磁炉这样等,一,会被干扰跳键,二,只要上功率就会炸机,因为采电压,电流不及时。我们的主循环应该是不断对各个子程序扫描的,一般来说一次循环所执行的时间不能超过2ms,当然也有特殊我给个思路自己整理1,用一个变量来计检测次数key_time2,扫描到一次,如果有按键key_time加1,如果没键清0(也可以是减)3,如果key_time加到了某个值就确认为按键4,如果要规定确认按键的时间可以规定时间轮询,如4ms扫描一次,key_time的值为20时确认按键,则消抖时间为80ms
9,经典的键盘消抖
if(key==0)
delay(5); //5ms的防抖时间 (太长也是浪费资源,5ms就足够了)
if(key==0)
while(key==0);// 判断按键是否弹起来,弹起来了就继续执行下面的语句,否则则一直循环到弹起来
.....
}
}消除抖动一都是延时,具体看你的硬件电路焊接,在做一点细微的调整。 假设只检测一次按键,用while来做松手检测。否则用延时来做,长按,短按等。 我到没看到啥经典的键盘消除抖动。 看具体情况而定。if(key1==0)
delay(100); //按键防抖
if(key1==0)
..........;
while(key1==0);
}
}看你什么键盘,一般消抖都是连续计数多次,或者一段时间延时,如果一直处于按下状态,则才说明有按键按下.
10,按键消抖真的有必要吗
我虽然不是你那个专业的 不过我干的那个跟你差不多 呵呵 既然都说要用消抖 就用点好点你说呢 就像我们干的这个专业不用端面量液时要不把620改为52.0649改为270.0 不改也可以 但就是怕程序有时出问题那就是人命的问题哈 所以我觉的用了好点
按键消抖:
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号小型如下图。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,如下图。抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。
按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。按键的抖动,可用硬件或软件两种方法。
<1> 硬件消抖:在键数较少时可用硬件方法消除键抖动。下图所示的RS触发器为常用的硬件去抖。
图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。
<2> 软件消抖:如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。
按键开关消抖程序
实践中,单片机端口在连接开关器件时都要考虑消抖的问题,或在硬件上增加延迟,或是增加软件延迟查询的功能模块。这里,我们考虑这样一个检测电路:单片机连接一个开关和两个LED。程序是这样的,如果开关的消抖正确,就点亮LED1,否则就闪亮LED2。按下开关,点亮LED1,释放开关,LED1即熄灭。我们加入20毫秒的消抖延迟时间。当检测到开关为低电平时,单片机在延迟20毫秒后再次检测开关的状态。如果此时开关状态为高,则LED2就闪亮,如为低则点亮LED1。
源代码:
led1 bit P2.0
led2 bit P2.1
switch1 bit P1.0
ORG 0000h
setb switch1 //initialize switch 1 as input
setb led1 //Turn OFF LED1
setb led2 //Turn OFF LED2
wait:
jb switch1,wait // Wait till switch1 has been pressed
call debounce_delay
jb switch1,c1_wait
//switch low even after debouncing period
//switch has been succesfully debounced
clr led1 //Turn ON LED1
jnb switch1,$ //wait till switch has been released
setb led1 //Turn OFF LED1
ajmp wait
c1_wait:
//Switch PIN high after debounce period so error in debouncing
cpl led2
ajmp wait
debounce_delay: //Subroutine for generating 20ms delay
MOV r7,#245
l1_debounce_delay:
MOV r6,#40
djnz r6,$
djnz r7,l1_debounce_delay
ret
END
文章TAG:
按键防抖一般多少时间按键 一般 多少
相关文章推荐
- 电压 电流围成的面积,电流与电压的比值是多少?
- 起辉器多少钱,请问空调启动器多少钱一个
- 飞腾芯片的笔记本,国产电脑处理器有哪些品牌?
- 电压环路响应速度,电源环路响应
- 红外遥控音乐插座电路,智能红外遥控插座怎么设置?
- 单差分电路图,差分通道单端输出
- 电路板油脂用什么,油性电路板
- 射频mos驱动电路,MOS开关电路怎么接?
- 电路中编码器,编码器电路分析
- 怎样快速检测电路板,如何快速检测电路板的质量?
- 6264芯片功能作用,HI6422芯片功能
- 六米高的图腾柱多少钱,DNF 牛头统帅的图腾柱谁能告诉我确切的价格是多少急用
- 太阳能模拟电路,模拟太阳能热水器实验
- hsma有多少接口,AMD的CPU一共有多少种接口列举出来谢啦
- k60芯片是多少位的处理器,飞思卡尔为什么很多人都选s12k60啊他们有什么优点啊又有coldfire怎