《基于单片机的数字温度计及其报警系统毕业论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的数字温度计及其报警系统毕业论文.doc(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、湖 南 科 技 大 学毕 业 设 计( 论 文 )题目基于单片机的数字温度计及其报警系统作者 学院物理学院专业电子信息科学与技术学号指导教师二一二 年 五 月 二十七 日湖 南 科 技 大 学毕业设计(论文)任务书 物理学 院 电子 系(教研室)系(教研室)主任: (签名) 年 月 日学生姓名: 学号: 专业: 电子信息科学与技术 1 设计(论文)题目及专题: 基于单片机的数字温度计及其报警系统 2 学生设计(论文)时间:自 2012 年 3 月 18 日开始至 2012 年 5 月 28 日止3 设计(论文)所用资源和参考资料:1 张毅刚、彭喜元.单片机原理与应用设计M.北京:电子工业出版社
2、,2008.4.2 郭天祥.新概念51单片机C语言教程M.北京:电子工业出版社,2009.1.3 康华光.电子技术基础模拟部分M.北京:高等教育出版社,2006.1.4 设计(论文)应完成的主要内容:1、讲述系统测温方式及原理2、设计硬件系统3、设计软件系统5 提交设计(论文)形式(设计说明与图纸或论文等)及要求:论文要求格式正确,调理清晰,严格按照湖南科技大学论文格式要求撰写并提交论文6 发题时间: 2011 年 12 月 28 日指导教师: (签名)学 生: (签名)湖 南 科 技 大 学毕业设计(论文)指导人评语主要对学生毕业设计(论文)的工作态度,研究内容与方法,工作量,文献应用,创新
3、性,实用性,科学性,文本(图纸)规范程度,存在的不足等进行综合评价在为期五个月的毕业设计中,该同学能在老师的要求下顺利完成整个毕业设计工作和论文的撰写。论文内容能准确地描述和论证系统的工作过程和实现原理,且做出了系统实物。系统能正常地工作,在各种测试条件下能顺利完成测试目标。该设计具有一定的创新性,能实时地设置温度范围并能把范围值存储在EEPROM中,从而使设置值掉电不丢失。根据系统实物的测试结果,该系统能实时地显示目标的温度值,并且能在温度超出所设范围时进行温度控制处理及报警,具有比较强的实用性,较好地解决了现实生产生活工作中对该内容的需求。在整个毕业设计的过程中,该同学态度很端正,学习比较
4、认真,在遇到难题时积极地请教老师同学以及查阅相关资料,时间的安排也很合理,能基本在每个阶段完成相应的任务。论文论述紧扣主题,语言表达流畅,格式符合规范要求;建议评为良好。指导人: (签名)年 月 日 指导人评定成绩: 良 湖 南 科 技 大 学毕业设计(论文)评阅人评语主要对学生毕业设计(论文)的文本格式、图纸规范程度,工作量,研究内容与方法,实用性与科学性,结论和存在的不足等进行综合评价评阅人: (签名)年 月 日 评阅人评定成绩: 湖 南 科 技 大 学毕业设计(论文)答辩记录日期: 学生: 学号: 班级: 题目: 提交毕业设计(论文)答辩委员会下列材料:1 设计(论文)说明书共页2 设计
5、(论文)图 纸共页3 指导人、评阅人评语共页毕业设计(论文)答辩委员会评语:主要对学生毕业设计(论文)的研究思路,设计(论文)质量,文本图纸规范程度和对设计(论文)的介绍,回答问题情况等进行综合评价答辩委员会主任: (签名)委员: (签名)(签名)(签名)(签名) 答辩成绩: 总评成绩: 摘 要随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流。温度传感器DS18B20具有性能稳定、灵敏度高、抗干扰能力强、使用方便等优点,广泛应用于冰箱、空调器、粮仓等日常生活中温度的测量和控制。本文采用51单片机来实现对温度的测量和报警。它的主要组成部分
6、有:STC89C52单片机,DS18B20,键盘与显示电路,AT24C02温度范围存储电路,温度报警和控制电路。它可以实时地检测和显示温度,可以设定温度范围,实现对温度的报警和自动控制。关键词:温度计;DS18B20;51单片机;温度报警。 ABSTRACTTemperature sensor DS18B20 has a lot of advantages,such as stable performance,high sensitivity,strong anti-interference capability,convenience of use,etc. And it was widel
7、y used for the measurement and control of temperature in refrigerators, air conditioners, barn and other daily life in the measurement and control of temperature. In this article ,We used a single chip for realizing temperature measurement and alarm. It was mainly component of STC89S52 chip, DS18B20
8、, keyboard and display circuit,storage circuit of temperature range, temperature alarm and circuit control. It realize not only real-time detection and display temperature, but also setting the temperature range and the measurement and control of temperature.Key words: Thermometer; DS18B20;51 MCU; t
9、emperature alarm-38-湖南科技大学本科生毕业设计目 录第一章 绪论11.1 设计背景11.2 温度测量及其报警系统的国内外情况11.3 本文研究内容1第二章 系统总体设计22.1 系统方案选择22.2 系统的组成22.3 系统的工作过程3第三章 系统硬件设计53.1 单片机最小系统的设计5 3.1.1 89C52单片机简介5 3.1.2 单片机最小系统8 3.2 温度检测电路及DS18B20测温原理8 3.2.1 DS18B20介绍8 3.2.2 DS18B20特性9 3.2.3 DS18B20硬件电路103.3 报警温度调节电路103.4 报警温度存储电路113.5 报警及
10、控制电路123.6 显示电路133.7 小结13第四章 系统软件设计144.1 软件总体设计方案144.2 主程序设计144.3 测温程序设计16 4.3.1 温度转换工作流程16 4.3.2 读暂存器工作流程16 4.3.3 读数据求出十进制164.4 报警温度调节及存储设计17 4.4.1 按键设置程序17 4.4.2 温度储存程序174.5 温度报警及控制设计194.6 小结20第五章 系统测试215.1 模块测试215.2 整体软件测试21第六章 结论22参考文献23致谢24附件A 整体硬件电路图25附件B 硬件实物图26附件C 程序清单27湖南科技大学本科生毕业设计第一章 绪 论1.
11、1 设计背景温度是一个很重要的物理量,它直接影响化学反应、发酵、煅烧、浓度、蒸馏、结晶以及空气流动等物理及化学过程。温度控制失误就可能引起生产安全、质量和产量等一系列问题。温度测量无论是在工业生产过程中,还是在日常生活中都起着非常重要的作用。传统的温度采集方法不仅费时费力,而且精度差,而单片机的出现使得温度的采集和数据处理问题能够得到很好的解决。特别是在环境恶劣或温度较高等场合下,为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度、节约能源,要求对加热炉内温度进行测量、显示、报警及控制,使之达到工艺标准,以单片机为核心设计的温度测量系统,可以对温度进行实时测量,并将温
12、度数据进行显示和报警以及进行相应控制。1.2 温度测量及其报警系统的国内外情况温度检测系统在国内各行各业的应用虽然已经十分广泛,但从国内生产的温度控制器来讲,总的发展水平仍然不高,和日本、德国、美国等先进国家相比有着较大的差距。采用51单片机来对温度进行检测和控制,不仅具有成本低廉、控制方便和灵活性大等优点,而且可以提高被控温度的技术指标, 从而提高产品的质量和数量。因此,单片机对温度的处理问题是一个工业生产中经常会遇到的问题。1.3 本文研究内容本文是基于STC89C52单片机,采用数字温度传感器DS18B20,不需要A/D转换,可直接进行温度采集显示,报警和控制的数字温度计设计。包括传感器
13、数据采集电路,温度显示电路,上下限报警调整及存储电路,温度报警和控制电路,单片机主板电路等组成。 第二章 系统总体设计2.1 系统方案选择该系统主要由温度测量,数据采集和数据处理部分组成,实现方案有很多种,下面将列出两种经常用到的实现方案。2.1.1方案一采用热敏电阻传感器。利用热敏电阻阻值随温度变化而显著变化,能直接将温度的变化转换为电压的变化,进而制成温度计。数据采集部分则使用带有A/D 通道的单片机或使用专业的A/D转换芯片进行A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,同时对温度进行相应的报警和控制。此方案的优点是工作温度范围非常宽,体积小,精
14、确度高,但是它们也存在着输出电压小、抗干扰能力差的缺点,并且这种设计需要用到A/D 转换电路,感温电路比较复杂,增大系统设计的难度。2.2.2方案二采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机控制及处理,省去传统测温方法的很多外围电路。且该芯片的性能比较稳定,线形较好,在0100C时,最大线性偏差小于1C。DS18B20采用了单总线的数据传输,由DS18B20和微控制器STC89C52构成的温度测量装置,它直接输出温度的数字信号,可直接与单片机连接。这样,测温系统的结构就比较简单,体积也不大。采用51单片机控制,软件编程的自由度很大,可通过C语言编程实现各种各样的算术算
15、法和逻辑控制,而且硬件实现简单,安装方便。另外51单片机在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。该系统利用STC89C52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度并可以根据需要设定上下限报警温度进行报警和相应的控制处理。该系统扩展性很强,它可以利用键盘来进行温度范围调整,利用AT24C02芯片作为存储器件,获得的数据可以通过I2C总线协议与AT24C02通信而把温度范围数据储存起来,方便应用中的实时调整以及关机重启后加载数据。从以上两种方案,容易看出方案二的测温装置电路更简单、实现更方便、程序设计也更容易实现,故本次设计采
16、用了方案二。2.2 系统的组成本课题是以51单片机为核心设计的一种数字温度报警系统,系统整体硬件电路包括温度采集电路,温度显示电路,上下限报警调整电路,存储电路,报警及控制电路,单片机主板电路等组成。系统框图主要由主控制器、温度传感器、报警按键设置、AT24C02、数码管显示、报警和控制电路组成。系统框图如图2-1所示 图 2-1 系统框图 单元模块功能如下:检测电路由 DS18B20构成,DS18B20是美国 DALLAS 半导体公司推出的一种改进型智能温度传感器, 与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。系统的核心
17、器件是51单片机,它是整个系统的心脏,由它来控制协调各功能模块的正常工作,考虑到系统的功能和经济性因素,采用的是性价比比较高的 STC89C52。温度范围值的存储采用AT24C02,AT24C02是一个2K串行CMOS E2PROM存储器,其通过I2C协议与单片机进行通信而把报警温度值储存起来,关机重启后能保留报警温度值,从而无需再进行设置。报警功能由蜂鸣器完成,通过单片机I/O口向蜂鸣器发出不同频率的脉冲而发出不同的警报声对相应温度进行报警。温度控制模块,温度过高时由风扇制冷,温度过低时由红色LED灯模拟加热器进行升温处理。显示模块则由数码管进行显示。2.3 系统的工作过程系统由DS18B2
18、0采集温度后进行转换再把温度数据传递给单片机,单片机控制数码管进行同步温度显示,同时对温度值进行处理,当温度高于设定值后进行制冷处理,温度继续上升超过设定值+3C时控制蜂鸣器进行高频率报警处理。当温度低于设定值后进行加热处理,温度继续下降低于设定值-3C时控制蜂鸣器进行低频率报警处理。系统运作过程中可以随时对温度上下限制进行设置,通过按键输入调整数值,由于单片机片内RAM具有掉电丢失数据的特性,这里把温度上下限数值存入AT24C02中。当系统断电重启后首先通过AT24C02把温度范围值加载到单片机内从而保证系统正常工作。第三章 系统的硬件设计3.1单片机最小系统的设计本系统采用STC89C52
19、为主控器,兼容所有89C51单片机。3.1.189C52单片机简介 一、89C52单片机的片内结构89C52单片机的片内结构如图3-1所示。它把那些作为控制应用所必需的基本功能部件都集成在一个集成电路芯片上。它由如下功能部件组成:(1) 微处理器(CPU)(2) 数据存储器(RAM)(3) 程序存储器(4K Flash ROM)(4) 4个8位可编程并行I/O口(P0口.P1口、P2口、P3口)(5) 1个全双工串行口(6) 2个16位定时器/计数器(7) 中断系统(8) 特殊功能寄存器(SFR)图 3-1 89C52单片机片内结构1、 CPU89C52单片机中有1个8位CPU,与通用的CPU
20、基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的位处理功能。2、 数据存储器(RAM)片内为256B,片外最多可扩展64KB。片内128B的RAM以高速RAM的形式集成在单片机内,可以加快单片机运行的速度,而且这种结构的RAM还可以降低功耗。3、 程序存储器(ROM)程序存储器用来存储程序。89C52片内集成有8KB的Flash存储器,片外可外扩至64KB。4、 中断系统5个中断源,2级中断优先权。5、 定时器/计数器片内有3个16位的定时器/计数器,具有4种工作方式。6、 串行口1个全双工的串行口,具有4中工作方式。可进行串行通信,扩展并行I/O,甚至于多个单片机相连构成多级
21、系统,从而使单片机的应用更广。7、 P1口、P2口、P3口、P0口4个8位并行I/O口。8、 特殊功能寄存器(SFR)共有21个特殊功能寄存器,用于CPU对片内各功能部件进行管理、控制和监视。特殊功能寄存器实际上是片内各个功能部件的控制寄存器和状态寄存器,这些特殊功能寄存器映射在片内RAM区80HFFH的地址区间内。 二、89C52单片机引脚功能说明图 3-2 89C52单片机引脚图 (1)电源引脚VCC(40脚):接+5V电源GND(20脚):接地。 (2)时钟引脚XTAL1(19脚):片内振荡器反相放大器和时钟发生器电路的输入端。XTAL2(18脚):片内振荡器反相放大器的输出端。 (3)
22、控制引脚RST(9脚):复位信号输入端,高电平有效。单片机运行时,在此引脚加上持续时间大于2个机器周期的高电平时,就可以对单片机完成复位操作。/VPP(31脚):当引脚为高电平时,89C52单片机读片内程序存储器,但在PC值超过8KB时将自动转向外部程序存储器中的程序。为低电平时,对程序存储器的读操作只先顶着外部程序存储器。 (4)I/O口引脚P0口:8位,漏极开路的双向I/O口。当89C52扩展外部存储器及I/O借口芯片时,P0口作为地址总线低8位及数据总线的分时复用端口。作为通用I/O口时需加上拉电阻,作为普通I/O口输入时应先向端口的输出锁存器写入1。P1口:8位,准双向I/O口,具有内
23、部上拉电阻。作为普通I/O输入时,先向端口输出锁存器写入1.P2口:8位,准双向I/O口,具有内部上拉电阻,作为普通I/O输入时同上。P3口:8位,准双向I/O口,具有内部上拉电阻,作为普通I/O输入时同上,P3口还可以提供第二功能,其第二功能定义如表3-1所示1:表 3-1 P3口第二功能引脚第二功能说明P3.0RXD串行数据输入口P3.1TXD串行数据输出口P3.2外部中断0输入P3.3外部中断1输入P3.4T0定时器0外部技术输入P3.5T1定时器1外部计数输入P3.6外部数据存储器写选通输出P3.7外部数据存储器读选通输出3.1.2单片机最小系统整个系统的核心部件就是单片机,搭建一个稳
24、定的单片机最小系统对于系统的正常工作是很重要的。 图3-3 单片机最小系统单片机最小系统如图3-3所示,其中有4个双向的8位并行I/O端口,分别记作P0、P1、P2、P3,都可以用于数据的输出和输入,P3口具有第二功能为系统提供一些控制信号。时钟电路用于产生单片机工作所必须的时钟控制信号,内部电路在时钟信号的控制下,严格地按时序指令工作。单片机内部有一个用于构成振荡器的高增益反向放大器,该高增益反向放大器的输入端为芯片的引脚XTAL1,输出端为XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。电路中的微调电容通常选择为30pF左右,该电容的大小会影响到振荡器频率
25、的高低、振荡器的稳定性和起振的快速性。晶体的振荡频率采用12MHz。MCS-51的复位是由外部的复位电路来实现,采用最简单的上电复位电路。3.2 温度检测电路及DS18B20测温原理3.2.1 DS18B20介绍DS18B20引脚如图3-4所示。图3-4 DS18B20的管脚排列DALLAS半导体公司的单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积小、适用于多种场合。DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55+125 C,可编程为9位12 位转换精度,测温分辨率可达0.0625C。被测温度用符号扩展的16位数字量方式串行输出。多个DS1
26、8B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口很少,可节省大量的引线和逻辑电路。3.2.2DS18B20特性(1) 适应电压范围宽:3.0 V5.5V,在寄生电源方式下可由数据线供电。(2) 独特的单线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(3) DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。(4) 测温范围55125,在-10+85时精度为0.5。(5) 可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.
27、0625,可实现高精度测温。(6) 在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字。(7) 测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有很强的抗干扰纠错能力。(8) 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作2。3.2.3DS18B20硬件电路在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时VDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接
28、10K左右的上拉电阻。我们采用的是第一种连接方法,如图3-5所示,把DS18B20的数据线与单片机的P2.5管脚连接,再加上上拉电阻。 图3-5 DS18B20连接图3.3 报警温度调节电路本系统一共设置了3个按键,系统运作时按key1键切换到下限温度设置模式,同时数码管显示下限温度,按key2,key3可以对相应的下限温度进行加减设置。再按key1键切换到上限温度设置模式,同时显示上限温度,同样按key2,key3可以进行设置。再按key1切换到正常显示温度模式,同时将上下限温度值储存到AT24C02中。按键电路如图3-6所示,直接将I/O口通过按键接地即可,程序运行时检测到低电平即为按键按
29、下。图3-6 温度调整按键电路3.4 报警温度存储电路系统需要通过按键对报警温度上下限进行灵活设置,而设置后若系统断电重启单片机复位后温度上下限值将会回到最初的值而不是设置值,所以需要利用FLASH把上下限值储存起来,这里用到AT24C02。AT24C02是美国Atmel公司的低功耗CMOS型EEPROM,内含256*8位存储空间,具有工作电压宽(2.5V5.5V),擦写次数多(大于10000次),写入速度快(小于10ms),抗干扰能力强,数据不易丢失,体积小等特点。并且它是采用I2C总线式进行数据读写的串行操作,只占用很少的资源和I/O线。AT24C02有一个16字节页写缓冲器,该器件通过I
30、2C总线接口进行操作,还有一个专门的写保护功能。AT24C02的引脚如图3-7,各引脚功能如下3:SCL:串行时钟输入管脚,用于产生器件所有数据发送或接收的时钟。SDA:双向串行数据/地址管脚,用于器件所有数据的发送或接收。A0、A1、A2:器件地址输入端。这些输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0。使用AT24C02最大可级联8个器件。WP:写保护。如果WP管脚连接到VCC,所有的内容都被写保护,只能进行读操作。当WP管脚连接到GND或悬空,允许器件进行正常的读/写操作。GND:电源地(GND)。VCC:电源电压(5V)。图3-7 AT24C02引脚图AT24C02通
31、过IIC总线与单片机进行通信,电路连接如图3-8 图 3-8 AT24C02电路 3.5 报警及控制电路由于只对温度太高和太低报警,报警功能并不复杂,这里没有采用语音报警功能,而用蜂鸣器代替,这样系统更简洁,软件方面也比较好控制,成本也更低。蜂鸣器电路如图3-9,采用PNP三极管驱动蜂鸣器4 图 3-9蜂鸣器电路在温度控制方面,降温利用小风扇实现,而考虑到成本和简便,加热器用红色LED灯模拟。电路如图3-10图 3-10 温度控制电路3.6 显示电路显示部分可以用液晶显示和数码管显示,由于本系统需要显示的只有数字,故用数码管显示即可。如图3-11,这里采用的是共阴数码管。 图 3-11 共阴数
32、码管S2,S3,S4分别为十,个,小数位的阴极,阴极由NPN三极管加上拉电阻驱动,如图3-12图 3-12 数码管阴极驱动图中shi,ge,xiao相应连接单片机P1.0,P1.1,P1.2口,控制S2,S3,S4的电平高低。3.7 小结系统硬件电路采用Altium Designer6.9制作,硬件制作过程中遇到不少困难,如电路板制作,硬件的调试等,经过不懈努力及老师同学帮助终于完成硬件设计。整机硬件电路图请见附录A。第四章 系统软件设计4.1 软件总体设计方案本设计的软件分4个大部分:温度测量部分,温度显示部分,报警温度设置部分和温度处理部分,其中温度测量部分为软件设计的关键,此部分决定温度
33、精度的大小。系统上电后首先加载EEPROM中的上下限温度值,然后初始化定时器用于对蜂鸣器的控制。然后进入系统主循环,在主循环中首先对温度进行测量,然后进行显示,下一步对温度进行处理,对超出温度范围的情况进行控制及报警处理,然后扫描键盘,如果扫描到按键1按下将进入温度设置模式,通过按键1,2,3对上下限温度进行调节,设置完成后把上限值和下限值储存到EEPROM的相应地址中。系统主流程图如图4-1:图 4-1 系统主流程4.2 主程序设计系统软件主要在温度显示和键盘扫描之间循环,隔一段时间才对DS18B20进行温度获取,所以显示和扫描循环50次后再和温度测量部分构成系统大循环,即大约每一秒获取一次
34、温度数据。如下为系统主程序:void main()uint j; /计数器xia=read_add(2);delayms(10);shang=read_add(4); /读出保存的上限数据TMOD=0x01; /定时器工作在方式1ET0=1;EA=1;TH0=(65536-250)/256;TL0=(65536-250)%256;TR0=0; /先关闭定时器while(1)tempchange(); /温度转换dis_temp(temp); /显示温度dis_temp(temp);get_temp(); /获取温度dis_temp(temp);dis_temp(temp); deal(); /
35、温度处理j=50;while(j-)dis_temp(temp); if(KEY1=0)set(); /键盘扫描4.3 测温程序设计DS18B20与单片机通信采用的是单总线技术,它采用单条信号线,既可传输时钟,又可传输数据,而且数据传输是双向的,因而这种单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。DS18B20测温过程主要分三个步骤:DS18B20温度转换,DS18B20度暂存数据,数据求出十进制,如图4-2:图 4-2 测温流程4.3.1温度转换工作流程1. DS18B20复位2. 写入跳过ROM的字节命令0xcc3. 写入开始转换的功能命令0x444. 延迟月7
36、50900ms4.3.2读暂存器数据流程1. DS18B20复位2. 写入跳过ROM的字节命令0xcc3. 写入读暂存器功能命令0xee4. 读入第0个字节LS,转换结果低八位5. 读入第1个字节MS,转换结果高八位6. 复位,表示读取暂存结果4.3.3数据求出十进制1. 整合LS和MS数据2. 判断是否为正(由于本系统测量范围在0到99.9之间,故不要)3. 求十进制值,本系统要求精度为0.1C,故将测得的数据乘以0.06254.4 报警温度设置及储存设计温度设置采用三按键设置,利用按键1转换模式,按键2和按键3分别进行加和减。4.4.1按键设置程序按键1对应键值key1的大小进行模式转换,
37、每扫描到键1按下时key1加1,当key1=1时为下限设置模式,key1=2时为上限设置模式,key1=3时满足“key12”,此时将key1清零。将上下限值储存在EEPROM中然后退出设置模式。进入设置模式时数码管显示相应的设置温度,利用显示用于KEY2和KEY3扫描的消抖延时。流程图如图4-3:图 4-3 按键设置流程图4.4.2温度储存程序EEPROM采用I2C总线与单片机进行通信I2C总线是由飞利浦公司推出,是近年来微电子通信控制领域广泛采用的一种新型总线标准,具有接口线少、控制简单、器件封装形式小、通信速率较高等优点。I2C总线由两条导线构成,数据导线称为串行数据线(SDA),时钟导
38、线称为串行时钟线(SCL),即可发送数据,也可接受数据。在CPU与IC之间,IC与IC之间都可以进行双向通信,最高传送速率为400kbps,各种被控器件均并联在总线上,每个器件都有唯一的地址。I2C总线上的数据传输用一个起始条件来启动。如图4-4所示,SDA信号发生由高到低的转换,同时SCL信号保持高,表示起始条件。I2C总线上的数据传输用一个终止条件来结束。如下图所示,SDA信号发生由低到高的转换,同时SCL信号保持高,表示终止条件。实际数据在起始和终止条件之间传输。图 4-4 起始和停止条件典型的I2C字节写入周期的操作过程是:主执行设备用一个起始条件启动传输,接着发送设备地址,该地址是要
39、写入数据字节的设备的地址,以高位在前、低位在后的方式发送。数据的发送如图4-5所示,图中主执行设备将数据位的值放在SDA信号线上,同时SCL信号线为低,SDA信号线上的值要一直保持到SCL信号线出现时钟脉冲。在发送接收设备的地址后,主执行设备发送一个0,接收设备在第一个ACK时钟周期使SDA信号线保持低,确认收到该地址。确认之后,主执行设备以高位在前、低位在后的方式发送一个字节数据。接收设备在第二个ACK时钟周期使SDA信号线保持低,确认收到数据。典型的I2C字节读取周期的操作过程是:主执行设备用一个起始条件启动传输,接着发送设备地址,该地址是要读取数据字节的设备的地址,以高位在前、低位在后的
40、方式发送。1和0的发送同上。在发送读取设备的地址后,主执行设备发送一个1,请求读取,并等待接收确认信号,接着发送设备发送一个字节数据,接收设备产生一个终止条件,确认数据的接收并终止传输。图 4-5 I2C总线的数据传输1.向EEPROM指定地址中写入一字节数据的程序:void write_add(uchar address,uchar date)start(); /开始信号write_byte(0xa0); /写入0xa0respons(); /应答write_byte(address); /写入地址respons(); write_byte(date); /写入数据respons();sto
41、p(); /停止信号2.从EEPROM指定地址中读出一字节数据的程序:uchar read_add(uchar address)uchar date;start(); /开始信号write_byte(0xa0); /写入0xa0respons(); /应答write_byte(address); /写入地址respons();start(); /开始信号write_byte(0xa1); /写入0x01respons(); date=read_byte(); /将读出的一字节数据赋予datestop();return date; /将date作为返回值4.5 温度报警及控制设计设计本系统除了报警功能还设计了相应的温度控制功能,温度超过一定范围后先进行温度控制,若控制后温度继续恶化将启动报警功能。报警采用蜂鸣器,利用单片机的定时器控制蜂鸣器的频率进行报警。如果温度低于下限温度将点亮LED以及低频报警,温度高于下限温度而低于下限温度加3C时只点亮LED,温度高于上限温度将打开风扇并高频报警,温度低于上限温度且高于上限温度减3C时只开风扇,其他情况关闭风扇和LED,并关闭定时器不予报警。4.6 小结系统采用C语言编程,编程软件采用Keil uVision4,在程序的构思和编写及调试过程中同样遇到很多困难,尤其
限制150内