|
#define distance_led P1//用P1口控制LED來顯示距離
uint distance_km; //記錄車輛走過的距離
unsigned char code table1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//1-5的字形碼
unsigned char code table2[]={0x76,0x79,0x38,0x38,0x3f};//HELLO的字形碼
unsigned char code table3[]={0xfe,0xfd,0xfb,0xf7,0xef};//位選碼
void timer0isr(void) interrupt 1 using 1
{
distance_km++;
if(distance_km > 9999)
{
distance_km = 9999;
}
}
void main(void)
{
unsigned char DivData[4]={1000,100,10,1};
uchar i,a;
TMOD = 0x06; //設定T/C0工作在計數器,工作方式2
distance_led = 0xff; // LED燈初始狀態處于熄滅狀態
distance_km = 0;
TH0 = 0xFB;
TL0 = 0xFB; //裝載計數初值
EA = 1; //開總中斷
ET0 = 1; //開T/C0中斷
TR0 = 1; //啟動T/C0
while(1)
{
for(i=0;i<4;i++)
{
P2=0xff;//清屏信號,必須使用
P0=table1[(distance_km/DivData[ i])%10];
P2=table3[ i];//對位選信號查表
for(a=248;a>0;a--);//字形顯示延時,可調節
}
}
}
|
|