1、基于总线和AT89S52单片机的温度检测系统 Temperature Detection System Base on AT89S52 Microprocessor and Bus Protocal Standard (河南理工大学 电气工程与自动化学院,河南 焦作 454003)杨凌霄 刘建国 王显创 Yang Ling-xiao Liu Jian-guo Wang Xian-chuang 摘要:本文从硬件和软件两个方面介绍了一种基于AT89S52单片机和总线技术的温度检测系统的设计。文章给出了系统的具体构成及实现方法,并给出了测温系统主程序流程图以及单片机与器件之间通讯的子程序流
2、程图。试验证明,该温度检测系统具有结构简单、稳定性好等特点,值得推广。 关键词:单片机AT89S52;温度传感器TC74;总线 中图分类号:TP277 文献标识码:A Abstract:This paper introduces the design of temperature detection system base on AT89S52 microprocessor and bus protocal standard from hardware and software.Give the flow chart of the temperatur
3、e detection system and the subprogram flow chart of the communication between the MCU and devices with .Experiments prove that the temperature detection system is with simple structure,good stability etc advantages,worthwhile for popurlarization. Key words:single chip microprocessor AT89S52; temper
4、ature sensor TC74; bus 引言 对温度的检测是工农业生产过程中最普通也是最常见的检测参数之一,并且在很多工艺过程中对温度的精度控制得好坏甚至决定了产品的最终质量,因此针对被测对象的特点而设计一种较为理想的温度控制系统是非常有必要的。传统的温度检测方法主要是使用诸如热电偶、热电阻、半导体PN结之类的模拟传感器,经过信号取样电路、放大电路和模数转换电路的处理,获取表示温度值的数字信号,之后再交由微处理器处理。但是传统的测温系统的稳定性和可靠性很难得到保证,特别是在环境比较恶劣的情况下。经过分析发现,造成系统不稳定、不可靠的因素主要集中在电路设计、元件选择和软件设计三个方面
5、在线路设计上,主要是由于电源干扰、滤波不可靠,线路过于复杂、无屏蔽措施等造成;在元件选择上,主要是由于选用模拟器件造成工作模式繁琐而导致的系统不可靠;最后,在软件设计上,由于前面提到的防抗干扰措施不利,而导致可能出现死锁、死循环等现象。 综合以上考虑,我们选用数字温度传感器TC74来改变传统的模拟式测温模式。由于TC74遵循的是I2C总线的通信协议,而我们知道由Philip公司推出的I2C总线技术可以大大简化了电路设计,并且提高了数据传输的速度和可靠性,因此,本系统具有可靠性高、线路简单、功能易于扩展和造价低廉等优点,非常适合实际应用。 1 系统总体设计方案 数字温度传感器TC74首先
6、对温度进行采集,接着将采集到的温度值(补码形式)通过I2C总线送给单片机处理,然后单片机将处理好的温度值与之前通过键盘设定的保存在E2PROM中的超限值进行比较,同时单片机把当前温度以及设定的超限值送给液晶显示。如果当前温度值超过了设定的上限值或者是低于了设定的下限值,则进行超限报警。 系统总体框图以及硬件原理图如图1、图2所示: 温度传感器 保护电路 键盘控制 AT89S52 液晶显示 数据存储 超限报警 图1 系统总体框图 图2 系统硬件原理图 2.系统硬件设计 2.1 数字式温度传感器TC74 温度传感器的选择是本系统设计的核心,它对于测温系
7、统性能的影响至关重要。在系统中,选用的是温度传感器TC74。 TC74是一个具有串行接口的数字温度传感器,非常适合低成本和小型应用。温度数据由热传感单元转换而来,是一个8位的数字温度传感器。与TC74的通信可经由2线SM总线/I2C兼容串行总线实现。该总线可用来多区域监控。CONFIG寄存器中的SHDN位可用来激活低功耗待机方式。温度分辨率为1°C。转换率通常为8采样/秒。在正常工作条件下,静态电流为200A(典型值)。在待机工作中,静态电流为5A(典型值)。体积小巧、低装配成本和易于操作的特点使TC74 成为各种系统热管理的理想选择。TC74的测温范围为-65°C—+127°C,其温度分辨
8、率为1°C。它将数据存储在内部的寄存器中,然后通过串行口读取。TC74有8个可编程的I2C地址(默认情况下是101),这使多传感器配置得以实现。而且,在温度获取暂停时,器件进入低功耗等待模式。 TC74通常作为从机工作,其所遵循的通信协议见图3所示。需要说明的是,在发送数据时,先发送最高位,最后发送最低位;同样,在接收数据时,也是先接收最高位,最后接收最低位。另外需要注意的是,在模拟I2C通信协议的过程中,必须要严格遵守数据位的有效性的规定。数据位的有效性的规定是指,在SCL为低电平期间,SDA线上的电平可以发生变化,而在SCL为高电平期间,SDA线上的电平必须保持稳定,否则将会被视为是起始
9、或终止信号,而不在被认为是数据位。 TC74占用微处理器的并口少,功耗低,并省去了在传统模拟式测温方式中经常采用的变送器、放大电路以及模数转换电路等,故而非常适合低成本系统的应用和开发。在本系统中,利用AT89S52单片机的P1.0和P1.1口来模拟I2C总线的SDA和SCL端。 写字节格式 S Address WR ACK Command ACK Date ACk P 7bits 0 8bits 8bits 从器件地址 命令字节 数据字节 读字节格式 S
10、 Address WR ACK Command ACK S Address RD ACK Date NACK P 7Bits 0 8Bits 7Bits 1 8Bits 从器件地址 命令字节 从器件地址 数据字节 图3 TC74串行通信协议 (1)起始信号S 所谓起始信号就是指,在SCL为高电平期间,SDA线上有一个由高到低的电平跳变。起始信号视作I2C总线的开始。 (2)从机的地址字节 主机在发送完起始信号之后,要紧跟着给从机发送一个字节,这一字节里面
11、包含三部分内容,分别是从机的器件地址、从机的可编程地址以及读写方向位(为‘0’时表示进行写操作,为‘1’时是表示进行读操作)。 (3)应答信号ACK 所谓应答信号就是指,在第九个时钟脉冲周期(即主机和从机之间完成一个字节的数据传输之后的下一个时钟脉冲)内判断SDA线上是否有低电平产生。 (4)数据字节Date 在遵守数据位的有效性的规定的条件下,SCL线上每来一个时钟脉冲,SDA线上就会发送或者接收一位数据。 (5)终止信号P 所谓终止信号就是指,在SCL为高电平期间,SDA线上有一个由低到高的电平跳变。终止信号视作I2C总线的结束。 2.2 键盘电路的设计 由于本系统中需要的
12、按键数量比较少,因此采用独立式键盘。按键分别与AT89S52单片机的P2.0—P2.4口相连。各个按键的定义见表一: 按键和单片机连接的位置 键名 功能 P2.0 功能键 进入键盘设定模式,同时暂停温度检测程序 P2.1 加一键 根据功能键按下的次数来判断自加的内容 P2.2 减一键 根据功能键按下的次数来判断自减的内容 P2.3 确定键 设定温度上限值 P2.4 确定键 设定温度下限值 表一 按键功能表 2.3 显示电路的设计 传统的LED动态显示方式需要不停地刷新才能显示,这不仅浪费了一定的CPU资源,而且当程序比较长时还会影响显示的效果,所以
13、在本系统中的显示部分采用的是长沙太阳人公司出品的液晶1602。显示的内容包括数字温度传感器TC74检测到的当前温度值以及通过键盘设定的温度上限值和下限值。液晶1602的使能引脚lcden与单片机的P3.4口相连,控制对命令还是对数据进行操作的引脚lcdrs和单片机的P3.5口相连,而由于我们暂不需要从液晶中读取数据,所以控制液晶进行读写操作的引脚lcdrw直接接地,即在本系统中我们只能往液晶当中写数据。 2.4 存储单元的设计 在本系统中使用遵循I2C总线这一通信协议的E2PROM系列中的AT24C02作为存储单元,我们将单片机的P1.0和P1.1口分别和AT24C02的SDA和SCL引脚
14、相连,同时把AT24C02的可编程地址设置为000,也就是把AT24C02的A2、A1和A0三个引脚均接到GND上。在本系统中它的主要功能是把通过键盘设定的温度上限值和下限值保存起来,并在系统上电后将所存储的上限值和下限值通过单片机地控制显示到液晶相应的位置。 2.5 掉电保护电路的设计 掉电保护电路是为了防止系统因为意外掉电导致丢失数据而设计的(见图4)。因为单片机工作电源为+5V,且底层电路功耗很小,所以采用7805三端稳压片即可满足要求。集成电路7805为一个单一的+5V稳压块,和备用电源分别通过二极管接到单片机的电源端。当稳压电源略高于+5V时,备用电源停止工作。此外,考虑到底层电
15、路板的工作环境相对恶劣,单片机很有可能会受到周围环境的干扰,而出现一些不正常的工作现象,所以本设计中特别为单片机添加了一个外部看门狗电路,以便能够保证系统安全可靠的运行。 图4 掉电保护电路 2.6 报警单元的设计 本系统中的报警电路设计比较简单,主要由发光二极管来实现。当温度上升并且超过了设定的上限值之后,单片机的P1.2口就会输出一个低电平,以点亮发光二极管D1,当温度值小于等于上限值之后,发光二极管D1熄灭。而当温度下降并且低于了设定的下限值之后,单片机的P1.3口就会输出一个低电平,以点亮发光二极管D2,当温度值大于等于下限值之后,发光二极管D2熄灭。在实际应用中,可
16、根据具体情况再添加其他报警功能,比如语音报警等。 3. 系统软件设计 3.1 系统总体设计流程图 初 始 化 I2C总线、液晶、显示设定好的温度上限值和下限值 判断功能键是否按下 开 始 flag=0 读取判断温度是否转换结束的状态位所在的寄存器 提取状态位 读取温度值 显示当前 温度值 状态位置位 判断符号位 温度超限 flag=1 调用键盘检测程序 flag=0 完成对以补码形式保存的负数的处理 显示当前 温度值 温度超限 报警并显示当前温 度 值 报警并显示当前温 度 值 否 是 是 否 是 否
17、1 0 否 是 是 否 3.2 I2C总线协议的软件模拟 由于在本系统中用到的数字温度传感器TC74和存储器E2PROM AT24C02都是遵循I2C总线这一通信协议的器件,所以它们和单片机之间进行数据接收和发送的格式基本上是一致的,因此限于篇幅,这里只以单片机和AT24C02之间的通信协议流程图来描述这两者各自与单片机之间的通信协议。 3.2.1 向AT24C02中写入数据的程序流程图 接收 ACK 接收 ACK 主机发送存储单元的地址 接收 ACK 启动数据传输 数据发送完毕 主机发送终止信号以结束这一次的写入过程 主机发送所要存储的一个字节数
18、据 是 否 主机发送从机地址以及写方向位 3.2.2 从AT24C02中读取数据的程序流程图 数据发送完毕 起始信号 主机发送存储单元的地址 接收 ACK 接收 ACK 主机发送从机地址以及写方向位 主机发送从机地址以及写方向位 起始信号 接收 ACK 主机发送存储单元的地址 主机再次发送起始信号 接收 ACK 接收 ACK 主机发送从机地址以及读方向位 主机接收从机发送的一个字节数据 接收结束 主机发送终止信号以结束这一次的写入过程 NACK
19、 是 否 说明:如果是主机作为发送方而从机作为接收方的话,那就是主机接收从机发送的ACK;反之,如果主机作为接收方而从机作为发送方的话,那就是从机接收主机发送的ACK。 4. 结束语 本文在介绍数字温度传感器TC74的基础上,以AT89S52单片机为核心,研究了系统的总体设计方案,并对各个重要组成部分如何与单片机连接进行了详细的设计,同时给出了系统的整体流程图以及单片机与遵循I2C总线的器件之间进行通信的流程图。由于在本文所介绍的温度检测系统的设计中引入了I2C总线协议标准,而I2C总线对于器件寻址采用的是硬件设置方法,这样就完全避免了对于器件地址经常采用的片选线寻址方法,从而使得
20、系统的扩展简单、灵活。试验结果证明,该温度检测系统具有结构简单、稳定性好且测温范围较广等优点,值得推广。 参考文献 [1]胡汉才.单片机原理及接口技术.北京:清华大学出版社,1996,7. [2]刘守义,杨宏丽,王静霞.单片机应用技术.西安:西安电子科技大学出版社.2008,8. [3]鹿玉红,吕宏丽,江培蕾.基于总线的MCS-51单片机室温检测系统[J].微计算机信息,2008,第二十四卷11-2期. [4]鲍存会.基于DS18B20与ISD1420的温度检测与报警系统设计[J].微计算机信息,2008,第二十四卷12-2期. 作者简介:杨凌霄,(1964-),女,河南方城人,教授,硕士生导师,主要从事信息处理和微机控制方面的研究 刘建国,(1983-),男,北京市人,硕士研究生,研究方向是现代传感技术 王显创,(1982-),男,山东菏泽人,硕士研究生,研究方向是信息采集与处理






