毕业设计(论文)基于单片机的数字温度采集系统.doc
摘 要芯片虽小,五脏俱全,是单片机主要特点之一。其内部设有程序存储器、数据存储器、各种接口电路。而大型的处理器运算速度较高,运算器位数较多,处理能力较强,但需要在外部配置接口电路。单片机主频一般在100MHZ以下,适合用于独立工作的小型产品之中,引脚数量从几个到百余个。应用简单、灵活,可用汇编语言及C语言开发单片机产品。随着时代和社会的进步和发展,自上世纪九十年代出单片机技术得到快速发展,现在已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于STC89C52RC单片机控制的数字温度计,本温度计属于多功能温度计,可以设置摄氏度与华氏度的转换,DS18B20 数字温度传感器其温度显示范围设置在-20.050.0,精度误差小于0.5,用一个按键来切换摄氏度与华氏度的。 关键词:单片机,数字控制,温度计,温度传感器 ,DS18B20,STC89C52RC ABSTRACTChip are small, all-sided, is one of the main characteristics of MCU. Its with internal program memory, data storage, all kinds of interface circuit. But large processor speed is higher, unit digit stronger ability and more processing, but external configuration interface circuit in need. MCU in commonly under 100MHZ investigations, suitable for independent work among the small number of products, pins from several to hundreds. Application is simple and flexible and can use assembler language and C language development microcontroller products. Along with the age and social progress and development since the 1990s, a single chip microcomputer has got fast development now spread into every aspect of our life, including work, research, each domain, and became a more mature technology. This paper introduces a kind of controller based on STC89C52RC. This thermometer belonging to digital thermometer multi-function thermometer, can install degrees Celsius and Fahrenheit changeover, DS - 18B20 digital temperature sensor its temperature display range - median set on - 50.0 , less than 0.5 accuracy , with a button to change degrees Celsius and degrees Fahrenheit. Keywords: microcontroller, digital control, thermometers, temperature sensors, DS18B20,STC89C52RC single目 录第1章 引言51.1温度采集器的发展与应用51.2设计温度采集器的目的意义51.3温度采集器的功能实现要求6第2章温度采集器方案选择72.3 温度采集器的基本方案72.2 方案选择与论证72.2.1 方案一:基于热敏电阻的温度计设计72.2.2 方案二:基于SHT71的数字温度计设计72.3.1 方案三:基于DS18B20的数字温度计设计82.3 各模块简介92.3.1 主芯片简介92.3.2温度传感器简介122.3.3 LED数码管部分简介14第3章温度采集器的硬件设计163.1 电路设计163.2单片机最小系统173.3 显示电路183.4 数据采集芯片与电路193.4.1 DS18B20的接线说明193.4.2数据采集电路203.4.3 DS18B20重要的数据部件20第4章温度采集器的软件设计244.1DS18B20温度传感器的运行时序244.2程序流程图264.2.1 主程序264.2.2 读出温度子程序274.2.3 温度转换命令子程序284.2.4 计算温度子程序284.2.5 温度数据显示子程序284.2.6显示数据刷新子程序29第5章系统的仿真与软硬联调305.1 电路仿真图305.2 电路焊接过程325.3 调试过程32第六章 总结33参考文献34致 谢35附录36附录一: 元器件清单36附录二:实物图37附录三:程序38第1章 引言1.1 温度采集器的发展与应用 自动控制领域中,温度检测与控制占有很重要的地位。温度检测在工农业生产、科研和在人们的生活中得到广泛的运用。目前,温度传感器正从模拟式向数字集成式方向飞速发出,单片机也是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好更方便的设施就需要从单片机技术入手,一切向着数字化、智能化方向发展。本文就是基于此目的介绍基于单片机和数字温度传感器的温度计设计。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。设计中选用AT89C52型单片机作为主控制器件,采用DS18B20数字温度传感器作为测温元件,通过4位共阴极LED数码显示管并行传送数据,实现温度显示。本设计的内容主要分为三部分,一是系统硬件设计,包括温度采集电路和显示电路;二是对系统软件部分的设计,应用C语言实现温度的采集与显示。通过DS18B20直接读取被测温度值,送入单片机进行数据处理,之后进行输出显示,最终完成了数字温度计的总体设计。其系统构成简单,信号采集效果好,数据处理速度快,便于实际检测使用。1.2 设计温度采集器的目的意义温度控制系统广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等,常用的控制电路根据应用场合和所要求的性能指标有所不同,在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。传统的继电器调温电路简单实用,但由于继电器动作频繁,可能会因触点不良而影响正常工作。控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍是普遍的存在问题。 采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。更能串接多个数字温度传感器DS18B20进行范围的温度检测我们这次的课程设计是以单片机为基础,本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机STC89C52,测温传感器使用DS18B20,LED采用四位一体共阴的数码管。1.3 温度采集器的功能实现要求本设计采用STC89C52单片机为核心,结合DS18B20温度采集器,通过程序组成一个温度传感器。因为采用微型机进行温度检测、数字显示、信息存储及实时控制,对于提高生产效率和产品质量、节约能源等都有重要的作用,并且温度参数对工业生产的重要性,所以温度测量系统的精确度和智能化一直受到企业的重视。所以学习并研究温度测量及相关知识可做为一个较为实用的课题的方向,能获得较实用的知识和方法。因此温度测控技术是一个很实用、也很重要的技术,值得去研究掌握。它应用的领域也相当广泛,可以应用到消防电气的非破坏性温度检测,电力、电讯设备的过热故障预知检测,空调系统的温度检测,各类运输工具之组件的过热检测,保全与监视系统之应用,医疗与健诊的温度测试,化工、机械等设备温度过热检测。因此前景是相当的可观。使其具有如下功能。具体要求有:基本范围-50-110精度误差小于0.5摄氏度与华氏度的自由切换LED数码直读显示第2章 温度采集器方案选择2.3 温度采集器的基本方案温度采集器的基本方案如图2-1所示:基本方案如图2-1所示温度采集器电路设计总体方框图如图2-1所示,控制器采用单片机STC89C52RC,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。2.2 方案选择与论证2.2.1 方案一:基于热敏电阻的温度计设计采用数字逻辑电路。本系统有功能设置、数据装入、显示、声音提示多个功能模块。各个状态保持或转移的条件依赖于键盘控制信号。由于键盘控制信号繁多,系统的逻辑状态以及相互转移更是复杂,用纯粹的数字电路或小规模的可编程逻辑电路实现该系统有一定的困难,需要用中大规模的可编程逻辑电路。这样,系统复杂且难以实现。又因为本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。2.2.2 方案二:基于SHT71的数字温度计设计主要由数字温度传感器、单片机控制电路、数码显示电路组成。SHT71将温度传感器、信号放大调理、A/D转换、I2C总线接口全部集成于一个芯片上。SHT71测量过程包括4 个部分:启动传输、发送测量命令、等待测量完成和读取测量数据。在启动传输时序之后, 微控制器可以向SHT71 发送命令,SHT71则通过在数据传输的第8个SCK时钟周期下降沿之后,将DATA拉低来表示正确接收到命令,并第9个SCK时钟周期的下降沿之后释放DATA线(即恢复高电平),SHT71则通过拉低DATA表示测量结束,并且把测量结果存储在内部的存储器内,然后自动进入空闲状态,等微控制器执行完其他任务后再来读取。2字节的测量数据是从高字节的高位开始传送,并以CRC 校验字节的确认为表示通信结束。微控制器需要通过拉低DATA来确认接收的每个字节,若不使用CRC校验位则微控制器可以在接收完测量数据的最低位后保持DATA为高电平来终止通信。单片机只需将读取传输的数据通过驱动数码管显示即可2.3.1 方案三:基于DS18B20的数字温度计设计采用单片机作为整个控制系统的核心。鉴于市场上常见的51系列8位单片机的售价比较低廉,本设计采用了AT89C52单片机系统。进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。从以上三种方案,方案的选择即是传感器的选择。对比三种方案可以得知,方案一是采用模拟式温度传感器,方案二和方案三都采用数字式温度传感器。模拟式温度传感器输出的是随温度变化的模拟量信号。其特点是输出响应速度较快和MPU接口复杂。数字式温度传感器输出的是随温度变化的数字量,更直观,与模拟输出相比,它输出速度响应较慢,但容易与MPU接口。能输出温度数据及相关的温度控制量;能以最简方式构成高性价比。所以数字式温度传感器才是今后发展的方向。而SHT71与DS18B20相比,前者精度较高,转换速度较快,但性价比不高,单片价格在一百左右,DS18B20相对而言价格较低在十块左右。考虑到我们设计的目的和要求不是很精密严格。所以我们选择方案三以DS18B20数字温度传感器进行后续设计。很容易看出,采用方案三,电路比较简单,软件设计也比较简单,故采用了方案三。温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89C52RC,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。如图所示:SCT89C52LED显 示温 度 传 感 器单片机复位时钟振荡电源电路2.3 各模块简介2.3.1 主芯片简介(一)单片机简述单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到硅片上构成的一个小而完善的计算机系统。单片机又称“MCU”,其发展时间历程主要经历了以下几个个阶段:1971年intel公司研制出世界上第一个4位的微处理器;Intel公司的霍夫研制成功世界上第一块4位微处理器芯片Intel 4004,标志着第一代微处理器问世,微处理器和微机时代从此开始。因发明微处理器,霍夫被英国经济学家杂志列为“二战以来最有影响力的7位科学家”之一 。现行阶段,80C51 就变成有众多制造厂商支持的发展出上百种品种的大家族,现统称为8051系列,也有人简称为51 系列。虽然世界上的MCU 品种繁多,功能各异,开发装置也互不兼容,但是客观发展表明:80C51 系列单片机已成为单片机发展的主流。在单片机家族中,80C51 系列是其中的佼佼者,这使得在系统开发过程中修改程序十分容易,大大缩短了系统的开发周期。同时,在系统工作过程中,能有效地保存数据信息,即使断电也不会丢失信息。除此,AT系列单片机的引脚和80C51 是一样的,所以,当用89 系列单片机取代80C51 时可以直接进行代换.(二)STC89C52 的特点及工作原理单片机AT89C52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,适合便携手持式产品的设计使用。AT89C52单片机芯片具有以下特性:1)指令集合芯片引脚与Intel公司的8052兼容;2)4KB片内在系统可编程FLASH程序存储器;3)时钟频率为033MHZ;4)128字节片内随机读写存储器(RAM);5)6个中断源,2级优先级;6)2个16位定时/记数器;7)全双工串行通信接口;8)监视定时器;9)两个数据指针;STC89C52芯片STC89C52 引脚图STC89C52芯片 共40引脚:18脚: 通用I/O接口p1.0p1.79脚: rst复位键10 .11脚:RXD串口输入 TXD串口输出1219:I/O p3接口 (12,13脚 INT0中断0 INT1中断114,15 : 计数脉冲T0 T116,17: WR写控制 RD读控制输出端)18,19: 晶振谐振器 20: 地线 2128 p2: 接口 高8位地址总线29: psen 片外rom选通端单片机对片外rom操作时 29脚(psen)输出低电平30:ALE/PROG 地址锁存器31:EA rom取指令控制器 高电平片内取 低电平片外取3239:p0.7p0.0(此接口的顺序与其他I/O接口不同与引脚号的排列顺序相反)40:电源+5V2.3.2温度传感器简介测量温度的关键是温度传感器,温度传感器的发展主要大体经过了三个阶段:1 传统的分立式温度传感器(含敏感元件)2 模拟集成温度传感器控制器3智能温度传感器模拟集成传感器是采用硅半导体集成工艺而制成的,因此亦称硅传感器或单片集成温度传感器。目前在国内外应用最为普遍的一种集成传感器,典型产品有AD590、AD592、TMP17、LM135 等。模拟集成温度控制器主要包括温控开关和可编程温度控制器,典型产品有LM56、AD22105 和MAX6509。某些增强型集成温度控制器例如(TC652/653)中还包含了刀转换器以及固化好的程序,这与智能温度传感器有某些相似之处。但它自成系统,工作时并不受微处理器的控制,这是二者的主要区别。智能温度传感器(亦称数字温度传感器)是在20 世纪90 年代中期问世的。它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。目前,国际上已开发出多种智能温度传感器系列产品。智能温度传感器内部都包含温度传感器、A/D 转换器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。智能温度传感器的特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。目前,国际上新型温度传感器正从模拟式向数字式、从集成化向智能化和网络化的方向飞速发展。数字式温度传感器DS18B20 正是朝着高精度、多功能、总线标准化、高可性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。因此,智能温度传感器DS18B20 作为温度测量装置己广泛应用于人民的日常生活和工农业生产中(一)DS18B20 简介DALLAS最新单线数字温度传感器DS18B20简介新的"一线器件"体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 "一线总线"接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822 "一线总线"数字化温度传感器 同DS1820一样,DS18B20也 支持"一线总线"接口,测量温度范围为 -55°C+125°C,在-10+85°C范围内,精度为±0.5°C。DS1822的精度较差为± 2°C 。现场温度直接以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。与传统的热敏电阻相比,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12 位的数字值读数方式。可以分别在93.75ms和750ms 内完成9 位和12 位的数字量,并且从DS18B20 读出的信息或写入DS18B20 的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20 供电,而无需额外电源。因而使用DS18B20 可使系统结构更趋简单,可靠性更高。同时其“一线总线”独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入了全新的概念。现场温度直接以“一线总线”的数字方式传输,用符号扩展的16 位数字量方式串行输出,大大提高了系统的抗干扰性。因此,数字化单总线器件DS18B20 适合于恶劣环境的现场温度测量,如环境控制、设备或过程控制、测温类消费电子产品等。它在测温精度、转换时间、传输距离、分辨率等方面较都有了很大的改进,给用户带来了更方便和更令人满意的效果。可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。(二)DS18B20 的性能特点和管脚排列1.性能特点(1)采用独特的单线接口方式与微处理器连接时仅需要一条口线即可实现微处理器与的双向通讯。(2)在使用中不需要任何外围元件。(3)可用数据线供电,供电电压范围+3.0V5.5V。(4)测温范围55125。固有测温分辨率为±0.5。当在10 +85范围内,可确保测量误差不超过0.5,在55125范围内,测量误差也不超过2。(5)通过编程可实现912 位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。(7)支持多点组网功能,多个DS18B20 可以并联在唯一的三线上,实现多点测温。(8)负压特性,即具有电源反接保护电路。当电源电压的极性反接时,能保护DS18B2不会因发热而烧毁。但此时芯片无法正常工作。(9)DS18B20 的转换速率比较高,进行9 位的温度转换仅需93.75ms。(10)适配各种单片机或系统。(11)内含64 位激光修正的只读存储ROM,扣除8 位产品系列号和8 位循环冗余校验码(CRC)之后,产品序号占48 位。出厂前产品序号存入其ROM 中。在构成大型温控系统时,允许在单线总线上挂接多片DS18B20。2.DS18B20 的管脚排列DS18B20 采用脚封装或脚封装。其管脚排列见下图I/0 为数据输入输出端(即单线总线),它属漏极开路输出,外接上拉电阻后,常下呈高电平。UDD 是可供选用的外部电源端,不用时接地,GND 为地,NC 空脚。2.3.3 LED数码管部分简介在日常生活中,我们对LED数码管并不陌生。LED数码管已作为很多电子产品的通用器件,如在仪表、汽车、机械电子及很多家用电子产品中都可以看到。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED 数码管、液晶显示器。发光管和LED 数码管比较常用,软硬件都比较简单。LED数码管简介LED数码管分共阳极与共阴极两种,其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。共阴极LED数码管则与之相反,它是将发光二极管的阴极(负极)短接后作为公共阴极。当驱动信号为高电平、?端接低电平时,才能发光。LED的输出光谱决定其发光颜色以及光辐射纯度,也反映出半导体材料的特性。LED数码管等效于多只具有发光性能的PN结。当PN结导通时,依靠少数载流子的注人及随后的复合而辐射发光,其伏安特性与普通二极管相似。在正向导通之前,正向电流近似于零,笔段不发光。当电压超过开启电压时,电流就急剧上升,笔段发光。因此,LED数码管属于电流控制型器件,其发光亮度L(单位是cdm2)与正向电流IF有关,用公式表示:L=KIF即亮度与正向电流成正比。LED的正向电压U,则与正向电流以及管芯材料有关。使用LED数码管时,工作电流一般选10mA左右段,既保证亮度适中,又不会损坏器件。(一) LED数码管的基本参数和引脚功能LED数码管正向压降一般为1.52V,额定电流为10mA,最大电流为40mA。本设计采用4位一组共阳LED数码管,用P1来控制数码管的短选和p2口控制位选位选,其管脚分配和内部结构,见下图: LED共阳数码管管脚及内部结构 因为共阴、共阳极数码管电平控制存在区别,所以其编码方式不一样,其具体编码见下表。 共阴、共阳数码管编码方式显示字符0123456789共阳极0xc00xf90xa40xb00x990x920x820xf80x800x90共阴极0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f第3章 温度采集器的硬件设计 3.1 电路设计图3-1 温度采集器原理图本设计主要由单片机、温度采集器、LED数码管显示等部分组成。温度采集器用来采集温度并将数据转换成单片机可以识别的数据,然后再四位数码管上显示出测量到的温度。系统的硬件部分由电源输入部分、温度采集部分、复位部分、时钟电路部分、显示部分组成。系统原理图如图3-1所示。3.2单片机最小系统图3-2单片机最小系统原理图52系列单片机中典型芯片(STC89C52)采用40引脚双列直插封装(DIP)形式,内部由CPU、8KB的ROM、512B的RAM、2个16B的定时/计数器TO和T1、4个8b的I/O端口(P0、P1、P2、P3)、一个全双功串行通信口等组成。图3-3 STC89C52引脚图图3-5 时钟电路电路图图3-6 复位电路电路图52系列单片机为许多控制提供了高度灵活和低成本的解决办法。充分利用他的片内资源,即可在较少外围电路的情况下构成功能完善的温度采集器系统。3.3 显示电路显示电路是采用4位共阴LED数码管,利用动态扫描方式,从P0口输出段码,P2口的P2.0,P2.1,P2.2,P2.3输出位码。(1)LED数码有共阳和共阴两种,把这些LED发光二极管的正级接在一起而作为一个引脚,为共阳管。如3-7图所示图3-7 LED数码管3.4 数据采集芯片与电路 图3-8 DS18B20实物图 3.4.1 DS18B20的接线说明 DS18B20的特点是独特的一线接口,一条线通信,无需外部元件用数据总线供电,电压范围为3.0 V至5.5 V 无需备用电源 测量温度范围为-55度至+125度华氏相当于是-67华氏度到257华氏度。-10度至+85度范围内精度为±0.5度。DS18B20采用3引脚TR-35封装或8脚SOIC封装,其内部结构如3-9图所示。图3-9 DS18B20内部结构DS18B20内部结构主要有4部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图3-10 图3-10 DS18B20管脚图3.4.2数据采集电路 DS18B20有两种供电方式,一种是采用电源供电方式,另一种是寄生电源供电方式,我们选择的是前一种,1引脚接地,2脚作为信号线3脚接电源如图 3-11所示。3-11温度采集电路3.4.3 DS18B20重要的数据部件 (1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。 (2) DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。DS18B20温度值格式表 这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 DS18B20温度数据表 (3)DS18B20温度传感器的存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。 (4)配置寄存器 该字节各位的意义如下:表3 配置寄存器结构TMR1R011111 低五位一直都是1 ,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)分辨率设置表: 表4 温度值分辨率设置表R1R0分辨率温度最大转换时间009位93.75ms0110位187.5ms1011位375ms1112位750ms4. 高速暂存存储器 高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。表5 DS18B20暂存寄存器分布寄存器内容字节地址温度值低位0温度值高位1高温限值TH2低温限值TL3配置寄存器4保留5保留6保留7CRC检验8根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。 表6 ROM指令表指 令约定代码功 能读ROM33H读DS1820ROM中的编码(即64位地址)符合ROM55H发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写搜索ROM0F0H用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。为操作各器件作好准备。跳过ROM0CCH忽略64位ROM地址,直接向DS1820发温度变换命令。适用于单片工作。告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。表7 RAM指令表指 令约定代码功 能温度变换44H启动DS1820进行温度转换,转换时最长为500ms(典型为200ms)。结果存入内部9字节RAM中。读暂存器0BEH内部RAM中9字节的内容写暂存器4EH发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。复制暂存器48H将RAM中第3、4字节的内容复制到EEPROM中。重调EEPROM0B8H将EEPROM中内容恢复到RAM中的第3、4字节。读供电方式0B4H读DS1820的供电模式。寄生供电时DS1820发送“0”,外接电源供电DS1820。 第4章 温度采集器的软件设计4.1 DS18B20温度传感器的运行时序DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8个字节的存储器,结构如图所示。头两个字节包含测得的温度信息,第3个和第4个字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,他的内容用于确定温度值,该字节各位的定义如图所示,低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出场时该位被设置为0用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。由下表可见,DS18B20温度转换的时间比较长。而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。表4-1 DS18B20的温度转换时间高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1.第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通讯数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换,转换完成后的温度值就以16位符号扩展的二进制补码形式存储在高速暂存存储器的第1、2自己。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625/LSB表示、当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制:当符号位S=1时,表示测得的温度为负值,要先将补码变成原码,再计算十进制数值。DS18B20完成温度转换后,就把测得的温度与RAM中的TH、TL字节内容作比较。若T>TH或T<TL,则将该期间内的报警标志位置位,并对主机发出的报警搜索命令做出响应,因此可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。分别说明如下:(1)初始化 单总线的所有处理均从初始化开始,初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。初始化后,才可以进行读写操作(2)ROM操作命令 总线主机检测到DS18B20的存在,便可以发出ROM操作命令之一 这些命令表如表4-1表4-2 ROM操作命令(3)存储器操作命令如下表4-2表4-3存储器器操作图(4)时序 主机使用时间隙来读写DS18B20的数据位和写命令字的位 初始化图4-1初始化时序时序见上图,主机总线to时刻发送一复位脉冲(最短为480us的低电平信号),接着在t1时刻释放总线进入接收状态。DS18B20在检测到总线的上升沿后等待15-60us,接着DS18B20在t2时刻发出存在脉冲(低电平持续60-240us)。如上图中虚线所示。 写时间隙当主机总线t0时刻从高位至低电平时,就产生写时间隙见上图,从t0时刻开始15us之内应将所需写的位送到总线上,DS18B20在t0后15-60us间对总线采样。若低电平,写入的位是0.见4-3图,若高电平写入位是1见4-4图。连续写2位间的间隙应大于1us。 图4-2 写入低电平 图4-3 写入高电平 读时间隙见下图,