计算机按键去抖动的方式,键盘去抖动原则和方法

常用的去抖动方法有两种,即硬件方法和软件方法,两种方式的去抖效果相近,硬件去抖动的方法很多,主要用触发器或单稳态电路构成消抖电路。另外,由于软件去抖比较方便,不用增加额外的硬件开销,所以一般场合都采用软件去抖。单片机中常用软件去抖动法,软件法其实也很简单,就是在单片机获得端口为低电平的信息后,不是立即认定按键已被按下,而是延时10ms或更长一些时间后再次检测该端口,如果仍为低,说明此键的确被按下了,这实际上是避开了按键按下时的抖动时间,而在检测到按键释放后端口为高电平时,再延时50ms,消除后沿的抖动,然后再对按键进行处理,不过一般情况下,通常不对按键释放的后沿进行处理,实践证明也能满足日常的要求。如图8-3所示为按键抖动现象和硬件去抖动电路。

fedaa34718ff6efa0bd498ff13fe03c5.png图8-3 按键抖动现象和硬件去抖动电路

下面通过一个实验来验证一下,实验程序如下:

ORG 0000H ;

AJMP START ;

ORG 0030H ;

START:MOV SP,5FH ;

MOV P1,#0FFH ;

MOV P3,#0FFH ;

L1:JNB P3.4,L2 ;按下按键开关取反一次P1.0 灯亮,再按一次灯灭

JNB P3.5,L3 ;按下按键开关取反一次P1.1 灯亮,再按一次灯灭

LJMP L1 ;

L2:CPL P1.0 ;

LJMP L1 ;

L3:CPL P1.1 ;

LJMP L1 ;

END

把这个程序下载到单片机会发现,当按下相应的按键时,并不是像想象中的按一下灯亮再按一下就灯灭,而是有时灵有时不灵,为什么会这样呢来当按了一次按键,可是单片机却早已执行了好多次,如果执行的次数是奇数,那么结果相符;如果执行的次数是偶数,结果相反。为了使CPU能正确地读出端口的状态,对每一次按键只作一次响应就必须考虑如何去除按键的抖动。下面把前面的程序进行修改,实现按键的去抖动:

ORG 0000H;

AJMP START;

ORG 0030H;

START:MOV SP,#5FH;

MOV P1,#0FFH;

MOV P3,#0FFH;

L1:JB P3.4,L2;P3.4为1时不做处理,转P3.5 否则说明有键按下

LCALL D10mS;调用延时程序去除抖动

JB P3.4,L1;P3.4为0,说明此键确实被按下了

CPL P1.0;取反P1.0

L3:JNB P3.4,L3;直到P3.4释放后转去判断第二个键

L2:JB P3.5,L1;P3.5为1,返回继续处理P3.4,否则说明有键按下

LCALL D10mS;调用延时程序去除抖动

JB P3.5,L2;P3.5为0,说明此键确实被按下了

CPL P1.1;取反P1.1

L4:JNB P3.5,L4;直到P3.5释放为止

LJMP L1;返回

D10mS:MOV R7,#50;延时的时间一般为5~20ms

D1:MOV R6,#100;

D2:DJNZ R6,D2;

DJNZ R7,D1;

RET;

END

把这段程序写入单片机查看结果,与预测相符,这就是独立式按键去抖动的基本方法,不过这个程序在实际应用中并没有多大的意义,因为如果按键数量比较多,程序就会变得很长,因为这里采用了直接寻址的方式,如果把键值放入一个表格中,再通过查表程序来判断到底是哪个按键被按下,然后处理相应的程序就会很简单,读者可尝试实现。

举 /反馈

相关资源:车行健通用刷机软件6606kA6平台.zip-图像处理文档类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年6月26日
下一篇 2021年6月26日

相关推荐