这回我们讲的是,按键对LED灯的控制,这次是基于上次按键模块的基础上进行了进一步的加工,处理。通过按键,实现对LED流水灯的对应的各种功能。
首先,在这里先介绍一个概念,标志位,标志位可以理解为设置的一个变量,这个变量作为标志位去使用,给标志位赋不同的值,执行不同的任务。比如标志位Flag=0,去执行LED灯的加速,让Flag = 1,则去执行LED灯减速。
按键控制LED流水灯的暂停,开始。
基于上次按键模块的基础上,再次增加了以下几个改动的地方,代码如下,以下代码的功能是通过按键实现对流水灯的开始,暂停操作
unsigned char LED = 0XFE;//给8位灯赋的一个初始值
unsigned int Time = 600;//类似于宏定义,给Time一个固定的600毫秒的值
bit Flag;//设置一个标志位
if(Flag = 1)//设置一个标志位
{
LED = _crol_(LED,1);//进行移位
Delay(Time);//延时600毫秒
}
switch(Key_Down)
{
case 1:Flag = 1;break;//如果SW1按下,让标志位为1,则执行LED流水灯开始的操作
case 2:Flag = 0;break;//如果SW1按下,让标志位为0,停止执行LED流水灯开始的操作
}
接着,我们实现一下通过按键对流水灯的加速减速操作,我们可以通过对延时函数的延长时间进行加速减速,这样子我们即可完成按键对LED流水灯的操作加速减速
if(Flag = 1)//设置一个标志位
{
LED = _crol_(LED,1);//进行移位
Delay(Time);
}
else if(Flag = 2)
{
Time = Time+100;
LED = _crol_(LED,1);//进行移位
Delay(Time);
}
else if(Flag = 3)
{
Time = Time-100;
LED = _crol_(LED,1);//进行移位
Delay(Time);
}
switch(Key_Down)
{
case 1:Flag = 1;break;
case 2:Flag = 0;break;
case 3:Flag = 2;break;
case 4:Flag = 3;break;
}
}
标签:case,break,LED,Time,蓝桥,单片机,Flag,按键
From: https://blog.csdn.net/2301_80399461/article/details/141607711