//x,y :起点坐标
//len :小数点后的位数
//size:字体大小
//color:颜色
//num:数值(0~4294967295);
#define PRECISION 0.00001
void LCD_ShowNum(u16 x,u16 y,float num1,u8 len,u8 size,u16 bak_color,u16 color)
{
u8 t,k,temp,flag=0;
u8 enshow=0,len1;
u32 num,num2;
float Num_R;
if(num1-0.0<PRECISION)
{
// num1=abc(num1); 整形取绝对值
num1=fabs(num1);
flag=1;
}
Num_R=num1;
num=num1;
len1=GetNumDig(num);
num=num1;
num2=(Num_R-num)*mypow(10,len);
if(flag==1)
{
LCD_ShowChar(x,y,'-',size,0,bak_color,color); //显示负号
for(t=0;t<len1;t++) //显示整数部分
{
temp=(num/mypow(10,len1-t-1))%10;
if(enshow==0&&t<(len1-1))
{
if(temp==0)
{
LCD_ShowChar(x+8+(size/2)*t,y,' ',size,0,bak_color,color);
continue;
}else enshow=1;
}
LCD_ShowChar(x+8+(size/2)*t,y,temp+'0',size,0,bak_color,color);
}
LCD_ShowChar(x+8+(size/2)*len1,y,'.',size,0,bak_color,color); //显示小数点
for(k=len1+1;k<len1+1+len;k++) //显示小数部分
{
temp=(num2/mypow(10,len-k-1+len1+1))%10;
if(enshow==0&&t<(len-1))
{
if(temp==0)
{
LCD_ShowChar(x+8+(size/2)*(len1+1),y,' ',size,0,bak_color,color);
continue;
}else enshow=1;
}
LCD_ShowChar(x+8+(size/2)*k,y,temp+'0',size,0,bak_color,color);
}
}
else
{
for(t=0;t<len1;t++) //显示整数部分
{
temp=(num/mypow(10,len1-t-1))%10;
if(enshow==0&&t<(len1-1))
{
if(temp==0)
{
LCD_ShowChar(x+(size/2)*t,y,' ',size,0,bak_color,color);
continue;
}else enshow=1;
}
LCD_ShowChar(x+(size/2)*t,y,temp+'0',size,0,bak_color,color);
}
LCD_ShowChar(x+(size/2)*len1,y,'.',size,0,bak_color,color); //显示小数点
for(k=len1+1;k<len1+1+len;k++) //显示小数部分
{
temp=(num2/mypow(10,len-k-1+len1+1))%10;
if(enshow==0&&t<(len-1))
{
if(temp==0)
{
LCD_ShowChar(x+(size/2)*(len1+1),y,' ',size,0,bak_color,color);
continue;
}else enshow=1;
}
LCD_ShowChar(x+(size/2)*k,y,temp+'0',size,0,bak_color,color);
}
}
}
//仅以备份