一、机械按键的颤动
键盘,作为向体系操作人员的干涉指令的接口,以其特定的按键序列代表着各种承认的操作指令,所以,准确无误的辨认每个键的动作和其所在的状况,是体系能否正常作业的要害。大都键盘的按键多运用机械式弹性开关,一个电信号经过机械触点的断开,闭合进程完结凹凸电平的切换。因为机械触点的弹性效果,一个按键开关在闭合及断开的瞬间必定伴随着一连串的颤动,其波形如图所示:
颤动进程的长短是由按键的机械特性决议,一般是10~20ms。为了使CPU对一次按键动作只承认一次,有必要消除颤动的影响,能够从硬件及软件两个方面着手。本文只介绍软件方面的防抖。
软件防抖的思路:当第一次检测到有建按下时,先用软件延时(10~20ms),然后再承认键电平是否仍旧坚持闭合状况的电平。若坚持闭合状况电平,则承认此间已按下,然后消除颤动影响。
二、proteus仿真
源程序:
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit jia_key=P2^0;
sbit jian_key=P2^1;
uint i;
uchar duan_code[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void delay_ms(uint z)
{
}
void scankey(void)
{
}
void main(void)
{
}