当按键按下去的时候,电路导通,此时电路连通,为低电平0;
当松开按键,电路断开,为高电平1。
我们在手动按键的时候,由于机械抖动或是其它一些非人为的因素很有可能会造成误识别,一般手动按下一次键然后接着释放,按键两片金属膜接触的时间大约为50ms 左右,在按下瞬间到稳定的时间为5-10ms,在松开的瞬间到稳定的时间也为5-10ms。
独立键盘程序示例:
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit led = P28; //设置灯的控制IO口
sbit k1 = P33; //设置按键的控制IO口 INT1
void delay(u16 i) //延时函数
{
while(i--);
}
void keyprocess()
{
if(k1 == 0) //判断按键是否按下
{
delay(1000); //延时消抖
if(k1 == 0) //再次判断按键是否按下
{
led = 1; //如果按键按下,则灯亮
}
else
{
led = 0; //如果按键没有按下,则灯灭
}
}
}
void main()
{
led = 0; //初始灯灭
while(1)
{
keyprocess(); //处理按键事件
}
}