找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2959|回复: 2
收起左侧

用stm32采集温度在tft屏幕上能打印温度小数点后一位,求解决

[复制链接]
ID:256568 发表于 2017-12-9 12:48 | 显示全部楼层 |阅读模式
在串口上能打印到小数点后一位,但是在tft屏幕上却只能输出整数,这是为什么
这是我的代码
ds18b20.c
float DS18B20_GetTemp_SkipRom ( void )
{
        uint8_t tpmsb, tplsb;
        short s_tem;
        float f_tem;
       
       
        DS18B20_SkipRom ();
        DS18B20_WriteByte(0X44);                                /* 开始转换 */
       
       
        DS18B20_SkipRom ();
  DS18B20_WriteByte(0XBE);                                /* 读取温度 */
       
        tplsb = DS18B20_ReadByte();                 
        tpmsb = DS18B20_ReadByte();
       
       
        s_tem = tpmsb<<8;
        s_tem = s_tem | tplsb;
       
        if( s_tem < 0 )                /* 负温度 */
                f_tem = (~s_tem+1) * 0.0625;       
        else
                f_tem = s_tem * 0.0625;
       
        return f_tem;                
       
}


main.c
                while( 1 )
        {
        while( DS18B20_Init() )       
       
        printf("\r\n no ds18b20 exit \r\n");
        printf("\r\n ds18b20 exit \r\n");

        DS18B20_ReadId ( ucDs18b20Id1  );           // 读取 DS18B20 序号
               
        printf ( "\r\传感器一的温度 %.1f\r\n", DS18B20_GetTemp_SkipRom ( ) );       
        Delay_ms(1000);       
LCD_ShowString(60,90,240,16,16,"DS18B20_1 OK");
        LCD_ShowString(60,170,200,16,16,"Temp0:    C");
         LCD_ShowNum(110,170,DS18B20_GetTemp_SkipRom (  ),2,16);
                Delay_ms(1000);       

回复

使用道具 举报

ID:259517 发表于 2017-12-9 18:41 | 显示全部楼层
先把温度值用sprintf函数进行转化
回复

使用道具 举报

ID:259517 发表于 2017-12-9 18:42 | 显示全部楼层
你看是不是因为后面的空间不够显示了,如果不是这个原因就是数据格式的问题,把显示的截图传上来
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表