930电子网

 找回密码
 立即注册
艾克姆科技推出最新产品STC32G12K128开发板
查看: 6530|回复: 0

DS18B20数字温度传感器介绍5---算法

[复制链接]

101

主题

332

帖子

7422

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7422
发表于 2019-6-3 09:05:07 | 显示全部楼层 |阅读模式
    1、MCU向DS18B20发送读取当前温度相关的ROM指令和RAM指令,可将DS18B20温度变换后的值存在暂存器中。
    1)读温度程序代码如下。
  • DS18B20_Rst();      
  • DS18B20_Presence();   
  • DS18B20_Write_Byte(0XCC);               //ROM指令: 跳过 ROM   
  • DS18B20_Write_Byte(0X44);               //RAM指令: 开始温度转换   
  •   
  • DS18B20_Rst();  
  • DS18B20_Presence();  
  • DS18B20_Write_Byte(0XCC);               //ROM指令: 跳过 ROM   
  • DS18B20_Write_Byte(0XBE);               //RAM指令: 读温度值

    2)暂存器中的9字节数据含义是。

    2、读暂存器温度原始数据处理代码如下。
  • uint8_t tpmsb, tplsb;  
  • short s_tem;  
  •   
  • tplsb = DS18B20_Read_Byte();           //读温度值低8位   
  • tpmsb = DS18B20_Read_Byte();           //读温度值高8位   
  •   
  • s_tem = tpmsb<<8;  
  • s_tem = s_tem | tplsb;  

    3、正温时,DS18B20温度转换计算公式如下。

    4、负温时,DS18B20温度转换计算公式如下。

    5、将读取的温度原始值分正温和负温进行算法运算得出实际温度值,代码如下。
  • float f_tem;  
  •   
  • if( s_tem < 0 )     //读取的温度值是负值,代表温度是负温  
  • f_tem = (~s_tem+1) * 0.0625;      
  • else                //读取的温度值是正值,代表温度是正温  
  • f_tem = s_tem * 0.0625;  

  • return f_tem;  

    6、上述代码返回值f_tem就是实际采集的温度值。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

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

本版积分规则

QQ|手机版|官方淘宝店|930电子网 ( 皖ICP备16000695号-2 )

Copyright © 合肥艾克姆电子科技有限公司
快速回复 返回顶部 返回列表