单总线多点温度监测显示系统设计与仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第7卷第4期
南阳理工学院学报Vol.7No.42015年7月
JOURNAL㊀OF㊀NANYANG㊀INSTITUTE㊀OF㊀TECHNOLOGY
Jul.2015
作者简介:李壮辉(1976-),女,硕士,讲师,主要研究方向:应用电子技术㊂E-mail :lzhui2003@
单总线多点温度监测显示系统设计与仿真
李壮辉1,李连合2,朱清慧1
(1.南阳理工学院电子与电气工程学院㊀河南南阳㊀473004;
2.河南财经学校㊀河南郑州㊀450012)
摘㊀要:为了实现对多点分散温度数据的采集㊁处理和监控,设计了一个单总线多点温度监测显示系统㊂采用多个数字温度传感器DS18B20作为温度采集单元,字符液晶显示器1602C 作为温度监测显示单元,单片机AT89C51作为控制核心,结合Proteus 软件平台,对单总线多点温度监测显示系统进行了软㊁硬件设计,并通过分析与仿真实现了设计要求和指标㊂该系统适用于测温点多㊁温度范围分布广或空间较大的温度监测场合㊂关键词:多点温度监测;DS18B20;单总线;仿真
0㊀引言
温度监控显示在工业控制及日常生活中应用非常普遍㊂温度传感器有模拟器件及数字器件两种,数字温度传感器以其体积小㊁功能全㊁接线简单逐渐取代模拟温度传感器而得到越来越广泛的应用㊂DS18B20是美国达拉斯半导体公司(Dallas Semicon-ductor Inc)生产的具有可编程分辨率(9~12位温度数据可选)的单总线数字温度传感器,独特的单线接口只需一根引线即可与计算机进行通信,能够实现分布式多点测温控制,测温范围从-55ħ到+125ħ,且最多在750ms 内能将温度转换为12位数字㊂该智能温度计自带有11条指令来完成各种功能㊂
1602C 是一款控制便捷㊁功能又相对齐全的字符液晶显示器,主要用来显示数字㊁字符以及自定义符号㊂它与单片机相结合,可实现工业现场控制中各种监控界面的实现显示和监控㊂
本文结合单总线数字温度传感器㊁液晶显示器及单片机,设计完成一个分布式温度监控系统,在实际工程中可应用于很多场合㊂
2㊀控制系统设计
系统设计要求如下:
(1)采用数字温度传感器DS18B20进行测温,测量精度0.1ħ,有报警上㊁下限(上限为正值,下限正㊁负值均可),温度数据实时刷新㊂测量的温度点数为4个,采用2ˑ2矩阵键盘进行切换监测选择㊂
(2)采用一片1602C 字符液晶显示器作为系统显示器件,显示内容分为3部分:系统检测到DS18B20不存在,显示错误信息;系统运行正常,无键盘操作,显示正确信息;系统运行正常,有键盘操作,分屏分行显示每个传感器温度㊂
要求:正温度最高显示到百位,不加符号;负温度最低显示到十位,在百位加负号㊂小数部分为一位,精确到0.1ħ㊂在温度数据后显示 ! 或 <L 或 >H 分别表示温度在报警值范围内或低于下限报警值或温度高于上限报警值㊂
2.1㊀读DS18B20ROM 序列号电路设计
每个DS18B20温度传感器都有一个独特的64位ROM 序列号,而这个序列号只存在于器件内部的ROM 中[1,2]㊂由于4个DS18B20并接在一条总线中与单片机进行通讯,当有键盘按下时,如果要求系统软件自动识别对应的温度传感器并进行温度采集和处理,这是一个相当复杂的编程过程㊂为了简化编程,在监测系统设计之前,先设计一个用来读取每个DS18B20ROM 序列号的简单实用电路,如图1所示㊂
在图1所示的Proteus 电路中,通过四位转换开关分别把4个DS18B20与单总线接通,然后启动按钮,发光二极光每亮一次,从两位数码管读出两位十六制数(一个字节,共8个字节)并记录下来㊂先读出的为最高位字节㊂
在Proteus 仿真运行前,必须先对各DS18B20元件进行参数设置,包括温度精度设置和ROM 序列号设置㊂分别双击图1中的U1~U4,在打开的元件属性对话框 Granularity 一栏中,把1改成0.1,即测量温度的精确度由1ħ改成了0.1ħ,与实际元件保持一致㊂在 ROM Serial Number 一栏,有3
㊀第4期李壮辉等:单总线多点温度监测显示系统设计与仿真个两位十六进制数,是ROM 序列号的第5㊁6㊁7字节(只能对这3个字节进行更改),4个DS18B20的ROM 序列号只要改写成不一样即可㊂其他5个字
节是系统设置好的,只能通过软件编程读出来,最高位字节固定为28
H㊂
图1㊀Proteus 中读DS18B20ROM 序列号电路
2.2㊀系统硬件设计
读出各个DS18B20的ROM 序列号后,接下来设计单总线系统㊂根据系统设计要求,在Proteus 中设计单总线多点温度监测显示电路如图2所示㊂其中,LM016L 对应字符液晶显示器1602C,数据命令线D0~D7与AT89C51的P0口相接,为确保能正
常显示接上拉排阻[3,4]㊂LM016L 的3根控制线分别接单片机P1口的P1.0~1.2,编程时采用间接询址方式[5]㊂4个DS18B20温度传感器的单总线并接在一起挂在单片机的P3.7上㊂另外,在Proteus 中自制了一个2ˑ2矩阵键盘,接在P2口上

