这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 带负数显示

共1条 1/1 1 跳转至

带负数显示

助工
2014-11-04 19:07:57     打赏
//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); 
  }
 }
}

//仅以备份

 


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]