温度传感器DS18B20与MCS51单片机的接口.docx

上传人:b****5 文档编号:3120242 上传时间:2022-11-17 格式:DOCX 页数:19 大小:84.21KB
下载 相关 举报
温度传感器DS18B20与MCS51单片机的接口.docx_第1页
第1页 / 共19页
温度传感器DS18B20与MCS51单片机的接口.docx_第2页
第2页 / 共19页
温度传感器DS18B20与MCS51单片机的接口.docx_第3页
第3页 / 共19页
温度传感器DS18B20与MCS51单片机的接口.docx_第4页
第4页 / 共19页
温度传感器DS18B20与MCS51单片机的接口.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

温度传感器DS18B20与MCS51单片机的接口.docx

《温度传感器DS18B20与MCS51单片机的接口.docx》由会员分享,可在线阅读,更多相关《温度传感器DS18B20与MCS51单片机的接口.docx(19页珍藏版)》请在冰豆网上搜索。

温度传感器DS18B20与MCS51单片机的接口.docx

温度传感器DS18B20与MCS51单片机的接口

1.1温度传感器DS18B20与MCS-51单片机的接口

数字温度传感器问世于20世纪90年代中期。

它是微电子技术、计算机技术和自动测试技术的结晶。

数字温度传感器具有价格低、精度高、封装小、温度围宽、使用方便等优点,被广泛应用于工业控制、电子测温计、医疗仪器等各种温度控制系统中。

数字温度传感器一般部包含温度传感器、A/D转换器、信号处理器、存储器和相应的接口电路,有的还带多路选择器、中央控制器(CPU)、随机存储器(RAM)和只读存储器(ROM)。

数字温度传感器的种类繁多,一般按总线形式可分为单总线(1-wire)接口、双总线(I2C)接口和三总线(SPI)接口。

下面主要以单总线接口数字温度传感器芯片DS18B20为例来介绍数字温度传感器的使用。

1.1.1DS18B20简介

DS18B20是DALLAS公司生产的单总线数字温度传感器芯片,具有3引脚TO-92小体积封装形式;温度测量围为-55℃~+125℃;可编程为9~12位A/D转换精度;用户可自设定非易失性的报警上下限值;被测温度用16位补码方式串行输出;测温分辨率可达0.0625℃;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或两根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少。

可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。

1.1.2DS18B20的外部结构

DS18B20可采用3脚TO-92小体积封装和8脚SOIC封装。

其外形和引脚图如图7.17所示。

图1.1DS18B20的外形及引脚图

图中引脚定义如下。

(1)DQ:

数字信号输入/输出端。

(2)GND:

电源地。

(3)VDD:

外接供电电源输入端(在寄生电源接线方式时接地)。

1.1.3DS18B20的部结构

DS18B20部主要由4部分组成:

64位光刻ROM、温度传感器、非易失性温度报警触发器TH和TL、配置寄存器等。

其部结构图如图7.18所示。

DS18B20的存储部件有以下几种。

1.光刻ROM存储器

光刻ROM中存放的是64位序列号,出厂前已被光刻好,它可以看作是该DS18B20的地址序列号。

不同的器件地址序列号不同。

64位序列号的排列是:

开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码。

光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

图7.18DS18B20的部结构图

2.高速暂存存储器

高速暂存存储器由9个字节组成,其分配如表7.6所示。

第0和第1个字节存放转换所得的温度值;第2和第3个字节分别为高温度触发器TH和低温度触发器TL;第4个字节为配置寄存器;第5、6、7个字节保留;第8个字节为CRC校验寄存器。

表7.6DS18B20高速暂存存储器的分布

字节序号

功能

0

温度转换后的低字节

1

温度转换后的高字节

2

高温度触发器TH

3

低温度触发器TL

4

配置寄存器

5

保留

6

保留

7

保留

8

CRC校验寄存器

DS18B20中的温度传感器可完成对温度的测量,当温度转换命令发布后,转换后的温度以补码形式存放在高速暂存存储器的第0和第1个字节中。

以12位转化为例:

用16位符号扩展的二进制补码数形式提供,以0.0625℃/LSB形式表示,其中S为符号位。

表7.7是12位转化后得到的12位数据,高字节的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘以0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘以0.0625即可得到实际温度。

表7.7DS18B20温度值格式表

D7

D6

D5

D4

D3

D2

D1

D0

LSByte

23

22

21

20

2-1

2-2

2-3

2-4

D7

D6

D5

D4

D3

D2

D1

D0

MSByte

S

S

S

S

S

26

25

24

例如,+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。

表7.8列出了DS18B20部分温度值与采样数据的对应关系。

表7.8DS18B20部分温度数据表

温度/℃

16位二进制编码

十六进制表示

+125

0000011111010000

07D0H

+85

0000010101010000

0550H

+25.0625

0000000110010001

0191H

+10.125

0000000010100010

00A2H

+0.5

0000000000001000

0008H

0

0000000000000000

0000H

-0.5

1111111111111000

FFF8H

-10.125

1111111101011110

FF5EH

-25.0625

1111111001101111

FE6FH

-55

1111110010010000

FC90H

