數碼管顯示網上例子很多,無非是靜態的,動態的。動態的顯示大部分是用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比較簡潔的處理方法,各位知道的話記得留言。以下貼出效果圖。(手機拍攝,各位見諒)