| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2000 人关注过本帖
标题:浮点数在8位液晶屏上显示的问题
只看楼主 加入收藏
kkkwgwk0083
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-2-15
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
浮点数在8位液晶屏上显示的问题
先讲下硬件:MSP430单片机,前八位LCDMEM用来显示8位数字,第9个和第10个LCDMEM用来显示各种符号,总共可表示的数值范围:00000000~99999999
再讲下现象:当切换显示精度(无小数或者3位小数)时,显示的数值差异太大。
举例:   无小数位时显示5203,但换做3位小数时却显示0.000
程序也仔细看过了,这种情况极少极少出现,所以仿真是不太现实的。只能拿到论坛里来求各位高手指点迷津,现行谢过了!!!

附程序:
float                     heatCumulateFlow_Decimal_F,
                          heatCumulateFlow_Disp_F;
unsigned long             heatCumulateFlow_UL


void Display_D(float temp,unsigned char unit)
{
      unsigned long var=10000000;
      unsigned long integer;
      int i;
      int flag=1;
      
      LCDMEM[8]=0;
      LCDMEM[9]=0;
      for(i=0;i<unit;i++)
      {
           temp*=10;  
      }
      integer=temp;
      integer%=100000000;
      if(integer>99999999)
      {
            integer%=100000000;
      }
      for(i=0;i<8;i++)
      {
            if((int)(integer/var)!=0)
            {
                  LCDMEM[i]=A_LcdTab_UC[(int)(integer/var)];
                  flag=0;
            }
            else if(i>0&&flag==0)
            {
                  LCDMEM[i]=A_LcdTab_UC[0];
            }
            else
            {
                LCDMEM[i]=0;
            }
            integer%=var;
            var/=10;
            if(i>(6-unit))
            {
                  if(LCDMEM[i]==0x00)
                  {
                        LCDMEM[i]=0xeb;
                  }
            }
      }
}
**************************************************************
if(keyPressDouble_UC)   //3位小数
{
          heatCumulateFlow_Disp_F=heatCumulateFlow_UL%100000;
          heatCumulateFlow_Disp_F+=heatCumulateFlow_Decimal_F;
          Display_D(heatCumulateFlow_Disp_F,3);
          LCDMEM[4]|=0x10;   //显示小数点
}
else                    //只整数位显示,无小数
{                           
          heatCumulateFlow_Disp_F=heatCumulateFlow_UL%100000000;
          Display_D(heatCumulateFlow_Disp_F,0);
}
搜索更多相关主题的帖子: 单片机 液晶屏 
2012-02-15 13:50
kkkwgwk0083
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-2-15
收藏
得分:0 
偶水平有限,真诚求高手回复!
2012-02-15 16:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
這個程序是你自己設計的?我不知道你為什麼要在顯示函數中進行運算,正常的程序設計是運算歸運算,顯示歸顯示,而你是運算與顯示混在一起。而且初步看,你的數據類型轉換太多。程序不完整,也沒有辦法測試。歸結起來,就是設計原因導致測試困難,在運算中心得到正確的結果再往外輸出,就好測試了。

授人以渔,不授人以鱼。
2012-02-15 17:40
kkkwgwk0083
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-2-15
收藏
得分:0 
先谢谢TongDeng的回复,能不能帮忙看看目前这种函数结构有可能哪里导致我主贴里提到的现象(即显示切换时,显示不一样)?我也知道不太容易找出来这个问题,不过先谢谢了啊,辛苦!
2012-02-16 08:48
快速回复:浮点数在8位液晶屏上显示的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045950 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved