第2个回答 2015-10-12
就把程序里读出来的数按百位,十位,个位,依次求出,想显示几进制就按几进制数作除求余,时间好长了,记不清了,找了一段程序可以显示小数
void Disp_Numb(uint temper)
{
uchar i;
for(i = 0;i < 6;i++) dN[i] = 0; //初始化显示变量
//数值转换
if(temper & BIT0)
{
dN[0] = 5;
dN[1] = 2;
dN[2] = 6;
}
if(temper&BIT1)
{
dN[1] += 5;
dN[2] += 2;
dN[3] += 1;
}
if(temper & BIT2)
{
dN[2] += 5;
dN[3] += 2;
if(dN[2] >= 10)
{
dN[2] -= 10;
dN[3] += 1;
}
}
if(temper&BIT3)
{
dN[3] += 5;
}
if(temper & BIT4)
{
dN[4] += 1;
}
if(temper & BIT5)
{
dN[4] += 2;
}
if(temper & BIT6)
{
dN[4] += 4;
}
if(temper & BIT7)
{
dN[4] += 8;
if(dN[4] >= 10)
{
dN[4] -= 10;
dN[5] += 1;
}
}
if(temper & BIT8)
{
dN[4] += 6;
dN[5] += 1;
if(dN[4] >= 10)
{
dN[4] -= 10;
dN[5] += 1;
}
}
if(temper & BIT9)
{
dN[4] += 2;
dN[5] += 3;
if(dN[4] >= 10)
{
dN[4] -= 10;
dN[5] += 1;
}
}
if(temper & BITA)
{
dN[4] += 4;
dN[5] += 6;
if(dN[4] >= 10)
{
dN[4] -= 10;
dN[5] += 1;
}
if(dN[5] >= 10)
{
dN[5] -= 10;
}
}
}
求完之后可以这样显示,这是在LCD屏上显示的,其实就是依次把上面求出来的数显示出来,别的地方显示也是一样道理,
Disp_Numb(Do1Convert());
Disp1Char(4,1,dN[5]+0x30);
Disp1Char(5,1,dN[4]+0x30);
Disp1Char(6,1,0x2e); //0x2e是小数点对应的ASCII码值
Disp1Char(7,1,dN[3]+0x30);
Disp1Char(8,1,dN[2]+0x30);
Disp1Char(9,1,dN[1]+0x30);
Disp1Char(10,1,dN[0]+0x30);本回答被网友采纳