以下是一个简单的基于AT89C51单片机的流水灯程序,使用C语言实现。该程序会使LED灯在8个方向上流动,并且速度逐渐加快。
#include<reg51.h> //头文件
#define LED P1 //定义LED端口
unsigned char speed = 250; //定义速度
void delay(unsigned int t) //延时函数
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<125;j++);
}
void main()
{
unsigned char i;
while(1)
{
for(i=0;i<7;i++) //向左移动
{
LED <<= 1; //左移1位
delay(speed); //延时
}
for(i=0;i<7;i++) //向右移动
{
LED >>= 1; //右移1位
delay(speed); //延时
}
speed -= 20; //速度逐渐加快
if(speed < 50) //速度达到最快后重置
speed = 250;
}
}
在上述程序中,首先定义了LED端口为P1,速度初始值为250。然后定义了延时函数delay,用于控制LED灯的流动速度。在主函数中,使用for循环控制LED灯在左右方向上的流动,并且在流动的过程中逐渐加快速度。当速度达到最快时,重置为初始值。