|
怪我,以前没有注意这事:
原来显示数字时,前面的0也总显示出来,例如,一个显示位置上,要显示16位的数据,它最大为65535,位宽为5位,显示99时,总是显示为00099,
原来不注意,今天想了想,DO ---- WHILE可以很好的解决这个问题:
- tmp = num;
- uint16_t i, tmp;
- i = pos+5; // pos:最高位显示的位置
- do
- {
- LcdPosChar[16*line + i] = ( tmp % 10 ) +0x30;
- tmp = (uint16_t)tmp / 10;
- i--;
- }while ( tmp && ( i > pos ) );
复制代码
这样算是,前导0自然也就不在之列了。
但是,前期如果是个大数字,那么高位的需要清除,不然显示结果就不正确了,这可以使用清屏法,也可以使用下面的方法:
- // 高位补成空格
- while ( i > pos )
- {
- i--;
- LcdPosChar[16*line + i] = 0x20;
- }
复制代码
这样处理,感觉挺好。
不知道大家都使用什么办法处理这个问题呢?
交流一下。
|
|