野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 29460|回复: 4

LCD显示浮点数的程序

[复制链接]
发表于 2014-1-3 16:32:12 | 显示全部楼层 |阅读模式
野火的例程里没有LCD显示浮点数,我调试了一下午,把结果分享给大家参考,硬件是野火2013款板子根据野火例程void LCD_Num_6x12_O(u16 x,u16 y,u32 num, u16 Color) 改的。刚开始学,代码写的比较粗糙,不要见笑。

/******************************************************
* 函数名:LCD_FloatNum_6x12_O
* 描述  :在指定坐标处悬浮显示6*12大小的浮点数字
* 输入  : -x   显示位置横向坐标 0 ~ 319
           -y   显示位置纵向坐标 0 ~ 239
     -num  需要显示的数字
    -weishu需要显示的小数位数
     -Color 数字颜色
* 输出  :无
* 举例  : LCD_Num_6x12_O(200, 100, 6666.6666,2, BLACK);
     
* 注意  : 显示方向为横向
*********************************************************/
void LCD_FloatNum_6x12_O(u16 x,u16 y,float num, u8 weishu, u16 Color)   //显示浮点数,超出显示有效数字的小数位直接去掉,没有四舍五入
{      
    u32 res=(int)(num*pow(10,weishu)); //^是异或不是次方
    u32 res1=(int)(num*pow(10,weishu));
    u8 t=0;
    u8 w=weishu;
    u8 z=0;
    Set_direction(0);
  
   if( res ==0  )
  {
         LCD_Char_6x12_O(x, y, '0',Color);
     return;
  }
    while( res )  /*得到数字长度t*/
    {
        res/=10;
        t++;
    }
  
  //计算整数部分的个数z,总个数字长度t不包括小数点
  
  if (t==w)//整数部分为零,而且小数点后第一位不是零时
  {
   z=1;
   t=t+1;
  }
  else if (t<w)//整数部分为零,而且小数点后第一位是零时
  {
   z=1;
   t=t+2;
  }
  else//整数部分不为零
  {
   z=t-w;
  }

  
  t=t+1;//总数字长度再加上小数点.的一位
  
  while(w)//显示小数部分
  {
   
   LCD_Char_6x12_O(x+(6*(t--)-6), y, (res1%10)+'0',Color);
    res1 /= 10 ;
    w=w-1;
  }
  //显示小数点
  LCD_Char_6x12_O(x+(6*(t--)-6), y,'.',Color);
  t=t-1;
  
  //显示整数部分
  while(z)
  {
   
    LCD_Char_6x12_O(x+6+(6*(t--)-6), y, (res1%10)+'0',Color);
   
    res1 /= 10 ;
    z=z-1;
  }

}

回复

使用道具 举报

发表于 2014-1-3 16:34:40 | 显示全部楼层
赞一个

不过 浮点显示,推荐 用 sprintf ,把 浮点转为 字符串,然后 字符串 显示
回复 支持 反对

使用道具 举报

发表于 2014-1-3 16:53:19 | 显示全部楼层
只要有了底层驱动,这些都可以当做训练编程来练习学习!
回复 支持 反对

使用道具 举报

发表于 2014-1-3 16:55:44 | 显示全部楼层
hqhq 发表于 2014-1-3 16:53
只要有了底层驱动,这些都可以当做训练编程来练习学习!

各种方法 也 了解了解一下,才能 开拓视野
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-3 17:01:38 | 显示全部楼层
微粒子 发表于 2014-1-3 16:34
赞一个

不过 浮点显示,推荐 用 sprintf ,把 浮点转为 字符串,然后 字符串 显示

又多学了一个,非常感谢哥们
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 11:57 , Processed in 0.027956 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表