单片机中判断按键是否按下为防止误判断需要做什么?

如题所述

一般需要增加消抖,也就是采集到“按下”时还需要过几十毫秒再采集一次,如果仍然为“按下”状态才视为有效的按下。
上面只是最粗糙的一种判断方法,一般仅用于可靠性要求不高的场合。对于商业级的产品则至少需要添加软件滤波的方式来准确判断按键的真实状态。
温馨提示:内容为网友见解,仅供参考
无其他回答

单片机中判断按键是否按下为防止误判断需要做什么?
一般需要增加消抖,也就是采集到“按下”时还需要过几十毫秒再采集一次,如果仍然为“按下”状态才视为有效的按下。上面只是最粗糙的一种判断方法,一般仅用于可靠性要求不高的场合。对于商业级的产品则至少需要添加软件滤波的方式来准确判断按键的真实状态。

单片机在检测按钮是否按下时,需要注意什么问题?如果要解决应如何处理...
要注意按钮的抖动时间,在预期的抖动时间内,应设计防抖动程序,简单的程序是在检测按钮语句后面加延时程序,复杂的设置处理标志位和方向标志位。也可设置硬件防抖动电路。

单片机在扫描是否有键按下时,为什么要做这么多次的判断?有什么作用...
是为了防止键盘抖动,键盘抖动的时间是很短的,通过延时一段时间后,如果再判断键盘是按下的,这是才真正能说明键盘按下了,相反,则是抖动,不能说明键盘按下!所以,软件中一般都需要两次判断键盘按下!第一次之后,加段延时,之后再判断

如何用单片机判断按键是单击还是双击?
if(key == 0) { \/\/发现按下按键 Delay(10) \/\/延时约10ms if(key == 0) { \/\/确认第一次按下 while(!key); \/\/等待释放 \/\/---以上是常规的按键判别步骤 Delay(100) \/\/多延时一会,约100ms if(key == 0) {\/\/确认第二次按下 \/\/执行双击程序 } else { \/\/执行单...

单片机中怎样精确判断键被按下的次数
设置一个变量i,当按下一次按键就加1,这样就可以了。你说的精确,其实是要准确判断按键是否按下,两个方法 ,一个硬件消抖,另一个软件消抖,一般用软件消抖,即延时+等待按键释放。

单片机键盘检测的问题
先在 P3.0 输出 0,(其它位都输出1),即第一行为0。之后,就可以:《把P3口的值赋给随机变量temp,然后和0xf0相与,通过结果判断temp高四位有没有0.从而判断出4x4矩阵的第一行有没有按键被按下》。--- 另外的问题,如果有一个按键被按下,是不是它所在的行列线的电平都会变成低电平 只...

单片机怎样识别按键是单机,双击还是长按,算法应该是怎样?
按键的处理进行时间判断.在一定的时间内如果按下按键,当时间小于这个时间,那么为单次按键,当时间超过一定时间为为长按,当两次按的中间有高电平时,为双击.你可以参考参考.

单片机按键检测。。。谁有办法做到既能准确只改变一次数值,又不失响...
我的一般做法是,将定时器设定为1mS中断一次,假如你采用15mS做按键消抖,那就在按键检测程序中检测到按键被按下时,设一个标志位,然后1mS之内就会进定时中断,在中断中判断按键是否继续被按下,若是,则对一个寄存器加一,若不是,则清除按键的标志位和该寄存器.若寄存器计到15了,就表示该按键已经持续了15...

单片机怎么判断按键在3s内有没有按下,大体思路
根据晶振算数,定时中断的时间参数。采用定时器原理。每隔100毫秒。定时中断。在程序中,做循环。设置一个变量。中断一次,变量+1.在主程序中,判断,如果,此变量的值大于了30,表示有按键按下,并且清零。否则没有按下

单片机 独立键盘检测问题
你好,程序中一共出现了两次temp=p3;temp=temp&0xf0;第一次出现的时候表示单片机检测到按键动作,但为了准确性,防止是无意识的出发,因此用一个delay函数,延时5MS。再次检测P3的状态!此时temp=p3;temp=temp&0xf0;说明的确是按键按下,而不是误触发!因此起到一个去抖动的作用!望采纳,谢谢!

相似回答