求89C52单片机控制32个LED流水灯的C语言程序
要求一开始全亮,然后只有第一灭,其他全亮,然后只有第二灭,其他全亮,如此类推到最后一个灭,其他全亮,最后全亮全灭交替闪烁5次,每一个单灯灭的步骤用一个代码控制,以方便随时...
要求一开始全亮,然后只有第一灭,其他全亮,然后只有第二灭,其他全亮,如此类推到最后一个灭,其他全亮,最后全亮全灭交替闪烁5次,每一个单灯灭的步骤用一个代码控制,以方便随时更改哪个灯灭,每个步骤延迟200ms,求这个程序!谢谢!!
展开
2个回答
展开全部
#include<reg51.h>
#define uchar unsigned char
uchar led1,led2,led3,led4;
void delay(uchar a)
{
uchar i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{ uchar num;
unsigned long int led;
P0=0xff;
P0=0xff;
P0=0xff;
P0=0xff;
delay(200);
while(1)
{
led=0x00000001;
num=0;
while(num<32)
{
led1=(led<<num)>>24;
led2=(led<<num)>>16;
led3=(led<<num)>>8;
led4=led<<num;
P0=led1;
P1=led2;
P2=led3;
P3=led4;
delay(200);
num++;
}
for(num=0;num<5;num++)
{
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x00;
delay(200);
P0=0xff;
P0=0xff;
P0=0xff;
P0=0xff;
delay(200);
}
}
}
#define uchar unsigned char
uchar led1,led2,led3,led4;
void delay(uchar a)
{
uchar i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{ uchar num;
unsigned long int led;
P0=0xff;
P0=0xff;
P0=0xff;
P0=0xff;
delay(200);
while(1)
{
led=0x00000001;
num=0;
while(num<32)
{
led1=(led<<num)>>24;
led2=(led<<num)>>16;
led3=(led<<num)>>8;
led4=led<<num;
P0=led1;
P1=led2;
P2=led3;
P3=led4;
delay(200);
num++;
}
for(num=0;num<5;num++)
{
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x00;
delay(200);
P0=0xff;
P0=0xff;
P0=0xff;
P0=0xff;
delay(200);
}
}
}
更多追问追答
追问
如果再加上“P0.4,P1.4,P2.4,P3.4亮,再到P0.3,P0.5,P1.3,P0.5,P2.3,P2.5,P3.3,P3.5亮,再到P0.2,P0.6亮”该如何改?
追答
说清楚点,什么时候做什么事
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询