图2㊀Proteus 中系统电路图
2.3㊀系统软件设计
2.3.1㊀主程序流程设计
系统主程序流程如图3所示㊂
(1)初始化
系统初始化包括宏指令(对单片机内存及I /O
定义)㊁堆栈指针设置㊁内存各单元清零㊁设置温度报警上㊁下限值㊁LCD 初始化,以及DS18B20初始化子程序㊂
(2)判断DS18B20是否存在
初始化执行完毕后,判断单总线上DS18B20是

11㊃
南阳理工学院学报第7卷㊀
否存在,如不存在,调系统出错显示子程序然后结束㊂如DS18B20存在,调系统正常显示子程序㊂接
下来把温度限值拷贝到DS18B20暂存器,调DS18B20复位子程序

图3㊀系统主程序流程图
㊀㊀(3)温度数据采集
如果DS18B20存在,由单片机向DS18B20发送跳过ROM 匹配命令,单片机向所有DS18B20发出温度转换命令,4个传感器同时开始温度转换,调1s 温度转换延时子程序㊂由单片机先向DS18B20发出匹配ROM 序列号命令,接下来发送第一个DS18B20即U1的64位ROM 序列号,由高到低,一个字节一个字节地写入,共8dB㊂发送完64位
ROM 序列号,再发送允许主机读该温度传感器温度数据的命令,接着调读DS18B20温度数据子程序,然后调DS18B20复位子程序,即完成了第一个DS18B20的温度数据采集任务㊂分别送出U2㊁U3和U4的ROM 序列号,读出对应传感器的温度数据并存储,供后面的程序对这些温度数据进行处理和显示㊂
(4)键盘查询和处理
温度数据采集完成以后,判断是否有键按下,如果没有,继续查询㊂如有键按下,则先对LM016L 第二行进行清屏,因为温度数据要显示在LM016L 的第二行,第一行显示相关字符信息㊂调延时去抖动程序,再次判断是否有键按下,没有继续等待;有键按下,先判断是否一号键按下,如不是,判断是否二号键按下,依次类推㊂有键按下,先置对应的按键标志位为1,然后调温度采集㊁处理和显示子程序集㊂接下来,再回到程序初始化之后,顺序执行调
DS18B20复位子程序㊁判断DS18B20是否存在以及发送ROM 序列号㊁读温度值等㊂程序这样转的目的是为了保证温度值的实时采集和刷新㊂2.3.2㊀子程序流程设计
子程序包括基本子程序和主要功能模块子程序㊂基本子程序包括LM016L 及DS18B20初始化㊁复位及各自的读㊁写子程序等㊂主要功能模块子程序是在按键后进入的功能子程序,即温度数据处理子程序㊁BCD 码转换子程序㊁温度数据显示子程序和温度数据比较及结果显示子程序㊂下面对4个功能模块子程序的设计流程进行重点分析㊂
(1)温度转换子程序该子程序完成对从DS18B20读出的两字节初始温度数据进行一系列转换㊂首先对负温度进行求补转换成绝对值,置标志位FLAG2为1,高㊁低字节分别存入TEMP_H 和TEMP_L㊂接下来完成以下两项任务:1)把两个字节的温度值拆分组合成一个字节的二进制数并存入TEMP_ZH,高位为符号位,其余七位为绝对值㊂2)把两个字节的温度值拆分组合成两个字节的BCD 码,并存入TEMPHC 和TEM-PLC,TEMPHC 中存放百位和十位,TEMPLC 中存放的是个位和小数位㊂程序流程如图4所示㊂
(2)BCD 码转换子程序
该子程序对两个字节BCD 码再进一步拆分成4个字节的BCD 码,以便于显示调用㊂这四个字节

21㊃
㊀第4期李壮辉等:单总线多点温度监测显示系统设计与仿真分别为百位㊁十位㊁个位和小数位,并设灭零显示标志[6]位FLAG3和FLAG4㊂正温度时,百位为零不显示,但如果百位为零时,十位也为零,则设标志位FLAG4=1,这两位都显示 空格 字符㊂负数时,因为最低为两位数,故十位上为0时,要和正数相区别,不能显示,即一律灭零,故设标志位FALG3=1㊂BCD 码转换子程序流程序图如图5所示

图4㊀
温度转换子程序流程图
图5㊀BCD 码转换子程序流程图
(3)温度比较及结果显示子程序
该子程序主要完成实际温度与程序中设定的上㊁下限报警温度的比较,并且把比较结果(大于上限㊁小于下限及不超限)分别用符号 > ㊁ < ㊁和 ! 表示㊂这些符号显示在温度数据小数点后第二个字符位置上㊂这里设温度上㊁下限值分别为80ħ和20ħ㊂程序流程如图6所示

