5942|13

93

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

急急急!串口的数据发送问题 在线等待!! [复制链接]

我用的是430的1232芯片,让AD来采样电压,然后通过串口发送到上位机上,这都设好啦,能发的,比如发个AB或11,串口调试助手上面都能显示AB和11。因为我采的电压是带有小数的,比如1.31、0、98、1.5像这样就不知道怎么发送啦!望请那位高手帮帮我啊!在下先谢谢!

最新回复

你不会1.32搞成132. 0.98搞成198发送吗? 比如你1.32V直接发1320.  详情 回复 发表于 2011-12-22 16:51
 
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你AD采样出来的还是小数吗?
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你的“AB”、“11”是16进制数还是ASCII码?
如果是16进制数,就没有办法看到小数点“.”。
16进制转ASCII码的办法:
1、数值:加0x30。比方“9”,9+0x30=0x39
2、字符:从A开始,大写时为0x41递增,小写时0x61递增。比方“A”0x41、“B”0x42、“a”0x61、“b”0x62
3、其它:小数点0x2e、回车0x0d、换行0x0a
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
前面省掉
ADC10CTL0 &=~ENC;
volt=((float)(ADC10MEM)/1024.0) *2.5;
send_state();
}
void send_state()
{
float temp;
unsigned int vbuf;
char buf[20],i,b1,b2,b3,b4;
temp = volt*1000;
vbuf = (unsigned int)temp;
b1=vbuf;
b2=(vbuf%1000)/100;
b3=(vbuf%100)/10;
b4=vbuf%10;
 TXBUF0 = buf[i]; //发送数据
while((UTCTL0&0X01)==0);
 }
我以前是这样写,那我应该怎样写呢?我单独给TXBUF0 =0xAB;的话这样是能发的,换成buf[i]就不知道怎么和我采样的数连在一起啦!望前辈能帮我指点,改改哦,守候着您的回复。
 
 
 

回复

49

帖子

0

TA的资源

一粒金砂(初级)

5
 
你这个程序看了半天都没明白。
在A/D转换后,A/D转换值经处理应该转换为浮点数赋值给变量volt(应该是全局变量)了“volt=((float)(ADC10MEM)/1024.0) *2.5;”。但在发送函数中,对volt扩大1000倍又强制转换为整型数vbuf,以后一系列对vbuf的运算后没下文了,而发送到缓冲区的却是一个没有赋值的字符型数组元素( buf[i]) !这和你的A/D采样值没有任何关系啊。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
直接发送采样数据,让上位机去处理好了
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
那我应该怎么来改啊,能帮我改改吗?在下先谢啦!
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
对,直接将16进制数据发送出去,让PC来发挥他的优势
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

9
 
问题就是只能发整数部分的,小数部分不知道怎么发呀。比如发1.32这个数,1是能发的,但.32就发不过去啦。那位仁兄能帮帮我呀,
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用:

问题就是只能发整数部分的,小数部分不知道怎么发呀。比如发1.32这个数,1是能发的,但.32就发不过去啦。那位仁兄能帮帮我呀,
A/D转换出来的数据(两字节)不应该是有小数的,将此数据发送到上位机去处理不就行了吗?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

11
 
A/D转换出来的数据没有进行处理前怎么来的小数
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用:

问题就是只能发整数部分的,小数部分不知道怎么发呀。比如发1.32这个数,1是能发的,但.32就发不过去啦。那位仁兄能帮帮我呀,
1能发,3、2就不能发吗?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(中级)

13
 

如果嫌复杂了,就直接把数据扩大(x1000),或者更大。。。。

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

14
 
你不会1.32搞成132. 0.98搞成198发送吗?
比如你1.32V直接发1320.
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表