温度传感器DS18B20与MCS51单片机的接口.docx
- 文档编号:2421887
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:20
- 大小:100.58KB
温度传感器DS18B20与MCS51单片机的接口.docx
《温度传感器DS18B20与MCS51单片机的接口.docx》由会员分享,可在线阅读,更多相关《温度传感器DS18B20与MCS51单片机的接口.docx(20页珍藏版)》请在冰豆网上搜索。
温度传感器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将数据线下拉500μs,然后释放,DS18B20收到信号后等待15~60μs左右,后发出60~240μs的低电平,主CPU收到此信号则表示复位成功。
读时序分为读“0”时序和读“1”时序两个过程。
对于DS18B20的读时序是从主机把单总线拉低之后,在15μs之内就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20完成一个读时序过程至少需要60μs。
对于DS18B20的写时序仍然分为写“0”时序和写“1”时序两个过程。
DS18B20写“0”时序和写“1”时序的要求不同,当要写“0”时,单总线要被拉低至少60μs,以保证DS18B20能够在15μs到45μs之间正确地采样I/O总线上的“0”电平;当要写“1”时,单总线被拉低之后,在15μs之内就得释放单总线。
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
TEM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度传感器 DS18B20 MCS51 单片机 接口