|
#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--);//字形显示延时,可调节
}
}
}
|
|