基于SPI接口的温度测量系统
2013-04-25孔令荣
孔令荣
(南京理工大学泰州科技学院 电子电气工程学院,江苏 泰州225300)
在当今农业和工业生产过程中,温度作为一个基本物理量起着越来越重要的作用。随着科技的发展,人们对温度测量的要求是越来越高,对温度测量的范围也越来越广。因此,温度测量和控制技术具有一定的必要性。
1 硬件电路设计
系统设计硬件电路分为:控制电路、键盘电路、传感器电路、显示电路和报警电路。AVR单片机接收到TC72温度传感器检测到的温度信号后,经过控制运算给出控制信号,通过LCD显示检测温度的大小;矩阵键盘可以设定温度上下限值,当温度超出设定范围时,报警电路会发出警报,达到温度测量和控制的目的。SPI温控系统的工作原理如图1所示。
图1 基于SPI接口温测系统
1.1 控制电路模块
AVR单片机由Atmel公司利用Flash新技术,研制的RISC精简指令集的高速8位单片机,与51系列单片机相比,在内部资源和接口方面,AVR系列单片机更为丰富和强大。ATmega16单片机是AVR单片机系列中的一种。
ATmega16单片机是ATmega系列中一种高性能、低功耗的8位AVR RISC微处理器[1]。它支持131条指令,并且大多数指令只需要单时钟周期就能执行完成。因此,ATmega16单片机的数据吞吐率可达1 MI/S·MHz,从而使系统在处理速度与功耗之间的矛盾得到了有效缓减。另外,ATmega16单片机的内核不但指令集丰富而且它的通用工作寄存器达32个。其中运算逻辑单元与所有寄存器相连,这样一条指令在一个时钟的周期内就可以同时访问两个独立寄存器。这种结构形式不仅提高了代码效率,而且其数据吞吐率比普通的CISC微控制器高10倍[2]。
1.2 键盘电路模块
矩阵式键盘,由行线和列线组成,按键位于行、列的交叉点上,行、列分别连接到按键开关的两端,列线通过上拉电阻接到高电平。无按键动作时,列线处于高电平状态;有按键按下时,交点的行线和列线接通,列线电平状态将由与此列线相连的行线电平决定。行线电平如果为低,则列线电平为低;行线电平如果为高,则列线电平也为高。这一点是识别矩阵键盘按键是否被按下的关键。由于矩阵键盘中行、列线为多键公用,各按键均影响该键所在行、列的电平,所以必须将行、列线信号配合适当处理,才能确定闭合键所在的位置。矩阵式键盘节省了大量I/O接口,适用于按键数量较多的场合。本系统矩阵式键盘功能设计如图2所示。
图2 矩阵式键盘功能设计
16键解码芯片74C922采用CMOS工艺技术制造,工作电压为3~15 V,具有二键锁定功能,编码为三态输出,可与单片机直接连接,内部振荡器完成4×4键盘矩阵扫描,外接电容用于消抖,键盘矩阵的4行分别连接解码芯片X1~X4引脚,4列分别连接Y1~Y4引脚。当有按键按下时,解码芯片的DA引脚向连接单片机的引脚输出高电平,同时封锁其他按键,片内锁存器将保持当前按键的4位编码。单片机与74C922的硬件连接图如图3所示[3]。
图3 单片机与74C922的硬件连接图
1.3 温度传感器模块
设计使用的TC72温度传感器是一个数字温度传感器,温度测量范围为-55~+125℃。该传感器具有一个4线串行接口,通过这个串行接口与单片机或其他外围设备进行通信,并且该TC72接口与SPI协议兼容。同时在使用TC72时不需要附加外部电路,它可以工作于连续的温度转换模式(Continuous Conversion Mode)或单次转换模式(One-Short Mode)。在连续转换模式下,TC72约每隔150 ms进行一次温度转换,并将获取的数据保存于温度寄存器中,后者在一次转化后即进入省电模式。TC72寄存器地址如表1所示。
表1 TC72寄存器地址
TC72温度传感器2 Byte温度数据寄存器格式如表2所示。
表2 TC72温度传感器2 Byte温度数据寄存器格式
1.4 LCD1602显示模块
系统中由于要对实时温度和报警温度进行显示,因而选择LCD1602显示屏作为输出器件。LCD1602字符型液晶显示屏有16条或14条引脚线,多的2条引脚线用于接背光电源正负极,平时使用较少。LCD1602可以显示两行且每行16个字即32个字符,而且LCD1602价格便宜,其外围电路的配置简单,具有较高的性价比。LCD1602内部的字符发生存储器存储了包括英文字母的大小写、常用的符号及阿拉伯数字等160个不同的点阵字符图形,其中每一个字符都对应着一个固定的代码,例如“B”的代码是01000010B(42H),显示时模块把地址42H中的点阵字符图形显示出来,这样就能够看到字母“B”。单片机与LCD1602显示屏的硬件连接如图4所示。
图4 单片机与LCD1602显示屏硬件连线图
2 软件设计
在单片机系统中,单片机之所以处于核心地位,最重要的原因在于单片机上能够运行强大的软件。因此可以说,硬件是设计的基础,软件是设计的关键。只有软硬件协调配合,应用系统才能良好的工作。
2.1 系统总流程图
流程图分析:当电源上电后,系统进行初始化,系统开始运行,启动TC72温度传感器并读取温度;若此时温度没有超出设置的报警温度,则液晶正常显示;若超出报警温度,则蜂鸣器开始报警,按ESC键可退出报警。液晶正常显示后,系统程序对键盘进行扫描,若有设置键按下,则开始对报警温度进行设置,设置完成后重新读取温度并显示。系统总流程图如图5所示。
图5 系统总流程图
2.2 键盘程序流程图
流程图分析:若有设置键按下,则进入设置温度模式;若无按键按下,则读取温度数据送入液晶屏显示。在设置模式下设置温度,完成后再送数据到液晶屏显示。键盘程序流程图如图6所示。
2.3 LCD显示程序流程图
流程图分析:首先对1602显示屏进行初始化,然后进行忙信号检查,如果BF=0,则开始读取温度并写入相应的数据进行显示;如果BF=1,则表示模块正在进行内部操作,暂时不会接收任何数据及外部指令,直到BF=0为止。LCD显示程序流程图如图7所示。
3 仿真与调试
单片机应用系统的调试主要从软件调试和硬件调试两方面入手。两种调试过程紧密相关,而并非分开或孤立的,在基于SPI接口的温度测量系统设计中,用到了AVR Studio 4+Win AVR和Proteus ISIS软件。
模拟调试:首先运行AVR Studio软件,在新建项目窗口中输入设计所用的程序,输入完成后进行编译、运行、保存。然后在Proteus ISIS软件中画出硬件电路图并进行电气规则检查;如果电路设计无误,选中单片机ATmega16并双击,在对话框中点击Program File按钮,找到经过AVR Studio软件编译生成的hex文件,载入后点击OK按钮。完成后在Proteus ISIS的Debug菜单中选择Execute,即可运行程序。
实现功能的具体方法:按高温设置键,可调整当前温度的最高值,按0~9键,输入温度最高值的大小,按Enter键完成设置;按低温设置键,可调整当前温度最低值,按0~9键,可输入温度最低值大小,按Enter键完成设置;在进行高低温设置的过程中,可使用键盘中的ESC、Backspace键进行返回和删除操作。高低温设置完成后,可通过调节TC72温度传感器上的加减键进行实时温度调节;此时,如果调节的温度超出设置的温度范围,就会产生报警。
4 结束语
设计了一种基于SPI接口的温度测量系统,介绍了如何利用AVR单片机控制TC72温度传感器的新型设计方法。该设计利用单片机C语言,以AVR单片机为控制核心,通过使用具有SPI接口功能的TC72温度传感器,实现对温度进行实时监控显示和报警功能。
[1] 朱飞.AVR单片机C语言开发入门与典型实例[M].北京:人民邮电出版社,2009.
[2]胡汉才.高档AVR单片机原理及应用[M].北京:清华大学出版社,2008.
[3] 杨正忠.AVR单片机应用开发指南及实例精解[M].北京:中国电力出版社,2008.