打印

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

[复制链接]
3280|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们真是

使用特权

评论回复
5
sjk2412|  楼主 | 2009-8-19 21:59 | 只看该作者
2# huangqi412 什么意思?不明白啊

使用特权

评论回复
6
李冬发| | 2009-8-20 05:14 | 只看该作者
最简单的办法用定点数

使用特权

评论回复
7
wh6ic| | 2009-8-20 08:54 | 只看该作者
把 “j”设为“long”/“unsigned long”就行了。不过这样也只支持 0.01 ~ 999.99。另外程序中需增加超范围判断,或者限定a[0]为0~9也可以。

使用特权

评论回复
8
sjk2412|  楼主 | 2009-8-21 16:44 | 只看该作者
7# wh6ic 谢谢,我试试,范围够了,其实我在做一个电子称,嘿嘿

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

3

主题

17

帖子

0

粉丝