#include<reg51.h>
#define uchar unsigned char;
#define uint unsigned int
sbit in1=P1^1;
sbit in2=P1^0;
uchar ccount=0,count;
unsigned char code digit[]=
{
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,//1
0x00,0x01,0x06,0x08,0x10,0x60,0x80,0x00,
0x00,0x01,0x06,0x08,0x10,0x60,0x80,0x00,
0x00,0x01,0x06,0x08,0x10,0x60,0x80,0x00,
0x00,0x01,0x06,0x08,0x10,0x60,0x80,0x00,
0x00,0x01,0x06,0x08,0x10,0x60,0x80,0x00,
0x00,0x01,0x06,0x08,0x10,0x60,0x80,0x00,
0x00,0x01,0x06,0x08,0x10,0x60,0x80,0x00,
0x00,0x01,0x06,0x08,0x10,0x60,0x80,0x00,//2
0x00,0x00,0x01,0x0e,0x70,0x80,0x00,0x00,
0x00,0x00,0x01,0x0e,0x70,0x80,0x00,0x00,
0x00,0x00,0x01,0x0e,0x70,0x80,0x00,0x00,
0x00,0x00,0x01,0x0e,0x70,0x80,0x00,0x00,
0x00,0x00,0x01,0x0e,0x70,0x80,0x00,0x00,
0x00,0x00,0x01,0x0e,0x70,0x80,0x00,0x00,
0x00,0x00,0x01,0x0e,0x70,0x80,0x00,0x00,
0x00,0x00,0x01,0x0e,0x70,0x80,0x00,0x00,//3
0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,
0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,
0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,
0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,
0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,
0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,
0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,
0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00, //4變形開始
0X00,0X00,0X00,0X0F,0X00,0XF0,0X00,0X00,
0X00,0X00,0X00,0X0F,0X00,0XF0,0X00,0X00,
0X00,0X00,0X00,0X0F,0X00,0XF0,0X00,0X00,
0X00,0X00,0X00,0X0F,0X00,0XF0,0X00,0X00,
0X00,0X00,0X0F,0X00,0XF0,0X00,0X00,0X00,
0X00,0X00,0X0F,0X00,0XF0,0X00,0X00,0X00,
0X00,0X00,0X0F,0X00,0XF0,0X00,0X00,0X00,
0X00,0X00,0X0F,0X00,0XF0,0X00,0X00,0X00,//5
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0X00,0X00,0X00,0X0F,0X00,0XF0,0X00,0X00,
0X00,0X00,0X00,0X0F,0X00,0XF0,0X00,0X00,
0X00,0X00,0X0F,0X0F,0XF0,0XF0,0X00,0X00,
0X00,0X00,0X0F,0X0F,0XF0,0XF0,0X00,0X00,
0X00,0X00,0X0F,0X00,0XF0,0X00,0X00,0X00,
0X00,0X00,0X0F,0X00,0XF0,0X00,0X00,0X00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//6
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0X00,0X00,0X0F,0X0F,0XF0,0XF0,0X00,0X00,
0X00,0X00,0X0F,0X0F,0XF0,0XF0,0X00,0X00,
0X00,0X00,0X0F,0X0F,0XF0,0XF0,0X00,0X00,
0X00,0X00,0X0F,0X0F,0XF0,0XF0,0X00,0X00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//7
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1e,0x1e,0x78,0x78,0x00,0x00,
0x00,0x00,0x1e,0x1e,0x78,0x78,0x00,0x00,
0x00,0x00,0x1e,0x1e,0x78,0x78,0x00,0x00,
0x00,0x00,0x1e,0x1e,0x78,0x78,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//8
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,
0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,
0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,
0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9,方體成型
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x66,0x66,0x00,0x00,0x66,0x66,0x00,
0x00,0x66,0x66,0x00,0x00,0x66,0x66,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x66,0x66,0x00,0x00,0x66,0x66,0x00,
0x00,0x66,0x66,0x00,0x00,0x66,0x66,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10
0xc3,0xc3,0x00,0x00,0x00,0x00,0xc3,0xc3,
0xc3,0xc3,0x00,0x00,0x00,0x00,0xc3,0xc3,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xc3,0xc3,0x00,0x00,0x00,0x00,0xc3,0xc3,
0xc3,0xc3,0x00,0x00,0x00,0x00,0xc3,0xc3,//11
};
void delay(unsigned int );
void delay1(int t);
void in1_scan();
void zfun();
void zzhen();
void main()
{
while(1)
{
in1_scan();
delay(50);
zzhen();
}
}
void delay(uint x)
{
unsigned int a,b;
for(a=x;a>0;a--)
for(b=3;b>0;b--);
}
void delay1(int t)
{
int i;
while(t--)
for(i=0;i<700;i++);
}
void in1_scan()
{
if(in1||in2)
{ccount=(ccount+1)%11;}
while(in1);//釋放判斷
}
void zfun()//層填充
{
unsigned char i,p;
p=1;
for(i=0;i<8;i++)
{
P2=p;
P0=digit[ccount*64+count+i*8];
P2=0;
p<<=1;
}
}
void zzhen()
{
unsigned char p;
p=1;
for(count=0;count<8;count++)
{
P3=0;
zfun();
P3=p;
delay1(2);
p<<=1;
}
}
|