单片机课程设计报警器硬件设计.docx

上传人:b****0 文档编号:9057937 上传时间:2023-05-16 格式:DOCX 页数:31 大小:328.70KB
下载 相关 举报
单片机课程设计报警器硬件设计.docx_第1页
第1页 / 共31页
单片机课程设计报警器硬件设计.docx_第2页
第2页 / 共31页
单片机课程设计报警器硬件设计.docx_第3页
第3页 / 共31页
单片机课程设计报警器硬件设计.docx_第4页
第4页 / 共31页
单片机课程设计报警器硬件设计.docx_第5页
第5页 / 共31页
单片机课程设计报警器硬件设计.docx_第6页
第6页 / 共31页
单片机课程设计报警器硬件设计.docx_第7页
第7页 / 共31页
单片机课程设计报警器硬件设计.docx_第8页
第8页 / 共31页
单片机课程设计报警器硬件设计.docx_第9页
第9页 / 共31页
单片机课程设计报警器硬件设计.docx_第10页
第10页 / 共31页
单片机课程设计报警器硬件设计.docx_第11页
第11页 / 共31页
单片机课程设计报警器硬件设计.docx_第12页
第12页 / 共31页
单片机课程设计报警器硬件设计.docx_第13页
第13页 / 共31页
单片机课程设计报警器硬件设计.docx_第14页
第14页 / 共31页
单片机课程设计报警器硬件设计.docx_第15页
第15页 / 共31页
单片机课程设计报警器硬件设计.docx_第16页
第16页 / 共31页
单片机课程设计报警器硬件设计.docx_第17页
第17页 / 共31页
单片机课程设计报警器硬件设计.docx_第18页
第18页 / 共31页
单片机课程设计报警器硬件设计.docx_第19页
第19页 / 共31页
单片机课程设计报警器硬件设计.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机课程设计报警器硬件设计.docx

《单片机课程设计报警器硬件设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报警器硬件设计.docx(31页珍藏版)》请在冰点文库上搜索。

单片机课程设计报警器硬件设计.docx

单片机课程设计报警器硬件设计

 

目录

一、前言2

二、总体设计思想3

三、报警器硬件设计3

3.1设计原理3

3.2硬件组成3

3.3温度采集硬件部分3

3.4烟雾探测硬件部分3

3.5红外检测硬件组成部分3

3.6ATC89C51的结构与特性3

3.6.1AT89C51的结构3

3.6.2AT89C51的管脚特性3

3.7数码管显示硬件部分3

3.7.1七段四位共阴极数码管3

3.7.2控制段选和位选3

3.8声光报警硬件组成部分3

3.9整体电路图3

3.10模数转换硬件组成部分3

四、报警器的软件设计3

4.1软件设计主要思路3

4.2软件调试3

五、运行结果3

六、总结3

6.1设计中遇到的问题与解决办法3

6.2进一步完善的设想3

6.3心得体会3

七、附录3

7.1程序清单3

7.2参考文献3

7.3组员分工说明3

 

一、前言

在各种灾害中,火灾是最经常、最普通地威胁公众安全和社会发展的灾害之一。

人类能够对火进行利用和控制,是文明进步的一个重要标志。

火,给人类带文明进步、光明和温暖。

但是,失去控制的火,就给人类造成灾害。

据统计,我国70年代火灾年平均损失不到2.5亿元,80年代火灾年平均损失不到3.2亿元。

进入90年代,特别是1993年以来,火灾造成的直接财产损失上升到年均十几亿元,年均死亡2000多人。

2010年上海静安区高层住宅着火,导致58人死亡,70余人受伤。

2014年1月云南香格里拉大火,烧毁房屋100多栋,直接经济损失1亿多元人民币。

火灾事件经常发生,防止火灾事故关系到人民群众的生命财产安全和社会和谐稳定。

现在各种电子产品的普及,再加上人们防火意识的不强,这些都给火灾的发生带来了巨大的安全隐患。

应对火灾关键的问题在于预防,目前防火报警系统趋于智能化、自动化,灵敏程度也越来越高。

在这种背景下,基于单片机的火灾智能报警控制系统能突显出其巨大的优越性。

本系统侧重于小型火灾智能报警系统的设计,可在火灾发生初期检测到险情并且及时报警,还能够实时显示温度和烟雾浓度以及红外辐射强度。

这种智能报警系统能及时阻止严重的火灾事故的发生,从而最大限度地降低火灾给人民群众带来的损失。

 

二、总体设计思想

首先通过温度传感器、气体传感器、红外传感器测得周围环境的温度、烟雾浓度和红外辐射强度,然后通过模数转换装置将这些物理量显示在数码管上,最后根据这些物理量的数值判断是否有火灾发生,从而决定是否启动报警装置。

 

