独立按键控制 LED 流水灯方向
前言
功能要求
使用独立按键K1, 控制LED流水灯的移动方向
主要是基于这篇文章 ———— LED 流水灯
加一个 独立按键 控制移动方向的功能
新知识点主要是
-
如何使用独立按键
-
如何进行按键防抖
另外需要一些编程的技巧,合理命名变量、编写程序逻辑。
资料
知识点
按键引脚
独立按键 K1
对应的引脚是 P3_1
按键防抖动
需要通过 软件延时,进行按键防抖
一般延时时长在 5-10ms

程序代码
#include <REGX52.H>
#include <INTRINS.H>
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
void Delay(int t){
int i = 0;
for(i=0;i<t;i++){
Delay1ms();
}
}
//定义移位方向
#define L2H 0
#define H2L 1
void main()
{
unsigned char bitmap = 1;
unsigned char shift_direction = L2H;
P2 = 0;
while(1){
//P3_1 对应独立按键K1,低电平触发
if(0 == P3_1){
//按键防抖
Delay(20);
//按下的时候,死循环,不做任何操作
while(0 == P3_1){
//nop
}
Delay(20);
//释放的时候才做操作
shift_direction = (shift_direction+1)%2;
}
bitmap = (L2H == shift_direction)?bitmap<<1:bitmap>>1;
if(0 == bitmap){
bitmap = (L2H == shift_direction)?0x01:0x80;
}
P2 = ~bitmap;
Delay(500);
}
}
演示效果


浙公网安备 33010602011771号