前言
大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁文章来源:https://www.toymoban.com/news/detail-828663.html
- 本章是51LCD单片机设计的一个环节,完整可前往相应博客查看完整
- 传送门
欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!文章来源地址https://www.toymoban.com/news/detail-828663.html
- YY的《C++》专栏
- YY的《C++11》专栏
- YY的《Linux》专栏
- YY的《数据结构》专栏
- YY的《C语言基础》专栏
- YY的《初学者易错点》专栏
- YY的《小小知识点》专栏
- YY的《单片机期末速过》专栏
- YY的《C++期末速过》专栏
- YY的《单片机》专栏
- YY的《STM32》专栏
- YY的《数据库》专栏
- YY的《数据库原理》专栏
三.【控制LED状态】
1.按键抖动问题
- 我们发现中间存在:
- 2个抖动时间段(按下时)(松开时)
- 1个中间时间段
- 我们要采用【时间延迟】的原理规避这一现象
2.我们要采用【时间延迟】的原理规避这一现象
- 自定义延时子程序传送门:传送门
- 我们在第一个抖动时间段(按下时)设置一个延时程序
- 在中间时间段时,设置一个判断按键状态的while循环
while(P3_1==0);
,使他实现【到达中间时间段,停下等待按钮状态:实现按下进入循环,松手跳出循环继续程序】- 我们在第二个抖动时间段(松手时)设置一个延时程序
#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灯灭并保持;
到了这里,关于【51单片机】利用【时间延迟】的原理规避【按键抖动问题】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!