888光立方仿真.pdfVIP

  • 21
  • 0
  • 约3.65万字
  • 约 17页
  • 2018-06-04 发布于浙江
  • 举报
888光立方仿真

888 光立方仿真 代码 /*lidameng 制作光立方源程序*/ #includereg51.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};// 显示行 void display(unsigned char *Data)//显示子程序,指针数组作为形参,直接指向传过来的实参 数组的地址 ,这样就可直接操纵数组传过来的数组了 { unsigned char i; for(i=0;i8;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;i5000;i++) { DataPort=0x00; //先给行 (灯板的公共端)输入数据 line_LATCH=1; //打开锁存,把数据0x00 放进去 line_LATCH=0; //关闭锁存,阻止外部数据进来 DataPort=0xff; //把0xff 送进锁存器1~8 中,使它们的输出引脚都输出高电平, 与行锁存器的0x00 相对,点亮所有的灯 LATCH1=1;LATCH1=0;

文档评论(0)

1亿VIP精品文档

相关文档