32LED心形灯程序源代码
#include
unsigned int m=1;
void delayms(int n) //延时
{
int i;
for(;n>0;n--)
for(i=330;i>0;i--)
;
}
void way1() //花样1:32个LED灯同时从灭到亮
{
int k;
k=m+5;
while(k)
{
int i=5,j=5;
for(;j>0;j--)
P0=0X00;
P1=0X00;
P2=0X00;
P3=0X00;
delayms(200);
for(;i>0;i--)
P0=0Xff;
P1=0Xff;
P2=0Xff;
P3=0Xff;
delayms(200);
k--;
}
}
void way2() //花样2:交叉点亮,从右往左依次点亮,再依返回。
{
unsigned int k;
unsigned char temp,temp1,sum=0;
unsigned int i,j;
k=m;
while(k)
{
for(j=2;j>0;j--)
{
P0=0X00;P1=0X00;P2=0X00; P3=0X00;//r->l
delayms(500);
P0=0Xff;
P1=0Xff;
P2=0xff;
P3=0xff;
temp=0x01;
for(i=0;i<9;i++)
{
P0=~temp;
delayms(70);
temp=temp<<1;
}
temp=0x01;
for(i=0;i<9;i++)
{
P2=~temp;
delayms(70);
temp=temp<<1;
}
temp=0x01;
for(i=0;i<9;i++)
{
P3=~temp;
delayms(70);
temp=temp<<1;
}
temp=0x01;
for(i=0;i<9;i++)
{
P1=~temp;
delayms(70);
temp=temp<<1;
}
P0=0X00;P1=0X00;P2=0X00; P3=0X00;//l->r
delayms(500);
P0=0Xff;
P1=0Xff;
P2=0xff;
P3=0xff;
temp=0x80;
for(i=0;i<9;i++)
{
P1=~temp;
delayms(70);
temp=temp>>1;
}
temp=0x80;
for(i=0;i<9;i++)
{
P3=~temp;
delayms(70);
temp=temp>>1;
}
temp=0x80;
for(i=0;i<9;i++)
{
P2=~temp;
delayms(70);
temp=temp>>1;
}
temp=0x80;
for(i=0;i<9;i++)
{
P0=~temp;
delayms(70);
temp=temp>>1;
}
P0=0X00;P1=0X00;P2=0X00; P3=0X00;
delayms(500);
P0=0Xff;
P1=0Xff;
P2=0xff;
P3=0xff;
temp=0x01;temp1=0x80;
for(i=0;i<9;i++)
{
P0=~temp;
P1=~temp1;
temp=temp<<1;temp1=temp1>>1;
delayms(70);
}
temp=0x01;temp1=0x80;
for(i=0;i<9;i++)
{
P2=~temp;
P3=~temp1;
temp=temp<<1;temp1=temp1>>1;
delayms(70);
}
temp=0x01;temp1=0x80;
for(i=0;i<9;i++)
{
P3=~temp;
P2=~temp1;
temp=temp<<1;temp1=temp1>>1;
delayms(70);
}
temp=0x01;temp1=0x80;
for(i=0;i<9;i++)
{
P1=~temp;
P0=~temp1;
temp=temp<<1;temp1=temp1>>1;
delayms(70);
}
}
k--;
}
}
void way3()
{
unsigned int i,sum,sum1,k,temp1;
unsigned int temp=0x01;
k=m;
P0=0Xff; //两边同时向下闪
P1=0Xff;
P2=0xff;
P3=0xff;
while(k)
{
temp1=0xfe;
temp=0x7f;
sum=0;
for(i=0;i<8;i++)
{
P0=temp1;
P1=temp;
delayms(100);
temp1=temp1<<1;
temp=temp>>1;
}
temp1=0xfe;
temp=0x7f;
sum=0;
for(i=0;i<8;i++)
{
P2=temp1;
P3=temp;
delayms(100);
temp1=temp1<<1;
temp=temp>>1;
}
P0=0X00; //全亮
P1=0X00;
P2=0x00;
P3=0x00;
delayms(100);
temp=0x01; //返回
temp1=0x80;
sum=0;sum1=0;
for(i=0;i<8;i++)
{
sum=sum+temp;P3=sum;temp=temp<<1;
sum1=sum1+temp1;P2=sum1;temp1=temp1>>1;
delayms(100);
}
P2=0Xff; P3=0xff;
delayms(100);
temp=0x01;
temp1=0x80;
sum=0;sum1=0;
for(i=0;i<8;i++)
{
sum=sum+temp;P1=sum;temp=temp<<1;
sum1=sum1+temp1;P0=sum1;temp1=temp1>>1;
delayms(100);
}
P0=0Xff; //两边同时向上闪
P1=0Xff;
P2=0xff;
P3=0xff;
temp1=0xfe;
temp=0x7f;
sum=0;
for(i=0;i<8;i++)
{
P3=temp1;
P2=temp;
delayms(100);
temp1=temp1<<1;
temp=temp>>1;
}
temp1=0xfe;
temp=0x7f;
sum=0;
for(i=0;i<8;i++)
{
P1=temp1;
P0=temp;
delayms(100);
temp1=temp1<<1;
temp=temp>>1;
}
P0=0X00; //全亮
P1=0X00;
P2=0x00;
P3=0x00;
delayms(100);
temp=0x01; //返回
temp1=0x80;
sum=0;sum1=0;
for(i=0;i<8;i++)
{
sum=sum+temp;P0=sum;temp=temp<<1;
sum1=sum1+temp1;P1=sum1;temp1=temp1>>1;
delayms(100);
}
temp=0x01;
temp1=0x80;
sum=0;sum1=0;
for(i=0;i<8;i++)
{
sum=sum+temp;P2=sum;temp=temp<<1;
sum1=sum1+temp1;P3=sum1;temp1=temp1>>1;
delayms(100);
}
k--;
}
}
void way4() //相间交叉闪烁
{
unsigned int temp=0x55;
unsigned int k,j;
k=m+3;j=m+3;
while(k)
{
P0=~temp;
P1=~temp;
P2=~temp;
P3=~temp;
delayms(200);
P0=temp;
P1=temp;
P2=temp;
P3=temp;
delayms(200);
k--;
}
while(j)
{
P0=temp;
P1=temp;
P2=temp;
P3=temp;
delayms(200);
P0=~temp;
P1=~temp;
P2=~temp;
P3=~temp;
delayms(200);
j--;
}
}
void way5()
{
unsigned int k,j; //8个灯一起亮并旋转
k=m+4;j=m+4;
while(k)
{
P0=0xaa;delayms(200);
P0=0xff;
P0=0x55;delayms(200);
P0=0xff;
P2=0xaa;delayms(200);
P2=0xff;
P2=0x55;delayms(200);
P2=0xff;
P3=0xaa;delayms(200);
P3=0xff;
P3=0x55;delayms(200);
P3=0xff;
P1=0xaa;delayms(200);
P1=0xff;
P1=0x55;delayms(200);
P1=0xff;
k--;
}
while(j)
{
P1=0x55;delayms(200);
P1=0xff;
P1=0xaa;delayms(200);
P1=0xff;
P3=0x55;delayms(200);
P3=0xff;
P3=0xaa;delayms(200);
P3=0xff;
P2=0x55;delayms(200);
P2=0xff;
P2=0xaa;delayms(200);
P2=0xff;
P0=0x00;delayms(200);
P0=0xff;
P0=0xaa;delayms(200);
P0=0xff;
j--;
}
}
void way6() //两边同时对称闪
{
unsigned int i,j,sum,sum1,k,temp1;
k=m+1;
while(k)
{
P0=0Xff;
P1=0Xff;
P2=0xff;
P3=0xff;
for(j=3;j>0;j--)
{
temp1=0xfe;
for(i=0;i<8;i++)
{
P0=temp1;
P3=temp1;
delayms(100);
temp1=temp1<<1;
}
temp1=0xfe;
for(i=0;i<8;i++)
{
P2=temp1;
P1=temp1;
delayms(100);
temp1=temp1<<1;
}
P0=0Xff; //全灭
P1=0Xff;
P2=0xff;
P3=0Xff;
delayms(100);
}
for(j=3;j>0;j--)
{
temp1=0x7f; //返回
for(i=0;i<8;i++)
{
P1=temp1;P2=temp1;temp1=temp1>>1;
delayms(100);
}
temp1=0x7f;
for(i=0;i<8;i++)
{
P3=temp1;P0=temp1;temp1=temp1>>1;
delayms(100);
}
P0=0Xff; //全灭
P1=0Xff;
P2=0xff;
P3=0xff;
delayms(100);
}
way3();
for(j=3;j>0;j--)
{
temp1=0xfe;
for(i=0;i<8;i++)
{
P0=temp1;
P3=temp1;
delayms(100);
temp1=temp1<<1;
}
P0=0Xff; //全灭
P1=0Xff;
P2=0xff;
P3=0Xff;
delayms(100);
temp1=0xfe;
for(i=0;i<8;i++)
{
P2=temp1;
P1=temp1;
delayms(100);
temp1=temp1<<1;
}
P0=0Xff; //全灭
P1=0Xff;
P2=0xff;
P3=0Xff;
delayms(100);
}
for(j=3;j>0;j--)
{
temp1=0xfe;
for(i=0;i<8;i++)
{
P0=temp1;
P3=temp1;
delayms(100);
temp1=temp1<<1;
}
P0=0Xff; //全灭
P1=0Xff;
P2=0xff;
P3=0Xff;
delayms(100);
temp1=0xfe;
for(i=0;i<8;i++)
{
P2=temp1;
P1=temp1;
delayms(100);
temp1=temp1<<1;
}
P0=0Xff; //全灭
P1=0Xff;
P2=0xff;
P3=0Xff;
delayms(100);
}
for(j=3;j>0;j--)
{
temp1=0x7f; //返回
for(i=0;i<8;i++)
{
P1=temp1;P2=temp1;
delayms(100);
temp1=temp1>>1;
}
P0=0Xff; //全灭
P1=0Xff;
P2=0xff;
P3=0xff;
delayms(100);
temp1=0x7f;
for(i=0;i<8;i++)
{
P3=temp1;P0=temp1;
delayms(100);
temp1=temp1>>1;
}
P0=0Xff; //全灭
P1=0Xff;
P2=0xff;
P3=0xff;
delayms(100);
}
k--;
}
}
void way7()
{
unsigned int temp,temp1,temp2,i,j;
temp1=0xfe;
for(j=0;j<8;j++)
{
temp=temp1;
for(i=0;i<8;i++)
{
P0=temp;
temp=temp<<1;
delayms(100);
}
P0=temp1;
delayms(100);
temp=temp1;
for(i=0;i<8;i++)
{
P2=temp;
temp=temp<<1;
delayms(100);
}
P2=temp1;
delayms(100);
temp=temp1;
for(i=0;i<8;i++)
{
P3=temp;
temp=temp<<1;
delayms(100);
}
P3=temp1;
delayms(100);
temp=temp1;
for(i=0;i<8;i++)
{
P1=temp;
temp=temp<<1;
delayms(100);
}
P1=temp1;
delayms(100);
temp1=temp1<<1;
delayms(100);
}
P0=0Xff; //全灭
P1=0Xff;
P2=0xff;
P3=0xff;
delayms(100);
temp2=0x7f;
for(j=0;j<8;j++)
{
temp=temp2;
for(i=0;i<8;i++)
{
P1=temp;
temp=temp>>1;
delayms(100);
}
P1=temp2;
delayms(100);
temp=temp2;
for(i=0;i<8;i++)
{
P3=temp;
temp=temp>>1;
delayms(100);
}
P3=temp2;
delayms(100);
temp=temp2;
for(i=0;i<8;i++)
{
P2=temp;
temp=temp>>1;
delayms(100);
}
P2=temp2;
delayms(100);
temp=temp2;
for(i=0;i<8;i++)
{
P0=temp;
temp=temp>>1;
delayms(100);
}
P0=temp2;
delayms(100);
temp2=temp2>>1;
delayms(100);
}
P0=0Xff; //全灭
P1=0Xff;
P2=0xff;
P3=0xff;
delayms(100);
}
void main()
{
while (1)
{
way1();
way2();
way3();
way6();
way3();
way7();
way4();
way5();
}
}