JournalofGuizhouUniversity(NaturalSciences)Vol.23No.1
Feb.2006
文章编号 1000-5269(2006)01-0106-05
DS18B20在单片机温控系统中的应用
明德刚
(贵州大学职业技术学院电气工程系,贵州贵阳550004)
摘 要 DS18B20新型单总线数字温度传感器集温度测量和A/D转换于一体,直接输出数字量,与单片机接口电路简单。作者介绍了一种基于DS18B20和AT89C2051单片机的温度测量及控制系统的硬件结构及汇编程序设计。关键词 温度;测控系统
+
中图分类号 TP27315 文献标识码 A0 引言
温度是工业对象中主要的被控参数之一,目前,典型的温度测控系统是由模拟式温度传感器、A/D转换电路和单片机组成。自动化程度和可靠性较高,使用方便,得到了广泛应用。但是由于模拟式温度传感器输出为模拟信号,必须经过A/D转换环节获得数字信号后才能与单片机等微处理器接口,使得硬件电路结构复杂,成本较高。而以DS18B20为代表的新型单总线数字式温度传感器集温度测量和A/D转换于一体,直接输出数字量,与单片机接口几乎不需要外围元件,使得硬件电路结构简单,广泛使用于距离远,节点分布多的场合。具有较强的推广应用价值。
1 DS18B20简介
(1)单总线接口方式:DS18B20与微处理器(如单片机)连接时仅需要一条口线(加上地线)即可实现
双向通讯。
(2)使用中无需外部器件,以计数器原理工作,直接读出数字量,工作可靠,精度高,且通过编程可实现9~12位数字读出方式。
(3)供电方式可选:可由数据线供电,也可由外部电源供电,电压范围+3.0V~+5.5V(4)测量范围-55℃~+125℃,分辨率0.5℃
(5)可设定非易失的报警上下限阀值,一旦测量温度超过此设定值,即可给出一报警标志。(6)利用每片DS18B20上全球唯一的64bit编码,可轻松组建测量网络。(7)多种封装形式可选,根据实际需要组建测温系统。
2 系统组成
本系统以DS18B20作为温度传感器,ATMEL公司的简化型8051单片机AT89C2051作为处理器,配以温度显示、蜂鸣器和继电器作为温度控制输出单元。整个系统力求结构简单,功能完善。硬件电路如图1所示。系统工作原理如下:DS18B20进行现场温度测量,将测量数据送入AT89C2051P3.7口,经单片机处理后显示温度值,并与设定的报警温度上、下限值比较,若高于设定上限值或低于设定下限值则蜂鸣器发出报警,继电器动作控制加热元件调节温度。部分温度值及转换结果如表1所示。
3 软件实现
基于DS18B20的温度测控系统硬件电路简单,但是工作必须严格遵守单总线器件的工作时序。
3收稿日期:2005-12-29
作者简介:明德刚(1977-),男,助教,研究方向:自动控制。
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
第1期明德刚:DS18B20在单片机温控系统中的应用表1 部分温度值与DS18B20输出的数字量对照表
温度值/℃
+85℃
+25.625℃+10.125℃+0.5℃0℃-0.5℃-10.125℃-25.0625℃-55℃
・107・
数字输出(二进制)0000010101010000
00000001100100010000000010100010000000000000100000000000000000001111111111111000111111110101111011111111011011111111110010010000数字输出(十六进制)
0550H
0191H00A2H0008H0000HFFF8HFF5EHFF6FHFC90H图1 DS18B20温度计电路原理图
(1)AT89C2051首先发出一个复位脉冲,使DS18B20复位:先将数据线拉低并保持480~960us,再释放数据线,由上拉电阻拉高15~60us后由DS18B20发出60~240us的低电平作为应答信号。
(2)AT89C2051对DS18B20写数据:先将数据线拉低1us以上,再写入数据;待写入数据变化15~60us后,DS18B20对数据线采样。工作中要求主机写入数据到DS18B20的保持时间应为60~120us,2次写数据的操作时隙应大于1us。
(3)AT89C2051读DS18B20数据:AT89C2051先将数据线拉低再释放。DS18B20在数据线上从高电平跳低后15us内将数据送到数据线上,AT89C2051在15us后读取数据。
DS18B20功能命令如表2所示。
以下是本温度测控系统部分程序,包括DS18B20复位程序、写程序和读程序:ORG0000H
LOW_TEMPEREQU20H;20H保存温度低8位HIGH_TEMPEREQU21H;21H保存温度高8位
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
・108・贵州大学学报(自然科学版)表2 DS18B20功能命令表
命令CONVERT
功能描述开始温度转换
读取温度寄存器(共可读9个字节)
读DS18B20序列号将报警温度值写入暂存器第2、3字节
匹配ROM搜索ROM报警搜索
跳过读序列号的操作读电源供电方式:0为寄生电源,1为外电源命令代码44H
BEH33H4EH55HF0HECHCCHB4H
第23卷
READSCRATCHPAD
READROMWRITESCRATCHPAD
MATCHROMSEARCHROMALARMSEARCH
SKIPROMREADPOWERSUPPLY
FLAGBIT40H;DS18B20存在标志MAIN:LCALLRST_DS18B20;调用DS18B20复位子程序LCALLGET_TEMPER;调用DS18B20温度转换子程序
MOVA,20H;由于硬件电路使用两位LED数码管显示温度,显示范围00~99℃,而DS18B20MOVC,08H;12位转换精度为0.0625℃,因此不需要小数部分,具体方法是将转20H单RRCA;元的低4位丢弃,将21H单元的低4位移入20H单元从而获得测量温度的个位和十MOVC,09H;位存放于20H单元。RRCAMOVC,10HRRCAMOVC,11HRRCAMOV20H,A
LCALLDISPLAY;调用显示子程序AJMPMAIN
;DS18B20复位子程序RST_DS18B20:
SETBP3.7;置数据线为高电平NOP
CLRP3.7;拉低数据线
MOVR1,#3;AT89C2051发出660us的复位脉冲RST1:MOVR0,#110DJNZR0,$DJNZR1,RST1SETBP3.7;拉高数据线NOPNOPNOP
MOVR0,#25H
RST2:JNBP3.7,RST3;等待DS18B20发出响应脉冲DJNZR0,RST2LJMPRST4
RST3:SETBFLAG;DS18B20响应则置标志位,表示DS18B20存在LJMPRST5
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
第1期明德刚:DS18B20在单片机温控系统中的应用・109・
RST4:CLRFLAG;DS18B20未响应则清除标志位,表示DS18B20不存在LJMPRST7
RST5:MOVR0,#115;DS18B20响应脉冲延时RST6:DJNZR0,$
RST7:SETBP3.7;拉高数据线RET
;向DS18B20写数据子程序WR_DS18B20:
MOVR2,#8;采用循环移位的方式写数据到DS18B20,一共8位CLRC
WR1:CLRP3.7;写时序中要求先拉低数据线MOVR3,#6;13us延时DJNZR3,$RRCA;将须写入的数据最低位移入CYMOVP3.7,C;将低位数据写入DS18B20MOVR3,#25;按时序要求延时DJNZR3,$
SETBP3.7;1位数据的写操作完成,拉高数据线为下一次作准备NOP
DJNZR2,WR1;8位数据未写完则重复操作SETBP3.7RET
;读DS18B20输出数据子程序RD_DS18B20:
MOVR4,#2;读数据高8位和低8位的准备MOVR1,#20H;指定低8位存放地址READ1:MOVR2,#8;8位数据READ2:CLRCSETBP3.7;拉高数据线NOP
NOP;2us延时CLRP3.7;拉低数据线NOPNOPNOP
SETBP3.7;释放数据线MOVR3,#9
READ3:DJNZR3,READ3;按时序要求延时19usMOVC,P3.7;读数据到CYMOVR3,#23;按时序要求延时保持READ4:DJNZR3,READ4RRCA;将数据放入ACC
DJNZR2,READ2;8位数据未读完则返回继续MOV@R1,A;将完整的低8位数据存放到20H单元
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
・110・贵州大学学报(自然科学版)第23卷
INCR1;存放地址指向21H单元DJNZR4,READ1;读高8位数据RET
4 结束语
本系统充分利用了DS18B20和AT89C2051硬件结构的简洁性,使得成本得以降低,应用广泛。根据实际需要,还可以增加显示位数以保证测量精度或用LCD作为显示器件;也可以构成分布式温度测控系统。但是硬件电路的简洁是以牺牲软件为代价的,编程时应特别注意DS18B20工作时序的要求。
参考文
献[1]万光毅,严义.单片机实验与实践教程(一)[M].北京:北京航空航天大学出版社,2003.[2]沙占友.智能化集成温度传感器原理与应用[M].北京:机械工业出版社,2002[3]金伟正.单线数字温度传感器的原理与应用[J].电子技术应用,2000(6):66-68
TheApplicationofDS18B20attheMCUSystemofTemperature
MeasureandControl
MINGDegang
(DepartmentofElectricalEngineeringGuizhouUniversityPolytechnic,Guiyang550004)
Abstract Ds18b20isadigitaltemperaturesensorofsinglebus.ItassemblestemperaturemeasureandA/Dconverter.Itexportsdigtalsignaldirectlyandhasasimpleinterfacewithmcu.Thispaperpresentsthehardwareandthecompileprogramdesignoftemperaturemeasureandcontrolsystemwhichbasedonds18b20andat89c2051
Keywords DS18B20;AT89C2051;temperature;systemofmeasureandcontrol
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
因篇幅问题不能全部显示,请点此查看更多更全内容