程序中本身就有段选和位选显示百位、十位、个位,你没有显示,我想应该是数据位的问题,看看你的硬件和这个软件是否一致。
//****************************************************************
//定时器0中断,用做显示
timer0() interrupt 1 // 定时器0中断是1号
{
TH0=0xfd; //写入定时器0初始值
TL0=0x77;
switch(flag) //这之下完成位选,00、01、02分别选择个、十、百位
{case 0x00:P0=ge; P2=0x7f;flag++;break;
case 0x01:P0=shi;P2=0xbf;flag++;break;
case 0x02:P0=bai;P2=0xdf;flag=0;break;
}
}
显示数据转换程序
void conversion(uint temp_data)
{
uchar ge_data,shi_data,bai_data ;
bai_data=temp_data/100 ;
temp_data=temp_data%100; //取余运算
shi_data=temp_data/10 ;
temp_data=temp_data%10; //取余运算
ge_data=temp_data;
bai_data=SEG7[bai_data]; //这之下完成段选,分别赋值百、十、个位的数据
shi_data=SEG7[shi_data]&0x7f;
ge_data =SEG7[ge_data];
EA=0;
bai = bai_data;
shi = shi_data;
ge = ge_data ;
EA=1;
}
从上表两段程序可以看出,P0口是段码数据,P2口是位码控制,你可以修改这两处试试