发布网友
共2个回答
热心网友
这个比较简单吧
uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delay();//自己写吧 延迟一秒
void led_blink();//~~~~~~~~~~~~
void single_stream();//单向流水函数声明
void double_stream();//~~~~~~~~
void led_blink() //全部亮时闪烁两次
{
uchar i;
if(P3^7==0)
{ i=2;
while(i--)
{
P0=0x00;//低电平点亮
P1=0x00;
P2=0x00;
P3=0x00;
delay();
P0=0xff;//熄灭
P1=0xff;
P2=0xff;
P3=0xff;
delay();
}
}
}
void single_stream()//单向流水灯
{
uchar i;//自己定义一下 unsigned char
for(i=0;i<8;i++)
{
P0=table[i];//逐个点亮led0-7 第零组
delay();
}
for(i=0;i<8;i++)
{
P1=table[i];//第一组
delay();
}
for(i=0;i<8;i++)
{
P2=table[i];//第二组
delay();
}
for(i=0;i<8;i++)
{
P3=table[i];//第三组
delay();
}
}
void double_stream()//这个你也自己写吧
{
}
void main()//main 函数就调用下 前面的就可以了。。
{
while(1)
{
single_stream();
led_blink();
double_stream();
led_blink();
}
}// 大概就是这样。。我没测试
热心网友
这个相对来说是比较简单的,可以考虑用数字芯片,要是单片机IO口足够的话,可以不用数字芯片。我这里有一些资料,需要可以来找我,随时都在线,等待回复。