版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上课程设计总结报告课程名称 电子技术课程设计 设计题目 基于89C52的室内火、气安全监测装置 专 业 电子信息工程 班 级 姓 名 学 号 指导教师 报告成绩 信息与工程学院 二一三年十二月十九日专心-专注-专业目 录 0 4 991前 言随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测与显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,需要外加信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这次设计的是基于DS18B20的数字温度计,它具有读数方便,测温范围广,测温
2、精确,数字显示,适用范围宽等特点。 第一章 项目任务1.1 设计任务 使用温度传感器和烟雾传感器把环境温度和烟雾的浓度情况检测出来,再采用单片机进行温度的显示和烟雾显示,可设置温度报警和烟雾报警。要求进行硬件、软件系统设计。 要求:位温度的显示;设置报警温度;烟雾报警 1.2 设计要求(1) 能检测火灾事故,并报警(2) 能检测烟雾,有毒气体泄漏事故,并报警(3) 能实时显示室内温度值,并通过键盘设置温度报警上下限值 第二章 方案设计与硬件选择2.1单片机89C52 AT89C52是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Progr
3、ammable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。2.2温度传感器模块 DS18B20 2.2.1 数字温度传感器DS18B20 ,具有独特的单总线接口方式,需一根总线就能实现控制模块与DS18B20之间的半双工通信。DS18B20是集传感元件和转换电路于一体的小芯片上。 另外,DS18B20也支持"一线总线"接口,测量温度范围为-55°C+125°C,在-10+85°C范围内 。现场温度直接以"一线总线"的数字方式
4、传输,大大提高了系统的抗干扰性。 2.2.2 工作原理 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图1所示。 第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义热图二所示。低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要改动
5、,R1和R0决定温度转换得精度位数,即用来设置分辨率,定义方法见表1。 图一 图二 2.2.3 供电方式采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电2.3 烟雾报警器电路MQ2 MQ2烟雾传感器,有只针状管脚,其中个用于信号取出,个用于提供加热电流。当烟雾扩散时,烟雾传感器感应到烟雾时, 继电器打到NO,风扇开始工作,马达转动,风扇产生吸力将烟雾吸入到装有活性炭和负离子的过滤外壳中,排清新干净的气体2.4 信号调理及放大整形模块, LM358芯片 LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大器
6、。当P1.5为0时报警。2.5 显示模块LED 采用LED数码管显示 2.6 报警电路 用蜂鸣器作报警提示音,加发光二极管,声光结合充分突出了紧急提示信号的特点。 2.7按键分析 四个按键的功能分别为:第一个按键是结束选择,按一下表示显示管进行显示当时温度;第二个键是减键,对设定的温度进行减一;第三个键是加键;第四个键是进入键,按一下表示进入设置温度模式。 2.8 复位电路 原理:VCC上电时,C3充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C充满,10k电阻上电流降为0,电压也为0,使得单片机复位。工作期间,按下S4,C放电,在10K电
7、阻上出现电压,使得单片机复位。S松手,C又充电,几个毫秒后,单片机进入工作状态。 第三章 流程图设计3.1电路系统模块 3.2主程序流程图 3.3温度报警子程序3.4烟雾报警子程序图3.5对18B20写程序流程图3.6对18B20读8为数据流程图3.7温度值转换流程图3.8 18B20读取温度流程图 第四章 电路实验与调试 4.1 焊接 4.2 软件设计#include <reg52.h>#include "18b20.h"#include <intrins.h>#define uint unsigned int/宏定义#define uchar u
8、nsigned char/宏定义 #define date P1 /数码管段选uint temp,alarm_temp;/定义温度,设定温度bit key_lock,chang_flag;bit zerotemp_flag; /负温度标志位uchar code LED = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90; /三位共阳极数码管09的断码/数码管位定义sbit ge = P12;/个位sbit shi = P11;/十位sbit bai = P10;/百位sbit bell = P27;/蜂鸣器定义sbit MQ = P15;/M
9、Q-2定义sbit DQ = P14;/18B20定义/按键定义sbit key0 = P20;sbit key1 = P21;sbit key2 = P22;sbit key3 = P23;void delay_ms(uint xms)/延时子程序uint i,j;for(i=xms;i>0;i-)/i=xms即延时约xms;for(j=110;j>0;j-);void delay_us(uint z)/微妙级延时 while(z-) _nop_();void display(uint x)/数码管显示子程序/取一温度值xuint temp1;temp1 = x;temp1 =
10、temp1%1000;/使温度值不超过三位有效数/动态显示/显示个位ge = 0;/开显示date = LEDtemp1%10;/将temp1的个位显示出来delay_ms(2);/延时2msge = 1;/关显示/显示十位 shi = 0;/开显示date = LEDtemp1%100/10&0x7f; /将temp1的十位显示出来,并显示小数点dp位delay_ms(2);/延时2msshi = 1;/关显示/显示百位bai = 0;/开显示date = LEDtemp1/100;/将temp1的百位显示出来delay_ms(2);/延时2msbai = 1; /关显示void a
11、larm(void)/报警子程序if(temp>alarm_temp)|(MQ = 0)/如果温度大于设定值或MQ2=0 bell = 0;/蜂鸣器响elsebell = 1;/蜂鸣器不响/*18B20程序*/void fuwei(void)/18B20复位 DQ = 0; delay_us(50); /600us DQ = 1; delay_us(5); /70usuchar read_18B20(void)/从18B20读取8位数据 uchar i,dat; /从最低位开始接收 for(i = 0;i<8;i+) dat>>=1; /数据右移一位 DQ = 0; _
12、nop_(); /延时1us DQ = 1; /释放总线 _nop_(); /延时2us后在读取,不然读取值会紊乱,很关键! _nop_(); if(DQ) dat|=0x80; /如果接收到的是1,则最高位置为1 delay_us(2); /延时40us return dat;void write_18B20(uchar dat)/对18B20写8位数据 uchar i; for(i = 0;i<8;i+) DQ = 0; _nop_();/延时10us DQ = (bit)(dat&0x01); /从最低位开始发送 dat>>=1; /右移一位 delay_us(
13、1); /延时40us DQ = 1; /释放总线 void changetemp(void)/温度值转换 uint Temp_L,Temp_H; Temp_L = read_18B20();/读取低八位 Temp_H = read_18B20();/读取高八位,当温度为负数时 temp(74)为1,反之为0 if(bit)(Temp_H&0x80) zerotemp_flag = 1; /温度为负数标志位 /负温度计算 Temp_H &= 0x0f; temp = (Temp_H<<8|Temp_L)*0.625; temp = (Temp_H<<8|
14、Temp_L)*0.625; /保存一位小数void read_temp(void)/从18B20读取温度 fuwei(); /复位 delay_us(10); /延时 write_18B20(0xcc);/跳过读取序列号 write_18B20(0x44);/开始转换温度 fuwei(); /复位 delay_us(10); /延时 write_18B20(0xcc);/跳过读取序列号 write_18B20(0xbe);/读暂存指令 changetemp(); /读取转换温度 fuwei(); /复位int main(void)/主程序alarm_temp = 220;/设定温度初始值re
15、ad_temp();/18b20测温delay_ms(500);/延迟500mswhile(1)read_temp();/18b20测温display(temp);/显示测到的温度alarm();/报警if(!key0)/如果key0=0,则进入温度修改状态delay_ms(2);/延迟2ms,消抖if(!key0)/如果key0=0,则确定键按下,显示温度chang_flag = 1;while(chang_flag)if(key1&key2)key_lock = 1;/如果key1&key2=1,则无效if(!key1)delay_ms(2);/延迟2ms,消抖if(!ke
16、y1)if(key_lock)alarm_temp+=10;/alarm_temp+10=alarm_temp(温度加1)if(alarm_temp>990)/如果数码管前两位大于99,则清零alarm_temp = 0;key_lock = 0;if(!key2)delay_ms(2);/延迟2ms,消抖if(!key2)if(key_lock)alarm_temp-=10;/alarm_temp+10=alarm_temp(温度减1)if(alarm_temp>1000)/如果三位数码管都是0,则减一后变为990alarm_temp = 990;key_lock = 0;if(
17、!key3)delay_ms(2);/延迟2ms,消抖if(!key3)if(key_lock)chang_flag = 0;key_lock = 0;display(alarm_temp);/显示设定温度4.3调试与处理出现问题 1.温度显示不正确,发现DS18B20电路少接一个电阻。 2.程序无法上电,发现复位程序出现虚焊。 第五章 设计总结在二周的电子课程设计中,这次的实验不仅加强了硬件的使用能力,还加强了软件设计能力。在这之中有效的巩固了本学期所学的专业知识,加强了电子实物制作的动手能力 。在这次的实验设计中我们首先要做了就是画硬件图,在脑海里形成一个总的构思,包括主程序流程图,按键处理流程图,更新当前时间流程图,更新显缓存流程图等,这是比较难的,开始我们毫无思路,在老师的精心指导下最终成功的画出。焊接是比较简单的,一般一个下午就可以完成,最重要的是焊接中很容易出现的虚焊问题必须认真对待。 最后是程序设计与调试,程序的话应该说是上学期学过的东西运用运用而已,但是总是有些被遗忘了,在编程的时候会遇到或多或少的问题,最后也是通过参考别人的程序才成功。 经过这次设计,我认识到自己还有很多的不足,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年弹性设计在绿色施工中的应用
- 市政配套专题汇报
- 2026年电气故障处理与应急预案
- 2026春招:西藏航空真题及答案
- 医疗信息化的礼仪与操作规范
- 2026年广西生态工程职业技术学院高职单招职业适应性测试备考试题有答案解析
- 2026年贵州农业职业学院单招综合素质笔试模拟试题带答案解析
- 个性化医疗与基因治疗技术
- 2026年贵州工业职业技术学院单招职业技能笔试备考题库带答案解析
- 护理安全管理与应急预案制定与实施策略
- 组织行为学考试题(附参考答案)
- 水产养殖合作协议合同
- 药店全年主题活动方案设计
- 病媒生物防制服务外包 投标方案(技术方案)
- 光伏电站-强制性条文执行检查表
- 经济学在生活中
- 产品防护控制程序培训课件
- ISO-6336-5-2003正齿轮和斜齿轮载荷能力的计算-第五部分(中文)
- 轨道线路养护维修作业-改道作业
- 中铝中州矿业有限公司禹州市方山铝土矿矿山地质环境保护和土地复垦方案
- 呼吸科规培疑难病例讨论
评论
0/150
提交评论