求助:如何使用串口发送十六进制字符串.

2020-02-01 16:17发布

首先,我在这里获得了ADC数值.
ADC_CONTR = 0xE8;//CH1
while (!(ADC_CONTR&0x10));
return ADC_RES<<8|ADC_RESL;  //10位ADC

得到一个数值,比如0xA502,我要用串口发送一个数值到电脑,但是他要显示的就是转换成10进制,显示成字符串,串口我已经调好,

QQ截图20130124161236.png (16.26 KB, 下载次数: 0) 下载附件 2013-1-24 16:12 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
Stargazer-1986
1楼-- · 2020-02-02 16:17
CodeMonkey 发表于 2013-1-24 17:34
a = 0xaa
printf("%d",a);

这个变量a是signed还是unsigned的啊?
-22016,十六进制表示是"FFFFFFFFFFFFAA00"...难道还涉及到大端小端的问题???
就算a是signed型的,也才是-86而已啊...
我也不知道啥回事了...
CodeMonkey
2楼-- · 2020-02-02 21:33
Stargazer-1986 发表于 2013-1-24 17:56
这个变量a是signed还是unsigned的啊?
-22016,十六进制表示是"FFFFFFFFFFFFAA00"...难道还涉及到大端小端 ...

unsigned char a

0x1111就可以正确转换
wtfthprgw
3楼-- · 2020-02-03 03:15
你要先计算出AD值的10进制是多少。比如说是45542。4.5542V是吧?在程序中是没有小数点的。
要把45542拆开成4  5  5  4  2分别发送。
给你个程序自已看下。
//************************AD转换计算
ADC=ADC/1024.000*5.000;
e=ADC*100;

////////////////////4.984
a=e/1000|0x30;////4
e=e%1000;/////984
b=e/100|0x30;////9
e=e%100;//84
c=e/10|0x30;//8
d=e%10|0x30;///4
///////////////////////////////////把数据拆分开。比如4984拆为4.984
分别发送a,b,c,d就行了
SendData(a);  
SendData('.');  加入小数点
SendData(b);  
SendData(c);  
SendData(d);  
CodeMonkey
4楼-- · 2020-02-03 08:36
wtfthprgw 发表于 2013-1-24 18:13
你要先计算出AD值的10进制是多少。比如说是45542。4.5542V是吧?在程序中是没有小数点的。
要把45542拆开成 ...

我去试试

一周热门 更多>