流水灯是单片机学习中常见的实验项目之一,它可以通过控制多个LED灯的亮灭实现灯光的流动效果。下面是一个基于C51单片机的流水灯控制程序的实现:
#include <reg51.h>
sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
void delay(unsigned int ms)
{
unsigned int i, j;
for(i = 0; i < ms; i++)
for(j = 0; j < 120; j++);
}
void main()
{
while(1)
{
LED1 = 1;
LED2 = 0;
LED3 = 0;
LED4 = 0;
delay(1000);
LED1 = 0;
LED2 = 1;
LED3 = 0;
LED4 = 0;
delay(1000);
LED1 = 0;
LED2 = 0;
LED3 = 1;
LED4 = 0;
delay(1000);
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 1;
delay(1000);
}
}
在上面的程序中,每个LED灯都会依次点亮并延时一段时间后熄灭,然后再点亮下一个LED灯,实现灯光的流动效果。延时函数可以通过C51单片机提供的烧录软件中的代或者自定义的延时函数实现。