OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 124|回复: 1

MSP430 OELD显示问题

[复制链接]

  离线 

2

主题

2

帖子

0

精华

新手上路

Rank: 1

积分
21
金钱
21
注册时间
2017-7-24
在线时间
6 小时
发表于 2017-9-28 09:43:27 | 显示全部楼层 |阅读模式
1金钱
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size)
{                
  u8 t,temp;
  u8 enshow=0;                                                  
  for(t=0;t<len;t++)
  {
    temp=(num/oled_pow(10,len-t-1))%10;//求出每一位的数字  从高到低
   
    if(enshow==0&&t<(len-1))           //首位不显示0
    {      
      if(temp==0)
      {
        OLED_ShowChar(x+(size/2)*t,y,' ');//size 字高  程序字体取用16*8
        continue;
      }
      else enshow=1;              
    }
  OLED_ShowChar(x+(size/2)*t,y,temp+'0'); //将0-9的数字转换为ACSII码值
  }
}

void OLED_ShowFloat(u8 x,u8 y,float num,u8 size)
{  
  u8 len=3;
  u8 t,temp,n=0;
  u8 enshow=0;

  //显示整数部分
  for(t=0;t<len;t++)
  {
    temp=((u32)num/oled_pow(10,len-t-1))%10;
    if(enshow==0&&t<(len-1))            
    {      
      if(temp==0)
      {
        //OLED_ShowChar(x+(size/2)*t,y,' ');
        continue;
        //结束单次循环
      }
      else enshow=1;              
    }
    n++;
    OLED_ShowChar(x+(size/2)*n,y,temp+'0');//将0-9的数字转换为ACSII码值
  }
  //显示小数部分
  num*=1000;
  num=(u32)num%1000;                      //取三位小数
  OLED_ShowChar(x+(size/2)*(n+1),y,'.');
  OLED_ShowChar(x+(size/2)*(n+2),y,((u32)num/100)+'0');
  OLED_ShowChar(x+(size/2)*(n+3),y,((u32)num%100/10)+'0');
  OLED_ShowChar(x+(size/2)*(n+4),y,((u32)num%10)+'0');
}

第一个是显示整数的函数,但是只能显示小于65535的数,觉得是单片机位数的原因,不知道是不是;第二个是显示浮点数的函数,存在的问题是只能显示小于65.354的数,超过这个数,小数部分就会显示错误。新手上路,请教大牛们!

回复

使用道具 举报

  在线 

482

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
117164
金钱
117164
注册时间
2010-12-1
在线时间
899 小时
发表于 2017-9-29 01:17:30 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-21 01:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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