這個是四位的數碼管點亮程序,接P0口
五位只要套個循環即可,程序中的b[N]
N一定要比循環大一,自己也不明白為什么會這樣
大家研究研究。
#include<reg52.h> int a[9];
int c[3];
delay()//延時函數 { int i; for(i=0;i<=355;i++) ; }
int zs10_j(int i)//十的指數函數 { int j=1; for(;3-i!=0;i++) { j*=10; } return j; }
main() { int i, b[5];
c[0]=0x7f;//位置表格 c[1]=0xbf; c[2]=0xdf; c[3]=0xef;
a[1]=0xf9;//數據顯示表格
a[2]=0xa4; a[3]=0xb0; a[4]=0x99; a[5]=0x92; a[6]=0x82; a[7]=0xf8; a[8]=0x80; a[9]=0x90;
for(b[0]=0;b[0]<=9;b[0]++)//最高位 for(b[1]=0;b[1]<=9;b[1]++)//次高位 for(b[2]=0;b[2]<=9;b[2]++)//次低位 for(b[3]=0;b[3]<=9;b[3]++)//低位 for(i=0;i<100;i++) for(b[4]=0,P3=0xef;b[4]<=3;b[4]++)//定位計數函數 { if (b[0]*1000+b[1]*100+b[2]*10+b[3]>zs10_j(b[4]))//顯示零或不顯示零(零是點亮位的還是待點亮位的)的判斷條件 a[0]=0xc0; else a[0]=0xff; P0=a[b[b[4]]];? delay(); P0=0xff; P3=(P3<<1)+0x01; } }
|