DS18B20中文资料

上传人:共*** 文档编号:78423677 上传时间:2019-02-13 格式:PDF 页数:9 大小:148.83KB
返回 下载 相关 举报
DS18B20中文资料_第1页
第1页 / 共9页
DS18B20中文资料_第2页
第2页 / 共9页
DS18B20中文资料_第3页
第3页 / 共9页
DS18B20中文资料_第4页
第4页 / 共9页
DS18B20中文资料_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《DS18B20中文资料》由会员分享,可在线阅读,更多相关《DS18B20中文资料(9页珍藏版)》请在金锄头文库上搜索。

1、 Skyle 整理--有不对之处请来信指正 数字温度传感器数字温度传感器 DS1820(DS18B20)的应用的应用 一一 单线数字温度计 单线数字温度计 DSl820 介绍介绍 DSl820 数字温度计提供 9 位(二进制)温度读数 指示器件的温度 信息经过单线接口送 入 DSl820 或从 DSl820 送出因此从主机 CPU 到 DSl820 仅需一条线(和地线)DSl820 的 电源可以由数据线本身提供而不需要外部电源因为每一个 DSl820 在出厂时已经给定了唯 一的序号因此任意多个 DSl820 可以存放在同一条单线总线上这允许在许多不同的地方 放置温度敏感器件DSl820 的测量

2、范围从-55到+125增量值为 0.5可在 l s(典型值) 内把温度变换成数字 每一个 DSl820 包括一个唯一的 64 位长的序号 该 序号值存放在 DSl820 内部的 ROM(只读存贮器)中开始 8 位是产品类型编码(DSl820 编码均为 10H)接着的 48 位是每个器件唯一的序号最后 8 位是前面 56 位的 CRC(循环冗余校验)码DSl820 中还有用于贮 存测得的温度值的两个 8 位存贮器 RAM 编号为 0 号和 1 号1 号存贮器存放温度值的符号如果温度为负() 则 1 号存贮器 8 位全为 1 否则全为 0 0 号存贮器用于存 放温度值的补码LSB(最低位)的1表示

3、 0.5将存 贮器中的二进制数求补再转换成十进制数并除以 将存 贮器中的二进制数求补再转换成十进制数并除以 2 就得到 被测温度值 就得到 被测温度值(-550125)DSl820 的引脚如图 226 l 所示 每只 D51820 都可以设置成两种供电方式 即数据 总线供电方式和外部供电方式 采取数据总线供电方式可以节省一根导线 但完成温度测量 的时间较长采取外部供电方式则多用一根导线但测量速度较快 温度计算温度计算 1 Ds1820 用 9 位存贮温值度最高位为符号位下图为 18b20 的温度存储方式负温度 S=1正温度 S=0如 00AAH 为+85,0032H 为 25FF92H 为55

