1、 目录摘要1基于单片机的温度计设计21 温度计的总体设计21.1 总体论述21.2 设计思路22 硬件说明32.1 测量输入模块32.1.1 传感器选择32.1.2 DS18B20的介绍32.2 键盘输入模块82.3 显示模块82.3.1 1602外观及尺寸82.3.2 管脚功能92.3.3 操作控制92.3.4 指令说明102.4 报警模块112.5 低功耗设计112.5.1 设计思路112.5.2 80C51的低功耗措施122.5.3 分块间断供电133 软件和功能说明143.1 人为读取143.2 自动读取153.3 DS18B20的软件设计16心得体会17参考文献18摘要现代测温应用中
2、,温度计向数字化方向发展。传统的机遇物理方法的温度计功能单一,而数字温度计以其便携,检测精度高,功能多等优点应用的越来越广泛。随着技术的发展,一些环境比较恶劣的场合中也能觅得数字温度计的踪迹。在本文中,主要从功能组合,硬件组合,软件算法和降低功耗等几个方面探讨温度计的设计。关键词:数字传感器,低功耗,单总线基于单片机的温度计设计1 温度计的总体设计1.1 总体论述此次所讨论的数字温度计,除了完成基本的温度测量外,还能够满足最高最低温度设置及报警,在不同的环境中,所要求的最高温度和最低温度是不同的,因此最高温度和最低温度应能够根据环境不同而设置成不同的数值。还有些场合要求每隔一定得时间段进行读取
3、一次数值,当相隔的时间比较长而所需要读取的数据又比较多时,认为的读取就比较麻烦,因此应具备自动读取和存储若干组温度值的功能。另外,在野外工作时能够选择其工作模式以降低功耗。1.2 设计思路由论述可知,所设计的这种温度计的功能是传统的物理温度计无法完成的。在分析之后决定采用以单片机AT89C51为核心的系统进行设计。主要有以下几个模块:测量输入模块,键盘设置模块,运算处理模块,显示模块和报警模块。有这几个模块组成的系统框图如图一所示:图一 温度计总体框图2 硬件说明2.1 测量输入模块2.1.1 传感器选择设计单片机数字温度计需要考虑以下3个方面温度传感器芯片的选择;单片机和温度传感器的接口电路
4、;控制温度传感器实现温度信息采集以及数据传输的软件。单片机的接口信号是数字信号。要想用单片机获取温度这类非电信号的信息,必须使用温度传感器,将温度信息转换为电流或电压输出。如果转换后的电流或电压输出是模拟信号,还必须进行A/D转换,以满足单片机接口的需要。传统的温度检测大多以热敏电阻作为温度传感器。但是,热敏电阻的可靠性较差、测量温度准确率低,而且还必须经专门的接口电路转换成数字信号后才能由单片机进行处理。20世纪90年代中期出现了智能温度传感器(亦称数字温度传感器)。智能温度传感器的内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路,其特点是能直接输出数字化的温度数
5、据及相关的温度控制量,适配各种微控制器(MCU)。其中DS18B20就是一种应用相当广泛的单总线数字温度传感器,它结构简单、不需外接元件,采用一根I/O数据线既可供电又可传输数据、并可设置温度报警界限等特点,广泛用于工业、民用等领域的温度测量中。 2.1.2 DS18B20的介绍1 DS18B20芯片简介DS18B20是美国DALLAS半导体器件公司推出的单总线数字化智能集成温度传感器。单总线(1-Wire)是DALLAS公司的一项专有技术,它采用单根信号线,既传输时钟又传输数据,而且数据传输是双向的,具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。与其它温度传感器相
6、比,DS18B20具有以下特性:独特的单线接口方式,在与微处理器连接时仅需要一条接口线即可实现微处理器与DS18B20的双向通信。DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的信号线上,实现多点测温。DS18B20在使用中不需要任何外围元件。测温范围-55+125,固有测温分辨率0625。测量结果以912位数字量方式串行传送。2 DS18B20内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。DS18B20的管脚排列如图2所
7、示。图2 DS18B20引脚分布图引脚功能如下:NC:空引脚,悬空不使用;VDD:可选电源脚,电源电压范围35.5V。工作于寄生电源时,此引脚应接地;DQ:数据输入/输出脚,漏极开路,常态下高电平。DSl8820的核心功能部件是它的数字温度传感器,其分辨率可配置为9、10、11和12位,出厂默认设置为12位分辨率,对应的温度值分辨率分别为0.5、0.25、0.125和0.0625。温度信息的低位、高位字节内容中,还包括了符号位S(是正温度还是负温度)和二进制小数部分,具体形式为:低位字节:MSB232221202-12-2LSB2-32-4高位字节:MSBSSSSS26LSB2524这是12位
8、分辨率的情况,如果配置为低的分辨率,则其中无意义位为0。实测温度和数字输出的对应关系如表1所示。表1实测温度和数字输出的对应关系温度/数字输出(二进制)数字输出(十六进制)+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 111
9、1 0101 1110FF5EH-25.06251111 1110 0110 1111FF6FH-551111 1100 1001 0000FC90H在DSl8B20完成温度变换之后,温度值与储存在TH和TL内的告警触发值进行比较。由于是8位寄存器,所以912位在比较时忽略。TH或TL的最高位直接对应于16位温度寄存器的符号位。如果温度测量的结果高于TH或低于TL,那么器件内告警标志将置位,每次温度测量都会更新此标志。只要告警标志置位,DSl8B20就将响应告警搜索命令,这也就允许单线上多个DSl8B20同时进行温度测量,即使某处温度越限,也可以识别出正在告警的器件。3 DS18B20控制方法
10、 DS18B20有六条控制命令,如表所示: 指 令 约定代码 操 作 说 明 温度转换 44H 启动DS18B20进行温度转换 读暂存器 BEH 读暂存器9个字节内容 写暂存器 4EH 将数据写入暂存器的TH、TL字节 复制暂存器 48H 把暂存器的TH、TL字节写到E2RAM中 重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节 读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU 4 DS18B20的通信协议DS18B20器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲,应答脉冲时隙;写0,写1时隙;读0
11、,读1时隙。与DS18B20的通信,是通过操作时隙完成单总线上的数据传输。发送所有的命令和数据时,都是字节的低位在前,高位在后。复位和应答脉冲时隙每个通信周期起始于微控制器发出的复位脉冲,其后紧跟DS18B20发出的应答脉冲,在写时隙期间,主机向DS18B20器件写入数据,而在读时隙期间,主机读入来自DS18B20的数据。在每一个时隙,总线只能传输一位数据。时序图见图3。写时隙当主机将单总线DQ从逻辑高拉到逻辑低时,即启动一个写时隙,所有的写时隙必须在60120us完成,且在每个循环之间至少需要1us的恢复时间。写0和写1时隙如图所示。在写0时隙期间,微控制器在整个时隙中将总线拉低;而写1时隙
12、期间,微控制器将总线拉低,然后在时隙起始后15us之释放总线。时序图见图4。读时隙DS18B20器件仅在主机发出读时隙时,才向主机传输数据。所以在主机发出读数据命令后,必须马上产生读时隙,以便DS18B20能够传输数据。所有的读时隙至少需要60us,且在两次独立的读时隙之间,至少需要1us的恢复时间。每个读时隙都由主机发起,至少拉低总线1us。在主机发起读时隙之后,DS18B20器件才开始在总线上发送0或1,若DS18B20发送1,则保持总线为高电平。若发送为0,则拉低总线当发送0时,DS18B20在该时隙结束后,释放总线,由上拉电阻将总线拉回至高电平状态。DS18B20发出的数据,在起始时隙
13、之后保持有效时间为15us。因而主机在读时隙期间,必须释放总线。并且在时隙起始后的15us之内采样总线的状态。时序图见图4。图3 复位和应答脉冲时隙图4 读写时序2.2 键盘输入模块键盘模块使用的是四个键,分别命名为enter、done、+和-。enter为选择要调节的参数,done为确定并退出,+和-为参数菜单的选择。在开机时按enter键进入一级菜单,然后按+和-进行选择要调节的参数,按enter键锁定该参数进行调节,在这段过程的任一时间按done键确定并退出。菜单如表2所示:表2 相关参数菜单一级菜单二级菜单三级菜单工作模式正常模式(默认)低功耗模式温度极限最大值(按+和-调整)最小值(
14、按+和-调整)读取方式人为读取自动读取间隔时间(按+和-调整)读取组数(按+和-调整)数据查看读取(按+和-翻看)删除(删除已存数据)2.3 显示模块显示部分采用液晶显示器1602,能够同时显示16x02即32个字符。(16列2行)其相关介绍见下文。2.3.1 1602外观及尺寸1602液晶显示器的外观如图5所示:图5 液晶显示器1602外观1602的外形尺寸如图6所示:图6 1602的外形尺寸2.3.2 管脚功能1602采用标准的16脚接口,其中:第1脚:VSS为电源地第2脚:VDD接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会
15、产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极2.3.3 操作控制操作控制表如表3所示:表3 1602操作控制表操作控制表操作读状态写指令读数据写数据输入RS=0RW=1E=1RS=0RW=0D07=指令码,E=H脉冲RS=1RW=1E=1RS=1RW=0D07=数据,E=H脉冲2.
16、3.4 指令说明(1) 初始化设置显示模式设置指令码功能00111000设置16*2显示,5*7点阵,8位数据接口显示开/关及光标设置指令码功能00001DCBD=1开显示; D=0关显示C=1显示光标;C=0不显示光标B=1光标闪烁;B=0光标不闪烁000001NSN=1当读或写一个字符后地址指针加一,且光标加一N=0当读或写一个字符后地址指减一,且光标减一S=1当写一个字符,整屏显示左移(N=1)(2)初始化过程(复位过程)延时12ms写指令38H(不检测忙信号)延时5ms写指令38H(不检测忙信号)延时5ms写指令38H(不检测忙信号)(以后每次写指令、读/写数据操作之前均需检测忙信号)
17、写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置2.4 报警模块报警模块采用的是声光报警电路,当检测温度超过设定的上下限值时,单片机就会发出报警脉冲,使得报警电路工作,产生报警信号,如图7所示。单片机光报警分频电路声报警图7 报警模块框图2.5 低功耗设计2.5.1 设计思路系统设计的总体思路是围绕如何实现低功耗开展。控制功耗,必须从内部着手。对于数字化的测量系统,通过适当地选择采样周期,在一个采样周期内,迅速地测量温度,然后进入电流消耗较低的“休息”状态,就可以大幅度地减小整个系统的电流的消耗。假设采样可以在T
18、s=10 ms之内完成,采样时消耗的电流为Is=1mA,采样周期为TA=1 s,非测量状态的电流消耗为Ib=0.04 mA,整个系统的平均电流消耗为:I平均= (TsIs+(TA-Ts)Ib) /TA=Ib+Ts/TA(Is-Ib) =0.0496 mA从公式中得出,在Ts/TA采样时消耗的电流对整个系统的平均电流影响并不很大,只要恰当地选择Ib, Is,Ts,TA就可以达到降低功耗的目的。可以从以下几个方面入手:(1)减小Ib,减小休息时的电流消耗,方法一是尽量减少在“休息”状态下还要工作的模块数量,二是选用低功耗元器件。(2)减小Is,采样时,工作的元件要尽量降低功耗,选择电流消耗较小的型
19、号。(3)减小Ts,减小工作时间,完成采样后尽快结束工作。(4)增大TA,加大采样周期,尽量多“休息”,使系统的响应变慢。2.5.2 80C51的低功耗措施80C51是采用CMOS工艺的低功耗8位单片机芯片,在工作电压为5V时,8051工作电流为150mA,而80C51为2.4mA一24mA。8OC51具有正常、空闲、掉电三种工作状态。它的时钟频率范围为1.2MHz一12MHz,在工作电压5V的正常状态下运行,工作电流为24mA;在空闲方式下运行时,工作电流为3mA,在掉电方式下,工作电流为50uA。空闲和掉电方式都可以用软件选择运行,如果单片机处在空闲方式或掉电方式下,需要时才进人正常运行状
20、态,就可以大大减少单片机的功耗。空闲方式时,CPU停止工作,而RAM、串行口、计数器/定时器和中断系统仍在工作,CPU内部的状态(程序计数器、堆栈指针、程序状态字、累加器、片内RAM的状态)完整地保留下来。使用中断或复位可以把CPU从空闲状态唤醒进人正常状态。掉电方式时,片内振荡器停止工作,所有的运行状态都停止了,只加电维持片内RAM内容不被破坏。解除掉电工作方式,只能用硬件复位的方法,复位时不改变片内RAM的内容。80C51的功耗随主振频率的提高而增加,频率越高,CMOS管处于放大区的时间越长,功耗就越大。通常在速度要求不高的测控系统中选择6MHz晶振频率。这不但降低了功耗,还增强了系统的稳
21、定性。2.5.3 分块间断供电在一个系统中,并非电路的各部分都同时有效地工作,而给不工作的电路加上电压,就是无谓地消耗功率,为此我们可以用局部供电,分块供电,间断供电的方法来控制某些电路的供电,在需要其工作时再给它加电,不需要时就不给它供电,即只要保证供电的电路能按预定的进程使系统正常工作,并且把供电电压“传递”给另一部分电路就可,那么这个系统的功耗就会大大降低。实践证明,分块间断供电是极为有效的一种降低功耗的措施。电路分块时,一般是按电路的功能来划分的。完成相同功能的电路划分在一起,如果有两部分电路的功耗都比较大,最好能将它们分开,给它们间断供电降低功耗。另外,采用尽量缩短功耗大的电路的工作
22、时间办法,也可以降低系统勘功耗。3 软件和功能说明开机时对温度计的工作模式可进行选取,主要有两种数据读取方式:人为读取和自动读取。3.1 人为读取在该读取方式下的工作模式是需要人参与读取的,其大致程序流程如图8所示:开始键盘扫描键盘扫描相关参数设置温度检测是超过极限值?否报警温度显示延时结束程序并显示此刻温度图8 人为读取程序流程图3.2 自动读取在一些工作场合要求测得一段时间内的若干组温度,此时若是人为地进行数据读取,显然效率不高。所以在这次设计的温度计的功能中包含了自动读取这一功能。当参数设置为自动读取的时候,系统会将显示模块关闭,并在RAM中开辟一个缓冲区用以存放要读的数据。当此时数据读
23、完后系统将会进入待机状态。激活后通过键盘进入数据查看栏目可进行数据查看和删除,见表2。其程序流程图如图9所示:开始键盘扫描否自动读取?是执行其他方式相关参数设置关显示温度检测是超过限定值?否报警存入缓冲区结束程序延时图9 自动读取方式流程图3.3 DS18B20的软件设计单片机实现温度转换读取温度数值程序的流程如图10所示:开始初始化DS18B20否应答脉冲发起skip rom的命令发起Convert T的命令延时1s等待温度转换完成初始化DS18B20否应答脉冲是发起read scratchpad命令读取第一二字节即为温度数据是图10 单片机实现温度转换读取温度数值程序流程心得体会温度计的整
24、体设计大致如上文所述,经过分析可知该温度计的思路是可行的。由上述可知该温度计能够适应多种场合的需要同时其工作效率较高,而且低功耗模式的功能由让其具有较低的经济投资。随着电子技术的不断发展,按着此思路设计的温度计的性能也一定会越来越好。经过此次设计,我了解了一些传感器的知识,对智能仪器的设计有了一个整体的认识,这有利于我以后深入学习或参加工作。参考文献1 沙占友.智能温度传感器的发展趋势J.电子技术应用,2002(5):6-7.2 王经卓.单总线温度监测网络的设计与实现J.微计算机信息,2006(7):21-23.3 于永学,葛建. 1-Wire总线数字温度传感器DS18B20及应用J.电子产品
25、世界,2003(24):80-82.4 张萍.基于数字温度计DS18B20的温度测量仪的开发J.自动化仪表, 2007,28(6):64-66.5 胡学海.单片机原理及应用系统设计M.北京:电子工业出版社,2004.2李广第,朱月秀,王秀山.单片机基础M.北京:北京航空航天大学出版社,2003.6 夏晓玲.基于AT89C2051的数字温度计的设计J.鄂州大学学报,2005,12(3):38-40.7 朱升每.在线多组分分析仪器智能监控平台的研究D.南京:南京工业大学,2004.8 徐爱卿.Intel 16位单片机M.修订版.北京:北京航空航天大学出版社,2002.9 David Karlins,Build Your Own Web Site M,McGraw-Hill Osborne Media,2003.110 Dan Suciu, Gottfried Vosen,The World Wide Web and databases,Springer ,2001.1 .18