搜索
bottom↓
回复: 8

lcd程序已調試好,但不知如何把數字串顯示出來

[复制链接]

出0入0汤圆

发表于 2008-4-26 20:04:44 | 显示全部楼层 |阅读模式
1602 lcd程序已调试好,能显示出任意字符串
     rs=1;
     for (i = 0; Message != 0; i++)
         LCDWrite(Message);
但不能够把计算出来的值显示出来,这里找到的程序也没有提及
现在情况是pic读取adc的值并把它真实值计算出来,并存入变量double x
假设存入x为12.345
如何把12.345显示出来到lcd出来?
用picc编译
#include <stdio.h>
double x=12.345;
char Buffer[10];
sprintf (Buffer, "%f", x);
for (i=0;Buffer!=0;i++)
   LCDWrite(Buffer, 1);
picc看似无法编译double和%f,从watch window上面看变量数值,x的不是值12.345..
这个问题要如何解决??

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2008-4-26 21:11:09 | 显示全部楼层
你可以这样写
把x*1000转换为int型
显示12后加个点,再显示345   在LCD上是一样的效果   12.345

出0入0汤圆

 楼主| 发表于 2008-4-26 21:36:06 | 显示全部楼层
【1楼】 yibin818 彬
感謝回複
這個方法想過,但如果是個7位數字..那..
有沒有另外的方法..

出0入0汤圆

 楼主| 发表于 2008-4-26 21:42:43 | 显示全部楼层
int x;

        x=4/3;

結果,x=0


double x;
x=4.0/3.0
結果,x=0.000000
暈倒

出0入0汤圆

发表于 2008-4-27 09:41:24 | 显示全部楼层
7位你可以用long型

出0入0汤圆

 楼主| 发表于 2008-4-27 20:44:55 | 显示全部楼层
【4楼】 yibin818 彬
重要的原因是sprintf這個function很占pic的容量
用16f628,占用近30%資源
所以才找替代方法
用上long再占了2%的ram..

出0入0汤圆

发表于 2008-4-28 12:53:29 | 显示全部楼层
为什么一定要用sprintf?自已另写function不行吗?

如果不是什么机密的话,你可发给我,我可帮你改改看,最近比闲,呵呵~~~~~~

出0入0汤圆

 楼主| 发表于 2008-4-28 14:36:47 | 显示全部楼层
【6楼】 yibin818 彬
絕不是甚麼機密..只是學習pic的練習程序來,是這裡的一些1602lcd程序
就是希望不要用sprinf,所以才在求救
可以分享你的function嗎~~~

出0入0汤圆

发表于 2008-4-28 19:24:44 | 显示全部楼层
#define  WEISHU   7
unsigned char sprint(unsigned char *buffer, float x)
{
         unsigned char     i = 0, j = 0;

         if(x < 0.0)
         {
                  buffer[j++] = '-';
                  //x = -x;
                  //x *= -1.0;
                  x = fabs(x);//三者取一种
         }

         if(x > 1.0)
         {
                  while(x > 10.0)
                  {
                           x /= 10.0;
                           i += 1;
                  }

                  do
                  {
                           buffer[j++] = '0' + (unsigned char)floor(x);
                           x -= floor(x);
                           x *= 10.0;
                  }while(i--);

                  buffer[j++] = '.';

                  if(j > ( ('-'==buffer[0]) ? WEISHU+1 : WEISHU))
                  {
                           buffer[j++] = '0';
                           buffer[j++] = '\0';
                  }
                  else
                  {
                           while(j < ( ('-'==buffer[0]) ? WEISHU+2 : WEISHU+1))
                           {
                                    buffer[j++] = '0' + (unsigned char)floor(x);
                                    x -= floor(x);
                                    x *= 10.0;
                           }

                           buffer[j++] = '\0';
                  }
         }
         else
         {
                  buffer[j++] = '.';

                  do
                  {
                           buffer[j++] = '0';
                           x *= 10.0;
                  }while(x < 1.0);

                  for(i=0;i<WEISHU;++i)
                  {
                           buffer[j++] = '0' + (unsigned char)floor(x);
                           x -= floor(x);
                           x *= 10.0;
                  }

                  buffer[j++] = '\0';
         }

         return j;
}
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 18:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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