如何用单片机实现流水灯,从一依次亮到八,再从八依次亮回一,一直循环?

如题所述

有个想法, 放一个字节LED做标志位,可位寻址。 每一位代表一个灯。

对字节LED附初值1,做一个200mS的时钟,每200ms对字节LED值做左移1位指令(汇编可循环)。

主程序中位寻址判断字节LED的bit(0-7)点亮相应的灯。或者直接P0=LED

纯想法、还没试过,感觉好玩,呵呵。 好像上述灯流的方式不对,不过可以改。。。追问

额,我是新学的,貌似,有点看不懂…

追答

饿。。今天有热心网友给出程序了,看程序吧。自已再加些申明就可以了

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-01
//简单一点
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int

void delay(uint ms)
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
void main()
{
uchar j;
P1=0x00;
while(1)
{
uchar temp=0x01;
for(j=0;j<8;j++)
{
P1=temp;
temp=temp<<1;
delay(500);
}
temp=0x80;
for(j=0;j<8;j++)
{
P1=temp;
temp=temp>>1;
delay(500);
}
}
}本回答被提问者和网友采纳
相似回答