以单片机为核心,设计一个节日彩灯控制器

如题所述

第1个回答  推荐于2018-04-27
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char mask;
unsigned int cnt;
uchar tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80} ;
uchar num[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff} ;
uchar cod[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00} ;
uchar tmpled[50]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80,0X81,0X82,
0X84,0X88,0X90,0XA0,0XC0,0XC1,0XC2,0XC4,0XC8,0XD0,
0XE0,0XE1,0XE2,0XE4,0XE8,0XF0,0XF1,0XF2,0XF4,0XF8,
0XF9,0XFA,0XFC,0XFD,0XFE,0XFF,0XFF,0X00,0XFF,0X00};
void delay(uchar x)
{
int i;
while(x--)
{
for(i=0;i<148;i++);
}
}

void main(void)
{
int j;
uchar i, k, m, n, s, q, t, r,a,b,c,d,e,f,g,h,p,u,v,w, l,o,x,y,z;

for(i=0;i<8;i++) //流水灯
{
P2=0;
P1=tab[i];
delay(500);
}
P1=0;
for(k=0;k<8;k++)
{
P2=tab[k];
delay(500);
}
P2=0;

for(m=0;m<8;m++) //跑马灯
{
P1=num[m];
delay(500);
}
for(n=0;n<8;n++)
{
P2=num[n];
delay(500);
}

for(s=0;s<8;s++) //跑马灯
{
P1=cod[s];
delay(500);
}
for(q=0;q<8;q++)
{
P2=cod[q];
delay(500);
}
for(r=0;r<8;r++)
{
P1=tab[r];
delay(50);
}
P1=0;
for(t=0;t<8;t++)
{
P2=tmpled[t];
delay(50);
}

for(a=0;a<8;a++)
{
P1=tab[a];
delay(50);
}
P1=0;
for(b=8;b<15;b++)
{
P2=tmpled[b];
delay(50);
}

for(c=0;c<8;c++)
{
P1=tab[c];
delay(50);
}
P1=0;
for(d=15;d<21;d++)
{
P2=tmpled[d];
delay(50);
}

for(e=0;e<8;e++)
{
P1=tab[e];
delay(50);
}
P1=0;
for(f=21;f<26;f++)
{
P2=tmpled[f];
delay(50);
}

for(g=0;g<8;g++)
{
P1=tab[g];
delay(50);
}
P1=0;
for(h=26;h<30;h++)
{
P2=tmpled[h];
delay(50);
}

for(p=0;p<8;p++)
{
P1=tab[p];
delay(50);
}

P1=0;
for(u=30;u<33;u++)
{
P2=tmpled[u];
delay(50);
}

for(v=0;v<8;v++)
{
P1=tab[v];
delay(50);
}
P1=0;
for(w=33;w<35;w++)
{
P2=tmpled[w];
delay(50);
}

for(l=0;l<8;l++)
{
P1=tab[l];
delay(50);
}
P1=0;
for(o=35;o<36;o++)
{
P2=tmpled[o];
delay(50);
}
for(t=0;t<8;t++)
{
P1=tmpled[t];
delay(50);
}
for(b=8;b<15;b++)
{
P1=tmpled[b];
delay(50);
}
for(d=15;d<21;d++)
{
P1=tmpled[d];
delay(50);
}
for(f=21;f<26;f++)
{
P1=tmpled[f];
delay(50);
}
for(h=26;h<30;h++)
{
P1=tmpled[h];
delay(50);
}
for(u=30;u<33;u++)
{
P1=tmpled[u];
delay(50);
}
for(w=33;w<35;w++)
{
P1=tmpled[w];
delay(50);
}
for(o=35;o<36;o++)
{
P1=tmpled[o];
delay(50);
}

for(j=0;j<5;j++) //闪烁
{
P1=P2=0x00;
delay(500);
P1=P2=0xff;
delay(1000);
delay(1000);
}
}

给你这样一个程序先看懂,再改造,有问题可以问我本回答被提问者和网友采纳