独立按键类似于一个开关,按下时开关闭合

防抖

C51 独立按键 个人笔记-LMLPHP

硬件防抖

C51 独立按键 个人笔记-LMLPHP

软件防抖

通过延时,滤掉抖动的部分

电路图

普中科技的开发板,独立按键电路图如下

C51 独立按键 个人笔记-LMLPHP

判断按键按下

因此判断是否按下开关的方法是看引脚是否为低电平(按下则接地了)

独立按键控制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();
}
}
05-23 00:31