|
最近用到一款KELLER的压力温度传感器,它发回的数据是16进制的数,然后根据公式可以计算出温度或者压强,但是计算结果是浮点型数据,串口好像直接发送不了!
小弟刚入行,经验不足,试了很多方法都不行,后来想到转化成字符串发送,于是找到了sprintf函数,真是太好用了。相关代码如下:
//sum是浮点型数
sum=pow(-1,s)*(1+sum/8388608)*pow(2,m-127);//最终压力值,单位是bar
sprintf(a,"%10.8f",sum);
/******************************************************************
这一句至关重要,因为串口不能识别浮点型数据,所以用sprintf函数
将浮点型转换为一个字符串放到预设数组a[10]中,最后再将数组以ACII输出
*******************************************************************/
for(i=0;i<10;i++)
{
U1TXREG=a[i];//max485发送数据
while(U1STAbits.TRMT==0);//等待发送完毕,这一句不可少,若没有这一句
//则会出现数据丢失的现象,仅能发4位数据
}
我用到的是PIC30F4011单片机!有不妥的地方,还请大神指正! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|