数码管显示网上例子很多,无非是静态的,动态的。动态的显示大部分是用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比较简洁的处理方法,各位知道的话记得留言。以下贴出效果图。(手机拍摄,各位见谅)