打印

float类型 为什么输出会有字母呢?

[复制链接]
1380|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xielaibin|  楼主 | 2013-12-3 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
float类型 为什么输出会有字母呢?前辈们帮看一下。谢了。。。是关于18B20的程序。

float DS18B20_Get_Temp(void)
{
    u8 temp;
    u8 TL,TH;
short tem;
float temper;
    DS18B20_Start ();        // ds1820 start convert
    DS18B20_Rst();
    DS18B20_Check();  
    DS18B20_Write_Byte(0xcc);// skip rom
    DS18B20_Write_Byte(0xbe);// convert     
    TL=DS18B20_Read_Byte(); // LSB   
    TH=DS18B20_Read_Byte(); // MSB  
        
    if(TH>7)
    {
        TH=~TH;
        TL=~TL;
        temp=0;//温度为负  
    }else temp=1;//温度为正      
    tem=TH; //获得高八位
    tem<<=8;   
    tem+=TL;//获得底八位
    temper=(float)tem*0.625;//转换     
if(temp)return temper; //返回温度值
else return -temper;   
}  

后面的数据处理函数和串口输出是这样写的
void Pro_Data(void)
{
//处理温度数据
temp_float_shi=temperature/10;
temp_float_ge=temperature-temp_float_shi*10;
temp_float_fraction=temperature*10-temp_float_shi*100-temp_float_ge*10;
//temperature=Get_Temperature(void)
temp_char_shi=(unsigned char)(temp_float_shi+48);
temp_char_ge=(unsigned char)(temp_float_ge+48);
temp_char_dot=(unsigned char)(temp_dot);
temp_char_fraction=(unsigned char)(temp_float_fraction+48);
}
void Send_Data(void)
{
USART_SendData(USART1,temp_char_shi);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
USART_SendData(USART1,temp_char_ge);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
USART_SendData(USART1,temp_char_dot);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
USART_SendData(USART1,temp_char_fraction);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
但是输出会是D9.4之类的数,这是为什么呢?

相关帖子

沙发
黄小俊| | 2013-12-3 17:13 | 只看该作者
你错了吧,是乘以0.0625。

使用特权

评论回复
板凳
Schvian| | 2013-12-3 17:20 | 只看该作者
这跟float类型没关系,是你转化字符的代码有问题

使用特权

评论回复
地板
xielaibin|  楼主 | 2013-12-3 18:27 | 只看该作者
黄小俊 发表于 2013-12-3 17:13
你错了吧,是乘以0.0625。

哦 是的  谢谢了啊

使用特权

评论回复
5
xielaibin|  楼主 | 2013-12-3 18:28 | 只看该作者
Schvian 发表于 2013-12-3 17:20
这跟float类型没关系,是你转化字符的代码有问题

跟float确实没关系  是0.0625的问题  谢谢了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

111

帖子

3

粉丝