基于单片机实现的温度报警系统的设计与实现毕业论文.docx
- 文档编号:29018789
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:33
- 大小:886.70KB
基于单片机实现的温度报警系统的设计与实现毕业论文.docx
《基于单片机实现的温度报警系统的设计与实现毕业论文.docx》由会员分享,可在线阅读,更多相关《基于单片机实现的温度报警系统的设计与实现毕业论文.docx(33页珍藏版)》请在冰豆网上搜索。
基于单片机实现的温度报警系统的设计与实现毕业论文
1绪论
1.1温度传感器的发展现状
现代信息技术的三大基础是信息采集(即传感器技术)、信息传输和信息处理。
传感器属于信息技术的前沿尖端产品,尤其是温度传感器被广泛用于工农业生产、科学研究和生活等领域,数量高居各种传感器之首。
近百年来,温度传感器的发展大致经历了以下三个阶段:
(1)传统的分立式温度传感器(含敏感元件);
(2)模拟集成温度传感器;(3)智能温度传感器。
目前,国际上新型温度传感器正从模拟式向数字式、由集成化向智能化、网络化的方向发展。
下面简单介绍一下模拟集成温度传感器和智能温度传感器。
模拟传感器是采用硅半导体集成工艺而制成的,因此也称为硅传感器或单片集成温度传感器。
模拟集成温度传感器是在20世纪80年代问世的,它是将温度传感器集成在一个芯片上、刻完成温度测量及模拟信号输出功能的专用IC。
模拟集成温度传感器的主要特点是功能单一(仅测量温度)、测量误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。
智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的。
它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。
目前,国际上已开发出多种智能温度传感器系列产品。
智能温度传感器内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。
智能温度传感器的特点是能输出温度数据及相关的温度控制量,适配各种微处理器;并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。
进入21实际后,智能温度传感器正朝着高精度、多功能、总线标准化、高可靠性及安全性研制单片测温系统等高科技的方向迅速发展。
1.2本课题的现实意义及我的工作
随着社会的发展特别是工业的发展,人民生活的改善,安全问题变得更加重要。
目前,在许多情况下,都需要对环境的温度进行限定,其中包括人的生活工作环境、仪器设备的工作环境以及动植物的生长环境等。
如果环境温度超过限定值,必将对所处环境的人或设备造成影响,甚至给个人和社会造成巨大的损失和社会影响。
因此,在某些特定环境内使用温度报警器来对温度进行实时监控并做到超温报警,而使用单片微型计算机实时控制的温度报警系统则是其中的一种重要方式。
我主要是了解了单片微型计算机实时控制的温度报警系统的历史与现状,根据现实生活的需求以及已经掌握的理论知识,制定出单片微型计算机实时控制的温度报警系统硬件、软件的设计方案,把温度传感器这个单独的器件,配以一些其他电路,让它实现探测温度,显示温度,并且超温报警,并进行调试验证方案的可行性,最终完成设计。
2温度报警系统的功能和设计方案
2.1温度报警系统的功能与设计要求
(1)能即时从温度传感器获取精度较高的温度数值,并将数值传送至单片微型计算机(以下简称单片机)进行数值显示处理。
(2)将进行数值显示处理过的温度数据在液晶显示屏上即时显示。
对温度报警系统而言,显示现在温度是最基本的功能。
(3)能从键盘上输入需要设定的上限、下限温度。
(4)程序自动对输入的上限、下限温度进行判断。
当输入的下限温度高于上限温度时,给出错误提示。
并要求系统复位,重新输入需要设定的上下限温度。
(5)将从温度传感器上获得的温度与用户设定的上限、下限温度进行比较。
当从温度传感器上获得的温度处于用户设定的上下限温度的范围内时,不触发报警器报警;当从温度传感器上获得的温度高于用户设定的上限温度或者低于下限温度时,触发报警器报警。
(6)在温度报警系统工作过程中,随时可以对需要设定的上限、下限温度进行修改。
(7)当报警器被触发报警之后,可进行用户手动停止报警。
如果不手动停止报警,当温度回落至用户设定的上下限温度范围内时,能自动停止报警。
无需复位系统,重置上下限温度。
2.2设计方案
2.2.1微处理器
MSP430系列单片机是美国德州仪器(TI)推出的一种16位超低功耗的混合信号处理器。
它的主要特点有:
(1)超低功耗
MSP430系列单片机的电源电压采用1.8V~3.6V低电压,RAM数据保持方式下耗电仅0.1μA,活动模式耗电250μA/MIPS(MIPS:
每秒百万条指令数),I/O输入端口的漏电流最大仅50nA。
(2)强大的处理能力
MSP430系列单片机是16位单片机,采用了目前流行的精简指令集结构,一个时钟周期可以执行一条指令。
(3)系统工作稳定
上电复位后,首先由DCO_CLK启动CPU,以保证程序从正确的位置开始执行,保证晶体振荡器有足够的启祯及稳定时间。
如果晶体振荡器在用做CPU时钟MCLK时发生故障,DCO会自动启动,以保证系统正常工作。
(4)方便高效的开发环境
目前MSP430系列有OTP型、FLASH型和ROM型3种类型的器件,国内大量使用的是FLASH型。
对于FLASH型有十分方便的开发调试环境,因为器件片内有JTAG调试接口,还有可电擦写的FLASH存储器,因此采用先通过JTAG接口下载程序到FLASH内,再由JTAG接口控制程序运行、读取片内CPU状态,以及存储器内容等信息供设计者调试,整个开发(编译、调试)都可以在同一个软件集成环境中进行。
这种方式只需要一台PC机和一个JTAG调试器,而不需要专用仿真器和编程器。
而对于具体的型号,例如MSP430F147,相对于C51系列单片机而言,它具有以下突出特点:
(1)超低功耗。
MSP430系列单片机堪称世界上功耗最低的单片机
(2)体积小。
MSP430F147单片机采用LQFP封装,即薄型QFP(小型方块平面封装),尺寸仅为拇指指甲般大小。
(3)指令集相对简单。
51单片机的指令是采用的被称为“CISC”的复杂指令集,共具有111指令。
而MSP430单片机采用了精简指令集(RISC)结构,只有简洁的27条指令,还有24条无需ROM补偿的仿真指令,众多的寄存器以及片内数据存储器都可参加多种运算。
这些内核指令均为单周期指令,功能强,运行的速度快。
(4)仿真工具简单便宜。
基于以上几点,故决定采用MSP430F147作为本设计的处理器。
2.2.2温度传感器
在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。
另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。
因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案。
而在数字温度传感器中,美国Dallas半导体公司的数字化温度传感器DS1820颇具特色。
它是世界上第一片支持“一线总线”接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。
全部传感元件及转换电路集成在形如一只三极管的集成电路内。
DS18B20有两种电源供电方式:
寄生电源供电方式和外部电源供电方式。
寄生电源方式:
如图
(1)所示,在寄生电源供电方式下,DS18B20从单线信号线上汲取能量:
在信号线DQ处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。
要想使DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。
因此,图
(1)电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。
并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。
外部电源供电方式:
如图
(2),在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。
外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。
虽然比寄生电源方式多接一根VCC引线,但在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC降到3V时,依然能够保证温度量精度。
2.2.3显示电路
显示电路一般采用液晶显示或数码管显示。
虽然数码管具有亮度高、响应速度快、价格便宜等特点,但段式数码管由于内部结构,只能显示7段,而对于显示汉字,显然是无能为力的。
因此对需要显示汉字提示显示电路,采用液晶屏显示是最佳选择。
本设计考虑采用内部控制驱动器为ST7920A芯片的JCM12232F显示屏。
ST7920A点阵LCD控制/驱动芯片,可以显示字母,数字符号,中文字型及自定图形显示。
它提供两种控制接口,分别是8位并行接口及串行接口。
ST7920A的字型ROM包括8192个16X16点的中文字形及128个16X8点半宽的字母符号字形。
而且ST7920A具有低电压供电(2.7Vto5.5V),JCM12232F的工作电压为3V,很适合用MSP430F147来作处理。
2.2.4键盘电路
考虑到本设计的重点在于温度的探测和对温度的自动判别,而需要设定的上下限温度范围的频率不是很高,为精简系统和节省成本,故采用中断方式的双按键作为键盘电路。
2.2.5报警电路
当温度传感器探测到的温度超出用户设定的温度范围时,需要报警。
报警电路采用蜂鸣器为主体的电路。
3温度报警系统的硬件设计
3.1温度报警系统的硬件框图
温度报警系统的硬件框图如图(3)所示。
温度报警系统主要由单片机主电路、温度传感电路、液晶显示电路、键盘电路、报警电路、电源电路六部分电路组成。
3.2温度报警系统的电路设计
温度报警系统的电路设计具体地说有:
单片机系统时钟电路的设计、单片机系统复位电路的设计、温度传感电路的设计、液晶显示电路的设计、键盘电路的设计、报警电路的设计、电源电路的设计。
3.2.1单片机系统时钟电路的设计
MSP430F147基础时钟模块有3个时钟输入源:
分别是LFXTICLK——低频时钟源(32.768KHZ);XT2CLK——高频时钟源(8MHZ);DCOCLK——数字控制RC振荡器。
低频时钟源和高频时钟源的接法分别如图(4)的Y1和Y2。
DCO振荡器是一个可数字控制的RC振荡器,它的频率随供电电压、环境温度变化而具有一定的不稳定性。
频率和工作电压的关系如图(5)所示。
上电复位后,DCOCLK被默认使用,DCOR被复位,DCO位被设置到标称初始频率。
而且无论LFXT1或XT2CLK产生MCLK(系统主时钟)失败,DCO将被自动选择以确保系统可靠工作。
虽然DCO的频率具有一定的不确定性,但用户可以通过设置DCOCTL(DCO控制寄存器)来获得想要的频率。
因此选择DCO作为本设计的振荡器,因为是内部振荡器,故不需要外接电路。
3.2.2单片机系统复位电路的设计
(1)专用μP监控电路
专用μP监控电路又称为电源监视电路,具有上电时产生可靠复位信号和电源电压跌到“门槛值”时产生复位信号等功能。
采用专用μP监控电路作为单片机系统复位电路,虽然可以产生可靠复位信号,但电路复杂,成本高,所以并不适用。
(2)RC复位电路
本设计采用的是RC复位方式,电路如上页图(4)所示。
该复位电路实现简单,成本低,上电且开关复位。
RC复位电路的实质是一阶充放电电路。
现结合图(4)来说明这种复位电路的特点。
系统上电时该电路提供有效的复位信号(低电平)直到电容C1充电完毕,“+”极为高电平,撤销复位信号。
该复位电路为上电且开关可控复位电路。
上电后,由于电容充电,使
持续一段时间的低电平,系统复位。
当单片机已在运行之中时,按下复位按键也能使
持续一段时间的低电平,从而实现上电且开关复位的操作。
在该复位电路中,电容C1为10μF,电阻为100K。
K1为复位开关。
3.2.3温度传感电路的设计
温度传感电路是本设计的核心之一。
温度传感器采用Dallas半导体公司的数字化温度传感器DS1820。
DS18B20数字温度传感器的转换精度有9位,10位,11位,12位四种。
配置寄存器如表
(1)所示:
表
(1)DS18B20配置寄存器
各种转换精度所需时间如表
(2)所示:
DS18B20的温度数据存储在温度寄存器里,存储格式如表(3)所示:
表中S为标志位,S=0时为正数,S=1时为负数。
DS18B20的转换精度默认为12位,当转换精度设置为11位时,bit0是无定义的;当转换精度设置为10位时,bit1和bit0是无定义的;当转换精度设置为9位时,bit2、bit1和bit0是无定义的。
它具有一个非常突出的特点,就是支持“一线总线”接口,实现与单片机MSP430单线连接,外部电路简单。
电路如图(6)所示。
可以看到,DS18B20的外部电路是十分简单的。
采用外部电源供电方式,也仅仅只需要将VDD外接3.3V电压。
此外,数据线DQ端直接和MSP430F147的P5.7口相连。
3.2.4液晶显示电路的设计
液晶显示电路如图(7)所示。
液晶显示屏采用JCM12232F。
引脚8(B2)和引脚1(VSS)接电源地;引脚7(B1)、引脚6(
)和引脚2(VDD)接3.3V电源;引脚4(SCLK)接MSP430F147的P47口;引脚5(SID)接MSP430F147的P46口。
引脚3(VLCD)的功能是调整对比度,因此加上不同的电阻对比度效果不同。
本设计采用1.8K电阻。
液晶显示屏的引脚功能如表(4)所示。
3.2.5键盘电路的设计
本设计采用的是2*1键盘,由于按键的机械特性,按键在闭合或断开时会出现抖动现象,一般为5~10ms。
为保证单片机对一次键入只作一次处理,必须对按键抖动作消除处理。
消除抖动有硬件去抖和软件去抖动两种方式。
本设计采用的是软件去抖。
软件去抖的方法是调用一个延时程序后重新判断按键是否处于按下状态。
如再次确认的结果仍然处于被按下状态,则再做该键按下的相应处理。
本设计中只设置了两个功能按键,分别是温度上限调节键、温度下限调节键盘。
3.2.6报警电路的设计
报警电路如图(8)采用蜂鸣器加三极管实现。
蜂鸣器有两种,一种是自已起振的,另一种则需要振荡电路。
本设计采用的是自己起振的,只需蜂鸣器两端有偏压即可报警。
三极管基极接MSP430F147的P54口。
三极管起提高功率作用。
3.2.7电源电路的设计
由于单片机的电源电压的质量直接影响到整个单片机系统的工作,因此在设计中不能忽视电源电路的设计。
再考虑到MSP430的工作电压为3.3V左右。
因此本设计采用市面上流通量大,货源充足的普通的5V直流变压器为初级电源。
配合IC(AIC1117CY)整流成3.3V电源。
电路图如图(9)所示。
4温度报警系统的软件设计
4.1系统资源分配
在进行软件设计之前,有必要对MSP430F147的各个端口作一下了解。
表(5)MSP430F147的端口功能
MSP430F147有6个端口,如表(5)所示。
其中,端口P1和P2具有输入/输出、中断和外部模块功能。
这些功能可以通过它们各自的7个控制寄存器的设置来实现。
下面Px代表P1或P2。
1PxDIR输入/输入方向寄存器:
相互独立的8位分别定义了8个引脚的输入/输出方向。
8位在PUC后都被复位,使用输入和输出功能时,应该先定义端口的方向。
作为输入时,只能读;作为输出时,可读可写。
0为输入模式;1为输出模式。
2PxIN输入寄存器:
输入寄存器是只读寄存器。
用户不能对它写入,只能通过读取该寄存器内容知道I/O端口的输入信号。
此时引脚的方向必须选定为输入。
3PxOUT输出寄存器:
该寄存器为I/O端口的输出缓冲寄存器,在读取时输出缓存的内容与引脚方向定义无关。
改变方向寄存器的内容,输出缓冲的内容不受影响。
4PxIFG中断标志寄存器
该寄存器有8个标志位,标志相应引脚是否有待处理中断的信息。
中断标志PxIFG.0~PxIFG.7共用一个中断向量,属于多源中断。
当任一事件引起的中断进行服务时,PxIFG.0~PxIFG.7不会自动复位。
必须用软件来判定是对哪一个事件服务,并将相应的标志复位。
0为没有中断请求;1为有中断请求。
5PxIES中断触发沿选择寄存器
如果允许Px口的某个引脚中断,还需定义该引脚的中断触发方式。
该寄存器的8位分别对应Px口的8个引脚。
0为上升沿使相应标志置位;1为下降沿使相应标志置位。
只有电平跳变才能引起中断请求,而静电平不能。
6PxIE中断使能寄存器
Px口的每一个引脚都有一位用以控制该引脚是否允许中断。
0为禁止中断;1为允许中断。
7PxSEL功能选择寄存器
P1和P2两端口还具有其他片内外设功能,为减少引脚,将这些功能与芯片外的联系通过复用P1和P2引脚的方式来实现。
P1SEL和P2SEL用来选择引脚的I/O端口功能与外围模块功能。
0为选择引脚为I/O端口;1选择引脚为外围模块功能。
端口P3、P4、P5、P6没有中断能力,其余功能同P1、P2,可以实现输入/输出功能和外围模块功能。
在本设计中,各个P口的使用情况如表(6)所示:
表(6)P口定义使用
端口
功能
P1.1
用户设定温度下限
P2.0
用户设定温度上限
P4.6
液晶显示屏串行数据输入端
P4.7
液晶显示屏串行同步时钟
P5.4
蜂鸣器报警电路驱动端口
P5.7
温度传感器DS18B20与MSP430F147的通信端口
(续表(6))
4.2程序设计思想
4.2.1程序语言选择
MSP430单片机解决具体问题时可以用汇编语言或者C语言来编制程序。
汇编语言为程序员提供了直接控制目标代码的手段,而且可以对输入/输出端口进行控制,实时性能好;此外,用汇编语言编写的程序效率高,节省内存,运行速度快。
而C语言属于高级语言,接近英语自然语言和数学表达式。
用C语言进行程序设计时单片机开发与应用的必然趋势。
特别时开发复杂而时间相对紧张的项目。
因为C语言的可移植性和硬件控制能力好,表达和运算能力强,可以提高软件开发效率、执行效率,特别程序的可读性、可靠性和可移植性更是汇编语言所无法比拟的。
因此,本设计采用C语言作为程序设计语言。
4.2.2模块化程序设计思想
模块化结构程序的设计,可以使系统控制软件便于调试与优化,也使读者更好地理解和阅读系统的程序设计。
因此,采用模块化设计思想来对本温度报警系统进行软件设计。
程序模块有:
主程序、温度传感器初始化程序、LCD(液晶显示屏)初始化程序、按键中断程序、加一键处理程序。
4.3模块程序设计与分析
4.3.1主程序
主程序(MAIN):
系统复位后,首先进入主程序,在主程序中,关看门狗,初始化系统,开系统总中断;初始化LCD,显示作品信息,设置P57口为DS18B20通信端;设置循环读取DS18B20温度,在单片机内处理后显示温度数值;等待中断到来;中断结束后置标志位flag为1,当flag为1时,重复显示即时温度和文字信息;循环判断从DS18B20读取的温度是否在用户设定的温度范围内,如果超出设定范围,则驱动蜂鸣器报警电路报警。
流程图如图(10)所示:
图(10)主程序流程图
4.3.2LCD显示屏初始化
LCD液晶显示屏在使用前必须对其初始化,程序如下:
voidinitlcm(void)
{
delay();
P4DIR|=SCK;//SCK设为输出(P47口)
sendCMD(0x30);//功能设置:
一次送8位数据(基本指令集)
sendCMD(0x04);//点设定:
显示字符,光标从左到右移位,DDRAM地址加一
sendCMD(0x0f);//显示设定:
开显示,显示光标,当前显示位反白闪动sendCMD(0x01);//清DDRAM
sendCMD(0x02);//DDRAM地址归位
}
流程图如图(11)所示:
4.3.3DS18B20初始化与调用设计
单片机对DS18B20的初始化每次都要经过3个过程,这3个过程顺序不能互换,它们分别是1每一次读写之前都要对DS18B20进行复位。
2完成复位后发送一条ROM命令到DS18B20。
3最后发送一条RAM命令到DS18B20。
初始化程序如下:
voidGetTemp(void)
{
Init();//DS1820复位
Skip();//跳过64位ROM(ROM命令)
Convert();//转换(RAM命令)
DelayNus(60000);//60000x5us=0.3s
DelayNus(60000);//0.3s
DelayNus(60000);//0.3s
Init();//DS1820复位
Skip();//跳过64位ROM(ROM命令)
ReadDo();//读暂存器(RAM命令)
ReadTemp();//读取温度值
}
在对本初始化程序分析之前,先介绍本初始化程序的单元子程序。
它们分别是DS18B20复位子程序,DS18B20写程序,DS18B20读程序。
DS18B20复位子程序:
DS18B20复位时,单片机首先向DS18B20送500us的低电平,DS18B20收到电平信号后,延时16到60us,向单片机发出60~240us的存在信号。
单片机收到DS18B20发来的信号,表示复位成功。
DS18B20复位时序图如图(12)所示:
图(12)DS18B20复位时序图
DS18B20写程序:
把指定代码(8位)写到DS18B20寄存器里面去。
DS18B20读程序:
把DS18B20里的温度寄存器从低位到高位依次读出来。
介绍完DS18B20初始化的这3个单元子程序后,回过头来分析整个DS18B20初始化程序。
Init();为DS18B20复位子程序,DS18B20每一次都必须经过复位才能对它进行操作。
Skip();函数的功能是向DS18B20写代码0xcc。
在DS18B20里,指定代码0xcc是向DS18B20发出忽略64位ROM地址,直接向DS1820发温度变换的命令。
因为每一个DS18B20都有一个唯一的64为光刻码,这是为了一个系统可以同时使用多个DS18B20,并且使系统可以辨认任何一个DS18B20而设置的。
在本设计中,只用到一个DS18B20,因此无需辨认它的光刻码。
Convert();函数的功能是向DS18B20写代码0x44。
这个代码是向DS18B20发温度转换命令,进行温度转换,12位转换时最长为750ms(9位为93.75ms).结果存入内部9字节RAM中.
DelayNus(60000);函数的功能是延时0.3S,3个DelayNus(60000);函数一起就是延时了0.9S,因为默认情况下,DS18B20的转换精度为12位,所需的转换时间为750ms,即为0.75s。
设置延时0.9s,可以保证转换的完成。
至此,完成了DS18B20的一次操作,下次操作开始时,又必须对其进行复位即Init();,再经过Skip();忽略64位ROM地址,直接向DS1820发温度变换的命令,执行ReadDo();。
ReadDo();函数的功能是向DS18B20写代码0xBE。
这个代码是读内部RAM中9字节
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 实现 温度 报警 系统 设计 毕业论文