液晶屏上如何显示一个任意的浮整数(根据正点原子开发板的例程修改)

转自:http://m646208823.blog.163.com/blog/static/16690295320129231137835/

//x,y :起点坐标  
//len :小数点后的位数
//size:字体大小,此处省略,默认1608字体
//color:颜色,此处仅保留前景色,可自行修改
//num:数值(0~4294967295); 
 
void LCD_ShowNum(u16 x,u16 y,float num,u8 len,u16 color)
{          
 u8 t,k,temp;
 u8 len1;   //整数部分长度
 u32 num1,num2,k2;
 float Num_R;
 Num_R=num;
 num1=num;//取整数部分
 len1=GetNumDig(num1);  
//获得num的整数位数

 num2=(Num_R-num1)*mypow(10,len); // 10的len次方  //小数部分转长度为len的整数
         
 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*t,y,' ',color);//便于数字的对齐显示,可以去掉,因为数字长度len1确定,不会出现首位为0.若是确定的位数,则可以直接给len1赋值
    continue;   //进入下一个循环
   }else enshow=1; 
     
  }
   LCD_ShowChar(x+8*t,y,temp+'0',color); 
 }
 
 LCD_ShowChar(x+8*len1,y,'.',color);  
//显示小数点

for(k=0;k<len;k++)             //显示小数部分
 {
  temp=(num2/mypow(10,len-k-1))%10;
  LCD_ShowChar(x+8*k,y,temp+'0',color); 
 }
}

//m^n函数
u32 mypow(u8 m,u8 n)
{
 u32 result=1;  
 while(n--)result*=m;    
 return result;
}

//获取数字num的长度 函数

//num:数值(0~4294967295); 
///方法1

u8 GetNumDig(u32 num)
{
 u8 len=1;

 for(len=1;len<12;len++)
 {
  if(num<10) return len;
  num=num/10;
 }
 return len;
}

 //方法2//

u8 GetNumDig(u32 num)
{
u8 len=0;
do

 {
  num=num/10;
  len++;
 }
while(num!=0);
return len;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值