C51 独立按键 个人笔记

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

防抖

硬件防抖

软件防抖

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

电路图

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

判断按键按下

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

独立按键控制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();
	}
}
原文地址:https://www.cnblogs.com/YuQiao0303/p/9897194.html