高温度触发器和低温度触发器分别存放温度报警的上限值TH和下限值TL;DS18B20完成温度转换后,就把转换后的温度值T与温度报警的上限值TH和下限值TL作比较,若T>TH或T<TL,则把该器件的告警标志置位,并对主机发出的告警搜索命令作出响应。

配置寄存器用于确定温度值的数字转换分辨率,该字节各位的意义如下:

D7

D6

D5

D4

D3

D2

D1

D0

TM

R1

R0

1

1

1

1

1

其中:

低五位一直都是1,TM是测试模式位,用于设置DS18B20是在工作模式还是在测试模式。

在DS18B20出厂时该位被设置为0,用户不要去改动。

R1和R0用来设置分辨率,如表7.9所示(DS18B20出厂时被设置为12位)。

表7.9温度值分辨率设置表

R1

R0

分辨率/位

温度最大转换时间/ms

0

0

9

93.75

0

1

10

187.5

1

0

11

275.00

1

1

12

750.00

CRC校验寄存器存放的是前8个字节的CRC校验码。

1.1.4DS18B20的温度转换过程

根据DS18B20的通信协议,主机控制DS18B20完成温度转换必须经过三个步骤:

每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。

DS18B20的ROM指令和RAM指令如表7.10和表7.11所示。

表7.10ROM指令表

指令

约定代码

功能

读ROM

33H

读DS18B20温度传感器ROM中的编码(即64位地址)

匹配ROM

55H

发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20使之作出响应,为下一步对该DS18B20的读写作准备

搜索ROM

0F0H

用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址。

为操作各器件做好准备

跳过ROM

0CCH

忽略64位ROM地址,直接向DS1820发温度变换命令。

适用于单片工作

告警搜索命令

0ECH

执行后只有温度超过设定值上限或下限的片子才作出响应

表7.11RAM指令表

指令

约定代码

功能

温度变换

44H

启动DS18B20进行温度转换,12位转换时最长为750ms(9位为93.75ms)。

结果存入部9字节RAM中

读暂存器

0BEH

读部RAM中9字节的容

写暂存器

4EH

发出向部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据

复制暂存器

48H

将RAM中第3、4字节的容复制到EEPROM中

重调EEPROM

0B8H

将EEPROM中的容恢复到RAM中的第3、4字节

读供电方式

0B4H

读DS18B20的供电模式。

寄生供电时DS18B20发送“0”,外接电源供电时DS18B20发送“1”

每一步骤都有严格的时序要求,所有时序都是将主机作为主设备,单总线器件作为从设备。

而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。

数据和命令的传输都是低位在前。

时序可分为初始化时序、读时序和写时序。

复位时要求主CPU将数据线下拉500s,然后释放,DS18B20收到信号后等待15~60s左右,后发出60~240s的低电平,主CPU收到此信号则表示复位成功。

读时序分为读“0”时序和读“1”时序两个过程。

对于DS18B20的读时序是从主机把单总线拉低之后,在15s之就得释放单总线,以让DS18B20把数据传输到单总线上。

DS18B20完成一个读时序过程至少需要60s。

对于DS18B20的写时序仍然分为写“0”时序和写“1”时序两个过程。

DS18B20写“0”时序和写“1”时序的要求不同,当要写“0”时,单总线要被拉低至少60s,以保证DS18B20能够在15s到45s之间正确地采样I/O总线上的“0”电平;当要写“1”时,单总线被拉低之后,在15s之就得释放单总线。

1.1.5DS18B20与51单片机的接口

DS18B20与51单片机的连接非常简单,只须把DS18B20的数据线DQ与51单片机的一根并口线连接即可,51单片机通过这根并口就能实现对DS18B20的所有操作,这根并口线一般通过电阻接电源。

DS18B20的电源可采用外部电源供电,也可采用部寄生电源供电。

当外部电源供电时,VDD接外部电源,GND接地地。

当采用部寄生电源供电时,VDD与GND一起接地。

另外,也可用多片DS18B20连接组网形成多点测温系统,在多片连接时,DS18B20必须采用外部电源供电方式。

图7.19单片DS18B20与51单片机的一种连接图

图7.19是单片DS18B20与51单片机的连接电路,DS18B20的数据线DQ连接在51单片机的P1.0上,并通过上拉电阻接电源,采用外部电源供电方式。

为了便于显示温度结果,在图7.19中加一块LCD显示器用显示DS18B20测量的当前温度值。

由于DS18B20对时间非常敏感,如果延时时间不准确不能对DS18B20进行正确的操作。

因此不同的系统时钟,编制的程序会有所区别,在这里假定系统时钟频率为12MHZ,测量的温度围-55℃~+99℃,精度为小数点后一位,相应程序如下。

汇编语言程序:

;*********************************************************************

;程序适合单个DS18B20和MCS-51单片机的连接,晶振为12MHz

;测量的温度围-55℃~+99℃,温度精确到小数点后一位

;*********************************************************************

TEMPER_LEQU30H;存放从DS18B20中读出的高、低位温度值

TEMPER_HEQU31H

TEMPER_NUMEQU32H;存

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 判决书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1