迪文科技论坛

 找回密码
 立即注册
搜索
查看: 500|回复: 6

【提问】如何显示5位整数,7位小数超长整形变量的控件?

[复制链接]

4

主题

15

回帖

95

积分

注册会员

Rank: 2

积分
95
发表于 2023-11-29 14:55:50 | 显示全部楼层 |阅读模式
如题,定义了一个地址为0x5200的数据显示变量控件,显示的数据类型为超长整型变量,需要显示5位整数,7位小数。

按照我之前的理解,比如我需要显示的是20000.5151525,那么实际上是需要在单片机里面写入200005151525,他才会显示20000.5151525。问题来了。
200005151525这个值是超出32位的,在keil c51里面最大只有u32类型,没有64位类型数据变量可定义。如果说可以定义64位,我认为只需要把数据做位运算

u8 buf[8];
        buf[0]=writedat>>56;
        buf[1]=writedat>>48;
        buf[2]=writedat>>40;
        buf[3]=writedat>>32;
        buf[4]=writedat>>24;
        buf[5]=writedat>>16;
        buf[6]=writedat>>8;
        buf[7]=writedat;然后再        sys_write_vp(0x5200,(u8*)&buf,8);即可,但是现在无法定义64位数据类型,所以求解应该怎么做才能把20000.5151525显示出来呢?

回复

使用道具 举报

4

主题

37

回帖

201

积分

中级会员

Rank: 3Rank: 3

积分
201
发表于 2023-11-29 17:38:17 | 显示全部楼层
可以用字符型来显示,自己的OS那边进行转换。
回复

使用道具 举报

2

主题

1228

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
11518
发表于 2023-11-29 17:59:47 | 显示全部楼层
字符串拼接起来,首位保存整数部分占5位,后7位保存小数部分。这样就不需要超长整数一个变量保存了。,用文本显示


char disp_str[13];

sprintf(disp_str, "%05d.%07d", 20000, 5151525);
sys_write_vp(0x5200, disp_str, sizeof(disp_str));

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

4

主题

15

回帖

95

积分

注册会员

Rank: 2

积分
95
 楼主| 发表于 2023-11-29 18:21:40 | 显示全部楼层
zzs999k 发表于 2023-11-29 17:59
字符串拼接起来,首位保存整数部分占5位,后7位保存小数部分。这样就不需要超长整数一个变量保存了。,用文本 ...

可是我还需要将这个数据拿来做动态绘图,放在y轴,我本来想着拆开成两个整数,我发现定义了一个 20000.5151525,直接printf();打印出来结果20000.520000
回复

使用道具 举报

0

主题

1276

回帖

5624

积分

论坛元老

Rank: 8Rank: 8

积分
5624
发表于 2023-11-30 08:42:46 | 显示全部楼层
定义的20000.5151525是用的什么类型的变量, printf的时候代码怎样写的?
回复

使用道具 举报

4

主题

15

回帖

95

积分

注册会员

Rank: 2

积分
95
 楼主| 发表于 2023-11-30 10:07:43 | 显示全部楼层
integer_32 发表于 2023-11-30 08:42
定义的20000.5151525是用的什么类型的变量, printf的时候代码怎样写的?

定义double类型,printf用的%.8f
回复

使用道具 举报

2

主题

1228

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
11518
发表于 2023-11-30 17:13:56 | 显示全部楼层
本帖最后由 zzs999k 于 2023-11-30 17:16 编辑
hexunyu 发表于 2023-11-30 10:07
定义double类型,printf用的%.8f

printf("%.8lf\n", a);
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-4-18 22:38 , Processed in 0.046349 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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