标题:
LED广州塔的单片机代码
[打印本页]
作者:
770900221
时间:
2018-11-18 22:46
标题:
LED广州塔的单片机代码
8层小型广州塔制作例程
void startup()
{
u8 i;
P2=0xff;
for(i=0;i<8;i++)
{
P0=table0_0[i];
delay_ms(310);
if(key_index==0)
break;
}
P0=0xff;
for(i=0;i<4;i++)
{
P1=table1_0[i];
delay_ms(310);
if(key_index==0)
break;
}
P1=0xff;
delay_ms(100);
for(i=0;i<4;i++)
{
P1=table1_1[i];
delay_ms(310);
if(key_index==0)
break;
}
for(i=0;i<8;i++)
{
P0=table0_1[i];
delay_ms(310);
if(key_index==0)
break;
}
}
void updown1()
{
u8 i,j;
P2=0xff;
P1=0;
for(j=0;j<4;j++)
{
for(i=0;i<8;i++)
{
P0=table0_0[i];
delay_ms(310);
if(key_index==0)
break;
}
for(i=0;i<6;i++)
{
P0=table0_0[6-i];
delay_ms(310);
if(key_index==0)
break;
}
}
}
void updown2()
{
u8 i,j;
P2=0xff;
P1=0;
for(j=0;j<8;j++)
{
for(i=0;i<4;i++)
{
P0=table0_2[i];
delay_ms(320);
if(key_index==0)
break;
}
for(i=2;i>0;i--)
{
P0=table0_2[i];
delay_ms(320);
if(key_index==0)
break;
}
}
}
void rotate1()
{
u8 i,j;
P1=0xff;
P0=0;
for(j=0;j<4;j++)
{
for(i=0;i<8;i++)
{
P2=table2_0[i];
delay_ms(320);
if(key_index==0)
break;
}
}
}
void rotate2()
{
u8 i,j;
P1=0xff;
P0=0;
for(j=0;j<8;j++)
{
for(i=0;i<4;i++)
{
P2=table2_1[i];
delay_ms(330);
if(key_index==0)
break;
}
}
}
void rain()
{
u8 i,j;
P2=1;
for(i=0;i<8;i++)
{
P2<<=1;
for(j=0;j<8;j++)
{
P0=table0_1[j];
delay_ms(300);
if(key_index==0)
break;
}
}
}
void stars()
{
u8 i;
for(i=0;i<50;i++)
{
P2=rand()%255;
P1=rand()%15;
P0=rand()%255;
delay_ms(300);
if(key_index==0)
break;
}
}
void all_on()
{
P2=255;
P1=0;
P0=0;
}
void all_off()
{
P2=0;
P1=15;
P0=255;
}
void main()
{
IT0 = 1; //set INT0 int type (1:Falling 0:Low level)
EX0 = 1; //enable INT0 interrupt
EA = 1; //open global interrupt switch
while(1)
{
if(key_index==0)
{
all_off();
}
else if(key_index==1)
{
all_on();
}
else
{
all_off();
startup();
if(key_index==0)
break;
updown1();
if(key_index==0)
break;
updown2();
if(key_index==0)
break;
rotate1();
if(key_index==0)
break;
rotate2();
if(key_index==0)
break;
rain();
if(key_index==0)
break;
stars();
}
}
}
void exint0() interrupt 0 //(location at 0003H)
{
EA=0; //首先关闭总中断,以消除按键出现的抖动所产生的干扰
delay_us(10); //同样是为了消除抖动而产生新的中断
if(key==0)
{
key_index++;
}
if(key_index>2)
key_index=0;
while(key==0);
EA=1; //恢复中断
}
复制代码
广州塔.rar
2018-11-18 22:37 上传
点击文件名下载附件
下载积分: 黑币 -5
39.97 KB, 下载次数: 6, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1