文档介绍:基于DS18B20的水温控制系统设计
【任务目的】了解DS18B20智能温度传感器的基本工作原理,,熟悉PROTEUS仿真软件的使用。
【任务描述】用DS18B20智能传感器作为检测元件;用LED数码管显示温度;用PROTEUS实现电路设计和程序设计,并进行实时交互仿真。
1、功能要求与方案论证
:
测温范围:-50~+110度,。
:按照系统设计功能的要求,确定系统有三个模块组成;主控器,测温点路及显示电路。
数字温度计总体电路结构框图如图
图1 硬件总框图
2、硬件设计
:单片机AT89C2051具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要,很适合便携手持式产品的设计使用,系统可以用两节电池供电。
:显示电路采用4位共阳极LED数码管,从P1口输出段码,~,列驱动用PN4249三极管。
DS18B20工作原理
DALLAS半导体公司的数字化温度传感器是支持“一线总线”接口的温度传感器。一线总线独特且经济的特点,使用户可轻松的组建传感器网络,为测量温度范围为-55~+125度,在-10~+85度范围内,。
现场温度直接以“一线总线”的数字方式传输,明显提高了系统的抗干扰
性,适合于恶劣环境的现场温度测量,如环境控制等。
DS18B20的测温原理图如下:
DS18B20测温原理图
图中低温度系数晶振的振荡频率受到温度而影响很小,用于产生固定频率的脉冲信号送给减法计数器1:高温度系数晶振随温度变化其振荡频率明显变化,所产生的信号作为减法计数器2的脉冲输入。当计数门打开时,DS18B20就对低温系数晶振产生的脉冲信号进行计数,进而完成温度测量。计数门的开启,时间由高温度系数晶振来决定,每次测量前,首先将-55度所对应的一个基数分别置入减法计数器上,温度寄存器中。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置值将重新装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行减法计数,如此循环看,直到减法计数器2计数到0时,停止温度寄存器值得累加,此时温度寄存器中的数值就是所测温度值。
图中的斜率累加器用于补偿和修正测温过程中的非线形性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程。直到温度寄存器达到被测温度值。
另外,由于DS18B20单线通信功能是分时完成,她有严格的时隙概念,因此读写时序很重要,系统对于DS18B29的各种操作必按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
3、系统程序设计
系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序等。
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每1s进行一次。其程序流程图如图所示。
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图所示。
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率,时转换时间约为750ms。在本程序设计中采用1s显示程序延时法等待转换的完成。
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值的正负判定,其程序流程图如图。
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0,将符号显示移入下一位。程序流程图如下图所示。
TIMEL EQU 0E0H
TIMEH EQU 0B1H
TEMPHEAD EQU 36H
BITST DATA 20H
TIME1SOK BIT
TEMPONEOK BIT
TEMPL DATA 26H
TEMPH DATA 27H
TEMPHC DATA 28H
TEMPLC DATA 29H
TEMPDIN BIT
ORG 0000H
LJMP START
ORG 000BH
LJMP T0IT
ORG 100H
START:MOV SP,#60H
CLSMEM:MOV R0,#20H
MOV R1,#60H
CLSMEM1:MOV ***@R0,#00H
INC R0
DJ