DS18B20数字温度传感器

介绍:一种常见的数字温度传感器,控制信号和数据以数字信号的方式输入输出。(内置温度报警功能)

测温范围:-55℃  ~  +125℃

通讯接口:单总线(1-Wire)

一、温度/数字关系:

                                                                     小数表示

 二、存贮器:由一个高速暂存(便笺式)RAM和一个非易失性、带电可擦除的E2RAM组成,后者存储高温度和低温度报警器TH和TL。

三、ROM指令和DS18B20功能指令

                                                             ROM指令

                                                             DS18B02指令

 四、操作流程:

五、温度变换 / 温度读取数据帧

 代码:

                                                                    温度变换

#define DS18B20_SKIP_ROM 0xCC
#define DS18B20_CONVERT_T 0x44
#define DS18B20_READ_SCRATCHPAD  0xBE




/**
   *   @brief   温度变换
   *   @param     无
   *   @retval     无
**/

void DS18B20_ConvertT()
{
	OneWire_Init();      //单总线初始化
	OneWire_SenByte(DS18B20_SKIP_ROM);     //跳过ROM   
	OneWire_SenByte(DS18B20_CONVERT_T);    //开始温度变换
} 

                                                              温度读取

#define DS18B20_SKIP_ROM 0xCC
#define DS18B20_CONVERT_T 0x44
#define DS18B20_READ_SCRATCHPAD  0xBE



/**  
   *   @brief       温度读取
   *   @param         无
   *   @retval       float  
**/


float DS18B20_RendT()
{
	unsigned char TLSB,TMSB;
	int Temp;
	float T;
	OneWire_Init();                   //单总线初始化
	OneWire_SenByte(DS18B20_SKIP_ROM);     //跳过ROM
	OneWire_SenByte(DS18B20_READ_SCRATCHPAD);  //开始温度变换
	TLSB=OneWire_ReceiveByte();              //读取数字温度(8位、高位先读)(二进制读取)
	TMSB=OneWire_ReceiveByte();              //读取数字温度(8位、地位后读)(二进制读取)
	Temp=(TMSB<<8)|TLSB;          //整合为一个16位的数字温度(二进制)
                                    此时温度比实际温度大16倍

    解释:为什么扩大16倍,(TMSB<<8)因为有小数表示,所以8位的最后一位不是2^0。

	T=(float)Temp/16.0f;          //还原
	return T;
}

             

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值