环境温度检测与报警课程设计.doc

上传人:文库蛋蛋多 文档编号:4151929 上传时间:2023-04-07 格式:DOC 页数:35 大小:5.59MB
返回 下载 相关 举报
环境温度检测与报警课程设计.doc_第1页
第1页 / 共35页
环境温度检测与报警课程设计.doc_第2页
第2页 / 共35页
环境温度检测与报警课程设计.doc_第3页
第3页 / 共35页
环境温度检测与报警课程设计.doc_第4页
第4页 / 共35页
环境温度检测与报警课程设计.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《环境温度检测与报警课程设计.doc》由会员分享,可在线阅读,更多相关《环境温度检测与报警课程设计.doc(35页珍藏版)》请在三一办公上搜索。

1、湖南工程学院课 程 设 计课程名称 单片机原理与应用 课题名称 环境温度检测与报警 专 业 电气工程及其自动化 班 级 学 号 姓 名 指导教师 王迎旭 李晓秀 汪超 赵葵银2012年 9月 14日湖南工程学院课 程 设 计 任 务 书 课程名称 单片机与应用 课 题 环境温度检测与报警 专业班级 学生姓名 学 号 指导老师 王迎旭 李晓秀 汪超 赵葵银 审 批 王迎旭 李晓秀 汪超 赵葵银 任务书下达日期 2012年 9月 3日任务完成日期 2012年 9月 14日设计内容与设计要求设计内容:本课题要求以单片机为核心设计一个环境温度检测与报警系统,要求测温范围为10125,精度误差在0.1以

2、内,LED数码管直读显示,可以由用户自己设定上限温度,如果环境温度超过实际温度或在3秒内温度变化超过5度则会发出声光报警。设计任务包括控制系统硬件设计和应用程序设计。要求焊接好开发板,在开发板上进行调试。设计要求:1)确定系统设计方案; 2)进行系统的硬件设计;3)完成必要元器件选择;4)开发板焊接及测试5)系统软件设计及调试;6)系统联调及操作说明7)写说明书主 要 设 计 条 件1、 MCS-51单片机实验操作台1台;2、 PC机及单片机调试软件;3、 开发板1块; 4、 制作工具1套;5、系统设计所需的元器件。说 明 书 格 式封面课程设计任务书目录第1章 概述(课题设计的要求、目的及意

3、义)第2章 系统总体方案选择与说明(系统硬件电路设计框图与工作原理)第3章 硬件电路设计(各部分电路设计、原理、参数计算、I/O分配等)第4章 应用软件设计(流程图、算法等)*第5章 系统仿真调试第6章 硬件调试与结果分析(开发板焊接、性能测试、结果、操作说明)第7章 结束语(系统设计小结:已完成的工作、效果、特色、不足与展望)致谢参考文献 附录A 系统硬件电路原理图附录B 程序清单评分表进 度 安 排 设计时间分为二周第一周星期一、上午:布置课题任务,课题介绍及讲课。下午:借阅有关资料,总体方案讨论。星期二、分班级焊接开发板星期三、确定总体方案,学习与设计相关内容。星期四、各部分方案设计,各

4、部分设计。星期五、设计及上机调试。星期六、设计并调试第二周星期一:设计及上机调试。星期二:调试,中期检查。星期三:调试、写说明书。星期四-星期五上午:写说明书、完成电子版并打印成稿。星期五下午:答辩。参 考 文 献1 王迎旭等.单片机原理及及应用.机械工业出版社.2012年2 三恒星科技.MCS-51单片机原理与应用实例M.电子工业出版社.2008年3 戴仙金.51单片机及其C语言程序开发实例M.清华大学出版社.2008年4 陈海宴.51单片机原理及应用基于Keil C与ProteusM.北京航空航天大学出版社.2010年 目录第1章 概述11.1 课题的设计要求、目的及意义1第2章 总体方案

