ds18b20详解及程序.docx
- 文档编号:293714
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:33
- 大小:366.50KB
ds18b20详解及程序.docx
《ds18b20详解及程序.docx》由会员分享,可在线阅读,更多相关《ds18b20详解及程序.docx(33页珍藏版)》请在冰豆网上搜索。
ds18b20详解及程序
最近都在学习和写单片机的程序,今天有空又模仿DS18B20温度测量显示实验写了一个与DS18B20基于单总线通信的程序.
DS18B20数字温度传感器(参考:
智能温度传感器DS18B20的原理与应用)是DALLAS
公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计。
DS18B20产
品的特点:
(1)、只要求一个I/O口即可实现通信。
(2)、在DS18B20中的每个器件上都有独一无二的序列号。
(3)、实际应用中不需要外部任何元器件即可实现测温。
(4)、测量温度范围在—55到+125C之间;在-10~+85C范围内误差为±5C;
(5)、数字温度计的分辨率用户可以从9位到12位选择。
将12位的温度值转换为数字
量所需时间不超过750ms;
(6)、内部有温度上、下限告警设置。
DS18B20引脚分布图
NC
NC
□ND
DS18B20详细引脚功能描述:
1、GND地信号;
2、DQ数据输入出引脚。
开漏单总线接口引脚。
当被用在寄生电源下,此引脚可以向器件提供电源;漏极开路,常太下高电平•通常要求外接一个约5kQ的上拉电阻.
3、VDD可选择的VDD引脚。
电压范围:
3~5.5V;当工作于寄生电源时,此引脚必须接地。
DS18B20存储器结构图
中间蜡果和存RAM
龍世值岛世字节
thrfri:
r?
-疔i
TL/用户SfflTT门
伐常M节
暂存储器的头两个字节为测得温度信息的低位和高位字节
第3,4字节是TH和TL的易失性拷贝,在每次电复位时都会被刷新第5字节是配置寄存器的易失性拷贝,同样在电复位时被刷新;
第9字节是前面8个字节的CRC检验值.
配置寄存器的命令内容如下
0
R1
R0
1
1
1
1
1
MSBLSB
R0和R1是温度值分辨率位,按下表进行配置•默认出厂设置是R1R0=11,即12位.
温度值分辨率配置表
R1
R0
分辨率
最大转换时间(ms)
0
0
9bit
93.75(tconv/8)
0
1
10bit
183.50(tconv/4)
1
0
11bit
375(tconv/2)
1
1
12bit
750(tconv)
4种分辨率对应的温度分辨率为0.5C,0.25C,0.125C,0.0625C(即最低一位代表的
温度值)
12位分辨率时的两个温度字节的具体格式如下低字节:
2A3
2A2
2A1
2A0
2A-1
2A-2
2A-3
2A-4
高字节:
S
S
S
S
S
2A6
2A5
2A4
其中高字节前5位都是符号位S,若分辨率低于12位时,相应地使最低为0,如:
当分辨率为10位时,低字节为:
2A3
2A2
2A1
2A0
2A-1
2A-2
0
0
高字节不变
一些温度与转换后输出的数字参照如下
温度
数字输出
换成16进制
+125C
00000111
11010000
07D0H
+85C
00000101
01010000
0550H
+25.0625
C
00000001
10010001
0191H
+10.125
C
00000000
10100010
00A2H
+0.5C
00000000
00001000
0008H
0C
00000000
00000000
0000H
-0.5C
11111111
11111000
FFF8H
-10.125
C
11111111
01011110
FFE5H
-25.0625
C
11111110
01101111
FF6FH
-55C
11111100
10010000
FC90H
由上表可看出,当输出是负温度时,使用补码表示,方便计算机运算(若是用C语言,直接将结果赋值给一个int变量即可).
DS18B20的使用方法:
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对单片机来说,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20
芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:
初始化时序(dslnit()实现)、读时序(readByte())、写
时序(writeByte())。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是
从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动
读时序完成数据接收。
数据和命令的传输都是低位在先。
DS18B20与单片机连接电路图
Ilk
利用软件模拟DS18B20的单线协议和命令:
主机操作DS18B20必须遵循下面的顺序
1.初始化
单线总线上的所有操作都是从初始化开始的•过程如下:
1)请求:
主机通过拉低单线480us以上,产生复位脉冲,然后释放该线,进入Rx接收模式.主机释放总线时,会产生一个上升沿脉冲•
DQ:
1->0(480us+)->1
2)响应:
DS18B20检测到该上升沿后,延时15~60us,通过拉低总线60~240us来
产生应答脉冲•
DQ:
1(15~60us)->0(60~240us)
3)接收响应:
主机接收到从机的应答脉冲后,说明有单线器件在线•至此,初始化完成•
DQ:
0
2.ROM操作命令
当主机检测到应答脉冲,便可发起ROM操作命令.共有5类ROM操作命令,如下表
命令类型
命令
功能
字节
ReadRom读
ROM
33H
读取激光ROM中的64位,只能用于总线上单个DS18B20器件情况,多挂时会发生据冲突
MatchRom匹配ROM
55H
此命令后跟64位ROM序列号,寻址多挂总线上的对应DS18B20.只有序列号完全匹
的DS18B20才能响应后面的内存操作命令,其他不匹配的将等待复位脉冲.可用于单扌或多挂两种情况•
SkipRom跳
过ROM
CCH
可无须提供64位ROM序列号即可运行内存操作命令,只能用于单挂•
SearchRom搜索ROM
F0H
通过一个排除法过程,识别出总线上所有器件的ROM序列号
AlarmSearch
告警搜索
ECH
命令流程与SearchRom相冋,但DS18B20只有最近的一次温度测量时满足了告警
发条件的,才会响应此命令•
3.内存操作命令
在成功执行ROM操作命令后,才可使用内存操作命令.共有6种内存操作命令
命令类型
命令
字节
功能
Write
Scratchpad
写暂存器
4EH
写暂存器中地址2~地址4的3个字节(TH,TL和配置寄存器)在发起复位脉冲之前,3字节都必须要写•
Read
Scratchpad
读暂存器
BEH
读取暂存器内容,从字节0~—直到字节8,共9个字节,主机可随时发起复位脉冲,停此操作,通常我们只需读前5个字节•
Copy
Scratchpad复制暂存器
48H
将暂存器中的内容复制进EERAM,以便将温度告警触发字节存入非易失内存•如果此命令后主机产生读时隙,那么只要器件还在进行复制都会输出0,复制完成后输出1
ConvertT
温度转换
44H
开始温度转换操作•若在此命令后主机产生时隙,那么只要器件还在进行温度转换就
输出0,转换完成后输出1.
RecallE2
重调E2暂存器
B8H
将存储在EERAM中的温度告警触发值和配置寄存器值重新拷贝到暂存器中,此操作在
DS18B20加电时自动产生•
ReadPower
Supply
读供电方式
B4H
主机发起此命令后每个读数时隙内QS18B20会发信号通知它的供电方式:
0寄生电源
1外部供电•
4.数据处理
DS18B20要求有严格的时序来保证数据的完整性.在单线DQ上,有复位脉冲,应答脉冲,
写0,写1,读0,读1这6种信号类型.除了应答脉冲外,其它都由主机产生•数据位的
读和写是通过读、写时隙实现的
1)写时隙:
当主机将数据线从高电平拉至低电平时,产生写时隙•所有写时隙都必须在
60us以上,各写时隙间必须保证1us的恢复时间•
写"1":
主机将数据线DQ先拉低,然后释放15us后,将数据线DQ拉高;
写"0":
主机将DQ拉低并至少保持60us以上•
2)读时隙:
当主机将数据线DQ从高电平拉至低电平时,产生读时隙•所有读时隙最短必
须持续60us,各读时隙间必须保证1us的恢复时间•
读:
主机将DQ拉低至少1us,.此时主机马上将DQ拉高,然后就可以延时15us后,读取DQ即可•
源代码:
(测量范围:
0~99度)
DS18B20
#include
sbitdula=卩2人6;
测试当前环境温度,并通过数码管显示当前温度值
//数码管位选
//数码管段选
sbitds=P2A2;
〃0-F数码管的编码
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,
L0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
〃0-9数码管的编码(共阴极),带小数点
(共阴极)
10
unsignedcharcodetableWidthDot[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
L0x87,0xff,0xef};
11
12
13
14
15
16
17
//延时函数,例i=10,则大概延时10ms.
—voiddelay(unsignedchari)
□0{
unsignedcharj,k;
Ifor(j=i;j>0;j--)
18
19
20
21
22
23
//
24
//
初始化DS18B20
让
DS18B20一段相对长时间低电平,然后一段相对非常短时间高电平,即可启动
25
26
27
间间隔
=voidnFi{l//
dslnit()
定要使用unsignedint型,一个i++指令的时间,作为与DS18B20通信的小时
28
//
以下都是一样使用unsignedint型
unsignedinti;
ds=0;
i=103;
while(i>0)i--;
ds=1;
i=4;
while(i>0)i--;
—//向DS18B20写入一字节数据
voidwriteByte(unsignedchardat)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ds18b20 详解 程序