独立按键类似于一个开关,按下时开关闭合
防抖
硬件防抖
软件防抖
通过延时,滤掉抖动的部分
电路图
普中科技的开发板,独立按键电路图如下
判断按键按下
因此判断是否按下开关的方法是看引脚是否为低电平(按下则接地了)
独立按键控制led和蜂鸣器代码
#include <reg51.h>
typedef unsigned int u16;
typedef unsigned char u8;
#define delaytime 500000
sbit led = P0^0;
sbit k1 = P1^0;
sbit beep = P0^7;
void delay(u16 i)
{
while(i--);
}
void ring()
{
beep=~beep;
delay(200);
}
void keypros()
{
if(k1==0) //按键按下
{
delay(1000); //过十毫秒 (防抖)
if(k1==0) //还是按下了
{
led = ~led;
}
// 确保一次按键只调用一次keypros
while(!k1)
{
ring();
} //按键按下时一直在此处循环,松开时离开,
}
}
void main(void)
{
led = 0; //led is off by default
while(1)
{
keypros();
}
}