5、22.1 方案的选择22.2 系统结构框图及工作原理3第3章 硬件电路设计53.1 复位电路的设计53.2 时钟振荡电路53.3 显示电路63.4 数字温度传感器DS18B2073.5 按键查询电路93.6 单片机硬件资源分配10第4章 应用软件设计114.1 主函数的设计114.2 键盘扫描函数的设计124.3 读出温度子程序134.4 报警子程序13第5章 硬件调试与结果分析145.1 调试方法145.2 调试中出现的问题及解决办法145.3 调试结果14第6章 设计总结 17参 考 文 献18附录A 系统硬件原理图19附录B 程序清单20第1章 概述1.1 课题的设计要求、目的及意义 单

6、片机技术作为计算机技术的一个重要分支,广泛应用于工业控制,智能化仪器仪表,家用电器,甚至电子玩具等各个领域,它具有体积小,功能多,价格低廉,使用方便,系统设计灵活等优点,因此越来越受工程技术人员的重视与亲睐。 伴随着科学技术和生产的不断发展,需要对各种参数进行温度测量。温度控制和测量在各行各业中发挥着重要的作用。如在日趋发达的工业之中,利用测量与控制温度来保证生产的正常运行。在农业中,用于保证蔬菜大棚的恒温保产等。在单片机温度测量系统中的关键是测量温度、控制温度和保持温度,温度测量是工业对象中主要的被控参数之一,具有现实意义. 本课题以单片机为核心,实现温度的检测和控制。用温度感应器件模拟温度

7、的输入量,当温度低于度时,发出长嘀声报警,当温度高于度时,启动直流电机散热。测量温度范围在0-99度。用温度的检测和控制,并用四位数码显示管显示各路温度,并且设置按键可实现对温度的报警上下限进行控制.以此简易的温度检测和控制系统来达到初步应用单片机,同时对各门学科知识作一个较好的整合,对单片机在实际温度控制的实现形成较好的概念和理解. 第2章 系统总体方案选择与说明2.1 方案的选择 温度芯片DS18B20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100 摄氏度时,最大线形偏差小于

8、1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89c52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC 机通信上传数据,另外AT89C52 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟.该系统利用AT89C52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速

9、测量环境温度,并可以根据需要设定上下限报警温度,利用键盘来进行调时和温度查询。这种方法测温装置电路简单、精确度较高、实现方便、软件设计也比较简单,故本次设计采用了此法。2.2 系统结构框图及工作原理 2.2.1系统原理该数字温度检测系统如图2-2所示有四部分组成:温度检测,显示控制,温度显示,报警。 图2-2 系统原理(1)温度检测该模块由DS18B20负责对测试点的温度进行测量,单片机89C52对DS18B20进行控制。由于DS18B20只有一根数据线,所以系统中的数据交换,控制都由这根线完成,只需将DS18B20挂接到单片机的一个数据接口就可以直接使用。(2)显示控制由于DS18B20是通

10、过单总线方式与单片机进行通讯的,所以对程序编写的要求比较高。主要的程序流程是这样的:首先由单片机发出对DS18B20进行初始化的信号,在DS18B20初始化成功后,发送指令CC跳过读序列号的操作,接着发送指令44启动温度转换,此时在对DS18B20进行初始化,在发送指令CC跳过读序列号操作,最后发送指令BE读暂存存储器。至此完成一个周期,当前温度值所对应的二进制编码已经被保存在DS18B20的ROM上,我们只需将ROM上的温度值读取出来,然后转换成相应的十进制,就可以拿来做后面的运算和显示了。(3)温度显示这部分模块由四位八段共阳极的数码管组成,段选部分直接与单片机相连。(4) 报警 报警装置

11、由蜂鸣器构成,当温度超过设定值时报警。第3章 硬件电路设计3.1复位电路的设计采用47uF的C3和10K的R2可以保证加在引脚上的高电平持续2个机器周期,即使单片机有效地复位。按键可以随时使电路复位,当键按下时1K的R1和10K的R2串联分压使RST为高电平,即复位,如图3-1所示。 图3-1 复位电路3.2时钟振荡电路时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。晶振频率的大小决定了单片机系统工作的快慢。本次设计采用内部方式的外部时钟接法。为达到振荡周期是12MHZ的要求,这里要采用12MHZ的晶振,电容C1、C2对频率有微调作用,故外接晶振时,C1和C2在本设计中选择