三种传感器测出周围环境温度、烟雾浓度、红外辐射强度。

 

将测得的物理量转换成数字显示在数码管上。

 

判断是否有火灾发生。

 

启动声光报警装置

 

图2-1总体设计思想

 

三、报警器硬件设计

3.1设计原理

利用单片机检测温度、烟雾、红外辐射并显示各自的值,当以上某一项的数值超出上限值时系统启动报警,发出声光报警信号,直至险情排除,系统自动停止报警。

3.2硬件组成

AT89C51

控制模块

温度采集模块

数码管显示

烟雾探测模块

声光报警

红外检测模块

 

图3-1硬件组成

如图2-1所示,本系统主要由单片机控制模块、温度采集模块、烟雾探测模块、红外检测模块、数码管显示、声光报警系统组成。

 

3.3温度采集硬件部分

温度采集部分使用温度传感器采集实时温度,本课程设计使用的温度传感器是AD590。

AD590是美国模拟器件公司的电流输出型温度传感器,供电电压范围为3~30V,输出电流223μA(-50℃)~423μA(+150℃),灵敏度为1μA/℃。

当在电路中串接采样电阻R时,R两端的电压可作为输出电压。

注意R的阻值不能取得太大,以保证AD590两端电压不低于3V。

AD590输出电流信号传输距离可达到1km以上。

作为一种高阻电流源,最高可达20MΩ,所以它不必考虑选择开关或CMOS多路转换器所引入的附加电阻造成的误差。

适用于多点温度测量和远距离温度测量的控制。

其检测电路如图3-2所示。

图3-2AD590检测电路

3.4烟雾探测硬件部分

烟雾探测部分用于探测烟雾的实时浓度,由于火灾发生时产生的气体主要有CO、CO2等碳氧化合物。

TGS202气体传感器能探测到CO2,CO甲烷,煤气等多种气体,它灵敏度高,稳定性好,适合于火灾中气体的探测。

如图2-5所示,当TGS202探测到CO2或者CO时,传感器的内阻变小,VA迅速上升。

选择适当的电阻阻值,使得当气体浓度达到一定程度(如CO浓度达到0.06%)时,VA端获得适当的电压(设为3V)。

3.5红外检测硬件组成部分

红外辐射俗称红外线,是一种不可见光。

其光谱位于可见光红色以外,所以就简称为红外线。

物体本身是有辐射的,炽热的物体向外辐射的能量是通过红外线辐射出来的。

物体温度越高,辐射出来的红外线越多,辐射的能量就越强。

红外传感系统是用红外线为介质的测量系统,按照功能可分成五类,按探测机理可分成为光子探测器和热探测器。

红外传感技术已经在现代科技、国防和工农业等领域获得了广泛的应用。

本系统的红外检测模块采用单光束反射取样式光电传感器ST178,该传感器是由南平旭光电子科技有限公司开发生产的主要应用于物体运动方向及正反转转速、行程测量等。

其在本系统中的应用原理是,光电传感器接收孔探测到火焰辐射的较强烈的红外线时,接收管导通输出一定的电压,辐射越强烈,则3脚输出的电压也越大,应此把3脚接与比较器LM339,当辐射达到一定时比较器输出高电平,当在无红外辐射或辐射较少时,比较器输出底电平,并且ST178对人体辐射的红外线波长不敏感,对火焰辐射的红外线可灵敏检测,价格实惠,因此本系统采用该传感器作为红外敏感元件。

 

3.6ATC89C51的结构与特性

3.6.1AT89C51的结构

AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C51存储器为很多嵌入式系统提供了一种灵活性高且价廉的方案。

外形及引脚排列如图2.6-1和图2.6-2所示。

图3.6-1

图3.6-2

 

3.6.2AT89C51的管脚特性

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P0口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为低八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

口管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(计时器0外部输入)

P3.5T1(计时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

 

3.7数码管显示硬件部分

3.7.1七段四位共阴极数码管

七段四位共阴极数码管用于显示测量到的温度、烟雾浓度和红外辐射强度,在转换过程中需要将测得的模拟量转换为数字量,其中要使用到ADC0808,有关ADC0808的详细资料将在后面详细介绍。

3.7.2控制段选和位选

为了节省C51芯片引脚,本设计使用两个锁存器74HC573来控制段选和位选。

74HC573具有数据锁存功能,数据锁存是指当输入的数据消失时,在芯片的输出端,数据仍然保持。

74HC573各引脚如下:

 

当然在数码管与74HC573锁存器之间还需要连接上拉电阻,上拉电阻仿真图如下:

3.8声光报警硬件组成部分

当传感器测得的物理量超过设定的上限值时,该系统就认定为发生了火灾,于是启动火灾报警系统。

本设计报警系统采用声光报警,当火灾发生时,发光二极管不停闪烁,并且蜂鸣器发出声音。

声光报警仿真图如下:

3.9整体电路图

 

说明:

由于Proteus中没有所需要的传感器,在电路图中只能用三个滑动变阻器输出不同的电压值,用这三个电压值代替传感器测得的数据。

3.10模数转换硬件组成部分

ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

⑴ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。

各引脚功能如下:

1~5和26~28(IN0~IN7):

8路模拟量输入端。

8、14、15和17~21:

8位数字量输出端。

22(ALE):

地址锁存允许信号,输入,高电平有效。

6(START):

A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0808复位,下降沿启动A/D转换)。

