4848|1

1万

帖子

25

TA的资源

裸片初长成(高级)

楼主
 

数字显示时,你是怎样去掉前导0的? [复制链接]

      怪我,以前没有注意这事:
       原来显示数字时,前面的0也总显示出来,例如,一个显示位置上,要显示16位的数据,它最大为65535,位宽为5位,显示99时,总是显示为00099,
      原来不注意,今天想了想,DO ----  WHILE可以很好的解决这个问题:

      
  1.     tmp = num;
  2.     uint16_t i, tmp;
  3.     i = pos+5;          // pos:最高位显示的位置
  4.     do
  5.     {
  6.        LcdPosChar[16*line + i] = ( tmp % 10 ) +0x30;
  7.         tmp = (uint16_t)tmp / 10;
  8.         i--;
  9.     }while ( tmp && ( i > pos ) );
复制代码


这样算是,前导0自然也就不在之列了。

但是,前期如果是个大数字,那么高位的需要清除,不然显示结果就不正确了,这可以使用清屏法,也可以使用下面的方法:


  1.     // 高位补成空格
  2.     while ( i > pos )
  3.     {
  4.         i--;
  5.         LcdPosChar[16*line + i] = 0x20;
  6.     }
复制代码



这样处理,感觉挺好。


不知道大家都使用什么办法处理这个问题呢?

交流一下。

此帖出自单片机论坛

最新回复

本帖最后由 huo_hu 于 2017-6-1 17:01 编辑 这个很矛盾,我的选择是带着0,按预先设定屏蔽若干位剩下的0带着。 如果想要显示的数据看得清楚必须数点儿对齐或者说左对齐,这点是重要的。 1.算法中一定会先产生高位,如果一定要先显示低位就需要存储开销。 2.即便是高位的0不显示也要有一个刷屏的过程,因为你无法确定上次显示的时候高位上显示的是什么数据。   详情 回复 发表于 2017-6-1 17:00
点赞 关注
 

回复
举报

4008

帖子

0

TA的资源

版主

沙发
 
本帖最后由 huo_hu 于 2017-6-1 17:01 编辑

这个很矛盾,我的选择是带着0,按预先设定屏蔽若干位剩下的0带着。
如果想要显示的数据看得清楚必须数点儿对齐或者说左对齐,这点是重要的。
1.算法中一定会先产生高位,如果一定要先显示低位就需要存储开销。
2.即便是高位的0不显示也要有一个刷屏的过程,因为你无法确定上次显示的时候高位上显示的是什么数据。
此帖出自单片机论坛
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表