一个有很有挑战性的问题—液晶显示浮点数

[复制链接]
4313|7
 楼主| sjk2412 发表于 2009-8-19 18:14 | 显示全部楼层 |阅读模式
12864液晶显示整数很简单,但怎么显示小数呢?
下面是我的一段程序://显示三位整数,两位小数
void showfloat(unsigned int address,float x)    /////////////浮点数液晶显示
{
  unsigned int a[5];
  unsigned int i,j,dotflag;
  long temp;
  j=10000;
  dotflag=0;
  temp=x*100;
  for(i=0;i<5;i++)////////把数存进数组里
  {
   a[i]=temp/j;
temp=temp-a[i]*j;
j=j/10;
  }
  WriteCommand(0x30);
  WriteCommand(AC_TABLE[address]);//////液晶显示方法,不用理会
  for(i=0;i<5;i++)
  {
   if(a[i]==0);                               ///////整数位是否为0
else
    dotflag=1;
if(dotflag==1||i>=2)       ////////全为零的话只有最后一个显示出来
   WriteData(0x30+a[i]);
   if(i==2)         /////////////小数点显示
   WriteData('.');

  }

}
程序的问题是:
问什么这个方法显示的数必须小于65536呢,我用的是float 的类型啊。
跪求大侠帮忙,急。
huangqi412 发表于 2009-8-19 18:26 | 显示全部楼层
挑战???                最简单方法是重定向PRINTF
xwj 发表于 2009-8-19 18:43 | 显示全部楼层
LS阿黄正解
huangqi412 发表于 2009-8-19 18:51 | 显示全部楼层
靠,,,21快吧阿黄列到XX词库...         NND,Y们真是
 楼主| sjk2412 发表于 2009-8-19 21:59 | 显示全部楼层
2# huangqi412 什么意思?不明白啊
李冬发 发表于 2009-8-20 05:14 | 显示全部楼层
最简单的办法用定点数
wh6ic 发表于 2009-8-20 08:54 | 显示全部楼层
把 “j”设为“long”/“unsigned long”就行了。不过这样也只支持 0.01 ~ 999.99。另外程序中需增加超范围判断,或者限定a[0]为0~9也可以。
 楼主| sjk2412 发表于 2009-8-21 16:44 | 显示全部楼层
7# wh6ic 谢谢,我试试,范围够了,其实我在做一个电子称,嘿嘿
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:爱在起舞,梦在飞扬!

3

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部