求助:如何使用串口发送十六进制字符串.
首先,我在这里获得了ADC数值.ADC_CONTR = 0xE8;//CH1
while (!(ADC_CONTR&0x10));
return ADC_RES<<8|ADC_RESL;//10位ADC
得到一个数值,比如0xA502,我要用串口发送一个数值到电脑,但是他要显示的就是转换成10进制,显示成字符串,串口我已经调好,
如何做呢,现在串口是通的,ADC也是正确的.
51单片机应该可以使用printf输出吧...论坛上应该有介绍...
给你贴一个~
http://www.amobbs.com/thread-5049301-1-1.html Stargazer-1986 发表于 2013-1-24 16:38 static/image/common/back.gif
51单片机应该可以使用printf输出吧...论坛上应该有介绍...
给你贴一个~
http://www.amobbs.com/thread-5049 ...
有这么爽的一回事么,我去了解一下 本帖最后由 CodeMonkey 于 2013-1-24 17:07 编辑
Stargazer-1986 发表于 2013-1-24 16:38 static/image/common/back.gif
51单片机应该可以使用printf输出吧...论坛上应该有介绍...
给你贴一个~
http://www.amobbs.com/thread-5049 ...
法克,用波特率发生器完成不鸟. 另外我需要比较高的输出速度,能换个方案吗 CodeMonkey 发表于 2013-1-24 17:01 static/image/common/back.gif
法克,用波特率发生器完成不鸟. 另外我需要比较高的输出速度,能换个方案吗 ...
"我需要比较高的输出速度",刚才那帖子的四楼回复说用115200都可以啊,你需要用多少波特率呢?
我觉得printf输出,跟波特率没大关系的啊.
换个方案的话,自己写一个printf函数~哈哈~ Stargazer-1986 发表于 2013-1-24 17:16 static/image/common/back.gif
"我需要比较高的输出速度",刚才那帖子的四楼回复说用115200都可以啊,你需要用多少波特率呢?
我觉得printf ...
115200 无输出... a = 0xaa
printf("%d",a);
输出-22016 额... 170呢... CodeMonkey 发表于 2013-1-24 17:34 static/image/common/back.gif
a = 0xaa
printf("%d",a);
这个变量a是signed还是unsigned的啊?
-22016,十六进制表示是"FFFFFFFFFFFFAA00"...难道还涉及到大端小端的问题???
就算a是signed型的,也才是-86而已啊...
我也不知道啥回事了...{:sleepy:} Stargazer-1986 发表于 2013-1-24 17:56 static/image/common/back.gif
这个变量a是signed还是unsigned的啊?
-22016,十六进制表示是"FFFFFFFFFFFFAA00"...难道还涉及到大端小端 ...
unsigned char a
0x1111就可以正确转换 你要先计算出AD值的10进制是多少。比如说是45542。4.5542V是吧?在程序中是没有小数点的。
要把45542拆开成45542分别发送。
给你个程序自已看下。
//************************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); wtfthprgw 发表于 2013-1-24 18:13 static/image/common/back.gif
你要先计算出AD值的10进制是多少。比如说是45542。4.5542V是吧?在程序中是没有小数点的。
要把45542拆开成 ...
我去试试
页:
[1]