51单片机学习记录(6) 独立按键
首先我们看一下按键的原理图
可以看到按键是在P3口上,所以当我们编写程序的时候就需要对P3口进行操作
需要注意的一些细节
- 首先当我们按下按键时,对应的引脚就变成了低电平
- 当我们编写程序的时候需要进行消抖
因为当我们按下按键时,按下的可能这个操作已经进行了很多次,这样可能会导致实验不准确以及现象的不清晰所以我们必须进行消抖,经过实验,按下抖动的这个时间大约是20ms左右,所以我们可以利用延时函数来屏蔽。
#include <reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit k1 = P3^0; //定义第一个按键的位置
sbit led = P2^0;//定义一个led灯,用来证明k1发挥作用
void delay(u16 i)
{
while(i--);
}
/*定义一个按键函数,方便调用*/
void keypros()
{
if(k1 == 0) //先判断按键是否按下
{
delay(2000); // 用来进行消抖
if(k1 == 0) //到达稳定闭合状态再次判断按键是否按下,如果按下就让led灯亮起
{
led = ~led;
}
while(!k1); //判断按键是否松开
}
}
void main()
{
while(1)
{
keypros();
}
}