找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2302|回复: 5
收起左侧

求助 数据转换

[复制链接]
ID:60655 发表于 2014-7-14 22:43 | 显示全部楼层 |阅读模式
您好。
    我有个问题想请教。单片机读出数据(I2C方式)经过程序处理后得到个数据,如0x12d. 我想用十进制通过LED显示出301.可是我试了好几天,也没试出来,请问用什么方式可以把16进制转换成十进制显示出来。谢谢!
回复

使用道具 举报

ID:61174 发表于 2014-7-15 11:27 | 显示全部楼层
用变量拆分 把个位 十位 百位拆出来在显示

假如数字字符串是i,则:
a=i/10000000;                                          //千万为
b=i%10000000/1000000;                                  //百万位
c=i%10000000%1000000/100000;                          //十万位
d=i%10000000%1000000%100000/10000;                  //万位
e=i%10000000%1000000%100000%10000/1000;                  //千位
f=i%10000000%1000000%100000%10000%1000/100;          //百位
g=i%10000000%1000000%100000%10000%1000%100/10;          //十位
h=i%10000000%1000000%100000%10000%1000%100%10;          //个位

a,b,c,d,e,f,g,h是存储每一位位的数字
回复

使用道具 举报

ID:18297 发表于 2014-7-15 16:55 | 显示全部楼层
                unsigned int  data1
                idata unsigned char BUF[5];              
                data1=0x12d;       //需要转换的数据
                sprintf(BUF,"%d",data1);       //结果301放在BUF数组内。
回复

使用道具 举报

ID:60655 发表于 2014-7-16 13:08 | 显示全部楼层

用变量拆分 把个位 十位 百位拆出来在显示

假如数字字符串是i,则:
a=i/10000000;                                          //千万为
b=i%10000000/1000000;                                  //百万位
c=i%10000000%1000000/100000;                          //十万位
d=i%10000000%1000000%100000/10000;                  //万位
e=i%10000000%1000000%100000%10000/1000;                  //千位
f=i%10000000%1000000%100000%10000%1000/100;          //百位
g=i%10000000%1000000%100000%10000%1000%100/10;          //十位
h=i%10000000%1000000%100000%10000%1000%100%10;          //个位

a,b,c,d,e,f,g,h是存储每一位位的数字
谢谢,这个方法我试过 没成功。
回复

使用道具 举报

ID:60655 发表于 2014-7-16 13:11 | 显示全部楼层
  unsigned int  data1
                idata unsigned char BUF[5];              
                data1=0x12d;       //需要转换的数据
                sprintf(BUF,"%d",data1);       //结果301放在BUF数组内。
谢谢 我去试下,
                sprintf 这个命令在单片机里也可以用?

回复

使用道具 举报

ID:64084 发表于 2014-7-17 15:27 | 显示全部楼层
void time_show(uchar t,uchar x,uchar y,uchar z)
{
                        uint m=10*t;
                        num[1]=(m/1000)+'0'; //千位
                        num[2]=(m%1000/100)+'0';//百位
                        num[3]=(m%1000%100/10)+'0';//十位
                        num[4]=(m%1000%100%10)+'0';//个位
                        GUI_WriteASCII(x, y, &num[1], 0xF800, 0x0000);
                        GUI_WriteASCII((x+z), y, &num[2], 0xF800, 0x0000);
                        GUI_WriteASCII((x+2*z), y, &num[3], 0xF800, 0x0000);
                        GUI_WriteASCII((x+3*z), y, &num[4], 0xF800, 0x0000);

}

上面就是我现在用的
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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