轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开
![](https://img-blog.csdnimg.cn/b83eb7d27ab74484ac63bb98471eb921.png)
默认P31,P30,P32,P33是高电平,如果按下,线路接通地,变成低电平
![](https://img-blog.csdnimg.cn/03996c23109f45a6b1598d1f7e693e23.png)
按键控制一个LED灯
#include <REGX52.H>
void main()
{
while(1)
{
if(P3_1==0)//如果按键按下,P3_1是低电平
{
P2_0=0;
}
else
{
P2_0=1;
}
}
}
但是:一般按键都有抖动
![](https://img-blog.csdnimg.cn/d431883564d14d8c9a697e331b6ea34b.png)
消抖方法,硬件消抖,软件消抖
Delay(20);//按键消抖
while(P3_1==0);//检测松手
Delay(20);//按键消松手抖动
1ms计时
void Delay1ms()
{
unsigned char i,j;
i=2;
j=239;
do
{
while(--j);
}while(--i);
}
设置函数:
void Delay(unsigned int xms)
{
unsigned char i,j;
while(xms){
i=2;
j=239;
do
{
while(--j);
}while(--i);
xms--;
}
}
按键控制:
#include <REGX52.H>
void Delay(unsigned int xms)
{
unsigned char i,j;
while(xms){
i=2;
j=239;
do
{
while(--j);
}while(--i);
xms--;
}
}
void main()
{
while(1)
{
if(P3_1==0)
{
Delay(20);//按键消抖
while(P3_1==0);//检测松手
Delay(20);//按键消松手抖动
P2_0=~P2_0;
}
}
}