图6㊀温度比较及结果显示子程序流程图
(4)显示温度数据子程序
显示温度数据子程序LCD_DISP 的功能是把温度数据的百位㊁十位㊁个位㊁小数点㊁小数点后的一位小数以及负号分别显示在LM016L 的指定位置上㊂
既要显示负号㊁还要有灭零功能㊂另外需注意,LM016L 对实时动态温度数据的显示需要进行转换,即把要显示的BCD 码加上30H 后才能正常显示该数[7,8]㊂该子程序的流程图如图7所示㊂

31㊃
南阳理工学院学报第7卷

图7㊀显示温度数据子程序流程图3㊀系统仿真结果
在Keil软件中使用汇编语言进行系统编程及
调试,最后生成正确的 ∗.hex 文件㊂在Proteus
中,把 ∗.hex 文件导入,运行仿真[9,10],仿真过程及结果如下:
先出现如图8(a)所示的画面,表示DS18B20
存在,系统正常运行㊂
停止仿真,断开单总线,再次运行仿真,出现如
图8(b)所示的画面,表示DS18B20不存在㊂
停止仿真,接好单总线,并按照前面介绍的方法
把四个DS18B20的精度和ROM序列号设置好,再
次运行仿真,重新出现如图8(a)所示的画面㊂用鼠
标分别调节四个DS18B20的温度,使其有正有负,
有超上限的,有超下限的㊂然后分别点击按键1㊁2㊁3和4,分别出现如图8(c)㊁(d)㊁(e)㊁(f)所示的显示效果㊂
在仿真运行状态下,选中并按下一个按键后,随
意调节对应温度传感器DS18B20的值,LM016L的
显示数据跟随变化,并有温度报警符号显示

图8㊀Proteus中系统仿真结果
4㊀结论
本文设计了一个基于DS18B20的多点温度监
测显示控制系统㊂为简化系统设计程序,首先设计
了一个读取DS18B20ROM序列号的简单电路,接
着重点对单总线多点温度监测控制系统的电路设计
和软件设计流程进行了详细论述㊂系统综合了液晶
显示㊁单总线通讯㊁数据采集㊁转换与处理等多种功
能,是单片机控制系统中比较典型的一个设计案例,
具有硬件结构简单㊁软件编程便捷㊁实物调试周期
短㊁成功率高等特点㊂特别适合用于蔬菜大棚和粮
仓等场地较大㊁测温点比较分散的温度监测场所㊂㊃41㊃
㊀第4期李壮辉等:单总线多点温度监测显示系统设计与仿真
参考文献
[1]江杰,李计川.基于DS18B20的高精度温度测量系统
在高炉上的应用[J].传感器与微系统,2012,31 (11):144-146.
[2]刘青.DS18B20在粮仓恒温监控系统中的应用[J].自
动化应用,2013(7):70-71.
[3]李维提,郭强.液晶显示应用技术[M].北京:电子工
业出版社,2003:256-260.
[4]张永斌,胡金高.基于DSP的LCD显示控制与设计[J].液晶与显示,2011,26(5):626-630. [5]朱清慧.Proteus显示控制系统设计与实例[M].北京:
清华大学出版社,2011:125-128.[6]朱清慧.Proteus 电子技术虚拟实验室[M].北京:中
国水利水电出版社,2010:104-109.
[7]刘金星.基于高速单片机的液晶显示模块控制[J].液
晶与显示,2011,26(1):88-91.
[8]朴成洙,杨仁刚,冯小明.电力测控仪表键盘操作与液
晶显示的软件实现[J].液晶与显示,2010,25(3): 412-416.
[9]耿卫东,王立萍,王俊等.光伏发电控制器的液晶显示
设计[J].液晶与显示,2012,27(6):780-784. [10]朱清慧,陈绍东.Proteus实例教程[M].北京:清华大
学出版社,2013:235-240.
(责任编辑:黄奇瑞)
DESIGN AND SIMULATION OF SINGLE BUS MULTI-POINT TEMPERATURE
MONITORING AND DISPLAY SYSTEM
LI Zhuang-hui1,LI Lian-he2,ZHU Qing-hui1
(1.School of Electronics and Electrical Engineering,Nanyang Institute of Technology,Nanyang473004,China;
2.Henan Finance and economics School,Zhengzhou450012,China)
Abstract:In order to realize the acquisition,process and monitoring of dispersed multi-point temperature data,the single bus multi-point temperature monitoring and display system is designed.The system adopts several digital temperature inducers DS18B20as tem-perature acquisition units,numerical LCD1602C as temperature monitoring and display unit,single chip AT89C51as the control core. The software and hardware design,analysis and simulation of single bus multi-point temperature monitoring and display system are im-plemented through Proteus platform,realizing the design requirement and the design indexes.This system is adequate for the tempera-ture monitoring and display sites with more temperature detecting points and large space.
Key words:multi-point temperature monitoring;DS18B20;single bus;simulation
㊃51㊃。

相关文档
最新文档