|
你的數(shù)組括號用錯了,另外動態(tài)數(shù)碼管顯示程序也有缺陷,亮度不均勻。給你改了下,你試試。
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^0; //用杜邦線連接p1^0和p3^4
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9
/*
void delay(uint j)
{
uint m,n;
for(m=j;m>0;m--)
for(n=125;n>0;n--);
}*/
void display(uchar i)
{
static uchar a=0;
// uchar bai,shi,ge;
// bai=i/100;
// shi=i%100/10;
// ge=i%10;
P0=0x00;
switch(a)
{
case 0:
P0=0xfe;
wela=1;
wela=0;
P0=table[i/100];
dula=1;
dula=0;
a++;
break;
case 1:
P0=0xfd;
wela=1;
wela=0;
P0=table[i%100/10];
dula=1;
dula=0;
a++;
break;
case 2:
P0=0xfb;
wela=1;
wela=0;
P0=table[i%10];
dula=1;
dula=0;
a=0;
break;
}
}
void t0Init() //
{
TMOD |=0x05; //實現(xiàn)計數(shù)功能
TH0=0;
TL0=0;
TR0=1;
}
void t1Init()
{
TMOD |=0x10;
TH1 = 0xEC; //定時5ms
TL1 = 0x78;
TR1=1;
}
void main() //main函數(shù)自身會循環(huán)
{
uchar mSec; //毫秒和秒儲存變量
t0Init() ;
t1Init() ;
TH0=0;
TL0=0;
while(1)
{
if(TF1==1)
{ //判斷是否溢出
TF1=0; //軟件清零溢出標(biāo)志位
TH1 = 0xEC; //定時5ms
TL1 = 0x78;
mSec++;
if(mSec==100)
{
mSec=0;
led=~led; //產(chǎn)生方波
}
display(TL0);//數(shù)碼管顯示函數(shù)
}
}
} |
|