12、30pF,振荡频率取12MHz。晶振的两个引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。具体连接图如图3-2所示: CRYSTALXTAL1XTAL2 图3-2 时钟振荡电路3.3 显示电路本次设计中采用共阴极数码管作为显示器。LED的驱动电路简单,使用方便,具有耗电少、成本低廉、配置简单灵活、安装方便、耐振动、使用寿命长等优点。LED显示器与单片机的接口一般有动态显示与静态显示接口两种电路。本次设计中,由于单片机本身提供的I/O口有限,本次设计采用动态显示,数码管采用的是共阳极接法。用AT89C52的P0口作段码输出时, 在本次设计中我们将数码管各段加上拉电阻后接单片机P0口。我们把P

13、2口的输出信号直接接到数码管的位选端作为位选信号,低电平有效,具体连接如图3-3所示。 图3-33.4 数字温度传感器DS18B20本次设计的硬件电路简单,关键的地方在DS18B20,也是最复杂难懂的。温度传感器采用的是DALLAS公司的单总线数字温度传感器DS18B20。它采用独特的单线接口方式,仅需一个信号线发送或接收信息。测量范围为-55125,CPU用P3.6口与DS18B20通信,如图3-4-1即为温度传感器。 图3-4-1 温度传感器下图为DS18B20的内部结构框图C64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器V

14、dd 图3-4-2 DS18B20的内部结构框图64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3-4所示。 表3-4 分辨率转换头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节, 为配置寄存器,它的内容用于确定温度值的数字转换

15、分辨率。DS18B20 工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在

16、先,高位在后,数据格式以0.0625LSB形式表示。下表为DS18B20温度转换时间表。 减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的

17、各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。3.5 按键查询电路 本系统设有四个独立按钮,如图3-4所示。为确保随时可以控制进入和退出查询状态,所以设有一个进入和退出查询状态的复用按键,自进入查询状态时,再按对应的通道查寻键即可查询各通道信息,例如按下通道0查询,假若当前显示的是通道0的当前温度及对应的数字量为上线,如果再次按下该键,则显示的是为报警的下线,如果超温次数大于设定值,则会出现报警现象,提示需对该路的控制对象进行必要的检查。 图3-5 按键电路3.6 单片机硬件资源分配 I/O口配表P0口P0.0LED数码管A段P2口

18、P2.0LED数码管W3位选端P0.1LED数码管B段P2.1LED数码管W1位选端P0.2LED数码管C段P2.2LED数码管W2位选端P0.3LED数码管D段P2.3LED数码管W4位选端P0.4LED数码管E段P2.4独立键盘的S4列选端P0.5LED数码管F段P2.5独立键盘的S3列选端P0.6LED数码管G段P2.6独立键盘的S2列选端P0.7LED数码管DP段P2.7独立键盘的S1列选端P3口P3.7蜂鸣器P3.6Ds18b20接口 第4章 应用软件设计4.1 主函数的设计整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分

19、为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。主程序流程见图4-1。 图4-1 主函数流程4.2 键盘扫描函数的设计 图4-2为键盘扫描函数流程图,为防止误读电平,读引脚时先写“1”。本系统在P2

20、口低四位接有四个开关,故将低四位写“1”。首先判断有无键按下,然后延时去抖动后再次判有无键按下,然后等待键的释放,最后是键的识别。假若P2.0按下,则K1=1,因为四个键均为复用键,所以d0+表示当前是查询该路的温度,对于其他2路通道也照此设计。 图4-2 键盘扫描函数流程4.3 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写,流程如图4-3所示。 如图4-34.4 报警子程序 报警根据通过键盘设定的上下限温度值来比较是否触发报警装置。流程如图4-4所示。 图4-4 报警子程序函数第5章 硬件调试与结果分析5.1 调试方法

