当前位置:首页 > 单片机 > 单片机
[导读]任何一个DS18B20其内部64位ROM用于存储位移的芯片ID(这就为我们的多点采集提供了极大的方便),我使用3pin封装的芯片,值得注意的是:DS18B20使用一根数据线一根地线也能正常工作,也就是VCC并不是必须的,什么原因

任何一个DS18B20其内部64位ROM用于存储位移的芯片ID(这就为我们的多点采集提供了极大的方便),我使用3pin封装的芯片,值得注意的是:DS18B20使用一根数据线一根地线也能正常工作,也就是VCC并不是必须的,什么原因呢?因为DS18B20在内部有一个寄生电容,当我们的数据线的电压范围在3.3--5V之间的时候,他会转存为power,所以当我们外部断电之后,这个power就为IC提供了电源,这很好的起到了一个节能的作用。。

还有一些其他的特点总结如下:

--全数字温度转换及输出。
-- 先进的单总线数据通信。
--最高12位分辨率,精度可达土0.5摄氏度。
--12位分辨率时的最大工作周期为750毫秒。
--可选择寄生工作方式。
--检测温度范围为–55°C ~+125°C (–67°F ~+257°F)
--内置EEPROM,限温报警功能。
--64位光刻ROM,内置产品序列号,方便多机挂接。
--多样封装形式,适应不同硬件系统。

一、硬件介绍

1、首先看一看DS13B20的整体框图

总结一下我自己对这几个部分的理解:

1、电源检测用于检测是外部提供电源还是使用数据线转换的power

2、64为ROM用于读取芯片ID

3、温度灵敏元件用于DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位

4、接下来就是高低温触发器了,

5、还有配置寄存器,配置寄存器是配置不同的位数来确定温度和数字的转化。配置寄存器的结构格式如下

R1、R2与控制器分辨率关系如下:

测温操作 DS18B20的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编程的9,10,11或12位,分别以0.5℃,0.25℃,0.125℃和0.0625℃增量递增。在上电状态下默认的精度为12位。

所以能够很清楚的看到转换位数和转换时间之间的关系。

温度寄存器的格式如下:


二、接下来看看如何控制这个芯片

a、协议:

单总线串行通信协议,这个与普通的spi协议有一点点区别

b、操作流程:一下操作流程是我参照网上的,写的比较容易理解

1,复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。

2,存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。

3,控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。ROM指令在下文有详细的介绍。

4,控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。

5,执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循18B20的读写时序来操作。数据的读写方法将有下文有详细介绍。

若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复位、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。其它的操作流程也大同小异,在此不多介绍。

除此之外,还有一篇文章或许能够解决你的一些关于DS13b20的疑惑,这是我在百度空间转载过来的

http://blog.csdn.net/king_bingge/article/details/8808631好的,如果读完了这篇文章,那么下面对代码进行分析也不成问题了

三、代码分析

1、首先是一段获取温度的主代码


/**************************************************************************************

*名称:DS18B20_Get_Temp

*功能:从ds18b20得到温度值,精度:0.1C

*参数:无

*返回值:温度值(-550~1250)

**************************************************************************************/

shortDS18B20_Get_Temp(void)

{

u8temp;

u8TL,TH;

shorttem;//2bytes

DS18B20_Start();//ds1820startconvert

DS18b20_Reset();

DS18B20_Check();

DS18B20_Write_Byte(0xcc);//skiprom

DS18B20_Write_Byte(0xbe);//convert

TL=DS18B20_Read_Byte();//LSB

TH=DS18B20_Read_Byte();//MSB

if(TH>7)//判断正负

{

TH=~TH;

TL=~TL;

temp=0;//温度为负

}elsetemp=1;//温度为正

tem=TH;//获得高八位

tem<<=8;

tem+=TL;//获得低八位

tem=(float)tem*0.625;//转换

if(temp)returntem;//返回温度值

elsereturn-tem;

}

说道读取温度就得看看这个表了



下面的就是一个官方的示例表,说明了我们转换的时候要注意的地方


注意精度上电默认的12位的。那么如何确定精度的呢?我问了我一个学长,是这样解释的,小数部分是4位,那么最小分辨率就是2的4次方分之一

也就是1/16. = 0.0625

2、开始信号


/**************************************************************************************

*名称:DS18B20_Start

*功能:开始信号

*参数:无

*返回值:无

**************************************************************************************/

voidDS18B20_Start(void)//ds1820startconvert

{

DS18b20_Reset();

DS18B20_Check();

DS18B20_

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。

关键字: ds18b20 温度传感器 数字信号

#51单片机#DS18B20硬件原理以及通信的工作时序

关键字: ds18b20 通信

DS18B20型智能温度传感器的工作原理

关键字: ds18b20 原理

DS18B20是一款常用的高精度的单总线数字温度测量芯片。具有体积小,硬件开销低,抗干扰能力强,精度高的特点。

关键字: ds18b20 手册

DS18B20是一款常用的高精度的单总线数字温度测量芯片。具有体积小,硬件开销低,抗干扰能力强,精度高的特点。

关键字: ds18b20 引脚图

stm32f103zet6是一种嵌入式-微控制器的集成电路(IC),是由ST公司开发的STM32F1系列的其中一种,芯体尺寸是32位,速度是72MHz,程序存储器容量是256KB,程序存储器类型是FLASH,RAM容量是...

关键字: stm32f103zet6 datasheet 引脚图

  1 引言   自动调温光疗系统是一种医用理疗仪器,其原理是采用单片机对可控硅的控制来控制高压下的激光输出器进行理疗,在激光输出器工作的同时对其进行实时温度检测,利用检测到的温度状况决

关键字: ds18b20 moc3021 自动调温

温度是表征环境的一个重要的参数。在工程领域,尤其像工程热力学等,温度检测非常普遍,对温度精确测量以便实时控制也显得尤为重要。

关键字: ds18b20 传感器 数据采集 matlab编程

单片机除了可以测量电信号外,还可以用与温度、湿度等非电信号的测量,能独立工作的单片机温度检测、温度控制系统已经广泛的应用于很多领域。单片机的接口信号是数字信号,要想用单片机作区温度这类非电信号,就要使用温度传感器将温度信...

关键字: ds18b20 数字温度计

DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

关键字: ds18b20 数字温度计
关闭
关闭