51单片机数据处理问题。串口接收到浮点数(如6.228)存在数组hs[5]中 100
存在数组中的格式应该是ACSII码格式吧?我现在要将这个浮点数乘以1000然后除以200000,得到的浮点数在1602上显示,我该怎么办啊?谢谢各位大神了这里的浮点数是个...
存在数组中的格式应该是ACSII码格式吧?我现在要将这个浮点数乘以1000然后除以200000,得到的浮点数在1602上显示,我该怎么办啊?谢谢各位大神了
这里的浮点数是个随时可能变的数,串口接收的,0.500——200.0的一个数 展开
这里的浮点数是个随时可能变的数,串口接收的,0.500——200.0的一个数 展开
2个回答
展开全部
存在数组中的格式是否是ACSII码格式取决于发送端的格式,要统一。如果发送端发送的是ASCII码,你就可以这样存,但计算时还得进行转换。如果发送端发送的就是浮点数,你接受也可存放数组,使用时按浮点数规定格式使用就是了。
将这个浮点数乘以1000然后除以200000,直接除以200就完了。
将这个浮点数乘以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。
展开全部
您好,您用一个数组变量(也就是开辟一个接收缓冲区)就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);
}
#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);
}
追问
我已经接收了。是对接收来的数据以后进行的处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询