51单片机数据处理问题。串口接收到浮点数(如6.228)存在数组hs[5]中 100

存在数组中的格式应该是ACSII码格式吧?我现在要将这个浮点数乘以1000然后除以200000,得到的浮点数在1602上显示,我该怎么办啊?谢谢各位大神了这里的浮点数是个... 存在数组中的格式应该是ACSII码格式吧?我现在要将这个浮点数乘以1000然后除以200000,得到的浮点数在1602上显示,我该怎么办啊?谢谢各位大神了
这里的浮点数是个随时可能变的数,串口接收的,0.500——200.0的一个数
展开
 我来答
NJGQZF
2015-04-02 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3165
采纳率:0%
帮助的人:1258万
展开全部
存在数组中的格式是否是ACSII码格式取决于发送端的格式,要统一。如果发送端发送的是ASCII码,你就可以这样存,但计算时还得进行转换。如果发送端发送的就是浮点数,你接受也可存放数组,使用时按浮点数规定格式使用就是了。

将这个浮点数乘以1000然后除以200000,直接除以200就完了。
更多追问追答
追问
我以文本形式通过串口助手发送给单片机的。应该是什么格式的呢?  2||*1||3022|0|3||mg/L|6.889|0.50^5.00|5.00^200.00|3.00^10.00|2|1|2015-03-20 15:40:14|||?      这是我的一串发送的数据,那个6.889是可能变化的,我已经把他给提取出来在数组hs[6]里了(hs[6]我是赋予的截至标志符号‘/0’),
追答
以文本的形式发送接收到的也是文本,6.889就是5个ASCII码,存到数组里是这样的数据:54,46,56,56,57。
山水阿锐
2015-04-02 · TA获得超过34.3万个赞
知道顶级答主
回答量:23.7万
采纳率:91%
帮助的人:3.3亿
展开全部
您好,您用一个数组变量(也就是开辟一个接收缓冲区)就OK了如:
#include<reg51.h>
#define uchar unsigned char
uchar buf[16],num;
void ser_isr() interrupt 4
{
if(RI)
{
RI=0;
buf[num]=SBUF;
num++;
num&=0x0f;
}
}
main()
{
TMOD=0x20;
SCON=0x50;
TH1=TL1=0xfd;
TR1=1;
ES=1;
EA=1;
while(1);
}
追问
我已经接收了。是对接收来的数据以后进行的处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式