STC89C52单片机按键控制流水灯的亮灭
时间: 2023-07-02 13:06:54 浏览: 308
stc89c52_keil_c-单片机项目资源
下面是STC89C52单片机按键控制流水灯的亮灭的代码,具体实现方法如下:
```c
#include <reg52.h> //头文件
sbit LED1 = P1^0; //定义LED1
sbit LED2 = P1^1; //定义LED2
sbit LED3 = P1^2; //定义LED3
sbit LED4 = P1^3; //定义LED4
sbit KEY1 = P3^2; //定义按键1
sbit KEY2 = P3^3; //定义按键2
void Delay() //延时函数
{
int i = 50000;
while(i--);
}
void main()
{
unsigned char i = 0; //计数器
LED1 = LED2 = LED3 = LED4 = 0; //初始化
while(1)
{
if(KEY1 == 0) //按键1被按下
{
Delay(); //延时去抖
if(KEY1 == 0) //再次判断按键1是否被按下
{
if(i >= 3) //如果已经是最后一个LED灯,从头开始
{
i = 0;
}
else
{
i++; //计数器加1
}
}
while(!KEY1); //等待按键1释放
}
if(KEY2 == 0) //按键2被按下
{
Delay(); //延时去抖
if(KEY2 == 0) //再次判断按键2是否被按下
{
if(i == 0) //如果已经是第一个LED灯,从尾开始
{
i = 3;
}
else
{
i--; //计数器减1
}
}
while(!KEY2); //等待按键2释放
}
switch(i) //根据计数器的值,控制LED灯亮灭
{
case 0: LED1 = 1; LED2 = LED3 = LED4 = 0; break;
case 1: LED2 = 1; LED1 = LED3 = LED4 = 0; break;
case 2: LED3 = 1; LED1 = LED2 = LED4 = 0; break;
case 3: LED4 = 1; LED1 = LED2 = LED3 = 0; break;
}
}
}
```
该代码中,我们通过定义每个LED灯的控制引脚和按键的控制引脚,然后在主函数中通过读取按键状态来控制LED灯的亮灭,从而实现按键控制流水灯的亮灭。同时,为了防止按键抖动,我们加入了延时去抖的处理。
阅读全文