完整版基于单片机的多功能住宅安防报警系统的毕业设计论文Word文件下载.docx
《完整版基于单片机的多功能住宅安防报警系统的毕业设计论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《完整版基于单片机的多功能住宅安防报警系统的毕业设计论文Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
指导教师签名:
年 月 日
摘要
本系统以MCS-51系列单片机STC89C52为微处理器设计了住宅安防报警系统。
系统包括硬件和软件设计两个部分,整个系统硬件在软件控制下工作的。
硬件部分包括单片机控制电路、传感器采集电路、驱动执行报警电路、LCD显示电路等部分组成。
该系统制作简单、成本低,功能齐全、安装比较方便,而且安防性能比较稳定,抗干扰能力强、灵敏度高、安全可靠,另外这种防盗器安装隐蔽,不易被盗贼发现。
该系统将极大改善广大家庭的家居安全环境。
关键词:
单片机;
传感器;
家居安防
DesignoftheMulti-functionHomeSecurity
AlarmSystemBasedontheSingle-chip
ABSTRACT
ThissystemwithMCS-51MCUSTC89C52microprocessordesignresidentialsecurityalarmsystem.Thesystemconsistsofoftwoparts,the,theinstallationisconvenient,andthesecurityperformanceisrelativelystable,stronganti-interferenceability,,isnoteasytobethethieffound.ThesystemwillgreatlyimprovethemajorityofthefamilyProject”新建一个工程;
(2)在对话框,选择放在刚才建立的“fangzhen”文件夹下,给这个工程取个名为“ccc”后保存,工程名字可以任意取;
(3)弹出一个框,在CPU类型下我们找到并选中“Atmel”下的AT89S51或52;
(4)以上工程创建完毕,接下来开始建立一个源程序文本;
(5)输入源程序文件名名称“main.c”,增加其他的程序,(注意:
如果您想用汇编语言,要带后缀名一定是“test.asm”,如果是C语言,则是“test.c”),然后保存:
(6)最后还要有设置一下晶振为12M,因12MHZ方便计算指令时间;
(7)在Output栏选中CreateHEXFile,使编译器输出HEX文件,如下图4-1所示:
图4-1Keil设置方法
(8)工程项目创建和设置全部完成!
点击保存并编译,如图4-2所示
图4-2Keil编译图
(9)编译中可能会出现错误,这时需要对程序进行修改,修改好之后点击“保存”按钮,然后点击“编译”按钮,看是否把错误修改好了,如此反复进行,直到最后编译出来的文件没有错误为止。
(10)将编译出来的HEX文件通过Proteus软件下载到单片机里便可以进行软件仿真调试了[11]。
4.2软件仿真效果
本系统的软件仿真是在Proteus软件上实现的,利用该软件画好仿真原理图后,就可以双击单片机元件添加KeiluVision4刚才生成的HEX文件,点击仿真图标就可以开始仿真了。
当系统处于正常情况时,LCD显示屏显示当前温度值和“正常”字样,系统仿真结果如图4-3所示:
图4-3正常情况时系统仿真图
当发生火宅时,室内空气的温度会升高,温度传感器电路检测到温度上升,并将温度值输送给单片机,当温度值高于设定值时,单片机将控制声光报警电路完成报警工作,并显示当前温度值、“非正常”和“火灾”字样。
通过查找资料发现报警温度设置应在50℃左右,这样才可以有效、及时地检测到火灾,故本设计设定的报警温度为50℃,软件仿真结果如图4-4所示:
图4-4发生火宅时系统仿真图
当有陌生人闯入时,仿真时只需将SW1开关拨向高电平,以此来模拟热释电红外传感器检测到有陌生人闯入住宅,送给单片机一个高电平,仿真结果如图4-5所示:
图4-5有人闯入时系统仿真图
可以看出,仿真结果和预先设计的方案基本一致,达到了预期的目标。
5总结
本文研究并设计了基于STC89C52单片机技术的多功能住宅安防报警系统,并进行了软件仿真和硬件调试,利用热释电红外传感器来检测陌生人的入侵、利用温度传感器检测室温来预测火灾,能够把住宅中发生的各种险情信息很好的检测出来,当险情发生时,能及时的通知主人进行处理,保证了住户的生命和财产安全。
主要完成的工作如下:
(1)阐述了课题研究的背景、目的和意义,分析了国内外在该方向的研究和发展状况;
(2)论证了方案的设计,介绍了系统总体设计方案以及系统各个模块的具体设计电路;
(3)设计了系统的主程序整体流程;
具体阐述了单片机初始化及程序流程;
最后介绍了传感器中断程序的设计及流程图;
(4)完成了系统电路的软件仿真和硬件调试,并达到预期的目标。
通过仿真和调试发现,本系统具有很强的实用性,性能优越、结构清晰、成本低,功耗小,并具有较好的扩展性,将大力提高人们的住宅安防水平。
本文下一步工作将增加一个无线模块实现无线传输,并且构建家庭无线传感器网络,并将家庭安防做到远距离通信,例如增加GPRS模块,实现当有警情时及时通过该模块发送一个短信或彩信给外出的户主,实现及时报警及控制信息的远程传输[12]。
参考文献
[1]韩毅.上班族,如何保护自己的家——家庭防盗报警系统[J];
安防科技,2003(07):
20-22;
[2]施旭燕.智能家居自动化技术研究[D].哈尔滨工程大学硕士论文,2002;
[3]宋文绪.传感器与检测技术[M].北京:
高等教育出版社,2004:
40-70;
[4]张洪润,张亚凡,邓洪敏.传感器原理及应用[M].北京:
清华大学出版社,2008:
78-92;
[5]吴英才,林华清.热释电红外传感器在防盗系统中的应用[M].传感器技术,2002:
4-48;
[6]徐玮,徐富军,沈建良.C51单片机高效入门[M].机械工业出版社,2001:
23-62;
[7]薛均义,张彦斌.MCS-51系列单片微型计算机及其应用[M].西安:
西安交通大学出版社,2005:
65-85;
[8]李全利.单片机原理及接口技术[M].北京:
北京航空航天大学出版社,2004:
53-70;
[9]徐爱钧,彭秀华.单片机高级语言C51应用程序设计[M].北京:
北京航空航天大学出版社,2006:
79-92;
[10]唐桃波,陈玉林.基于AT89C51的智能无线安防报警器[J].电子设计应用,2003:
49-51;
[11]孙利民,李建中,陈渝等.无线传感器网络[M].北京:
清华大学出版社,2005:
29-49;
[12]黄布毅.基于无线传感器网络的家庭安防报警系统设计[J].安防科技,2008(03):
30-32;
附录
1.附图:
附图1热释电红外感应模块
附图2温度传感器实物图
、
2.系统所用部分程序:
单片机主程序:
main.c
#include"
ds18b20.(ucharscreen);
清屏
voidSetLine(ucharline);
置页地址
voidSetColum(ucharcolum);
置列地址
voidSetStartLine(ucharstartline);
置显示起始行
voidSelectScreen(ucharscreen);
选择屏幕
voidShow1616(ucharlin,ucharcolum,uchar*address);
显示一个汉字
voidInitLcd();
初始化
voidResetLcd();
复位
voidShow_english(ucharlin,ucharcolum,uchar*address);
unsignedcharcodeMusic_Code[]={0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
0x17,0x17,0x17,0x17,0x17,0x17,0x0D,0x03,0x18,0x04,
0x0D,0x03,0x16,0x04,0x0B,0x03,0x11,0x04,0x10,0x03,
0x11,0x04,0x15,0x02,0x10,0x16,0x00,0x00};
constucharcodenum[]={
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,*"
0"
0*
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,*"
1"
1*
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,*"
2"
2*
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,*"
3"
3*
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,*"
4"
4*
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,*"
5"
5*
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,*"
6"
6*
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,*"
7"
7*
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,*"
8"
8*
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,*"
9"
9*
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,*"
."
};
constucharcodechin[]={
温(0)度
(1)非
(2)正(3)常(4)发(5)生(6)火(7)灾(8)有(9)人(10)闯(11)入(12)!
(13)
0x00,0x44,0x8C,0x18,0x00,0xFC,0xA4,0xA4,0xA4,0xA4,0xA4,0xA4,0x24,0xFC,0x00,0x00,
0x00,0xC0,0x38,0x87,0xF8,0x84,0x84,0xFC,0x84,0x84,0xFC,0x84,0x85,0xFC,0x80,0x00,*"
温"
0x00,0xF0,0x08,0x28,0x28,0xF8,0x28,0x28,0x2C,0x28,0x28,0xF8,0x28,0x28,0x08,0x00,
0x80,0x7F,0x80,0x84,0x84,0x8C,0x55,0x65,0x25,0x65,0x55,0x95,0x8C,0x80,0x80,0x00,*"
度"
0x00,0x08,0x08,0x08,0x08,0x08,0xFC,0x00,0x00,0xFE,0x08,0x08,0x08,0x08,0x00,0x00,
0x00,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0xFF,0x11,0x11,0x11,0x10,0x10,0x00,*"
非"
0x00,0x00,0x04,0xC4,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
0x80,0x80,0x80,0xFF,0x80,0x80,0x80,0x80,0xFF,0x81,0x81,0x81,0x81,0x81,0x80,0x00,*"
正"
0x00,0x70,0x10,0xD4,0x58,0x50,0x50,0x5C,0x50,0x50,0x50,0x58,0xD4,0x10,0x70,0x00,
0x00,0x00,0xF8,0x05,0x06,0x06,0x06,0x7E,0x06,0x06,0x06,0x86,0x85,0x78,0x00,0x00,*"
常"
0x00,0x00,0x00,0xF0,0x08,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0xF0,0x08,0x00,0x00,
0x00,0x80,0x81,0x40,0x20,0x30,0x18,0x07,0x06,0x08,0x10,0x21,0x40,0x80,0x80,0x00,*"
火"
0x00,0x78,0x08,0x08,0xC8,0x08,0x08,0xFE,0x08,0x08,0x08,0x08,0xC8,0x08,0x38,0x00,
0x00,0x80,0x80,0x47,0x60,0x30,0x08,0x07,0x04,0x18,0x34,0x23,0x40,0x80,0x80,0x00,*"
灾"
0x00,0x88,0x88,0xC8,0x68,0x58,0x4C,0x4A,0x48,0x48,0x48,0x48,0x48,0xC8,0x08,0x00,
0x01,0x00,0x00,0xFF,0x12,0x12,0x12,0x12,0x12,0x12,0x92,0x92,0x92,0xFF,0x00,0x00,*"
有"
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x00,*"
人"
0x00,0xF0,0x04,0x08,0xF4,0x14,0x14,0x14,0x14,0x14,0xE4,0x04,0x04,0x04,0xFC,0x00,
0x00,0xFF,0x00,0x00,0x0B,0x0A,0x0A,0x0A,0x0A,0x4A,0x4B,0xF2,0x0C,0x00,0xFF,0x00,*"
闯"
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xCC,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x40,0x20,0x18,0x04,0x03,0x00,0x00,0x00,0x03,0x0C,0x30,0x40,0x80,0x00,*"
入"
10*
0x00,0x18,0x24,0x24,0x18,0x00,0xF8,0x04,0x02,0x02,0x02,0x04,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x08,0x00,0x00,0x00,*"
C"
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,*"
"
externucharqian,bai,shi,ge;
voidmain()
{
ucharv;
playm_init_sound();
InitLcd();
while
(1)
SetOnOff
(1);
显示开,注意:
如果这里设置显示关,显示会出现错误
ds18b20_read_temp();
v=bai*10+shi;
SelectScreen(0);
选择左屏
Show1616(0,16,chin);
Show1616(0,32,chin+32);
Show_english(0,40,num+qian*16);
Show_english(0,48,num+bai*16);
Show_english(0,56,num+shi*16);
SelectScreen
(1);
Show_english(0,0,num+10*16);
Show_english(0,8,num+ge*16);
Show1616(0,16,chin+448);
if(fire_key==1||body_key==1)
{
SelectScreen(0);
Show1616(2,48,chin+480);
Show1616(2,0,chin+480);
Show1616(2,16,chin+64);
Show1616(2,32,chin+96);
Show1616(2,48,chin+128);
}
else
Show1616(2,16,chin+480);
Show1616(2,32,chin+480);
Show1616(2,48,chin+480);
Show1616(2,48,chin+96);
Show1616(2,0,chin+128);
}**
if(fire_key==1||(v>
=50))
Show1616(4,48,chin+224);
Show1616(4,0,chin+256);
led=1;
playm_play_music(Music_Code);
Show1616(4,48,chin+480);
Show1616(4,0,chin+480);
led=0;
if(body_key==1)
Show1616(6,32,chin+288);
Show1616(6,48,chin+320);
Show1616(6,0,chin+352);
Show1616(6,16,chin+385);
Show1616(6,32,chin+480);
Show1616(6,48,chin+480);
Show1616(6,0,chin+480);
Show1616(6,16,chin+480);
}
}**********************************
延时函数
**********************************
voidLcdDelay(uinttime)
while(time--);
写指令
voidSendCommand(ucharcommand)
{e=1;
wr=0;
rs=0;
databus=command;
e=0;
写数据
voidWriteData(uchardat)
rs=1;
databus=dat;
显示开关
voidSetOnOff(ucharonoff)
{if(onoff==1)
{
SendCommand(0x3f);
}
else
SendCommand(0x3e);
}
选择页
voidSetLine(ucharline)12864总共有8页(0~7),每页有8行
{line=line&
0x07;
只取后三位xxxxx111,这3个是要改变位置的数