前言
大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁
本章是51LCD单片机设计的一个环节,完整可前往相应博客查看完整
传送门
欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!
目录
三.【控制LED状态】
1.按键抖动问题
- 我们发现中间存在:
- 2个抖动时间段(按下时)(松开时)
- 1个中间时间段
- 我们要采用【时间延迟】的原理规避这一现象
2.我们要采用【时间延迟】的原理规避这一现象
- 自定义延时子程序传送门:传送门
- 我们在第一个抖动时间段(按下时)设置一个延时程序
- 在中间时间段时,设置一个判断按键状态的while循环
while(P3_1==0);
,使他实现【到达中间时间段,停下等待按钮状态:实现按下进入循环,松手跳出循环继续程序】- 我们在第二个抖动时间段(松手时)设置一个延时程序
cpp
#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;//取反
}
}
}
- 现象:我们烧写入单片机后,可以发现按下k1按键,d1灯亮并保持;再次按下,d1灯灭并保持;