共工科技

float串口传输(串口数据发送函数)

本篇目录:

...解答?单片机msp430中怎么样用串口发送和接收float型数据?

把浮点数分解 比如 1345 分解成12 和0.345 1345/1= 12 1345%1=0.345 0.345*1000 变成整数。

float数一般是IEEE754格式,即计算机(包括单片机)处理时使用的格式,就是4字节的数据,比如-246的IEEE格式为0xC377999A,所以将其拆分为4个字节0xC3,0x77,0x99,0x9A,然后用串口按顺序出去就行了。

float串口传输(串口数据发送函数)-图1

串口通信是和什么通信呢 是和上位机通信吗 还是和其他单片机通信 如果和上位机PC通信 需要MAX232进行电平转换 MSP430单片机我没有用过 但是应该和51差不多吧 内部肯定有SFR 用以对串口通信进行配置 另外有专门的串口中断吧。

程序编写:430单片机的时钟配置,中断处理框架;串口处理子程序;键盘中断子程序;初学430单片机可能会接触MSP430F149单片机,具体的串口中断、IO口中断和时钟配置的代码例程在TI的官网上都可以找得到,你可以参考。

Dim sendSj(0) As Byte sendSj(0) = &H17 MSCommOutput = sendSj 以Byte数组发送就能达LZ目的。设置MSCommInputMode = comInputModeBinary,就能以2进制方式(LZ要的16进制)接收。

float串口传输(串口数据发送函数)-图2

如果用串口通讯,下位机是小数,也就是浮点型数据,传到上位机如何处理...

1、用联合体做;union fb { float temf;char s[4];}f1;给fs[0],fs[1],fs[2],fs[3]赋值,ftemf就是浮点数值。同样给ftemf赋值,数组中的值就是对应串口发送的值。

2、以上四种方法建议使用联合体和指针的方法,因为其他两种方法牵涉到浮点数小数点后保留几位小数的问题,这和放大倍数有关,数据接收方还需要进行数据重新组合和处理比较麻烦。

3、如果发送原始内存数据流, 可按下面发送,发送 float a = 23; double b=2;SendBytes( *(u8*)&a ,sizeof(a) );SendBytes( *(u8*)&b ,sizeof(b) );上位机接到的 十六进制码,再按同样格式转回来。

float串口传输(串口数据发送函数)-图3

4、不传小数直传整数,把小数放大100倍或1000倍或者你要求的精度。用ASCII码形式传输。

单片机中如何通过串口输出FOLAT

1、一般都是将浮点数扩大100倍或者更多,看你的精度,然后再一次发送出去。我们是这样处理的。

2、把浮点数分解 比如 1345 分解成12 和0.345 1345/1= 12 1345%1=0.345 0.345*1000 变成整数。

3、方法多的去了,把数字35转换为字符串“35”发送可以,用压缩BCD码0x30x05发送也可以,多得是。不一定一定要浮点处理。

到此,以上就是小编对于串口数据发送函数的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。

分享:
扫描分享到社交APP
上一篇
下一篇