温度烟雾报警器论文.docx
- 文档编号:22806312
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:24
- 大小:315.79KB
温度烟雾报警器论文.docx
《温度烟雾报警器论文.docx》由会员分享,可在线阅读,更多相关《温度烟雾报警器论文.docx(24页珍藏版)》请在冰豆网上搜索。
温度烟雾报警器论文
SHANDONGMANAGEMENTUNIVERSITY
实习报告
(温度、烟雾报警器)
专业:
安全工程
班级:
15级一班
学生姓名:
李文栋
学生学号:
2015058010109
指导教师:
郭胜召白莹莹
日期:
2017年7月12日
机电学院
1实习目的和意义
1.1实习目的:
(1)利用单片机小系统实习板,掌握电路原理图;
(2)通过对系统板的测试,了解系统板的工作原理及性能,掌握元器件及系统故障的排除方法;
(3)通过单片机系统的调试、程序编制及运行,掌握单片机系统的工作原理、开发方法和操作方法。
1.2实习意义:
通过实习可以掌握单片机软、硬件的综合调试方法,熟练掌握电路原理图,激发对单片机智能性的探索精神,提高我们的综合素质。
在制作学习过程中,不但可以掌握软、硬件的综合调试方法,而且提高我们对单片机智能性强烈的欲望。
达到最大限度地掌握微机应用技术,软件及接口设计和数据采集与处理的技能,培养综合实践素质的目的。
2实习内容
(1)、根据任务要求选择方案、设计电路、确定元器件型号和参数
(2)硬件设计:
要求设计出完整的电路原理图,包括电源模块、单片机最小系统电路、按键电路、报时电路、显示电路。
(3)、软件设计:
包括编程思路,主程序和各子程序模块的流程图及编写方法,并用汇编语言或C语言编写出完整的源程序。
(4)、按图焊接电路,检查无误后通电调试,调试电路的功能是否符合要求。
(5)、调试与仿真:
对设计的硬件和程序进行仿真调试,并给出仿真结果。
制作实物进行调试。
3总体设计
从设计的要求来分析该设计须包含如下结构:
燃气检测部分,AT89C51单片机主控部分,报警部分,AD转换部分,显示电路五大部分。
4实现的功能:
(1)对天燃气体进行检测,天燃气体浓度达到报警设定值时,应能报警。
(2)温度超过报警设设定值时,应能报警。
(3)正常工作,红灯不亮,蜂鸣器不报警。
(4)能显示此时温度和天然气浓度。
(5)浓度超限报警时,应能启动输出控制功能。
(6)错误时,有复位功能。
5硬件介绍
本设计主要以MCS-51系列单片机STC89C52RC为控制核心,它自带8K的FLASH程序存储器,它的核心处理单元为8位。
数据处理主要是对数字温度传感器18B20采集温度数据和烟雾传感器MQ-2进行AD采集,并进行逻辑判断,根据数据的具体情况输出到数码管显示和使蜂鸣器动作。
整个单片机应用系统的设计分为硬件电路设计和软件编程设计两大部分;其中硬件电路设计包括温度采集电路,单片机控制电路,路显示电路和报警与控制电路。
软件设计部分包括系统主程序,温度采集子程序,数码管显示子程序和输出驱动子程序,均采用51系列C语言编程实现。
5.1STC89C52RC芯片介绍
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。
图1STC89C52RC芯片引脚
特性:
8K字节程序存储空间;
512字节数据存储空间;
内带4K字节EEPROM存储空间;可直接使用串口下载
5.2气体检测部分
在此设计中我们选用MQ-2半导体气敏传感器。
该传感器具备一般半导体气敏传感器灵敏度高、电导率变化大、响应和恢复时间短、抗干扰能力强、输出信号大、寿命长和工作稳定等优点。
气敏元件开机时,其内阻很小,但经过一段时间后,才能到原来的稳定状态。
因此QM-2气体传感器需开机预热几分钟,才可投入使用,以免造成误报。
图2就是MQ2气体传感器。
5.3A/D转换部分
•ADC0832是NS公司生产的串行接口8位A/D转换器,通过三线接口与单片机连接,功耗低,性能价格比较高,适宜在袖珍式的智能仪器仪表中使用。
引脚及接线如3图:
•
CS为片选端,低电平有效;CH0,CH1—两路模拟
信号输入端;DI—模拟通道选择输入端;DO—模
数转换结果输出端;CLK—时钟输入端;Vcc—电
源;GND—地线。
•P32低电平时,转换器工作,P33提供时钟
脉冲,P34高点平时,转换器启动(模拟通
选择及A/D转换后的输出)
5.4DS18B20TO-92温度传感器介绍
DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。
与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。
因而使用DS18B20可使系统结构更趋简单,可靠性更高[1],如图4所示
特性:
①独特的单线接口方式:
DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
②在使用中不需要任何外围元件。
③可用数据线供电,电压范围:
+3.0~+5.5V。
④测温范围:
-55~+125℃。
固有测温分辨率为0.5℃。
⑤通过编程可实现9~12位的数字读数方式。
⑥用户可自设定非易失性的报警上下限值。
⑦支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。
⑧负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
5.5数码管的设计
共阳数码管:
led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。
位数有半位,1,2,3,4,5,6,8,10位等等....,led数码管根据LED的接法不同分为共阴和共阳两类,不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
共阴和共阳极数码管的发光原理是一样的,只是它们的电源极性不同而已。
如图3.7可知共阳及共阴数码管的结构。
10引脚的LED数码管引脚定义每一笔划都是对应一个字母表示,DP是小数点。
透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低[2]。
其原理图5所示:
图5数码管显示硬件电路
6
软件程序流程图
图6软件程序流程图
7程序代码(见附录)(P13——p24)
8Proteus仿真原理图
主机电路、数据采集电路、键盘显示电路、电源电路、控制执行电路以及掉电保护电路。
各个模块电路通过主机电路控制,协调一致的进行工作。
完成对被测物体的温度控制[3],如图7所示。
图7仿真原理图
9实物图
图8实物图
10实习的心得体会
在这次单片机设计过程中,我们团队分工合作完成的,我负责的软件仿真,在仿真过程中遇到很多的困难,遇到的第一个困难便是软件安装,这个安装真是一个技术活,全是英文,第一印象就是懵,完全不知道怎么安装,后来通过XX,找到了安装指导及其使用方法。
在仿真过程中,有很多有很多硬件不知道如何去接线,我通过请教老师和同学,最终将问题解决。
这次仿真学到了很多东西。
回顾起此次实训,感觉受益匪浅,从拿到题目到完成整个编程,从理论到实践,学到很多很多的课堂理论中没学到过的东西,通过这次实训,我们不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西
这次实习能顺利的完成,除了我们的努力外,当然也离不开郭胜召老师和白莹莹老师的辛勤指导,致使我在设计的过程中学到了很多实用性的知识。
同时,对给过我帮助的所有同学和各位指导老师表示忠心的感谢!
11参考文献
[1]喻宗泉,喻晗,李建民.单片机原理与应用技术[M].西安:
西安电子科技大学出版社,2006
[2]宋雪松,李冬明,崔长胜,手把手教你学单片机[C语言版].清华大学出版社,2016
[3]于永学.1-Wire总线数字温度传感器DS18B20及应用[J].电子产品世界,2003,12
12附录
程序代码
#include
#defineucharunsignedchar
#defineuintunsignedint
#include
#include"eeprom52.h"
ucharcodesmg_du[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,
0x30,0x25,0xe4,0x23,0x64,0x74,0x38,0xff};
ucharcodesmg_we[]={0x7f,0xbf,0xdf,0xef};
uchardis_smg[8]
sbitCS=P3^7;
sbitSCL=P3^3;
sbitDO=P3^4;
sbitledy=P1^4;
sbitledr=P1^7;
sbitdq=P1^5;
sbitbeep=P3^6;
uinttemperature,s_temp;
uchardengji,s_dengji;
ucharshoudong;
bitflag_300ms=1;
ucharkey_can;
ucharmenu_1;
voiddelay_1ms(uintq)
{
uinti,j;
for(i=0;i for(j=0;j<120;j++); } voiddelay_uint(uintq) { while(q--); } voidwrite_eeprom() { SectorErase(0x2000); byte_write(0x2000,s_temp); byte_write(0x2001,s_dengji); byte_write(0x2060,a_a); } voidread_eeprom() { s_temp=byte_read(0x2000); s_dengji=byte_read(0x2001); a_a=byte_read(0x2060); } voidinit_eeprom() { read_eeprom(); if(a_a! =1) { s_temp=50; s_dengji=5; a_a=1; write_eeprom(); } } voidinit_18b20() { bitq; dq=1; delay_uint (1); dq=0; delay_uint(80); dq=1; delay_uint(10); q=dq; delay_uint(20); dq=1; } voidwrite_18b20(uchardat) { uchari; for(i=0;i<8;i++) { dq=dat&0x01; delay_uint(5); dq=1; dat>>=1; } } ucharread_18b20() { uchari,value; for(i=0;i<8;i++) { dq=0; value>>=1; dq=1; if(dq==1) value|=0x80; delay_uint(5); } returnvalue; } uintread_temp() { uintvalue; ucharlow; init_18b20(); write_18b20(0xcc); write_18b20(0x44); delay_uint(50); init_18b20(); write_18b20(0xcc); write_18b20(0xbe); EA=0; low=read_18b20(); value=read_18b20(); EA=1; value<<=8; value|=low; value*=0.0625; returnvalue; } unsignedcharad0832read(bitSGL,bitODD) { unsignedchari=0,value=0,value1=0; SCL=0; DO=1; CS=0; SCL=1; SCL=0; DO=SGL; SCL=1; SCL=0; DO=ODD; SCL=1; SCL=0; DO=1; for(i=0;i<8;i++) { SCL=1; SCL=0; value<<=1; if(DO) value++; } for(i=0;i<8;i++) { value1>>=1; if(DO) value1+=0x80; SCL=1; SCL=0; } CS=1; SCL=1; if(value==value1) returnvalue; return0; } voiddisplay() { uchari; P0=0xff; P2=smg_we[i]; P0=dis_smg[i]; i++; if(i>=4) i=0; } voidtime_init() { EA=1; TMOD=0X01; ET0=1; TR0=1; } ucharkey_can; voidkey() { staticucharkey_new; key_can=20; P1|=0x0f; if((P1&0x0f)! =0x0f) { delay_1ms (1); if(((P1&0x0f)! =0x0f)&&(key_new==1)) key_new=0; switch(P1&0x0f) { case0x0e: key_can=4;break; case0x0d: key_can=3;break; case0x0b: key_can=2;break; case0x07: key_can=1;break; } } } else key_new=1; } voidkey_with() { if(key_can==4) { if(menu_1==0) shoudong=1; } if(key_can==1) { menu_1++; if(menu_1>=3) { menu_1=0; } } if(menu_1==0) { if((key_can==2) shoudong=0; } if(menu_1==1) { if(key_can==2) { s_temp++; if(s_temp>99) s_temp=99; } if(key_can==3) { s_temp--; if(s_temp<=10) s_temp=10; } dis_smg[0]=smg_du[s_temp%10]; dis_smg[1]=smg_du[s_temp/10%10]; dis_smg[2]=0x7f; dis_smg[3]=smg_du[12]; write_eeprom(); } voidclock_h_l() { staticucharvalue; if((dengji>=s_dengji)||(temperature>=s_temp)||(shoudong==1)) { value++; if(value>=2) { value=10; beep=~beep; if(dengji>=s_dengji) { ledr=~ledr; } if(temperature>=s_temp) { ledy=~ledy; } if(shoudong==1) { ledy=~ledy; ledr=~ledr; } } }else { if((dengji { value=0; beep=1; ledr=1; ledy=1; } } } voidmain() { beep=0; delay_1ms(200); P0=P1=P2=P3=0xff; temperature=read_temp(); init_eeprom(); delay_1ms(650); temperature=read_temp(); time_init(); while (1) { key(); if(key_can<10) { key_with(); } if(flag_300ms==1) { flag_300ms=0; clock_h_l(); temperature=read_temp(); dengji=ad0832read(1,0); dengji=dengji*10/250; if(menu_1==0) } delay_1ms (1); } } voidtime0_int()interrupt1 { staticucharvalue; TH0=0xf8; TL0=0x30;//2ms value++; display(); if(value%150==0) { flag_300ms=1; value=0; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 烟雾 报警器 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)