论文555.docx
《论文555.docx》由会员分享,可在线阅读,更多相关《论文555.docx(34页珍藏版)》请在冰豆网上搜索。
论文555
摘要
本系统以STC89C52单片机为控制中心,支路控制器主要负责分析数据将数据发送到PC。
单元控制器主要完成房间进出人数检测,火灾报警,安防报警并将数据处理完成后发送到支路控制器。
可以扩展多个房间,以达到这套系统的实用功能。
并且我们做了两个房间的安防系统。
扩展功能还增加了通过RS-232转RS-485接口将各房间信息传输到计算机上,实现对房间信息的实时监控。
通过调试与测量完成了题目的基本部分和全部发挥部分的要求并有自己的创新。
关键字:
STC89C52;串行通信;传感器
目录
摘要i
目录ii
第1章前言1
1.1研究背景1
1.2研究目的与意义2
第2章系统方案选择与论证3
2.1设计要求3
2.2系统方案4
第3章系统的硬件设计与实现9
3.1系统硬件的基本组成部分9
3.2主要单元电路设计9
3.3键盘与I/O口说明13
第4章软件设计14
4.1支路控制器与远程监控端串行通信编码说明14
4.2计算机故障监控界面15
4.3支路控制器流程图15
4.4单元控制器流程图17
第5章系统测试18
5.1测试设备18
5.2功能测试及分析18
5.3产品性价比分析18
附录A:
部分源程序20
附录B:
完整原理图33
参考文献35
致谢36
第1章前言
1.1研究背景
改革开放以来,在素质教育发展的过程中,学校内人员混杂,给学校治安带来很大压力。
中学及大学失盗、失火事件时有发生;由此引起各个学校领导的高度重视和家长们的普遍关注。
现在很多学校开始派人白天守卫、夜间巡逻,并纷纷购置防护铁门、铁栏杆等被动防范措施,将主人装在铁笼子中以求安全。
一旦发生警性(如火警或盗窃),才发现铁笼子将消防人员拦在事故现场之外,难以即时救助,实为弊端。
从整顿校容角度来看,亦不雅观。
为此,各个部门提倡采用高科技手段实现技术防范措施。
在社会治安的现实需求和政府部门的推动下,市场上的防盗报警应运而生。
本文所要介绍的智能防盗防火报警系统,正是在智能防盗、防火蓬勃发展的背景下,为了满足学生及家长对安全的强烈要求,而设计并开发的。
系统的首要任务是根据学校宿舍的类型、使用功能及防护风险等要求,为保障学生的人身财产安全,通过运用传感器探测、远程数据传输等技术综合形成智能报警系统,从而达到保障宿舍安全的目的。
而且本系统还可以准确记录各个宿舍的人员进出情况,当无人时还可以语音提示关门,增强宿舍财务的安全。
当遇到盗情、火情等各种险情的时候,该系统可以通过网络自动向相关部门发出报警信号,并记录险情情况,从而达到保护学生的生命财产的目的。
1.2研究目的与意义
针对国内的发展情况,可见学校宿舍智能安全防范系统是我国未来智能校舍建设的重点发展方向。
本系统以STC89C52单片机为控制中心,支路控制器主要负责分析数据将数据发送到PC。
本课题所设计的防盗防火报警系统符合学校及家长的各项要求,实现功能包括:
能对住宅的火灾实行自动报警;还能对盗窃以及入室抢劫实行自动报警;有需要时还可以自己输入密码撤防;这使宿舍的防盗情况更智能化,适应各种需要;平时还可以记录宿舍内人员的进出情况,并做记录。
当宿舍无人时自动提示关门。
本课题内容属于硬件电路的设计与应用方面,实现过程包括电路原理设计、元器件(芯片)选择与特性测试、分立元件面包板模拟、编制程序及软件调试、整体电路编程器调试、设计外观及制版、产品抗干扰。
在满足各项性能指标的前提下,不仅要考虑到系统的易用性,还要努力降低成本,使其经济实用,在保证灵敏度的情况下,尽量降低误报率,确保在同类产品中的竞争地位。
第2章系统方案选择与论证
2.1设计要求
2.1.1任务
设计一个报警系统(低成本),系统应用于学生宿舍,能自动监视宿舍内的安全情况,有异常情况发生时能立即发出报警和求助信息。
2.1.2要求
1.基本要求
(1)实现人体检测与声光报警功能。
(2)实现烟雾检测与声光报警功能。
(3)用键盘输入密码完成报警系统的解警等工作状况。
(4)实现异地监控。
(5)能反映宿舍内人员的进出情况及人数的记录。
(6)宿舍无人时提示锁门。
(7)人体检测范围5米左右。
(8)能记录最近几天的宿舍安防情况。
(9)实现网络控制,可在监控点监控多个宿舍。
2.2系统方案
2.2.1系统整体设计方案
根据要求,将系统设计成两部分:
支路控制器部分和单元控制器1、2部分,如图3所示。
图3整体框图
支路控制器部分和单元控制器1、2采用串行通信进行整个系统间的协调控制,并通过计算机显示房间信息并进行历史记录保存。
为了更好的实现系统及各模块的功能,我们对各模块设计了几种不同的方案并进行了分析论证。
2.2.2各模块方案比较论证
1.微控制器模块
方案一:
采用FGPA(现场可编程门阵列)作为系统的控制器。
FGPA可实现各种复杂的逻辑功能,规模大,密度高,它将所有的器件集成在一块芯片上,减小了体积,提高了稳定性,并且可应用EDA软件仿真、在线调试,易于进行功能扩展,响应速度快。
但由于本设计对控制器的响应速度要求不高,FGPA的高速处理优势得不到充分体现,并且由于芯片集成度很高,成本偏高,同时由于引脚较多,电路板的布线比较复杂,加重了电路设计和实际焊接的工作。
因此我们放弃了这个方案。
方案二:
采用8位的STC89C52单片机作为主控制器,STC89C52单片机具有超低低功耗,芯片具有加密性强,无法解密,超强抗干扰等功能,宽电压,不怕电源抖动这样可以更好的适应房间的环境,I/O口经过特殊处理,单片机的内部的电源供电系统、单片机内部的复位电路都经过特殊处理,并且单片机内部的看门狗电路也是经过特殊的处理的。
STC89C52单片机的编程很方便,在系统可编程,无需编程器,无需仿真器。
使用方便,各功能易于实现,能很好的满足题目的要求,所以我们选择这个方案。
2.显示模块
方案一:
采用数码管显示。
数码管能显示数字和符号,可以大量减少占用单片机接口的数目。
显示效果直观,明亮,易于观察,可实时动态显示,并且调试容易。
方案二:
采用液晶显示屏(LCD)显示。
LCD液晶显示器不耐高温差,40度以上,10度以下,针对室外环境有一定的局限性,使用寿命短,在显示上不够清晰且成本高,在抗冲击力上与LED数码管相比也差很多。
综合考虑,最后决定采用方案一。
3.进出人检测
方案一:
超声波传感器。
超声波传感器的原理是:
超声波由压电陶瓷超声波传感器发出后,遇到障碍物便反射回来,再被超声波传感器接收。
然后将这信号放大后送入单片机。
超声波传感器在避障的设计中被广泛应用,但是超声波传感器需要40KHz的方波信号来工作,因为超声波传感器对工作频率要求较高,偏差在1%内,所以用模拟电路来做方波发生器比较难以实现。
而用单片机来作方波发生器未免有些浪费资源。
方案二:
对射式光电传感器。
将光电传感器的发射和接收部分分别放在门框两旁,当检测到人体时就发出高、低电平信号,然后系统再根据接收到的信号处理发送到支路控制器。
操作简单方便,价格低。
因此通过验证我们最后决定采用方案二。
4.键盘
方案一:
4*4矩阵键盘。
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。
方案二:
:
独立式按键结构。
独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。
独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。
综合考虑我们采用方案一。
5.人体检测
方案一:
采用光电开关。
光电开关利用被检测物对光束的遮挡或反射,由同步回路选通电路,从而检测物体有无的。
物体不限于金属,所有能反射光线的物体均可被检测。
光电开关将输入电流在发射器上转换为光信号射出,接收器再根据接收到的光线的强弱或有无对目标物体进行探测,但是光电开关检测角度小,距离短。
方案二:
采用人体红外热释电传感器。
采用PIR热释电传感器、菲涅尔。
采用了热释电专用驱动ICBISS系列驱动芯片,微功耗:
静态电流<50微安,特别适合干电池供电的自动控制产品。
宽电压范围:
DC4.5-20V。
使用简单、电源+-信号输出输出高电平信号,可方便与各类电路实现对接。
感应距离7米。
感应角度110°故采用
6.信息报警指示
方案一:
液晶显示屏(LCD)配合蜂鸣器。
采用液晶显示屏(LCD)显示。
LCD液晶显示器不耐高温差,40度以上,10度以下,针对环境有一定的局限性,使用寿命短,在显示上不够清晰且成本高,在抗冲击力上与LED数码管相比也差很多。
方案二:
计算机显示以及数码管和蜂鸣器。
发生故障支路控制器显示故障信息同时支路控制器通过RS-435串口主动向计算机发送故障代码,计算机通过VB编写一个图形用户界面显示故障信息,该方案能够能清晰地显示出故障发生的位置,并方便管理,易于更新。
因此我们选择了该方案。
2.2.3最终的设计方案
通过仔细的分析和论证,决定了系统各模块的最终方案如下:
1.MCU:
采用STC89C52单片机;
2.人体检测模块:
红外热释电传感器;
3.烟雾检测模块:
采用MQ-2气体传感器;
4.进出人检测:
采用光电开关;
5.报警信息和显示:
采用计算机显示;
6.显示模块:
采用数码管显示;
7.报警模块:
蜂鸣器LED;
8.通信方式:
串口通信。
支路控制器与单元控制器完成的功能如下:
(1)支路控制器:
采集单元控制器的信息,完成密码的输入,并且向计算机和单元控制器发送代码。
(2)单元控制器:
。
检测烟雾报警,人体报警和进出人计数,并将采集的信息发送到支路控制器。
(3)计算机端:
显示警报信息并进行历史记录保存。
第3章系统的硬件设计与实现
3.1系统硬件的基本组成部分
本系统可分为支路控制器、单元控制器两大部分。
支路控制器主要包括、显示电路、键盘电路、报警电路等。
单元控制器主要包括人体检测,人员进出检测,烟雾检测等。
各部分紧密连接形成了一套完善的安防系统。
3.2主要单元电路设计
3.2.2支路控制器主控电路
此电路是支路控制器的主控制电路,其主要芯片为89C52单片机,为了验证此电路设计是否正确,我用仿真软件下载程序进行仿真;蜂鸣器响,数码管依次显示1、2、3、4、5、6、7、8;LED点亮;按键按下后可以进行复位。
说明设计的此部分电路可以正常运行,没有问题。
图4支路控制器主控电路图
3.2.2单元控制器主电路
此部分电路主要芯片是单片机控制,我们依然用相同的仿真原理验证此电路的可行性。
下载验证程序后,此电路可以进行模数转化输出相应的电压值;LED点亮;按下按键后可以进行复位。
通过此现象说明设计的此电路可以正常运行,没有问题。
图5单元控制器主电路图
3.2.4报警控制电路
图6报警控制电路图
此电路是一个声光报警的小电路,依然用仿真软件下载程序后进行验证电路的可行性。
下载程序后蜂鸣器响,说明此电路设计正确,可以正常运行。
3.2.5无线发射接收电路
图7无线发射电路图
图8无线接收电路图
3.3键盘与I/O口说明
3.3.1键盘说明
3.3.2I/O口说明
主机端口:
P2:
数码管端口;
P1.0:
热释红外传感器
P1.1:
光电开关A
P1.2:
光电开关B
P1.3:
贵重物品检测传感器`
P1.4:
烟雾传感器
P0:
矩阵键盘。
第4章软件设计
4.1支路控制器与远程监控端串行通信编码说明
房间1:
0x011:
进人
0x012:
出人
0x013:
火灾
0x014:
安防
0x015:
无人
0x016:
物体进
0x017:
物体出
房间2:
0x021:
进人
0x022:
出人
0x023:
火灾
0x024:
安防
0x025:
无人
0x026:
物体进
0x027:
物体出
4.2计算机故障监控界面
4.3支路控制器流程图
4.3.1支路控制器主流程图如图9所示。
图9支路控制器主流程图
4.4单元控制器流程图
单元控制器流程图如图10所示
图10单元控制器主流程图
第5章系统测试
5.1测试设备
模拟场地:
按实际情况要求设计。
5.2功能测试及分析
测试项目
过程
结果及分析
人进入房间
声光报警
通过
烟雾浓度过大
声光报警
通过
密码解警
声光报警取消
通过
密码布防、撤防
通过
记录进出人数
远程PC显示房间人数及进出人数
通过
宿舍无人
提示锁门
通过
支路、单元控制器、PC通信
能够传输数据
通过
扩展两个房间
能够完成要求
通过
5.3产品性价比分析
说明:
一个支路控制器,两个房间(单元控制器)
器件名称
说明
单价
数量
金额
显示模块
2个4位1体数码管、1个138译码器等
12.6
1
12.6
单片机
3片STC89C52RD
5
1
15
烟雾检测模块
MQ-2烟雾传感器
8
2
16
热释红外模块
PIR热释电传感器
9.6
2
19.2
A/D模块
ADC832
7
2
14
其他元件
电阻、电容、按键等
5
若干
5
PCB板
单面、6cm*6cm板2块、6cm*8cm板1块
8.4
1
8.4
合计
90.2
附录A:
部分源程序
1、VB远程监控源程序
DimcomstrAsVariant
DimoldhAsInteger
DimoldwAsInteger
DimiAsInteger
DimRAsInteger
DimCAsInteger
DimxlAppAsObject
DimxlBookAsObject
DimxlSheetAsObject
Dimoutcount1AsInteger
Dimincount1AsInteger
Dimoutcount2AsInteger
Dimincount2AsInteger
Dimgoutcount1AsInteger
Dimgincount1AsInteger
Dimgoutcount2AsInteger
Dimgincount2AsInteger
PrivateSubCommand1_Click()
SelectCaseCommand1.Caption
Case"打开串口"
MSComm1.PortOpen=True
Command1.Caption="关闭串口"
Case"关闭串口"
MSComm1.PortOpen=False
Command1.Caption="打开串口"
Text1.Text=""
Text2.Text=""
EndSelect
EndSub
PrivateSubCommand2_Click()
MSComm1.Output="1"
EndSub
PrivateSubCommand3_Click()
MSComm1.Output="2"
EndSub
PrivateSubCommand4_Click()
IfText3.Text="123456"Then
'MSHFlexGrid1.Redraw=False'关闭表格重画,加快运行速度
SetxlApp=CreateObject("Excel.Application")'创建EXCEL对象
SetxlBook=xlApp.Workbooks.Add'打开已经存在的EXCEL工件簿文件
xlApp.Visible=True'设置EXCEL对象可见(或不可见)
'SetxlBook=xlApp.Workbooks.Open("d:
\text2.xls")'打开已有的EXCEL
SetxlSheet=xlBook.WorkSheets
(1)'设置活动工作表
ForR=0ToMSHFlexGrid1.Rows-1'行循环
ForC=0ToMSHFlexGrid1.Cols-1'列循环
MSHFlexGrid1.Row=R
MSHFlexGrid1.Col=C
xlBook.WorkSheets("Sheet1").Cells(R+1,C+1)="'"&MSHFlexGrid1.Text'保存到EXCEL
NextC
NextR
MSHFlexGrid1.Redraw=True
'xlsheet.PrintOut'打印工作表
xlApp.DisplayAlerts=True'不进行安全提示
'xlBook.Close(False)'关闭工作簿
SetxlSheet=Nothing
SetxlBook=Nothing
xlApp.Quit
SetxlApp=Nothing
MSHFlexGrid1.Clear'清除历史记录
MSHFlexGrid1.Row=0'对Grid控件的内容重新初始化
MSHFlexGrid1.Col=0
MSHFlexGrid1.Text="编号"
MSHFlexGrid1.Col=1
MSHFlexGrid1.Text="日期"
MSHFlexGrid1.Col=2
MSHFlexGrid1.Text="时间"
i=1
Text3.Text=""
Else
MsgBox"请输入密码",vbInformation+vbOKCancel,"警告"
Text3.Text=""
EndIf
EndSub
PrivateSubForm_Load()
OnErrorResumeNext
oldh=Me.Height
oldw=Me.Width
MSHFlexGrid1.Row=0'第一行
MSHFlexGrid1.Col=0'第一列
MSHFlexGrid1.Text="编号"
MSHFlexGrid1.Col=1'第二列
MSHFlexGrid1.Text="日期"
MSHFlexGrid1.Col=2'第三列
MSHFlexGrid1.Text="时间"
i=1
Label4.Caption=""
EndSub
PrivateSubForm_Resize()
OnErrorResumeNext
Me.Width=oldw
Me.Height=oldh
EndSub
PrivateSubForm_Unload(CancelAsInteger)
IfMsgBox("真的要退出吗?
",vbInformation+vbOKCancel,"温馨提示")=vbCancelThenCancel=True
EndSub
PrivateSubMSComm1_OnComm()
IfMSComm1.CommEvent=comEvReceiveThen
MSComm1.InBufferCount=0
comstr=MSComm1.Input
EndIf
EndSub
PrivateSubTimer1_Timer()
IfMSComm1.PortOpen=TrueThen
comstr=MSComm1.Input
MSComm1.InBufferCount=0
IfLen(comstr)<>0Then
SelectCasecomstr
Case"011"
incount1=incount1+1
Text1.Text=Str$(incount1)
Case"012"
Text2.Text="故障"
outcount1=outcount1+1
Text2.Text=Str$(outcount1)
Case"013"
Shape1.FillColor=RGB(255,0,0)'更改颜色为红色
MSHFlexGrid1.Col=0'列号
MSHFlexGrid1.Row=i'行号
MSHFlexGrid1.Text="2号LED灯"
MSHFlexGrid1.Col=1
MSHFlexGrid1.Text=Date
MSHFlexGrid1.Col=2
MSHFlexGrid1.Text=Time
i=i+1
OLE1.Action=7
Label9.Caption="房间1火灾报警:
"&Date&"—"&Time'在窗体下面显示最后一次报警记录
Case"014"
Shape2.FillColor=RGB(255,0,0)'更改颜色为红色
MSHFlexGrid1.Col=0'列号
MSHFlexGrid1.Row=i'行号
MSHFlexGrid1.Text="2号LED灯"
MSHFlexGrid1.Col=1
MSHFlexGrid1.Text=Date
MSHFlexGrid1.Col=2
MSHFlexGrid1.Text=Time
i=i+1
OLE1.Action=7
Label9.Caption="房间1安防报警:
"&Date&"—"&Time'在窗体下面显示最后一次报警记录
Case"015"
Shape3.FillColor=RGB(255,0,0)'更改颜色为红色
MSHFlexGrid1.Col=0'列号
MSHFlexGrid1.Row=i'行号
MSHFlexGrid1.Text="2号LED灯"
MSHFlexGrid1.Col=1
MSHFlexGrid1.Text=Date
MSHFlexGrid1.Col=2
MSHFlexGrid1.Text=Time
i=i+1
OLE1.Action=7
Label9.Caption="房间1无人:
"&Date&"—"&Time'在窗体下面显示最后一次报警记录
Case"016"
gincount1=gincount1+1
Text8.Text=Str$(gincount1)
Case"017"
Text2.Text="故障"
goutcount1=goutcount1+1
Text10.Text=Str$(goutcount1)
Case"021"
incount2=incount2+1
Text4