21、 首先将用KEIL编译好的程序进行编译,程序无错误运行后产生hex文件,然后用单片机连接电脑用软件下载到单片机中试运行看结果。 调试时单片机p0口一次连接显示管a到dp,将j6用线短接,s1到s4分别连接单片机p2.4到p2.7显示管位选连接单片机p2.0到p2.3,温度检测原件ds18b20连接p3.6,连接好电源都打开调试。5.2 调试中出现的问题及解决办法 单片机调试时出现显示闪烁太大,以至于显示看不清,应看显示抖动程序是否正确,调试时按键加减显示过快出现跳跃式显示,应该看看按键显示程序的延时是否符合标准,5.3 调试结果(1)开机正常显示温度 图5-3-1 开机显示(2)按下矩阵键盘最

22、后一排第一个键显示上限定,按两下为下限设定。 图5-3-2 上线显示(3)按下矩阵键盘最后一排第二个键显示加一功能。 图5-3-3 上线加一(4) 按下矩阵键盘最后一排第三个键显示减一功能。 图5-3-4 上线减一(5)按下矩阵键盘最后一排第四个键显示反回。 图5-3-5 返回显示界面 第6章 设计总结 经过两周的努力,老师任务书交代的基本内容都已经通过单片机实现,效果不错,(1)可以很稳定的通过ds18b20检测显示温度,(2)可以自由的通过键盘修改温度报警上下限,(3)当温度超出设定范围是,有报警提示。但是本次设计的不足之处在没能更好的实现温度突变报警,还有没有显示四位温度,希望在以后的接

23、触过程中更加的了解单片机,学到更多的应用。以后有什么问题要勇敢的面对,遇到的多了,自然而然的我们会自信的解决这些问题。这就是我在这次课程设计中的最大收获。最后感谢老师和同一课题的彭琼和姚波同学的帮助和指点,特别是王迎旭老师的热心指导,没有老师们的帮助我们不可能顺利解决一些疑惑和难题,再次谢谢老师们的帮助和辛勤的付出。 参 考 文 献1 王迎旭.单片机原理与应用M.北京:机械工业出版社,2004.2 三恒星科技.MCS-51单片机原理与应用实例M.北京:电子工业出版社,2008.3 戴仙金.51单片机及其C语言程序开发实例M.北京:清华大学出版社,2008.4 陈海宴.51单片机原理及应用基于K

24、eil C与ProteusM.北京:北京航空航天大学出版社,2010.5 何立民.单片机高级教程应用与设计M.2版.北京:北京航空航天大学出版社,2007.附录A 系统硬件原理图附录B 程序清单#include#include #define uchar unsigned char #define uint unsigned intsbit DATA = P36; /DS18B20接入口uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/int tem

25、p; /温度值int ss;/中间的一个变量int dd;int j;uchar data b;/定时器中断次数uchar data buf4;/字型显示中间变量int alarmH=500; /默认报警值int alarmL=-10;/定义开关的接入口sbit k1=P25;/+sbit k2=P26;/-sbit k3=P27;/确认sbit k4=P24;sbit bell=P10;sbit HLight=P12;sbit LLight=P13;sbit Red=P16;sbit Green=P17;bit set=0;bit Flag=0;int n;/函数的声明区void key_t

26、o1();void key_to2();void delay(uint);void key();void Show();/函数的定义区/*延时子函数*/void delay(uint num)while(num-) ;/DS18b20温度传感器所需函数,分为初始化,读写字节,读取温度4个函数Init_DS18B20(void) /传感器初始化 uchar x=0; DATA = 1; /DQ复位 delay(10); /稍做延时 DATA = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us /450 DATA = 1; /拉高总线 delay(20); x=DAT