7(EOC):

A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

9(OE):

数据输出允许信号,输入,高电平有效。

当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

10(CLK):

时钟脉冲输入端。

要求时钟频率不高于640KHZ。

12(VREF(+))和16(VREF(-)):

参考电压输入端

11(Vcc):

主电源输入端。

13(GND):

地。

23~25(ADDA、ADDB、ADDC):

3位地址输入线,用于选通8路模拟输入中的一路

⑵ADC0808的数字输出

ADC08080内部对转换后的数字量具有锁存能力,数字量输出端D0-D7具有三态功能,只有当输出允许信号OE为高电平有效时,才将三态锁存缓冲器的数字量从D0-D7输出。

对于8位A/D转换器,从输入模拟量Vin转换为数字量N的公式为:

N=(Vin-VREF(-))/(VREF(+)-VREF(-))V×28;

 

四、报警器的软件设计

4.1软件设计主要思路

主程序循环扫描三个传感器测得的物理量,当其中一个物理量超过上限值时,启动中断服务程序,启动声光报警装置,直至险情解除,传感器测得的物理量回归正常时,关闭声光报警装置。

主程序流程图如下:

 

温度值是否大于50

选中ADC0808的IN_0通道,进行温度采集

关闭报警器

初始化定时器,不开中断

开始

 

选中ADC0808的IN_1通道,进行烟雾采集

选中ADC0808的IN_1通道,进行烟雾采集

 

浓度值是否大于100

浓度值是否大于80

否否

 

结束

启动声光报警装置

是是是

 

4.2软件调试

调试过程中出现了很多问题,其中包括语法的错误、变量没有定义等问题,这些问题都能比较快速地解决。

本设计遇到最大的困难就是如何将传感器测得的模拟量转换为数字量,并且在数码管上显示。

模数转换是本设计的核心内容,这个问题解决后,其它一切问题迎刃而解。

还没有得到解决的问题是数码管的显示,数码管不能正常显示测得的物理量。

 

五、运行结果

以上显示电路代表的数据是180a表示测得的温度是180度,超出设定的上限值,LED灯开始闪烁报警,蜂鸣器响。

 

六、总结

6.1设计中遇到的问题与解决办法

❶Proteus中并没有所需要的传感器,因此我就同三个滑动变阻器来获得三个物理量,分别表示温度、烟雾浓度和红外辐射强度。

❷本设计的核心是将传感器测得的物理量转换为数字量,然后在数码管上显示出来,这也是整个设计的难点。

最后我选择的是ADC0808实现模数转换。

❸遇到的第三个难点是怎么知道数码管上显示的数字量是温度还是烟雾浓度或者是红外辐射强度?

本来我是希望通过一个液晶显示屏来同步显示“温度”、“烟雾浓度”和“红外辐射强度”这些汉字的,但是没有做成功,最后的解决方法是用字符ABC代替“温度”、“烟雾浓度”和“红外辐射强度”。

❹报警时蜂鸣器不响。

通过查找资料,弄清楚了buzzer、sounder和Speaker三者之间的区别以及它们接线的差异。

❺还有一个没有解决的问题是数码管显示的数字不断闪烁,不能静态显示。

6.2进一步完善的设想

本课程设计还有一些地方需要改进和完善,其中最为明显的是数码管显示测得的物理量的数据。

另外,在实际中,传感器是不能用滑动变阻器取代的,所以没有做出实物也是本课程设计的一大遗憾。

最后,我认为一个纯粹的报警系统是不完美的,智能报警应该与智能灭火相结合,这样才能发挥巨大的威力。

那么我的设想是当报警系统确认火灾发生时,立即启动报警装置,与此同时还要启动智能灭火装置,这样就能够完全消灭火灾。

具体设想如下:

传感器测得温度等物理量

 

通过数码管显示,并判断火灾是否发生

 

启动智能灭火装置

启动声光报警装置

 

6.3心得体会

