上海工程技术大学高职学院 上海 200437 【文章摘要】 本文以STC89S52 单片机为核 心,选用一线式数字温度传感器 DS18B20,设计了多点温度数据采集 仪,可广泛地应用于酒店宾馆、大型 粮仓、酿酒厂、食品加工厂等需要进 行温度检测的场合,设计中采用多总 线并行温度检测,实现了多点温度 的同步检测,程序设计中因无需对 DS18B20 进行识别,因此程序设计简 单,维护方便、温度检测精度高。 【关键词】 STC89S52 单片机;DS18B20 温度传感 器;多点温度测量 1 硬件设计 本文设计的多点温度数据采集仪主 要包括STC89S52 单片机、DS18B20 数字 温度传感器、按键输入模块、LED 显示及 驱动模块,以及报警电路等。系统组成框 图如图1 所示。 图1 系统组成框图 由于DS18B20 具有一线式接口,用于 多点温度检测可极大地简化系统的硬件 设计。多点测温可采取单总线多点巡回检 测和多总线并行检测两种结构。 1.1 单总线多点巡回检测 如图2 所示为单总线多点巡回检测 示意图,八个DS18B20 只占用一个端口。 在单片机访问DS18B20 时,DS18B20 一 般都是充当从机的角色,而单片机就是主 机。所有的DS18B20 均连接到主机的某个 I/O 端口(如P1.0)上,由于每个DS18B20 内部均有一个唯一的序列号(64 位),在系 统安装及工作之前先将主机与DS18B20 逐个挂接,分别读出其序列号并存储在主 机的ROM 中,这样就能够根据序列号对 单总线上挂接的多个DS18B20 进行辨别 与控制了。 单总线多点巡回检测的优点是电 路连接简单,硬件开销小。但由于多个 DS18B20 并联连接,在电气特性上会有 相互影响,当其中某个发生故障(如短路) 时,将会影响其它器件的正常工作,而排 除故障时需要逐个断开其与电路的连 接,这将给维修带来麻烦;其次,多个器 件并联于单总线,在软件设计中需要对 DS18B20 逐一进行识别,整个系统将花大 量时间消耗在器件的序列号查询,以及时 序所要求的延时上,温度检测的实时性和 温度测量的灵敏度大大降低。 1.2 多总线并行检测 如图3 所示为多总线并行检测示意 图,将每个DS18B20 的引脚DQ 与单片 机一组并行口对应相连(如与P1.0~P1.7 相连)。与图2 相比,每个端口上仅有一 个DS18B20 器件,DS18B20 器件相互间 是独立的,无需进行序列号搜索与匹配操 作,省掉了烦琐的读取与匹配序列号的操 作过程。此外,在对连接在同一组端口上 的多个DS18B20 操作时,只需统一地对 这一组并行端口进行操作,即可同时对该 组DS18B20 器件进行同步的命令发送与 数据接收操作,从而达到同步快速读取温 度数据的目的,因而程序设计变得较为简 单。 2 软件设计 单片机通过一线总线访问DS18B20, 需要经过以下几个步骤: 1)DS18B20 的复位;2) 执行ROM 命 令;3) 发DS18B20 开始转换命令;4) 读 取DS18B20 中的温度值。 DS18B2 的复位即是一次访问 DS18B20 的开始,由于采取多总线并行检 测,每根单线总线上仅有一个DS18B20, 故无需读取ROM 中的序列号,可写入跳 过ROM 指令,执行DS18B20 开始转换命 令。 开始转换命令有包括以下几个步骤: 1)DS18B20 复位;2) 写入跳过ROM 的字节命令(0xCC);3) 写入开始转换命令 (0x44)4) 延迟750~900ms。 转换好的温度会储存到DS18B20 暂 存器字节0 和1。接下来DS18B20 读暂存 数据,包括以下步骤: 1)DS18B20 复位;2) 写入跳过ROM 的字节命令(0xCC);3) 写入读暂存的功能 命令(0xee);4) 读入LS Byte,转换结果的 低八位;5) 读入MS Byte,转换结果的高 八位;6)DS18B20 复位,读取暂存结束。 DS18B20 片内有9 个字节的暂存单 元,其中字节0~1 存放的是转换好的温度, 也称为温度寄存器。其中字节0 存放LS Byte(低八位),字节1 存放MS Byte(高八 位);字节2~3 是用户通过软件来设置最 高报警和最低报警值的;字节4 是用来配 置转换精度(9~12 位)。 16 位温度寄存器中,字节1 的高5 位 为符号位(负数时为1),字节0 的低4 位 均为小数数位,数据处理中,存在着如何 表示温度值的正负,以及如何处理显示精 度的问题如图4 所示。 图4 数据处理流程图 读暂存数据转换为十进制值的步骤 如下: 1) 整合LS Byte 和MS Byte 的数据;2) 判断该温度值的正负,并置标志位;3) 求 得十进制温度值; 需要注意的是,在确定了显示精度 后,若显示一位小数则十进制温度值乘以 0.625,若显示两位小数则十进制温度值乘 以乘以 6.25,,从而将十进制数值中的“个 位”求出。 3 结束语 本文设计的多点温度数据采集仪,其 核心是DS18B20 与单片机的接口及程序 设计。针对DS18B20 的特点,探讨了两种 DS18B20 与单片机接口方式的利弊,分析 了单片机访问DS18B20 的工作过程,并通 过程序设计流程图给出了温度值的正负 及显示精度不同(分辨率0.0625)的数据 处理方法。 【参考文献】 [1] 付浩伟, 向凤红等. 基于DS18B20 传感器的温度数据采集系统的设计 [J]. 机械工程与自动化,2007(6) [2] 方尔正, 王燕. 无线传感器网络 的温深测量系统设计[J]. 宁波职业 技术学院学报,2009(2) [3] 王伟, 李树荣. 基于8051 单片机 温度采集及无线发送[J]. 现代电子 技术,2011(1) [4] 芮长颖, 陈富林. 基于AT89S52 单片机的空调温度控制系统设计 [J]. 装备制造技术,2010(5) 【作者简介】 彭远芳,女,1968.11,籍贯:重庆,副 教授,硕士,研究方向:微型计算机 控制 |