浮点数在8位液晶屏上显示的问题
先讲下硬件:MSP430单片机,前八位LCDMEM用来显示8位数字,第9个和第10个LCDMEM用来显示各种符号,总共可表示的数值范围:00000000~99999999再讲下现象:当切换显示精度(无小数或者3位小数)时,显示的数值差异太大。
举例: 无小数位时显示5203,但换做3位小数时却显示0.000
程序也仔细看过了,这种情况极少极少出现,所以仿真是不太现实的。只能拿到论坛里来求各位高手指点迷津,现行谢过了!!!
附程序:
float heatCumulateFlow_Decimal_F,
heatCumulateFlow_Disp_F;
unsigned long heatCumulateFlow_UL
void Display_D(float temp,unsigned char unit)
{
unsigned long var=10000000;
unsigned long integer;
int i;
int flag=1;
LCDMEM[8]=0;
LCDMEM[9]=0;
for(i=0;i<unit;i++)
{
temp*=10;
}
integer=temp;
integer%=100000000;
if(integer>99999999)
{
integer%=100000000;
}
for(i=0;i<8;i++)
{
if((int)(integer/var)!=0)
{
LCDMEM[i]=A_LcdTab_UC[(int)(integer/var)];
flag=0;
}
else if(i>0&&flag==0)
{
LCDMEM[i]=A_LcdTab_UC[0];
}
else
{
LCDMEM[i]=0;
}
integer%=var;
var/=10;
if(i>(6-unit))
{
if(LCDMEM[i]==0x00)
{
LCDMEM[i]=0xeb;
}
}
}
}
**************************************************************
if(keyPressDouble_UC) //3位小数
{
heatCumulateFlow_Disp_F=heatCumulateFlow_UL%100000;
heatCumulateFlow_Disp_F+=heatCumulateFlow_Decimal_F;
Display_D(heatCumulateFlow_Disp_F,3);
LCDMEM[4]|=0x10; //显示小数点
}
else //只整数位显示,无小数
{
heatCumulateFlow_Disp_F=heatCumulateFlow_UL%100000000;
Display_D(heatCumulateFlow_Disp_F,0);
}