51单片机独立按键控制8个流水灯,一个按键可以控制流水灯从左往右,另一个控制流水灯从右往左
时间: 2024-05-15 20:14:52 浏览: 8
以下是51单片机独立按键控制8个流水灯,一个按键可以控制流水灯从左往右,另一个控制流水灯从右往左的代码:
```c
#include <reg51.h>
sbit LED1 = P0^0; //定义8个LED灯引脚
sbit LED2 = P0^1;
sbit LED3 = P0^2;
sbit LED4 = P0^3;
sbit LED5 = P0^4;
sbit LED6 = P0^5;
sbit LED7 = P0^6;
sbit LED8 = P0^7;
sbit BTN1 = P1^0; //定义2个按键引脚
sbit BTN2 = P1^1;
void delay(unsigned int t); //延时函数
void main()
{
while(1)
{
if(BTN1 == 0) //按键1按下
{
LED1 = 1; //先点亮最左边的LED灯
delay(100); //延时一段时间,让LED灯亮起来
LED1 = 0; //熄灭最左边的LED灯
LED2 = 1; //点亮下一个LED灯
delay(100); //延时一段时间
LED2 = 0; //熄灭下一个LED灯
LED3 = 1; //点亮下一个LED灯
delay(100); //延时一段时间
LED3 = 0; //熄灭下一个LED灯
LED4 = 1; //点亮下一个LED灯
delay(100); //延时一段时间
LED4 = 0; //熄灭下一个LED灯
LED5 = 1; //点亮下一个LED灯
delay(100); //延时一段时间
LED5 = 0; //熄灭下一个LED灯
LED6 = 1; //点亮下一个LED灯
delay(100); //延时一段时间
LED6 = 0; //熄灭下一个LED灯
LED7 = 1; //点亮下一个LED灯
delay(100); //延时一段时间
LED7 = 0; //熄灭下一个LED灯
LED8 = 1; //点亮最右边的LED灯
delay(100); //延时一段时间
LED8 = 0; //熄灭最右边的LED灯
}
else if(BTN2 == 0) //按键2按下
{
LED8 = 1; //先点亮最右边的LED灯
delay(100); //延时一段时间,让LED灯亮起来
LED8 = 0; //熄灭最右边的LED灯
LED7 = 1; //点亮下一个LED灯
delay(100); //延时一段时间
LED7 = 0; //熄灭下一个LED灯
LED6 = 1; //点亮下一个LED灯
delay(100); //延时一段时间
LED6 = 0; //熄灭下一个LED灯
LED5 = 1; //点亮下一个LED灯
delay(100); //延时一段时间
LED5 = 0; //熄灭下一个LED灯
LED4 = 1; //点亮下一个LED灯
delay(100); //延时一段时间
LED4 = 0; //熄灭下一个LED灯
LED3 = 1; //点亮下一个LED灯
delay(100); //延时一段时间
LED3 = 0; //熄灭下一个LED灯
LED2 = 1; //点亮下一个LED灯
delay(100); //延时一段时间
LED2 = 0; //熄灭下一个LED灯
LED1 = 1; //点亮最左边的LED灯
delay(100); //延时一段时间
LED1 = 0; //熄灭最左边的LED灯
}
}
}
void delay(unsigned int t) //简单的延时函数
{
unsigned int i, j;
for(i=0; i<t; i++)
{
for(j=0; j<100; j++);
}
}
```