资源描述
. . 信息职业技术学院毕业设计报告(论文)系 别:班 级:学 生 姓 名:学 生 学 号:设计(论文)题目: 基于Proteus的温度检测 与报警的仿真设计 指 导 教 师:起 讫 日 期:2012.9.32012.11.16信息职业技术学院毕业设计(论文)成绩评定表学生系部学号课题名称基于Proteus的温度检测与报警的仿真设计指导教师评语:建议成绩: 指导教师:年月日评阅教师评语:建议成绩:评阅教师: 年月日答辩小组评语:建议成绩: 答辩小组负责人:年月日信息职业技术学院毕业设计(论文)任务书专业学号课题名称:基于Proteus的温度检测与报警的仿真设计主要技术指标:(1)温度测量工作围:085;(2)检测分辨率1;(3)键盘是采用拨动开关,实现温度设定围为:085;(4)给定温度用1位LCD用动态或静态扫描技术显示;(5)实际温度用1位LCD用动态或静态扫描技术显示; (6)当温度超出设温度置时蜂鸣器进行自动报警。工作容和要求:(1)阅相关资料熟悉温度控制与报警器相关知识,进行方案设计;(2)根据设计方案进行电路设计并绘制出相应电原理图;(3)根据硬件设计程序;(4)通过Proteus软件对设计方案进行电路功能仿真调试;(5)根据设计,完成毕业论文;(6)准备答辩.主要参考文献:1 曾屹,楚武单片机原理与应用S中南大学,2009:18-327.2 楼然苗,光飞单片机课程设计指导M航空航天大学,2007:55-73.3 周润景,丽娜基于Proteus的电路与单片机系统设计与仿真M航空航天大学,2006:3-3364 周润景,映群Proteus入门实用教程M机械工业,2007:267-3325 永枫单片机应用实训教程S.电子科技大学,2005:107-2676 肖洪兵,胡辉,郭速学跟我学单片机S航空航天大学,2002:192-218.学 生(签名) 2012年9月 10日指 导 教师(签名) 2012年9月 10日教研室主任(签名) 2012年9月 10日系 主 任(签名) 2012年9月 10日信息职业技术学院毕业设计(论文)开题报告专业学号设计(论文)题目基于Proteus的温度检测与报警的仿真设计1 选题的背景和意义: 温度是一种最基本的环境参数,人民的生活环境与温度息息相关,因此研究温度的测量方法和装置具有重要意义, 蔬菜的生长与温度息息相关,对于蔬菜大棚来说,最重要的一个管理因素是温度控制。温度太低,蔬菜就会被冻死或则停止生长,所以要将温度始终控制在适合蔬菜生长的围。如果仅靠人工控制既耗人力,又容易发生错误。为此 ,在现代化的蔬菜大棚管理常有温度自动控制系统,以控制蔬菜大棚温度,适应生产需要。 本文将介绍智能集成温度传感器DS18B20的结构特征与控制方法。以与用单片机STC89C51的编程实现温度测量。2.课题研究的主要容:本数字温度计设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,其温度值可以直接被读出来,通过核心器件单片机AT89C51控制温度的显示,用1602LCD液晶模块显示显示。温度检测与报警系统包括主控制器AT89C51、温度传感器DS18B20、报警电路、单片机复位电路与LCD液晶模块显示电路。本文是以单片机AT89C51为核心进行设计。通过DALLAS公司的单总线数字温度传感器DS18B20来实现环境温度的采集和A/D转换。其输出温度采用数字显示,用LED液晶显示以串口传送数据,实现温度显示,能准确达到以上要求。、此温度计属于多功能温度计可以用来测量环境温度,还可以设置上下报警温度,当温度不在设置围时,可以报警。3.课题研究的方法论述:(1)查阅书籍,进行总体理论分析与设计。(2)硬件设计(画出电路仿真图) 。(3)软件设计(运用C语言编写相关的程序)。(4)用PROTEUS软件完成温度检测与报警控制软硬件调试。四、设计(论文)进度安排:时间(迄止)日期工作容2012. 9.3 - 2012. 9.7查找资料确立选题2012. 9.8-2012.9.12完成开题报告2012.9.13-2012.10.25绘制原理图,编写程序2012.10.26-2012.11.13撰写论文2012.11.14毕业设计答辩2012.11.142012.11.18根据答辩小组和指导老师意见修改论文,力争在容和格式上符合毕业设计规要求。五、指导教师意见:题目难度适中,设计目标明确、方法得当,安排进度合理,允许开题。指导教师签名:年月日六、系部意见 同意开题系主任签名:年月日信息职业技术学院毕业设计(论文)中期检查表学生学号指导教师选题情况课题名称基于Proteus的温度检测与报警的仿真设计难易程度偏难适中偏易工作量较大适中较小符合规化的要求任务书有无开题报告有无外文翻译质量优良中差学习态度、出勤情况好一般差工作进度快按计划进行慢中期工作汇报与解答问题情况该学生了解设计容的安排,仔细研究了设计方案,认真进行毕业课题仿真设计,并完成论文初稿,积极查阅资料,多次主动虚心求教,通过本次设计可以看出该同学做事认真,积极投入,解答问题很有见解,对问题的分析比较透彻,课题正按计划进行。 指导教师年月日所在专业意见: 继续进行系主任年月日26 / 34基于Proteus的温度检测与报警的仿真设计摘要:温度是与人们生活息息相关的环境参数,许多情况下都学要进行温度测量与报警,温度测量报警系统在现代日常生活.科研.工农生产中已经得到了越来越广泛的应用。所以对温度的测量报警方法与设备的研究也变得极其重要。随着人们生活的不断提高以与应对各种复杂测量环境的需要,我们对温度测量报警的要求也越来越高,利用单片机来实现这些控制无疑使人们追求的目标之一,它带给我们的方便时不可否定的,其中温度检测报警器就是一个典型的例子。要为现代人工作,科研,生活,提供更好的设施,就需要从单片机技术入手,向数字化,智能化控制方向发展。本设计所介绍的温度报警器,可以设置上下限报警温度,当温度不在设置围时,可以报警。与传统温度测量系统相比,本设计中的数字温度测量报警系统具有很多前者没有的优点,如测温围广而且准确,采用LED数字显示,读数方便等。关键词:单片机,温度检测,AT89C51,DS18B20目录1 绪论11.1 课题背景12系统的具体设计23 硬件电路设计33.1 单片机主控设计33.1.1主要特性43.1.2系统时钟电路53.1.3 复位电路53.2 温度信号采集设计63.2.1 DS18B20的特性73.2.2 DS18B20的测温原理83.2.3 DS18B20与单片机接口电路93.4 按键电路设计113.5报警电路设计124 温度控制系统的软件设计124.1主程序设计134.3 温度采集设计144.4 温度显示设计164.5 按键开关设计174.6温度处理与蜂鸣器报警设计195 温度检测系统调试仿真19致23附录251 绪 论1.1 课题背景随着新技术的不断开发与应用,近年来单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机的应用已经渗透到电力、冶金、化工、建材、食品、石油等各个行业。传统的温度采集方法不仅费时费力,而且精度差,单片机的出现使得温度的采集和数据处理问题能够得到很好的解决。温度是工业对象中的一个重要的被控参数。然而所采用的测温元件和测量方法也不相同:产品的工艺不用,控制温度的精度也不相同。因此对数据采集的精度忽然采用的控制方法也不相同。传统的控制方式以不能满足高精度、高速度的控制要求,如温度控制表温度接触器,其主要缺点是温度波动围大,由于他主要通过控制接触器的通断时间比例来达到改变加热功率的目的,受仪表本身误差和交流接触器的寿命限制,通断频率很低。近几年来快速发展了多种先进的温度控制方式。这些控制技术大大的提高了控制精度,不但使控制变得简便,而且使产品的质量更好,降低了产品的成本,提高了生产效率。温度是一个永恒的话题和人们生活环境有着密切关系的物理量,、科研、生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一。温度的变化会给我们的生活、工作、生产等带来重大影响,因此对温度的测量与控制至关重要。其测量控制一般使用各式各样形态的温度传感器。随着现代计算机和自动化技术的发展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日显突出,已成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具,其用途已遍与工农业生产和日常生活的各个领域。尽管现在以微机为核心的可编程数据采集与处理采集技术的发展方向得到了迅速的发展,而且组成一个数据采集系统只需要一块数据采集卡,把它插在微机的扩展槽并辅以应用软件,就能实现数据采集功能,但这并不会对基于单片机为核心的数据采集系统产生影响。相较于数据采集板卡成本和功能的限制,单片机具多功能、高效率、高性能、低电压、低功耗、低价格等优点,这就使得以单片机为核心的数据采集系统在许多领域得到了广泛的应用。2 系统的具体设计本系统的温度检测有两套方案,两种都能够对温度进行测量,第一中是采用AD590,使用AD590作为温度传感器,需要进行电流电压变换,电压放大以与A/D转换。第二种是采用DS18B20作为温度传感器进行温度测量。DS18B20可以满足从-55摄氏度到+125摄氏度测量围,在一秒把温度转化成数字,测得的温度值的存储在两个八位的RAM中,单片机直接从中读出数据转换成十进制就是温度,使用方便。另外采用外加电源供电对DS18B20的VDD引脚供电。它的好处是无须MOSFET,而且在温度转换期间总线可自由搭载其它器件。它试用于对性能要求不高成本严格控制的应用,是经济型产品。它具有线性好、精度适中、灵敏度高、体积小和使用方便等优点,得到广泛应用。因为AD590需要模拟转数字电路,精确度低,测温点数少对线阻有要求,电路繁多,成本也较高,故本系统采用方案二。在系统的总体设计方案中,我们采用AT89C51单片机作为控制核心对温度传感器DS18B20控制,读取温度信号并进行计算处理,并送到液晶显示器LCD1602显示。 按照系统设计功能的要求,温度检测计总体电路结构框图如图2.1所示,确定系统由4个模块组成:单片机主控制模块、蜂鸣器报警模块、温度测量模块和液晶显示模块。AT89C51单片机最小系统按键设置温度LCD显示报警电路DS18B20传感器图2.1温度检测与报警总体设计框图3 硬件电路设计本课程设计的多点测温系统是以单片机和单总线数字温度传感器DS18B20为核心,充分利用单片机优越的部和外部资源与智能温度传感器DS18B20的优越性能构成一个完备的测温系统,实现对温度的多点测量。整个系统由单片机控制,能够接收传感器的温度数据并显示出来,可以从键盘输入命令,系统根据命令,选择对应的温度传感器,并由驱动电路驱动温度显示。本课程设计了一种合理、可行的单片机监控软件,完成测量和显示的任务。由于单片机具有强大的运算和控制功能,使得整个系统具有模块化、硬件电路简单以与操作方便等优点。 本课题的整个系统是由单片机、显示电路、键盘电路、声光报警电路等构成。3.1 单片机主控设计主控制单元是单片机选用市场上常见的美国ATMEL公司的AT89C51作为控制元件,以下是一些AT89C51的介绍,AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C51是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51 提供以下标准功能:4k 字节Flash闪速存储器,128字节部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片振荡器与时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口与中断系统中断系统继续工作。掉电方式保存RAM中的容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.1.1主要特性-与MCS-51 兼容 -4K字节可编程闪烁存储器 -寿命:1000写/擦循环 -数据保留时间:10年 -全静态工作:0Hz-24MHz -三级程序存储器锁定 -1288位部RAM -32可编程I/O线 -两个16位定时器/计数器 -5个中断源 -可编程串行通道 -低功耗的闲置和掉电模式 -片振荡器和时钟电路3.1.2系统时钟电路单片机部具有一个高增益反相放大器,用于构成振荡器。通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,系统时钟电路结构如图3.1所示,可以根据情况选择6MHz、8MHz或12MHz等频率的石英晶体,补偿电容通常选择20-30pF左右的瓷片电容。图3.1 时钟电路3.1.3 复位电路单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。复位电路结构如图3.2所示。上电自动复位通过电容C3充电来实现。手动按键复位是通过按键将电阻R2与VCC接通来实现。图3.2复位电路3.2 温度信号采集设计如图3.3美国Dallas半导体公司的数字化温度传感器DS18B20是世界上第一片支持 “一线总线”接口的温度传感器,在其部使用了在板(ON-B0ARD)专利技术。全部传感元件与转换电路集成在形如一只三极管的集成电路。“一线总线”独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS18B20体积更小、更经济、更灵活,使你可以充分发挥“一线总线”的优点。 同DS18B20一样,DS18B20也支持“一线总线”接口,测量温度围在-10+85C围,精度为0.5C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V5.5V的电压围,使系统设计更灵活、方便,而且新一代产品更便宜,体积更小。图 3.3 DS18B20对于温度的采集需要用到DS18B20一总线温度传感器,以下DS18B20的一些介绍:DSl8B20温度传感器是美国DALLAS半导体公司继DSl820之后最新推出的只用改进型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据要求通过简单的编程实现9l2位的数字直读方式。可以分别存93.75ms和750ms完成9位和12位的数字量,并且从DSl8B20读出的信息或写入DSl8B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接DSl8B20供电,而无需额外电源。因而使用DSl8B20可使系统结构更趋简单,可靠性更高。他在测温精度,转换时时间,传输距离,分辨率等方面较DSl820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。DSl8B20采用3脚PR35封装或8脚SOIC封装。 DS18B20的测温流程如以下图3.4 DS18B20测温流程。初始化DS18B20跳过ROM匹配温度变换延时1SLED液晶显示转换成显示吗读暂存器跳过ROM匹配图3.4 DS18B20测温流程3.2.1 DS18B20的特性(1)适应电压围更宽,电压围:3.05.5V,寄生电源方式下可由数据线供。 (2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 (3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。 (4)DS18B20在使用中不需要任何外围元件,全部传感元件与转换电路集成在形如一只三极管的集成电路。 (5)温围085,在0+85时精度为0.5。 (6)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。 (7)在9位分辨率时最多在93.75ms把温度转换为数字,12位分辨率时最多在750ms把温度值转换为数字,速度更快。 (8)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。 (9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。3.2.2 DS18B20的测温原理DS18B20的测温原理如图3.5所示,图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2 计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。 DS18B20在正常使用时的测温分辨率为0.5,如果要更高的精度,则在对DS18B20测温原理进行详细分析的基础上,采取直接读取DS18B20部暂存寄存器的方法,将DS18B20的测温分辨率提高到0.10.01。 图3.5 DS18B20测温原理图3.2.3 DS18B20与单片机接口电路P3.7口和DS18B20的引脚DQ连接,作为单一数据线。U4即为温度传感芯片DS18B20,本设计虽然只使用了一片DS18B20,但由于不存在远程温度测量的考虑,所以为了简单起见,采用外部供电的方式,如图3.6所示。测温电缆采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一对接VCC和地线,屏蔽层在电源端单点接地。图 3.6 DS18B20与单片机接口电路3.3液晶显示屏输出如以下图3.7LCD液晶显示,液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。图 3.7LCD液晶显示 液晶显示器各种图形的显示原理 :点阵图形式液晶由MN个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示RAM区1024字节相对应,每一字节的容和显示屏上相应位置的亮暗对应。这就是LCD显示的基本原理。用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号与每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5右边为2、4、6根据在LCD上开始显示的行列号与每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节直到32B显示完就可以LCD上得到一个完整汉字,字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以太阳人电子的1602字符型液晶显示器介绍其用法。LCD1602主要技术参数: 显示容量:162个字符; 芯片工作电压:4.55.5V ;工作电流:2.0mA(5.0V); 模块最正确工作电压:5.0V; 字符尺寸:2.954.35(WH)mm,1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3.1 。表3.1 1602LCD 引脚接口说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极3.4 按键电路设计采用独立按键接口,这种方式是各种按键相互独立,每个按键接一根输入线,一根输入线按键的工作状态不会影响其他输入线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下。独立式按键电路配置灵活,软件简单。但每个按键需要占用一根输入口线,在按键数量较多时,需要较多的输入口线且电路结构复杂,故此种键盘用于按键较少或操作速度较高的场合。独立式按键电路按键直接与单片机的I/O口连接,通过读I/O口,判定每个I/O口的电平状态,即可识别按下的键。由于只有四个按键,因此按键接口电路的设计比较简单,单片机P1.4和P1.7端口设定为输入状态,平时通过电阻上拉到Vcc,按键按下时,对应的端口的电平被拉到低电平,如以下图3.4所示。这样就可以通过查询有无外部中断来判断有没有按键按下,按键各接一根输入线,一根输入线的按键工作状态不会影响其他输入线上的工作状态。通过部判断是否产生外部中断,即可识别按下的键。2个按键定义如下:P1.4:报警温度键,按此键则显示设定的报警温度值。P1.7:正常温度键,按此键则显示设定的正常温度值。图 3.4 按键电路的仿真3.5报警电路设计本设计采用软件处理报警,利用有源蜂鸣器进行报警输出,采用直流供电。当所测温度超过获低于所预设的温度时,数据口相应拉高电平,报警输出。报警电路硬件连接见图 3.5。(也可采用发光二级管报警电路,如过需要报警,则只需将相应位置1,当参数判断完毕后,再看报警模型单元ALARM 的容是否与预设一样,如不一样,则发光报警)图.3.5报警电路设计4 温度控制系统的软件设计整个系统需要对每一个硬件模块进行软件设计。在这一章,主要针对每个硬件电路模块编程,然后进行系统的整合,最后输入到控制处理器中实现所有设计功能。4.1主程序设计根据设计要求,首先要确定软件设计方案,即确定该软件应该完成那些功能;其次是规划为了完成这些功能需要分成多少个功能模块,以与每一个程序模块的具体任务是什么。一般划分模块应遵循下述原则:(1)每个模块都应具有独立的功能,能产生一个明确直观的结果 。(2)模块长度要适中。模块太长时,分析和调试比较困难,失去了模块化程序结构的优越性;模块太短则信息交换太频繁,也不适宜。(3)每个模块之间的控制参数应尽量简单,数据参数应尽量少。控制参数是指模块进入开始运行和退出停止运行的条件与方式,数据参数是指模块间的信息交换方式、交换量的多少与交换的频率。该系统的软件由五大模块组成:主程序模块、温度采集模块、报警与加热电路模块、温度显示模块、键盘扫描模块。下面将对这几个模块具体阐述,相对应的C语言程序语言详见附录。主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,其程序流程见图4.1所示,温度测量每1s进行一次。这样可以在一秒之测量一次被测温度。NY开始初始化初始化命令设置温度发送ROM命令读取温度值温度是否在设定范围报警调用LCD液晶显示图 4.1 软件流程总设计框图计算机基本的被独立提供出来的程序,它能够调用子程序,而不被任何子程序所调用,它是计算机程序的中心部分。主程序的设计容一般包括:主程序的起始地址,中断服务程序的起始地址,有关存储单元与相关部件的初始化和一些子程序调用等等。主程序模块的主要容是对整个系统进行初始化,并且包含调用子程序。在本课题研究的系统中,主程序主要为两个部分:第一个是对系统初始化,如打开相关中断,设置相关引脚的电平信号以与设置初始实际温度和设定温度的数值 。4.3 温度采集设计温度采集子程序主要是实现对温度的采集与对温度数据进行处理传回给单片机在进行显示。本系统用的DS18B20温度传感器要进行温度检测就需要对它进行初始化、写指令操作,读数据操作以与读温度前的准备工作等。因此温度采集子程序又由对DS18B20温度传感器的初始化子程序、写指令子程序、读数据子程序、读温度数据前的准备子程序组成。温度采集程序图4.2所示。a该模块主要对温度传感器DS18B20的操作,主要包括以下几个容:(1) 先将数据线置高电平“1”;(2) 延时;(3) 数据线拉到低电平“0”;(4) 延时;(5) 数据线拉到高电平“1”;(6) 延时等待(如果初始化成功则在15到60毫秒时间之产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制);(7) 若CPU读到了数据线上的低电平“0”后,还要做延时;(8) 将数据线再次拉高到高电平“1”后完毕。b、DS18B20的写操作 (1) 数据线先置低电平“0”;(2) 延时;(3) 按从低位到高位的顺序发送字节(一次只发送一位);(4) 延时;(5) 将数据线拉到高电平;(6) 重复上1到6的操作直到所有的字节全部发送完为止;(7) 最后将数据线拉高。c、DS18B20的读操作 (1)将数据线拉高“1”;(2)延时;(3)将数据线拉低“0”;(4)延时;(5)将数据线拉高“1”;(6)延时;(7)读数据线的状态得到1个状态位,并进行数据处理;发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验图4.2温度采集9字节完?CRC校验正移入温度暂存器返回NNYY(8)延时。4.4 温度显示设计显示子程序主要功用是将传感器测得的温度值显示出来,写数据以与初始化的流程图如图4.3和4.4所示根据时序图LCD液晶显示器的写指令。本系统用的是LCD液晶显示器,而LCD液晶显示器要显示出数据在之前需要对液晶显示器进行初始化,写指令,写数据等操作因为本系统液晶显示器只写不读,所以没有附加读操作的时序图。所以R/W管脚一直处于低电平,在硬件中就直接接地,在软件中就不用操作此管脚的信号了,就只需要控制RS和E管脚就可以了。写入指令06H地址指针加一,光标加一图4.3LCD液晶显示器写指令操作流程图完毕哦将E管脚电平拉低将E管脚电平拉高延时5ms向D0-D7管脚写入指令代码将RS管脚电平拉低开始哦延时5ms图4.4LCD液晶显示器初始化流程图写入指令0CH开不显示光标将E管脚电平拉低开始哦写入指令38H写入指令01H清屏4.5 按键开关设计按键处理程序通过扫描按键情况,读取键值。主要完成各点温度传感器上下限报警参数设置和显示模式设置。(1)通过扫描键盘读取键值,流程图如图4.5所示。键盘扫描有键闭合延时去键抖动扫描键盘找到闭合键计算键值闭合键释放建立有效标志返回建立无效标志NNNYYY图4,.5键盘扫描流程(2)设置报警上、下限值DS18B20设有温度上下限报警功能。DSl8B20的存储器由两部分组成:一个是9字节的静态RAM,其中第0和第1字节用于存储16位的温度转换值,第2(高温限TH)和第3字节(低温限TL)作为温度报警限值或通用存储器单元供用户使用;另一个是非易失性的EPROM。当静态RAM作为温度报警限值使用时,可以在系统安装和工作前,用写RAM命令4EH将高温限TH和低温限TL写入第2和第3字节单元。由于静态RAM掉电后信息即丢失,因此需要再通过拷贝RAM命令48H将第2和第3字节单元的温度报警限值拷贝到EPROM中。主程序只要在初始化部分使用重调EPROM命令B8H,就可以将EPROM中的温度报警限值重新拷贝到静态RAM中。 读取DDRAM或CGRAM中的容。4.6温度处理与蜂鸣器报警设计蜂鸣器报警在本系统中由单片机的P3.7管脚电平的高低来控制蜂鸣器报警。单片机的P3.7管脚低电平蜂鸣器报警,单片机的P3.7管脚高电平蜂鸣器不报警。通过对读到并且进行了数据处理的温度值进行判断是否大于或者小于某一报警值而进行报警,直到读到的温度值不在报警温度值之中就停止报警。本系统以大于85小于0蜂鸣器报警为例,蜂鸣器的正极性的一端联接到5V电源上面,另一端联接到三极管的集电极,三极管的基级由单片机的P3,7管脚通过一个与非门来控制,当P3.7管脚为低时,与非门输出高电平,三极管导通,这样蜂鸣器的电流形成回路,发出声音。当P3.7管脚为高时,与非门输出低电平,三极管截止,蜂鸣器不发出声音。在这里与非门是作为非门来用的,这里采用一个非门的作用是为了防止系统上电时峰鸣器发出声音,以为系统复位以后,I/O口输出的是高电平。 用户可以通过程序控制P3.7管脚的置低和置高来使蜂鸣器发出声音和关闭。 蜂鸣器的声音大小与音调可以通过调整P3.7管脚的置高时间与输出的波形进行控制,这一点可以在调试程序的时候来试验。发光二极管它是半导体二极管的一种,可以把电能转化成光能;常简写为LCD。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。常用的是发红光、绿光或黄光的二极管光。报警电路采用发光二极管与单片机相连接,且需要接上拉电阻,起到限流作用,通过改变单片机P3.7口的电位,就可以达到控制二极管的目的。声报警电路采用蜂鸣器与单片机相连接,蜂鸣器要用三极管驱动,通过改变单片机P3.7口的电位,就可以达到控制蜂鸣器的目的。5 温度检测系统调试仿真整个温度检测系统的设计包括硬件设计和软件设计。这一章的主要容是将硬件设计部分和软件设计部分连接起来通过Proteus软件进行仿真,将系统的设计功能通过仿真模拟表达出直观的效果。Proteus软件是一种低投资的电子设计自动化软件,提供可仿真数字和模拟、交流和直流等数千种元器件和多达30多个元件库。Proteus软件提供多种现实存在的虚拟仪器仪表。此外,Proteus还提供图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗,尽可能减少仪器对测量结果的影响,Proteus软件提供丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。提供Schematic Drawing、SPICE仿真与PCB设计功能,同时可以仿真单片机和周边设备,可以仿真51系列、AVR、PIC等常用的MCU,并提供周边设备的仿真,例如373、led、示波器等。Proteus提供了大量的元件库,有RAM、ROM、键盘、马达、LED、LCD、AD/DA、部分SPI器件、部分IIC器件,编译方面支持Keil和MPLAB等编译器。整体电路仿真5.1所示,整机的调试与测试,首先是测试显示电路的正确性,根据硬件写好一段显示程序,写入单片机中。安装好硬件,上电,显示正常,达到预期效果。证明显示电路正常。按下复位按键,LED无显示,松开,显示正常,证明复位电路正常。 然后测试得到温度程序,将初始化程序,DS18B20正常工作的初始化程序、写DS18B20程序、读DS18B20程序,得到温度子程序,温度转换子程序,数据转换子程序,显示子程序正确编排后写入单片机中,上电,显示不正常。重新读取源程序,经检查后发现问题在于DS18B20初始化程序有错,修改后重新编译并写入单片机。上电后,显示当前温度。证明温度传感器DS18B20工作正常,各部分子程序运行正常。 最后是按键子程序与报警子程序的调试,将按键子程序与报警子程序与上述程序正确编排后,写入单片机中,上电后,各个部分工作正常,在测得当前温度超出设定温度上下限后,蜂鸣器发出报警声,调试基本成功。但后来发现,按键要在按下1S后才反应,再次研读程序发现原因在于按键程序采用扫描方式,程序每执行一遍才扫描按键一次。进而到考虑采用中断方式解决此问题,但因为DS18B20正常工作有严格的时序限制,否则不能正常工作,而中断则在很大可能上会影响到DS18B20正常工作。在尝试并采用中断方式却失败后,决定仍采用扫描方式。后来仔细排查发现按键反应迟缓是由于显示程序占用时间过长造成的,修改显示程序并且在主程序和按键子程序中增加调用显示程序的次数,问题得以解决。至此,此次设计的调试部分完成。设计的所有功能全部得以实现。一开始老师给我们加的功能让我们很为难,不知道怎么编所以我们都想推辞掉,不过在编写这些子程序的过程中慢慢的感觉很有趣,反而觉得挺简单的还是,但也会碰到很多问题,比如说显示温度上下限的时候一开始无法显示数字出来的是乱码,重新编写后又变成了日文,后来看了参考书后,最后用了一个0到9的数组,要显示的数字从数组中取得,这样就好了,终于能显示出来了,但是发现它无法记时改变数字,要重新按键才会显示新的上下限温度,后来发现时键盘处理中有点问题,这个我们花了好久才解决的,就是把去掉一个按键处理,把它用if语句独立出来,这样后就能记时改变温度,还有一个问题是我们发现在报警时我们无法改变其温度上下限和其他按键,也就是报警时按键无效了,后来知道了我们的报警程序是用while组成,所以报警时一直在while语句中做循环,按键当然无效,这个的解决方法马上就能想到了,就是在while语句中再加入读取键盘值和键盘值处理的子程序就ok了。其他别的小问题什么的我们组最后都很好的与时的解决了,这次的设计我们组觉得还是比较成功的,做出了比预期更好的设计来。图5.1整体电路仿真(高温报警状态)通过上述仿真,实现了系统设置温度的检测与报警功能。当温度低于设定温度时系统发出低温报警,当温度高于设定温度时则发出高温报警信号。软件和硬件部分系统整合后,通过系统仿真实现了温度检测与报警系统的各项设计功能。结 论经过近三个月的学习设计,我学到了很多新的知识,培养和锻炼了我的创新能力和实际操作的能力,在毕业设计过程中给我最大的感受就是理论上和实际应用是有很大的差距的,只有在实践中检验理论的时候,自己才会认识到很多的问题。像在之前的单片机的C语言学习中感觉挺简单,但是要把这些程序组织起来设计成一个系统的程序还是有难度的,也只有在实践中自己才能认识到很多问题,才能更深刻的认识到理论中的一些基本问题,也才能发现自己身上的不足和很多未知的新问题。软件方面采用模块化编程,提高了通用性,思路也比较清晰,使整个系统的程序简洁很多,并且可移植性较强。设计中使用的MCS-51单片机,体积小,重量轻,抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好。本设计的温度控制检测和报警系统,只是单片机广泛应用于各行各业中比较简单的一例。使用的DS18B20温度传感器具有微型化、低功耗、高性能、抗干拢能力强、易配微处理器等优点,特别适合于构成多点温度测控系统,可直接将温度转化成串行数字信号供微机处理。从DS18S20读出或写入DS18S20信息仅需要一根口线,其读写与温度变换功率来源于数据总线,该总线本身也可以向所挂接的DS18S20供电,而无需额处电源。在这次设计过程中,表达出自己单独设计的能力以与综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。致 首先非常感学校给我们这个机会,让我们有一个动手的机会,让我们得到实践的机会。本设计论文在信息职业技术学院电子与通信工程系的庄乾成老师的悉心栽培和精心指导下完成的,经过此次毕业设计,我即巩固了已学过的专业知识,又学到了许多新知识。在此非常感我们的指导老师,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次综合设计的每个细节,都离不开老师您的细心指导。而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次综合设计。 同时感对我帮助过的同学们,你们对我的帮助和支持,让我感受到同学的友谊。经过此次的毕业设计,我受益非浅,也翻阅了大量的书籍和浏览了无数的网页。这次的设计是我的一次实践,也刚刚打开科技的大门,今后我还想拥有更多的机会去实践,让我得到更多的锻炼!由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我十分乐意承受你们的批评与指正,本人将万分感。参考文献1 曾屹,楚武单片机原理与应用S中南大学,2009:18-327.2 楼然苗,光飞单片机课程设计指导M航空航天大学,2007:55-73.3 周润景,丽娜基于proteus的电路与单片机系统设计与仿真M航空航天大学,2006:3-3364 周润景,映群Proteus入门实用教程M机械工业,2007:267-3325 永枫单片机应用实训教程S.电子科技大学,2005:107-2676 肖洪兵,胡辉,郭速学跟我学单片机S航空航天大学,2002:192-218.7 晓安. MCS-51单片机原理与应用Z. :大学,2001:66-120.8 周航慈. 单片机应用程序设计技术M.航空航天大学,1991:05-100.9 余锡存,.单片机原理与接口技术S.电子科技大学,2002:20-86.附 录附录1:系统软件设计的源程序#include ds18b20.h#include 1602.h#include Key.huchar temp;uchar a,b;uchar x;uchar baojing_flag,xianzai_flag;uchar const table=temperature-;uchar const table1=baojingT-;uchar i;uchar fu_flag;void main() P3=0;init();/init_ds18b20();while(1)key_in();/x=init_ds18b20();if (baojing_flag=1)write_(0x80);for (i=0;i=85)&(temp0) & (temp128) led2=1; led1=0;sp=1;/ delay_50ms(1);/ sp=0;/ delay_50ms(1);/ sp=1; if (temp128) temp=256-temp;fu_flag=1; else fu_flag=0;write_(0x80);for (i=0;i16;i+)write_data(tablei);write_(0x80+0x40);write_data( );write_data( );if (fu_flag=1)write_data(-);write_data(0x30+temp/100);write_data(0x30+temp%100/10);write_data(0x30+temp%10);write_data( );write_data(C);write_data( );write_data( );write_data( );write_data( );write_data( );write_data( );write_data( );write_data( );write_data( ); delay_50ms(1);
展开阅读全文