流水灯其实就是一系列的灯一次点亮的过程,看起来像流动的一样。程序实现起来就是
左移或者右移的过程,如果复杂的话则需要进行逻辑判断,例如使用switch分支来实现
多个花样的流水灯。这里只给一个简单的流水灯示例,有兴趣的朋友可以回去自己修改
移位方式或逻辑方式进行改进。
代码如下:
#include<reg52.h>
#define LED P1
//sbit LED0 = P1^0;
typedef unsigned int uint;
typedef unsigned char uchar;
void Delay_Nms(uint N);
void main()
{
LED = 0xFF; //熄灭所有LED
while(1)
{
LED >>= 1; //从高(7)到低(0)依次点亮
Delay_Nms(1000);//延时约1秒,可减少延时数加快灯流动速度
if(LED == 0x00)
{
LED = 0xFF; //重新开始
Delay_Nms(1000); //需要加延时,否则看不到全部熄灭个过程
}
}
}
void Delay_Nms(uint N)
{
uchar i;
uint j;
for(j = N;j > 0; j--)
{
for(i = 0;i<120;i++);
}
}
左移或者右移的过程,如果复杂的话则需要进行逻辑判断,例如使用switch分支来实现
多个花样的流水灯。这里只给一个简单的流水灯示例,有兴趣的朋友可以回去自己修改
移位方式或逻辑方式进行改进。
代码如下:
#include<reg52.h>
#define LED P1
//sbit LED0 = P1^0;
typedef unsigned int uint;
typedef unsigned char uchar;
void Delay_Nms(uint N);
void main()
{
LED = 0xFF; //熄灭所有LED
while(1)
{
LED >>= 1; //从高(7)到低(0)依次点亮
Delay_Nms(1000);//延时约1秒,可减少延时数加快灯流动速度
if(LED == 0x00)
{
LED = 0xFF; //重新开始
Delay_Nms(1000); //需要加延时,否则看不到全部熄灭个过程
}
}
}
void Delay_Nms(uint N)
{
uchar i;
uint j;
for(j = N;j > 0; j--)
{
for(i = 0;i<120;i++);
}
}