4、 2Ds18b20 用 12 位存贮温值度最高位为符号位下图为 18b20 的温度存储方式负温度 S=1正温度 S=0如 0550H 为+850191H 为25.0625,FC90H 为-55 二二DSl820 工作过程及时序工作过程及时序 DSl820 工作过程中的协议如下 初始化RoM 操作命令存储器操作命令处理数据 1初始化 单总线上的所有处理均从初始化开始 2ROM 操作品令 总线主机检测到 DSl820 的存在便可以发出 ROM 操作命令之一这些命令如 指令 代码 Read ROM(读 ROM) 33H Match ROM(匹配 ROM) 55H Skip ROM(跳过 ROM CC

5、H Search ROM(搜索 ROM) F0H Alarm search(告警搜索) ECH 3存储器操作命令 指令 代码 Write Scratchpad(写暂存存储器) 4EH Read Scratchpad(读暂存存储器) BEH Copy Scratchpad(复制暂存存储器) 48H Convert Temperature(温度变换) 44H Recall EPROM(重新调出) B8H Read Power supply(读电源) B4H 4时 序 主机使用时间隙(time slots)来读写 DSl820 的数据位和写命令字的位 (1)初始化 时序见图 2.25-2主机总线 t

6、o 时刻发送一复位脉冲(最短为 480us 的低电平信号)接着 在 tl 时刻释放总线并进入接收状态DSl820 在检测到总线的上升沿之后等待 15-60us接 着 DS1820 在 t2 时刻发出存在脉冲(低电平持续 60-240 us)如图中虚线所示 以下子程序在 MCS51 仿真机上通过其晶振为 12M.初始化子程序 RESET PUSH B ;保存 B 寄存器 PUSH A 保存 A 寄存器 MOV A,#4 ;设置循环次数 CLR P1.0 ;发出复位脉冲 MOV B,#250 ;计数 250 次 DJNZ B,$ ;保持低电平 500us SETB Pl.0 ;释放总线 MOV B

7、,#6 ;设置时间常数 CLR C ;清存在信号标志 WAITL: JB Pl.0,WH ;若总线释放跳出循环 DJNZ B,WAITL ;总线低等待 DJNZ ACC,WAITL;释放总线等待一段时间 SJMP SHORT WH: MOV B,#111 WH1: ORL C,P1.0 DJNZ B,WH1 ;存在时间等待 SHORT: POP A POP B RET (2)写时间隙 当主机总线 t o 时刻从高拉至低电平时就产生写时间隙见图 2253图 225 4从 to 时刻开始 15us 之内应将所需写的位送到总线上DSl820 在 t后 15-60us 间对总线 采样若低电平写入的位是

8、 0见图 2253若高电平写入的位是 1见图 2254 连续写 2 位间的间隙应大于 1us 写位子程序(待写位的内容在 C 中) WRBIT: PUSH B ;保存 B MOV B,#28 ;设置时间常数 CLR P1.0 ;写开始 NOP ;1us NOP ;1us NOP ;1us NOP ;1us N0P ;1us MOVPl.0,C ;C 内容到总线 WDLT: DJNZ B,WDLT;等待 56Us POP B SETB Pl.0 ;释放总线 RET ;返回 写字节子程序(待写内容在 A 中): WRBYTB: PUSH B :保存 B MOV B#8H ;设置写位个数 WLOP:

9、 RRC A ;把写的位放到 C ACALL WRBIT ;调写 1 位子程序 DJNZ BWLOP ;8 位全写完? POP B RET (3)读时间隙 见图 2255主机总线 to 时刻从高拉至低电平时总线只须保持低电平 l 7ts之后 在 t1 时刻将总线拉高产生读时间隙读时间隙在 t1 时刻后 t 2 时刻前有效t z 距 to 为 15 捍 s也就是说t z 时刻前主机必须完成读位并在 t o 后的 60 尸 s 一 120 fzs 内释放总线 读位子程序(读得的位到 C 中) RDBIT: PUSH B ;保存 B PUSH A ;保存 A MOV B,#23 ;设置时间常数 CL

10、R P1.0 ;读开始图 2255 的 t0 时刻 NOP ;1us NOP ;1us NOP ;1us NOP ;1us SETB Pl.0 ;释放总线 MOV A,P1 ;P1 口读到 A MOV C,EOH ;P1.0 内容 C NOP ;1us NOP ;1us NOP ;1us NOP ;1us RDDLT: DJNZ B,RDDLT ;等待 46us SETB P1.0 POP A POP B RET 读字节子程序(读到内容放到 A 中) RDBYTE: PUSH B ;保存 B RLOP MOV B,#8H ;设置读位数 ACALL RDBIT ;调读 1 位子程序 RRC A

11、;把读到位在 C 中并依次送给 A DJNZ B,RLOP ;8 位读完? POP B ;恢复 B RET 三三多路测量多路测量 每一片 DSl820 在其 ROM 中都存有其唯一的 48 位序列号在出厂前已写入片内 ROM 中 主机在进入操作程序前必须逐一接入 1820 用读 ROM(33H)命令将该 l 820 的序列号读出 并登录 当主机需要对众多在线 1820 的某一个进行操 作时首先要发出匹配 ROM 命令(55H)紧接着主 机提供 64 位序列(包括该 1820 的 48 位序列号)之 后的操作就是针对该 1820 的而所谓跳过 ROM 命 令即为之后的操作是对所有 1820 的框

12、图中先有 跳过 ROM即是启动所有 1820 进行温度变换之 后通过匹配 ROM再逐一地读回每个 1820 的温 度数据 在 1820 组成的测温系统中主机在发出跳过 ROM 命令之后再发出统一的温度转换启动码 44H就可以实现所有 1820 的统一转换再 经过 1s 后就可以用很少的时间去逐一读取这种方式使其 T 值往往小于传统方式由于 采取公用的放大电路和 AD 转换器只能逐一转换显然通道数越多这种省时效应就 越明显 四四实际应用实际应用 1ds1820 序列号获得 ;|-| ;| 读出 ds1820 序列号应用程序,P1.6 接 ds1820 | ;|-| ORG 0000H AJMP

13、MAIN ORG 0020H MAIN: MOV SP,#60H CLR EA ;使用 ds1820 一定要禁止任何中断产生 LCALL INT ;初始化 ds1820 MOV A,#33H LCALL WRITE ;送入读 ds1820 的 ROM 命令 LCALL READ ;开始读出当前 ds1820 序列号 MOV 40H,A LCALL READ MOV 41H,A LCALL READ MOV 42H,A LCALL READ MOV 43H,A LCALL READ MOV 44H,A LCALL READ MOV 45H,A LCALL READ MOV 46H,A LCALL

14、 READ MOV 47H,A SETB EA SJMP $ INT: ;初始化 ds1820 子程序 CLR EA L0:CLR P1.6 ;ds1820 总线为低复位电平 MOV R2,#200 L1:CLR P1.6 DJNZ R2,L1 ;总线复位电平保持 400us SETB P1.6 ;释放 ds1820 总线 MOV R2,#30 L4:DJNZ R2,L4 ;释放 ds1820 总线保持 60us CLR C ;清存在信号 ORL C,P1.6 JC L0 ;存在吗?不存在则重新来 MOV R6,#80 L5:ORL C,P1.6 JC L3 DJNZ R6,L5 SJMP L

15、0 L3:MOV R2,#240 L2:DJNZ R2,L2 RET WRITE: ;向 ds1820 写操作命令子程序 CLR EA MOV R3,#8 ;写入 ds1820 的 bit 数,一个字节 8 个 bit WR1:SETB P1.6 MOV R4,#8 RRC A ;把一个字节 data(A)分成 8 个 bit 环移给 C CLR P1.6 ;开始写入 ds1820 总线要处于复位(低)状态 WR2:DJNZ R4,WR2 ;ds1820 总线复位保持 16us MOV P1.6,C ;写入一个 bit MOV R4,#20 WR3:DJNZ R4,WR3 ;等待 40us DJNZ R3,WR1 ;写入下一个 bit SETB P1.6 ;重新释放 ds1820 总线 RET READ: CLR EA MOV R6,#8 ;连续读 8 个 bit RE1:CLR P1.6 ;读前总线保持为低 MOV R4,#4 NOP SETB P1.6 ;开始读总线释放 RE2:DJNZ R4,RE2 ;持续 8u

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号