完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size)
{ u8 t,temp; u8 enshow=0; for(t=0;t temp=(num/oled_pow(10,len-t-1))%10;//求出每一位的数字 从高到低 if(enshow==0&&t<(len-1)) //首位不显示0 { if(temp==0) { OLED_ShowChar(x+(size/2)*t,y,' ');//size 字高 程序字体取用16*8 continue; } else enshow=1; } OLED_ShowChar(x+(size/2)*t,y,temp+'0'); //将0-9的数字转换为ACSII码值 } } void OLED_ShowFloat(u8 x,u8 y,float num,u8 size) { u8 len=3; u8 t,temp,n=0; u8 enshow=0; //显示整数部分 for(t=0;t temp=((u32)num/oled_pow(10,len-t-1))%10; if(enshow==0&&t<(len-1)) { if(temp==0) { //OLED_ShowChar(x+(size/2)*t,y,' '); continue; //结束单次循环 } else enshow=1; } n++; OLED_ShowChar(x+(size/2)*n,y,temp+'0');//将0-9的数字转换为ACSII码值 } //显示小数部分 num*=1000; num=(u32)num%1000; //取三位小数 OLED_ShowChar(x+(size/2)*(n+1),y,'.'); OLED_ShowChar(x+(size/2)*(n+2),y,((u32)num/100)+'0'); OLED_ShowChar(x+(size/2)*(n+3),y,((u32)num%100/10)+'0'); OLED_ShowChar(x+(size/2)*(n+4),y,((u32)num%10)+'0'); } 第一个是显示整数的函数,但是只能显示小于65535的数,觉得是单片机位数的原因,不知道是不是;第二个是显示浮点数的函数,存在的问题是只能显示小于65.354的数,超过这个数,小数部分就会显示错误。新手上路,请教大牛们! |
|
相关推荐
2个回答
|
|
|
|
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size)这里NUM虽然是32位,但是计算时计算的位数取决于LEN,这就要看你写入的参数LEN是多少了。
void OLED_ShowFloat(u8 x,u8 y,float num,u8 size)这里面 //显示小数部分 num*=1000; num=(u32)num%1000; //取三位小数 这里已经写明了只计算三位小数 |
|
|
|
只有小组成员才能发言,加入小组>>
2911个成员聚集在这个小组
加入小组2655 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
2959 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2257 浏览 1 评论
4678 浏览 1 评论
2466 浏览 1 评论
919浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
2962浏览 2评论
2657浏览 1评论
1052浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-15 10:17 , Processed in 2.316964 second(s), Total 85, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191