这次课程设计虽然做的并不完美,但是通过查阅资料然后亲自动手设计电路图,编写程序,调试程序,根据硬件电路的显示结果不断调试程序使我弄清楚了很多元器件的作用和使用方法。

通过Proteus设计仿真电路图,我掌握了Proteus的基本操作方法和使用技巧。

在编写和调试程序的过程中通过查阅相关资料,我弄懂了很多课堂上没有弄清楚的知识点,可以发现单片机的学习应该结合实际操作的,这样才会学的更快、更扎实。

这次课程设计花了很多时间,刚开始做时困难重重,但是通过认真研究并且动手实践也能感受到其中的乐趣。

 

七、附录

7.1程序清单

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitST=P2^0;//启动转换位

sbitOE=P2^2;//输出允许位

sbitALE=P2^3;//地址允许锁存位

sbitEOC=P2^1;//模数转换结束位

sbitADDA=P3^4;//定义地址输入线

sbitADDB=P3^5;

sbitWELA=P2^6;

sbitDULA=P2^7;

sbitled=P3^6;

sbitBUZZER=P3^7;

longintdatas,bai,shi,ge,p;

ucharduan,x,k,m,n;

ucharcodenum[]=

{0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f};//数字0~9

voiddelay(uintz)//延时函数

{

uchari,j;

for(i=z;i>0;i--)

for(j=110;j>0;j--);

}

voiddisplay1()

{

for(k=20;k>0;k--)

{

DULA=1;

P0=num[bai];//显示百位上的数字

DULA=0;

P0=0xff;

WELA=1;

P0=0xfe;

WELA=0;

delay(50);

DULA=1;

P0=num[shi];//显示十位上的数字

DULA=0;

P0=0xff;

WELA=1;

P0=0xfd;

WELA=0;

delay(50);

DULA=1;

P0=num[ge];//显示个位上的数字

DULA=0;

P0=0xff;

WELA=1;

P0=0xfb;

WELA=0;

delay(50);

DULA=1;//显示A代表温度

P0=0x77;

DULA=0;

WELA=1;

P0=0xf7;

WELA=0;

delay(50);

}

}

voiddisplay2()

{

for(k=20;k>0;k--)

{

DULA=1;

P0=num[bai];

DULA=0;

P0=0xff;

WELA=1;

P0=0xfe;

WELA=0;

delay(50);

DULA=1;

P0=num[shi];

DULA=0;

P0=0xff;

WELA=1;

P0=0xfd;

WELA=0;

delay(50);

DULA=1;

P0=num[ge];

DULA=0;

P0=0xff;

WELA=1;

P0=0xfb;

WELA=0;

delay(50);

DULA=1;//显示B代表烟雾浓度

P0=0x7c;

DULA=0;

P0=0xff;

WELA=1;

P0=0xf7;

WELA=0;

delay(50);

}

}

voiddisplay3()

{

for(k=20;k>0;k--)

{

DULA=1;

P0=num[bai];

DULA=0;

P0=0xff;

WELA=1;

P0=0xfe;

WELA=0;

delay(50);

DULA=1;

P0=num[shi];

DULA=0;

P0=0xff;

WELA=1;

P0=0xfd;

WELA=0;

delay(50);

DULA=1;

P0=num[ge];

DULA=0;

P0=0xff;

WELA=1;

P0=0xfb;

WELA=0;

delay(50);

DULA=1;//显示C代表红外辐射强度

P0=0x39;

DULA=0;

P0=0xff;

WELA=1;

P0=0xf7;

WELA=0;

delay(50);

}

}

voidmain()

{

while

(1)

{

for(x=0;x<3;x++)

{

if(x==0)

{//温度传感器转换数码管显示

ADDA=0;

ADDB=0;

ST=OE=0;//将START和EO先置0

ALE=1;//将ALE和ST置1拉高电平

ST=1;

ALE=0;//将ALE和START置0开始数据变换

ST=0;

while(!

EOC);//等待EOC,ECO为1表示转换完成

OE=1;//打开OE,读取数据

datas=P1;

bai=(datas*500/255)/100;//计算并得到最高位

shi=(datas*500/255)/10%10;//计算并得到中间位

ge=(datas*500/255)%10;//计算并得到最低位

display1();

p=(datas*500/255)*100;

if(p>50)

{

for(m=10;m>0;m--)//led灯报警,闪烁10次

{

BUZZER=0;

delay(5000);

BUZZER=1;

delay(500);

led=0;

delay(50);

led=1;

delay(50);

}

}

DULA=1;//所有数码管停止显示

P0=0x00;

DULA=0;

WELA=1;

P0=0xff;

delay(100);

}

if(x==1)

{

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2