按键开关是仪器仪表重要的人机接口,信息输入的普遍方式。普通的机械拨动开关采用弹性金属簧片,按键开关动作时不可避免地会出现抖动现象,不做处理则会引起按键多次触发,即按键开关的重复触发。另外,如果仪器工作环境中电磁干扰较强,也很容易在输入通道中引入干扰脉冲,从而导致按键的误触发。
面对按键开关经常会出现失灵的情况,还有按键抖动重复触发的问题,我想大多数人都经历过。对于此问题,肯定也困扰了很久。按键在断开时一般输入信号为高电平,按下时输入为低电平,在按键的过程中,输入信号并不是直接产生一个下降沿和一个上升沿的脉冲信号。传统解决按键抖动重复触发的方法有两种,现在提供一下能有效解决以上问题的方法。
一是采用增加硬件电路的方法对输入信号进行整形,例如增加单稳态触发电路、积分型触发电路、R-S触发电路等。采用这些方法可以有效解决按键开关连续触发的问题,但无疑增加了电路成本和系统复杂度,在按键较多的情况下不宜采用。另外这些方法是保证每次按键动作只触发,屏蔽了时间间隔较近的脉冲,在干扰引起的脉冲进入输入通道时,部分电路仍能触发按键动作,即没有防止误触发的功能。
二是采用软件处理方法,通常为检测到按键开关信号后延时,或对输入通道进行反复采样,解决方法为检测到低电平信号后,延时一段时间,即跳过按键开关抖动时段,执行按键程序,或者再次检测按键信号,仍为低电平则执行按键程序。延时时间取决于按键抖动时间,一般超过20ms,因为抖动时间取决于开关的机械特性,一般为5—lOmsczJ。本方法可以消除连续触发,但延时一般用循环程序解决,占用了大量的CPU工作时间,对实时处理或高速处理任务会有很大影响。在实际应用中,长时间的循环延时程序较容易导致程序“跑飞’”或死循环,引起系统复位。