求51单片机驱动32盏LED流水灯(单向流水,全部亮时闪烁两次,双向流水,全部亮时闪烁两次)的C程序!谢谢

发布网友

我来回答

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口足够的话,可以不用数字芯片。我这里有一些资料,需要可以来找我,随时都在线,等待回复。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com