27、A; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(30);ReadOneChar(void) /读一个字节uchar i=0;uchar dat = 0;for (i=8;i0;i-) DATA = 0; / 给脉冲信号 dat=1; DATA = 1; / 给脉冲信号 if(DATA) dat|=0x80; delay(8); return(dat);WriteOneChar(unsigned char dat)/写一个字节 uchar i=0; for (i=8; i0; i-) DATA = 0; DATA = dat&0x01; delay(10); DATA

28、 = 1; dat=1; delay(8);int ReadTemperature(void) /读取温度uchar a=0;uchar b=0;int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();/低位b=ReadOneChar();/高位t=

29、b;t=8;t=t|a;tt=t*0.0625;t= tt*10+0.5; return(t);void display00() /*显示负值子函数 dd=-(temp-1); buf1=dd/100;buf2=dd/100;buf3=dd%100/10;buf0=dd%10;/动态显示for(j=0;j5;j+) P2=0xff; / 初始灯为灭的 P0=0x00;P2=0xfd; /显示小数点P0=0x80; /显示小数点delay(100); P2=0xff; / 初始灯为灭的 P0=0x00; P2=0xf7; /片选LED1 P0=0x40;delay(100); P2=0xff;

30、P0=0x00; P2=0xfb; /片选LED2 P0=tablebuf2;delay(100);P2=0xff; P0=0x00;P2=0Xfd; /片选LED3P0=tablebuf3;delay(100);P2=0xff; P0=0x00;P2=0Xfe;P0=tablebuf0; /片选LED4delay(100);P2=0xff; /显示正值子函数void display()buf1=temp/1000;/显示百位buf2=temp/100%10;/显示十位buf3=temp%100/10;/显示个位buf0=temp%10; /第4位 南北秒个位for(j=0;j3;j+) P2

31、=0xff; / 初始灯为灭的 P0=0x00;P2=0xfd; /显示小数点P0=0x80; /显示小数点delay(300); P2=0xff; / 初始灯为灭的 P0=0x00; P2=0xf7; /片选LED1 P0=tablebuf1;delay(300); P2=0xff; P0=0x00; P2=0xfb; /片选LED2 P0=tablebuf2;delay(300);P2=0xff; P0=0x00;P2=0Xfd; /片选LED3P0=tablebuf3;delay(300);P2=0xff; P0=0x00;P2=0Xfe;P0=tablebuf0; /片选LED4del

32、ay(300);P2=0xff;void key()/按键扫描子程序 if(k1!=1) delay(20); if(k1!=1) while(k1!=1) key_to1(); for(n=0;n8;n+) Show(); if(k2!=1)delay(20);if(k2!=1) while(k2!=1) key_to2(); for(n=0;n=1100) temp=-550; if(set=0)alarmH=temp;else alarmL=temp;void key_to2() TR0=0; /关定时器 temp-=10;if(tempalarmH|temp=0)HLight=1;LL

33、ight=0;display();/显示函数if(temp0)HLight=0;LLight=1;display00();void main() TCON=0x01; TMOD=0X01;TH0=0XD8;TL0=0XF0;EA=1;ET0=1;TR0=1;EX0=1;for(n=0;n500;n+)/显示启动LOGo- - - -bell=0;logo(); Red=0;while(1) key(); ss=ReadTemperature(); Show();alarm();if(Flag=1)bell=!bell; /蜂鸣器滴滴响else bell=0; void time0(void)

34、interrupt 1 using 1 /每隔10ms执行一次此子程序 TH0=0X56;TL0=0XDC;temp=ss; 电气与信息工程系课程设计评分表项 目评 价优良中及格差设计方案合理性与创造性(10%)开发板焊接及其调试完成情况*(10%)硬件设计或软件编程完成情况(20%)硬件测试或软件调试结果*(10%)设计说明书质量(20%)答辩情况(10%)完成任务情况(10%)独立工作能力(10%)出勤情况(10%)综 合 评 分 指导教师签名:_ 日 期:_ 注:表中标*号项目是硬件制作或软件编程类课题必填内容; 此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号