如何制作光立方,带有视频,ad画的原理图,单片机仿真电路图等很详细的教程
带有光立方的程序详解,注释非常详细。
所有资料下载:
光立方制作.zip
(18.97 MB, 下载次数: 1839)
光立方制作成功后的效果图片:
光立方的原理:
仿真制作原理:先从P0口给控制共阴端的573锁入相应的数值,然后给共阳端再送人相应的数值,这样与共阴端的相呼应就可点亮相应的灯.
光立方的proteus仿真原理图:
下面是光立方的制作过程,非常详细:
光立方的单片机源程序:
- /*锐锐制作光立方源程序*/
- #include<reg51.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
- #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
- sbit line_LATCH=P1^0;//定义锁存使能端口 行扫描的锁存端口
- sbit LATCH1=P2^0;//定义锁存使能端口 第一灯板的字节锁存
- sbit LATCH2=P2^1;//
- sbit LATCH3=P2^2;//
- sbit LATCH4=P2^3;
- sbit LATCH5=P2^4;
- sbit LATCH6=P2^5;
- sbit LATCH7=P2^6;
- sbit LATCH8=P2^7;
-
- void Delay(unsigned int t)
- {
- while(--t);
- }
- unsigned char line[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};// 显示行值01234567
- void display(unsigned char *Data)//显示子程序,指针数组作为形参,直接指向传过来的实参数组的地址 ,这样就可直接操纵数组传过来的数组了
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- DataPort=line[i]; //先给行(灯板的公共端)输入数据
- line_LATCH=1; //打开锁存,把数据line[i]放进去
- line_LATCH=0; //关闭锁存,阻止外部数据进来
-
- DataPort=Data[i]; //把数组Data[0~7]里的值依次传给第一灯板的573锁存器中
- LATCH1=1;LATCH1=0;
-
- DataPort=Data[8+i]; //把数组Data[8~15]里的值依次传给第二灯板的573锁存器中
- LATCH2=1;LATCH2=0;
-
- DataPort=Data[16+i]; //把数组Data[16~23]里的值依次传给第三灯板的573锁存器中
- LATCH3=1;LATCH3=0;
-
- DataPort=Data[24+i];
- LATCH4=1;LATCH4=0;
- DataPort=Data[32+i];
- LATCH5=1;LATCH5=0;
-
- DataPort=Data[40+i];
- LATCH6=1;LATCH6=0;
-
- DataPort=Data[48+i];
- LATCH7=1;LATCH7=0;
-
- DataPort=Data[56+i];
- LATCH8=1;LATCH8=0;
- Delay(200); //扫描间隙延时,时间太长会闪烁,太短会造成重影
-
- DataPort=0xff; // 清空行锁存器里数据,防止出现乱码
- line_LATCH=1; //
- line_LATCH=0;
- } /*如此一趟循环下来,每次都是8块灯板的同一行一起点亮,
- 如此组成一个灯板,8次循环下来,就全部灯都点亮了*/
- }
- void liang() //点亮所有的灯
- {
- unsigned int i;
- for(i=0;i<5000;i++)
- {
- DataPort=0x00; //先给行(灯板的公共端)输入数据
- line_LATCH=1; //打开锁存,把数据0x00放进去
- line_LATCH=0; //关闭锁存,阻止外部数据进来
-
- DataPort=0xff; //把0xff送进锁存器1~8中,使它们的输出引脚都输出高电平,与行锁存器的0x00相对,点亮所有的灯
- LATCH1=1;LATCH1=0;
- LATCH2=1;LATCH2=0;
- LATCH3=1;LATCH3=0;
- LATCH4=1;LATCH4=0;
- LATCH5=1;LATCH5=0;
- LATCH6=1;LATCH6=0;
- LATCH7=1;LATCH7=0;
- LATCH8=1;LATCH8=0;
- }
- }
- void mie() //熄灭所有的灯
- {
- unsigned int i;
- for(i=0;i<5000;i++)
- {
- DataPort=0x00; //先给行(灯板的公共端)输入数据
- line_LATCH=1; //打开锁存,把数据0x00放进去
- line_LATCH=0; //关闭锁存,阻止外部数据进来
-
- DataPort=0x00; //把0x00送进锁存器1~8中,使它们的输出引脚都输出高电平,与行锁存器的0x00相对,熄灭所有的灯
- LATCH1=1;LATCH1=0;
- LATCH2=1;LATCH2=0;
- LATCH3=1;LATCH3=0;
- LATCH4=1;LATCH4=0;
- LATCH5=1;LATCH5=0;
- LATCH6=1;LATCH6=0;
- LATCH7=1;LATCH7=0;
- LATCH8=1;LATCH8=0;
- }
- }
- void Laihui() //来回灯板显示效果
- {
- unsigned char i;
- unsigned char code laihui0[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//定义空间为64的数组并赋值,用以传递给显示子程序
- 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,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
- };
- unsigned char code laihui1[]={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,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code laihui2[]={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,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code laihui3[]={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,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code laihui4[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 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
- };
- unsigned char code laihui5[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 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,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code laihui6[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 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,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code laihui7[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 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,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- for(i=0;i<10;i++) display(laihui0);//调用显示子程序display,并把数组laihui0的数组名作为实参传给指针式形参
- for(i=0;i<10;i++) display(laihui1);
- for(i=0;i<10;i++) display(laihui2);
- for(i=0;i<10;i++) display(laihui3);
- for(i=0;i<10;i++) display(laihui4);
- for(i=0;i<10;i++) display(laihui5);
- for(i=0;i<10;i++) display(laihui6);
- for(i=0;i<10;i++) display(laihui7);
- for(i=0;i<10;i++) display(laihui7);
- for(i=0;i<10;i++) display(laihui6);
- for(i=0;i<10;i++) display(laihui5);
- for(i=0;i<10;i++) display(laihui4);
- for(i=0;i<10;i++) display(laihui3);
- for(i=0;i<10;i++) display(laihui2);
- for(i=0;i<10;i++) display(laihui1);
- for(i=0;i<10;i++) display(laihui0);
- }
- void Zhengfang() //显示正方形方框
- {
- unsigned char i;
- unsigned char code zhengfang1[]={0xff,0x81,0x81,0x81,0x81,0x81,0x81,0xff,
- 0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81,
- 0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81,
- 0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81,
- 0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81,
- 0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81,
- 0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81,
- 0xff,0x81,0x81,0x81,0x81,0x81,0x81,0xff
- };
- unsigned char code zhengfang2[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x7e,0x42,0x42,0x42,0x42,0x7e,0x00,
- 0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00,
- 0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00,
- 0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00,
- 0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00,
- 0x00,0x7e,0x42,0x42,0x42,0x42,0x7e,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code zhengfang3[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x3c,0x00,0x00,0x3c,0x00,0x00,
- 0x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00,
- 0x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00,
- 0x00,0x00,0x3c,0x00,0x00,0x3c,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code zhengfang4[]={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,0x18,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x18,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
- };
- for(i=0;i<20;i++)display(zhengfang1);
- for(i=0;i<14;i++)display(zhengfang2);
- for(i=0;i<14;i++)display(zhengfang3);
- for(i=0;i<14;i++)display(zhengfang4);
- for(i=0;i<14;i++)display(zhengfang4);
- for(i=0;i<14;i++)display(zhengfang3);
- for(i=0;i<14;i++)display(zhengfang2);
- for(i=0;i<14;i++)display(zhengfang1);
-
-
- for(i=0;i<4;i++)
- {
- for(i=0;i<3;i++)display(zhengfang1);
- for(i=0;i<3;i++)display(zhengfang2);
- for(i=0;i<3;i++)display(zhengfang3);
- for(i=0;i<3;i++)display(zhengfang4);
- for(i=0;i<3;i++)display(zhengfang4);
- for(i=0;i<3;i++)display(zhengfang3);
- for(i=0;i<3;i++)display(zhengfang2);
- for(i=0;i<3;i++)display(zhengfang1);
- }
- }
- void Xin() //显示心形图案
- {
- unsigned char code xin[]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x92,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x6c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- display(xin);
- }
- void Zhahua() //显示炸花式效果
- {
- unsigned char i;
- unsigned char code zhahua1[64]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
- };
- unsigned char code zhahua2[64]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,
- 0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,
- 0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,
- 0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,
- 0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,
- 0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code zhahua3[64]={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
- };
- unsigned char code zhahua4[64]={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,0x18,0x18,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x18,0x18,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
- };
- for(i=0;i<6;i++)
- {
- for(i=0;i<18;i++)display(zhahua1);//用for循环多调用几次,可增加显示的时间,可省去延时的调用
- for(i=0;i<18;i++)display(zhahua2);
- for(i=0;i<18;i++)display(zhahua3);
- for(i=0;i<21;i++)display(zhahua4);
- for(i=0;i<18;i++)display(zhahua3);
- for(i=0;i<18;i++)display(zhahua2);
- for(i=0;i<18;i++)display(zhahua1);
- }
- for(i=0;i<6;i++)
- {
- for(i=0;i<5;i++)display(zhahua1);
- for(i=0;i<5;i++)display(zhahua2);
- for(i=0;i<5;i++)display(zhahua3);
- for(i=0;i<6;i++)display(zhahua4);
- for(i=0;i<5;i++)display(zhahua3);
- for(i=0;i<5;i++)display(zhahua2);
- for(i=0;i<5;i++)display(zhahua1);
- }
- }
- void Budai() //布带抖动效果
- {
- unsigned char i;
- unsigned char code budai0[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code budai1[]={0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,
- 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code budai2[]={0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x00,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
- 0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code budai3[]={0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0x00,0xff,0x00,0x00,
- 0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,
- 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code budai4[]={0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0x00,0xff,0x00,0x00,0x00,
- 0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,
- 0xff,0x00,0x00,0x00,0x00f,0x00,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code budai5[]={0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0x00,0xff,0x00,0x00,0x00,0x00,
- 0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code budai6[]={0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code budai7[]={0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff
- };
- unsigned char code budai8[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00
- };
- unsigned char code budai9[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
- 0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00
- };
- unsigned char code budai10[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0xff,
- 0x00,0x00,0xff,0x00,0x00,0xff,0xff,0x00,
- 0x00,0x00,0x00,0xff,0x00,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0xff
- };
- unsigned char code budai11[]={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,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0xff,0x00,
- 0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,
- 0x00,0x00,0xff,0x00,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00
- };
- unsigned char code budai12[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,
- 0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,
- 0x00,0xff,0x00,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code budai13[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,
- 0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code budai14[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- for(i=0;i<8;i++) display(budai0);
- for(i=0;i<8;i++) display(budai1);
- for(i=0;i<8;i++) display(budai2);
- for(i=0;i<8;i++) display(budai3);
- for(i=0;i<8;i++) display(budai4);
- for(i=0;i<8;i++) display(budai5);
- for(i=0;i<8;i++) display(budai6);
- for(i=0;i<8;i++) display(budai7);
- for(i=0;i<8;i++) display(budai8);
- for(i=0;i<8;i++) display(budai9);
- for(i=0;i<8;i++) display(budai10);
- for(i=0;i<8;i++) display(budai11);
- for(i=0;i<8;i++) display(budai12);
- for(i=0;i<8;i++) display(budai13);
- for(i=0;i<8;i++) display(budai14);
- }
- unsigned char Data0[8]={0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01};// 显示
- unsigned char Data1[8]={0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02};// 显示
- unsigned char Data2[8]={0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04};// 显示
- unsigned char Data3[8]={0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08};// 显示
- unsigned char Data4[8]={0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10};// 显示
- unsigned char Data5[8]={0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};// 显示
- unsigned char Data6[8]={0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40};// 显示
- unsigned char Data7[8]={0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,};
- void display1(unsigned char *Data)//显示功能模块
- {
- unsigned char i,j,k,num=0;
- for(k=0;k<10;k++)
- {
- DataPort=0x00; // 清空行锁存器里数据,防止出现乱码
- line_LATCH=1; //
- line_LATCH=0;
- LATCH1=1;LATCH1=0;
- LATCH2=1;LATCH2=0;
- LATCH3=1;LATCH3=0;
- LATCH4=1;LATCH4=0;
- LATCH5=1;LATCH5=0;
- LATCH6=1;LATCH6=0;
- LATCH7=1;LATCH7=0;
- LATCH8=1;LATCH8=0;
-
- for(j=0;j<45&&num<=8&&num>=1;j++)
- {
- DataPort=0xff; // 清空行锁存器里数据,防止出现乱码
- line_LATCH=1; //
- line_LATCH=0;
-
- for(i=0;i<8;i++)
- {
- DataPort=line[i]; //先给行(灯板的公共端)输入数据
- line_LATCH=1; //打开锁存,把数据line[i]放进去
- line_LATCH=0; //关闭锁存,阻止外部数据进来
- DataPort=Data[i]; //把数值Data[0~7]里的值依次传给第一灯板的573锁存器中
- if(num==1){LATCH1=1;LATCH1=0;}
- else if(num==2){LATCH2=1;LATCH2=0;}
- else if(num==3){LATCH3=1;LATCH3=0;}
- else if(num==4){LATCH4=1;LATCH4=0;}
- else if(num==5){LATCH5=1;LATCH5=0;}
- else if(num==6){LATCH6=1;LATCH6=0;}
- else if(num==7){LATCH7=1;LATCH7=0;}
- else if(num==8){LATCH8=1;LATCH8=0;}
-
- Delay(100); //扫描间隙延时,时间太长会闪烁,太短会造成重影
- }
- }
- num++;
- if(num==9)num=0;
- }
- }
- void display2(unsigned char *Data)//显示功能模块
- {
- unsigned char i,j,k,num=9;
- for(k=0;k<10;k++)
- {
- DataPort=0x00; // 清空行锁存器里数据,防止出现乱码
- line_LATCH=1; //
- line_LATCH=0;
- LATCH1=1;LATCH1=0;
- LATCH2=1;LATCH2=0;
- LATCH3=1;LATCH3=0;
- LATCH4=1;LATCH4=0;
- LATCH5=1;LATCH5=0;
- LATCH6=1;LATCH6=0;
- LATCH7=1;LATCH7=0;
- LATCH8=1;LATCH8=0;
-
- for(j=0;j<45&&num<=8&&num>=1;j++)
- {
- DataPort=0xff; // 清空行锁存器里数据,防止出现乱码
- line_LATCH=1; //
- line_LATCH=0;
-
- for(i=0;i<8;i++)
- {
- DataPort=line[i]; //先给行(灯板的公共端)输入数据
- line_LATCH=1; //打开锁存,把数据line[i]放进去
- line_LATCH=0; //关闭锁存,阻止外部数据进来
- DataPort=Data[i]; //把数值Data[0~7]里的值依次传给第一灯板的573锁存器中
- if(num==1){LATCH1=1;LATCH1=0;}
- else if(num==2){LATCH2=1;LATCH2=0;}
- else if(num==3){LATCH3=1;LATCH3=0;}
- else if(num==4){LATCH4=1;LATCH4=0;}
- else if(num==5){LATCH5=1;LATCH5=0;}
- else if(num==6){LATCH6=1;LATCH6=0;}
- else if(num==7){LATCH7=1;LATCH7=0;}
- else if(num==8){LATCH8=1;LATCH8=0;}
- Delay(100); //扫描间隙延时,时间太长会闪烁,太短会造成重影
- }
- }
- num--;
- if(num==0)num=9;
- }
- }
- void display3(unsigned char *Data)//显示功能模块
- {
- unsigned char i,j,k;
- for(k=0;k<9;k++)
- {
- DataPort=0x00; // 清空行锁存器里数据,防止出现乱码
- line_LATCH=1; //
- line_LATCH=0;
- LATCH1=1;LATCH1=0;
- LATCH2=1;LATCH2=0;
- LATCH3=1;LATCH3=0;
- LATCH4=1;LATCH4=0;
- LATCH5=1;LATCH5=0;
- LATCH6=1;LATCH6=0;
- LATCH7=1;LATCH7=0;
- LATCH8=1;LATCH8=0;
- for(j=0;j<8;j++)
- {
- DataPort=0xff; // 清空行锁存器里数据,防止出现乱码
- line_LATCH=1; //
- line_LATCH=0;
-
- for(i=0;i<8;i++)
- {
- DataPort=line[i]; //先给行(灯板的公共端)输入数据
- line_LATCH=1; //打开锁存,把数据line[i]放进去
- line_LATCH=0; //关闭锁存,阻止外部数据进来
- DataPort=Data[i]; //把数值Data[0~7]里的值依次传给第一灯板的573锁存器中
- LATCH8=1;LATCH8=0;
- Delay(100); //扫描间隙延时,时间太长会闪烁,太短会造成重影
- }
- }
- }
- }
- void display4(unsigned char *Data)//显示功能模块
- {
- unsigned char i,j,k;
- for(k=0;k<9;k++)
- {
- DataPort=0x00; // 清空行锁存器里数据,防止出现乱码
- line_LATCH=1; //
- line_LATCH=0;
- LATCH1=1;LATCH1=0;
- LATCH2=1;LATCH2=0;
- LATCH3=1;LATCH3=0;
- LATCH4=1;LATCH4=0;
- LATCH5=1;LATCH5=0;
- LATCH6=1;LATCH6=0;
- LATCH7=1;LATCH7=0;
- LATCH8=1;LATCH8=0;
- for(j=0;j<8;j++)
- {
- DataPort=0xff; // 清空行锁存器里数据,防止出现乱码
- line_LATCH=1; //
- line_LATCH=0;
- for(i=0;i<8;i++)
- {
- DataPort=line[i]; //先给行(灯板的公共端)输入数据
- line_LATCH=1; //打开锁存,把数据line[i]放进去
- line_LATCH=0; //关闭锁存,阻止外部数据进来
- DataPort=Data[i]; //把数值Data[0~7]里的值依次传给第一灯板的573锁存器中
- LATCH1=1;LATCH1=0;
- Delay(100); //扫描间隙延时,时间太长会闪烁,太短会造成重影
- }
- }
- }
- }
- void zhuzi() //柱子移动效果
- {
- display1(Data0);
-
- …………余下代码请下载附件…………
-
复制代码
|