0
收藏
微博
微信
复制链接

51单片机流动数码管显示程序

提问于
2024-02-15 01:20

数码管显示网上例子很多,无非是静态的,动态的。动态的显示大部分是用While函数,昨天编了一个程序解决动态显示0~F的流动显示方法,可能还需改进,还得“计院”的高手指导。
另外后面几行用/* */去掉的程序大家加进去可以看到另一个效果的流水数码管



#include
unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99, //0~4
    0x92,0x82,0xF8,0x80,0x90, //5~9
    0x88,0x83,0xA7,0xA1,0x86,0x8E}; //A~F      
unsigned char code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
unsigned char temp,temp0,temp1,temp2,temp3,temp4,temp5,j;
unsigned char emp,emp0,emp1,emp2,emp3,emp4,emp5,emp6,emp7,

    emp8,emp9,emp10,emp11,emp12,emp13,emp14,emp15;
void delay();
void delay1();
void main()
{{      
temp=0;
temp0=0;
temp1=1;
temp2=2;
temp3=3;
temp4=4;
temp5=5;
emp=0;
emp0=0;
emp1=1;
emp2=2;
emp3=3;
emp4=4;
emp5=5;
emp6=6;
emp7=7;
emp8=8;
emp9=9;
emp10=10;
emp11=11;
emp12=12;
emp13=13;
emp14=14;
emp15=15;

  loop2:
  j=40000;
   loop1:
   P3=0xff;
   P0=table[emp0];
   P3=wei[temp0];
   delay();

   P3=0xff;
   P0=table[emp1];
   P3=wei[temp1];
   delay();

   P3=0xff;
   P0=table[emp2];
   P3=wei[temp2];
   delay();

   P3=0xff;
   P0=table[emp3];
   P3=wei[temp3];
   delay();
     
   P3=0xff;
   P0=table[emp4];
   P3=wei[temp4];
   delay();

   P3=0xff;
   P0=table[emp5];
   P3=wei[temp5];
   delay();

  j=j-1;
   if(j>0)
   goto loop1;
   else
     /*temp=temp0;
     temp0=temp1;
     temp1=temp2;
     temp2=temp3;
     temp3=temp4;
     temp4=temp5;
     temp5=temp;*/
     emp=emp0;
     emp0=emp1;
     emp1=emp2;
     emp2=emp3;
     emp3=emp4;
     emp4=emp5;
     emp5=emp6;
     emp6=emp7;
     emp7=emp8;
     emp8=emp9;
     emp9=emp10;
     emp10=emp11;
     emp11=emp12;
     emp12=emp13;
     emp13=emp14;
     emp14=emp15;
     emp15=emp;
     goto loop2;

}}
//延时程序
void  delay()              //延时程序
    {
     int i;                 //定义整形变量
     for(i=0x100;i--;)
  ;     //延时
    }


会C语言的会觉得比较简单,暂时还没研究程序中temp和emp比较简洁的处理方法,各位知道的话记得留言。以下贴出效果图。(手机拍摄,各位见谅)






收藏 217 0 0