当前位置:首页 > 心得体会 > 基于AT89S52的多路多功能温度监测器设计_多功能s型卡扣原理
 

基于AT89S52的多路多功能温度监测器设计_多功能s型卡扣原理

发布时间:2019-02-23 04:29:04 影响了:

  [摘要]该款基于AT89S52芯片的多功能多路温度监测器是为实现对多点温度的实时监测报警而设计。采用4个DS18B20温度传感器对4个不同点的温度进行测量;加入DS1302时钟芯片,在测量温度的同时,给出不同温度产生时的精确时间;将得到的变化的温度、温度采集点及其时间进行存储。采用串行EEPROM芯片AT24C08存储时间温度信息的历史变化,当温度变化超过设定值时就会自动报警来达到监视的目的;通过1602液晶屏友好的人机界面将结果完美的呈现给用户。该款设计还具有数字钟的时间显示、定时等完整功能,有很高的实用价值。
  [关键词]实时温度监测单片机双级数据存储实时时钟
  中图分类号:TP274+.2文献标识码:A文章编号:1671-7597(2009)1120008-01
  
  一、引言
  
  温度的采集监测在日常生活中有着广泛的用途,该款温度监测器基于此而设计,它的最大的优点在于采用双级记忆模式,可以在对温度进行实时测量的同时,记录下当温度发生一定变化时的时间,并将一段时期内的变化过大的记录值进行二级存储并报警,已达到历史数据进行监测、整理和分析的目的。同时它还可以充分利用自身的时钟芯片起到数字钟的功能,扩大了该监测器的使用范围。
  
  二、工作原理
  
  该系统由主控模块、温度测量、实时时钟、控制键盘、液晶显示,温度报警、数据存储等七部分组成,这其中最主要的部分是中间的主控模块部分,温度测量由DS18B20温度传感器完成。单片机在接到数据后,一方面将该时刻的温度值送到液晶屏显示出来,另一方面对比之前的温度数据看是否有变化,若有变化就将温度值连同变化的时间一起存储到外部数据存储器AT24C08中,如果两次存储有较大的波动,就会自动报警并同时将此进行单独存储以利于复查。当用户想查看时间时,通过键盘进行显示切换,就可实现温度监测与时钟功能的灵活切换。
  
  三、硬件电路设计
  
  对应之前提到的该检测器的每一个部分都有相应的硬件电路与之对应,下面对关键部分的具体的器件选择及连接电路做具体的介绍。
  
  (一)主控制器AT89S52
  在该监测器中起到总控作用的是AT89S52单片机,它的最大方便之处室支持在系统编程ISP,节约设计成本。单片机的口线中,P0和P2用于液晶显示电路,P1口用于接收温度传感器输入的数据并同片外存储器间经行数据交换,P3口用于输入键盘的中断信号和实时时钟芯片的信号。
  
  (二)温度测量部分
  温度测量在本监测器中起到一个非常关键的作用,这里选择了美国DALLAS公司生产的单总线式数字温度传感器DS18B20。由于采用单总线结构,每一个18B20都拥有唯一的标号,节约了口线资源[1]。四个温度传感器的数据端全部连到P1^1口处。在读取数据时,通过发送传感器的唯一序列号读取不同的温度传感器值以实现多点测量。
  
  (三)数据存储部分
  该设计中需要将温度发生变化时的温度值及对应的时间进行存储,这里存储的时间信息来自DS1302。由于单片机内部8K的FLASH存储空间只能存放主程序,必须选择外部存储器。这里选择AT24C08,该芯片具有8K的EEPROM存储空间,与单片机之间通过I²C总线技术进行通信,三个地址端A0、A1与A2可以为每个存储器赋予不同的地址,最多可以将8个挂到单片机上去,而且同单片机的接口仅占用两根口线。系统硬件电路如图1所示。
  
  四、软件设计
  
  为利于该设计的多功能的实现和更高的编程效率,采用C语言进行编程[2]。由于18B20是单总线结构,要读出4个温度传感器的值,必须先写不同编号的控制字,然后读出对应的温度值,每个传感器的编号是预先通过程序得到的。读入温度后,与之前一分钟时的温度值做对比,如果温度变化超过了设定的范围(初设为2℃),那么就将变化后的温度值连同变化的时刻一起存入片外存储器中,这是一级存储,若1h内变化超过3℃(可另设),则触发蜂鸣器报警的同时将这些数据在单独取出存储,这是二级存储。另设按键可改变显示状态,将实时时钟的信息显示出来,一个温度监测器瞬间就变成了一个数字钟。
  
  (一)测温模块子程序
  在该设计中采用的是单总线结构的DS18B20,在使用前必须先进行初始化,其初始化步骤包括:单片机通过拉低单线480us以上产生复位脉冲,然后释放该线,进入Rx接收模式。单片机释放总线时会产生一个上升沿,18B20检测到该上升沿后延时40us,通过拉低总线60~240us来产生应答脉冲,单片机接收到后就说明有单线器件存在,之后就可以发出ROM操作命令、内存操作命令及数据处理。
  要实现多路测量单片机要对众多在线18B20的某一个操作时,首先要发出匹配ROM命令(55H),紧接着单片机提供64位序列,之后就是针对某个具体读出其温度值,但是启动温度转换命令是对所有的都进行的[3]。
  
  (二)数据存储模块子程序
  此处存入的时间的获得是通过直接读时间寄存器得到的。1302内部时间寄存器自动计时,只要写入一个初始值,就可以自动在此基础上工作,将时间寄存器组作为一个数组,直接用写函数就可以存入存储器中。由于在该设计中要存储的数据比较多,在进行片外存储时就需要用到I²C总线技术。这种方法在与单片机相连时,仅需要SCL和SDA两根线占用两个口线即可,而且即使八个同时挂在单片机上也只需要两根线。在需要进行读写操作时,先要写控制字,这其中就包括了确定是进行读操作还是写操作,还有选择哪个芯片进行操作,然后直接启动总线,数据交换完毕在SCL为高电平时让SDA上有一个上升沿就可以停止总线。而对于AT24C08的8K的存储空间,可以根据地址直接读出上面的数据或是写入数据[4]。
  该部分还有另外一部分功能就是完成数据的对比判断,包括两部分的内容。一是判断温度传感器输入值的变化是否要进行一级存储;二是判断一级存储存入的数据是否达到了启动报警的最大限度,一旦启动报警则自动对引起报警的值进行二级存储;以上两级存储的具体方式即上文所介绍方式。报警程序本身比较简单,置位对应口线即可,不在单独给出。
  
  (三)键盘、显示模块子程序
  该设计中按键总共需要4个,基于充分利用外部中断的目的将其接成2×2的矩阵式键盘。没有键按下时,读入行全部为高电平,每当有按键按下时,逐列置低电平检测读入行的数据,根据低电位的行列信息就可对应的找出键位。读入按键信号后,对应改变相应的特征变量的值改变应进行的操作,四个按键功能有:温度时间切换、调时、显示加1和复原。
  该设计是要显示温度结果和时间两个不同的内容,具体显示内容是由按键改变条件变量的值来决定的,未有改变时的默认显示是温度。同样的1602在显示开始时要进行初始化操作。LCD1602在显示时的原理是比较简单的,在不同的地址位置写入不同的数据即可[5],第一行的地址为0x80~0x8F,第二行为0xC0~0CF。虽然要求是写入前要先检测忙信号,但是实际中忽略该步骤也一样可以正常显示,所以这里不再检测。
  
  五、结束语
  
  该温度监测报警器功耗低,技术先进,能利用最少的资源对多点不同温度进行高精度的测量,而且能对历史数据进行记录对比并给出提示信息;性能可靠、操作便利,复杂的工作通过软件编程来完成,使用人员可以方便的获取结果。这款设计另一大优势就是具有高度的灵活性,具体体现在:一是多路测温的数量和存储容量的大小都可以根据实际需要做增减;二是充分利用现有器件使得该温度监测报警器还具有数字钟的完善的功能,在实际的使用中获得了理想的效果。
  
  参考文献:
  [1]黄智伟等,全国大学生电子设计竞赛训练教程,北京:电子工业出版社,2004.
  [2]余永权,ATMEL89系列单片机应用技术,北京:北京航空航天大学出版社,2002.
  [3]叶刚,基于DS18B20温度控制系统的设计,电子测量与仪器学报,2007(26).
  [4]NCN Connection .DS18B20.pdf[EB/0L].https://datasheets.省略/en/ds/DS18B20.pdf.
  [5]岂兴明、唐杰等,51单片机编程基础与开发实例详解,北京:人民邮电出版社,2008.
  
  作者简介:
  陈健(1987-),男,山东蒙阴人,本科在读,研究方向:嵌入式系统开发及应用;邓建春(1988-),男,汉族,四川达州人,研究方向:嵌入式系统开发及应用。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3