当前位置:文档之家› 单片机设计报告 红外热释电家庭防盗报警器

单片机设计报告 红外热释电家庭防盗报警器

单片机课程设计报告题目红外热释电家庭防盗报警器2014年12月31日1 方案设计与论证1.该设计包括硬件和软件设计两个部分。

模块划分为数据采集、按键设定、报警等。

2.本红外线防盗报警系统由热释电红外传感器、蜂鸣器、单片机控制电路、LED指示电路及软件组成。

3.系统可实现功能。

当人员外出时,可把报警系统设置在外出布防状态,探测器工作起来,当有人闯入时,热释电红外传感器将探测到动作,设置在监测点上的红外探头将人体辐射的红外光谱变换成电信号,红外热释电模块送出TTL 电平至STC89C52单片机,经单片机处理运算后驱动执行报警电路使警号发声。

2 硬件电路设计本设计包括硬件和软件设计两个部分。

从设计的要求来分析该设计须包含如下结构:红外感应部分、STC89C52单片机、报警系统三大部分。

电路总原理图如图3-1所示:图3-1 总体设计框图处理器采用51系列单片机STC89C52。

整个系统是在系统软件控制下工作的。

设置在监测点上的红外探头将人体辐射的红外光谱变换成电信号,送出TTL 电平至STC89C52单片机。

在单片机内,经软件查询、识别判决等环节实时发出入侵报警状态控制信号。

驱动蜂鸣器及报警指示灯报警。

2.1按键控制电路本电路的设计就是为了控制电路中布防和紧急状态下不同的工作形式,当按下布防按键后, 30秒后进入监控状态,当有人靠近时,热释红外感应到信号,传回给单片机,单片机马上进行报警。

当遇到特殊紧急情况时,可按下紧急报警键,蜂鸣器进行报警。

如图3-8所示。

图3-8按键部分2.2指示灯和报警电路在单片机的I/O 里会输出高低电平,在P20、P21和P22分别接上LED指示灯而P23接上蜂鸣器而蜂鸣器外接个8550的三极管起到开关作用,当三极管达到饱和状态下就驱动了蜂鸣器工作了。

图3-9指示灯和报警电路3 软件设计3.1 主程序按上述工作原理和硬件结构分析可知系统主程序工作流程图如下图所示:图3-10主程序工作流程图3.2 子程序3.2.1 报警判断子程序探头感受到来的脉冲信号后,表示有人闯入监控区,从而经过单片机内部程序处理后,驱动声光报警电路开始报警,持续报警,然后程序开始循环工作并保持红灯闪烁。

4 安装与调试本次设计的硬件电路主要由单片机STC89C51组成,在调试电路的过程中也碰到了一些问题。

问题一:单片机无法正常下载程序。

调试步骤:(1)检查单片机和串口电路是否连接错。

(2)检查焊接电路是否有虚焊和漏焊。

问题二:蜂鸣器鸣叫不正常。

调试步骤:检查蜂鸣器的型和位是否接的正确。

故障原因:蜂鸣器的管脚并未完全与锡面板接触。

解决方案:重新焊接使其接触良好。

5 性能测试与结果分析第一步为目测,单片机应用系统电路全部手工焊接在洞洞板上,因此对每一个焊点都要进行仔细的检查。

检查它是否有虚焊、是否有毛剌等。

第二步为万用表测试,先用万用表复核目测中认为可疑的连线或接点,查看它们的通断状态是否与设计规定相符,再检查各种电源线与地线之间是否有短路现象。

第三步为加电检查。

当系统加电时,首先检查所有插座或器件引脚的电源端是否有符合要求的电压值,接地端电压值是否接近零,接固定电平的引脚端是否电平正确。

第四步是联机检查。

在对硬件电路调试过程中,还遇到了不少问题,第一次把所有的元件都焊上去后,都准备调试了,才发现正负电源的插针离得太近了,不容易接电源,本不该犯的错误,这些都是由于自己的粗心大意造成的,所以说,做任何事情都必需经过“三思而后行”,来不得半点的马虎,否则浪费了时间和精力6 心得体会本设计研究了一种基于单片机技术的热释电智能防盗报警器。

该防盗报警器通过以STC89C52单片机为工作处理器核心,外接热释电红传感器,它是一种新颖的被动式红外探测器件,能够以非接触方式探测出人体发出的红外辐射,并将其转化为相应的电信号输出,同时能有效的抑制人体辐射波长以外的红外光线与可见光的干扰。

平时传感器输出低电平,当有人在探测区范围内移动时输出低电平变为高电平,此高电平输入单片机,作为单片机的外部触发信号处理,经单片机内部软件编程处理后,单片机输出控制信号,驱动声光报警电路开始报警。

该报警器的最大特点就是使用户能够操作简单、易懂、灵活;且安装方便、智能性高、误报率低。

随着现代人们安全意识的增强以及科学技术的快速发展,相信报警器必将在更广阔的领域得到更深层次的应用。

到目前为止我的课程设计也即将告一段落了,在这次的毕业设计中,自己也学习到了很多以前没有没有经历过的知识,让我更加清楚了理论知识和实践能力的差别了,了解到自己的短处,培养了我的独立思考能力,进一步提高了自己在实际设计过程中研究问题、发现问题、解决问题的能力,同时,也发现了自己的不足之处,和一些问题的存在,并有待进一步学习和发展,让自己在未来的工作和学习之中更快的适应和提高自己。

参考文献:[1]胡萍.串口通信的红外报警器的研制[J].计算机与现代化,2010(10):15-16.[2]唐德琴.电子温度测量仪器技术发展战略研究[J].电子科学技术,2009,27(1):1-8[3]李行善.基于串口组件的体系结构[J].电子串口与仪器学报,2010(08):15-16.[4]姜道连等.用于AT89C51设计红外报警器的设计与制作[J].国外电子元器件,2010(12):31-34.[5]冯国进.嵌入式Linux驱动程序设计从入f-J至U精通D田.北京:清华大学出版社,2008[6]蔡文斋.专业级串口调试器设计.现代电子技术,2010.[7]熊如贵.串口通信感应装置[J].电子制作,2009(6):23-31.[8]时德钢等.基于串口通信的红外报警器的研究[J].计算机测量与控制,2009,10(7):480-482.附录:1 电路图P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78R ST 9P3.0(R X D)10P3.1(T XD )11P3.2(IN T0)12P3.3(IN T1)13P3.4(T 0)14P3.5(T 1)15P3.6(W R)16P3.7(R D )17X TA L218X TA L119G ND 20(A8)P 2.021(A9)P 2.122(A10)P2.223(A11)P2.324(A12)P2.425(A13)P2.526(A14)P2.627(A15)P2.728PS EN 29A LE/PR O G 30EA /VP P 31(AD 7)P0.732(AD 6)P0.633(AD 5)P0.534(AD 4)P0.435(AD 3)P0.336(AD 2)P0.237(AD 1)P0.138(AD 0)P0.039V CC 40U 189C51/C5212M H zC 230C 330R 210K+C 110u F1234K SR ESE TR 12.2KQ 190121234K 11234K 21234K 3G N DV C C O U T人体感应模块V CCV CCV CCD 1LE DrR 42.2k R 310kV CCD 2LE DgR 5220D 3LE DyR 62.2k321P1PO W E R112233445566S12 实物图3 源程序#include <reg52.h> //调用单片机头文件#define uchar unsigned char //无符号字符型宏定义变量范围0~255 #define uint unsigned int //无符号整型宏定义变量范围0~65535#define key_io P1uchar key_can;// 红外热释电平时为0 有输出为1sbit beep = P2^3; //蜂鸣器定义sbit red = P2^2; //红色发光二极管定义sbit green = P2^1; //绿色发光二极管定义sbit yellow = P2^0; //黄色发光二极管定义sbit hw = P1^3; //红外热释传感器定义bit flag_300ms = 0;/****************独立按键处理函数************************/ void key(){static uchar key_new = 0,key_old = 0,key_value = 0;if(key_new == 0) //按键松开{if((key_io & 0x07) == 0x07)key_value ++;elsekey_value = 0;if(key_value >= 5) //按键松开松手检测{key_value = 0;key_new = 1; //按键松开后进入等待按键状态}}else{if((key_io & 0x07) != 0x07) //按键按下key_value ++;elsekey_value =0;if(key_value >= 5) //按键按下消抖{key_value = 0;key_new = 0; //按键松开后进入等待松开按键状态}}key_can = 20;if((key_new == 0) && (key_old == 1)){switch(key_io & 0x07){case 0x06: key_can = 1; break; //得到按键值case 0x05: key_can = 2; break; //得到按键值case 0x03: key_can = 3; break; //得到按键值}}key_old = key_new;}/*************定时器0初始化程序***************/void time_init(){EA = 1; //开总中断TMOD = 0X01; //定时器0工作方式1ET0 = 1; //开定时器0中断TR0 = 1; //允许定时器0定时}uchar flag_alarm ; //报警标志位uchar flag_bufang ; //布防标志位uchar flag_bufang_en ; //布防标志位使能uint flag_value; //用做定时器的变量/******************红外报警处理**********************/ void hongwai_dis(){if(flag_alarm == 1) //报警{red = ~red; //红灯报警beep = ~beep; //蜂鸣器报警}if(flag_bufang_en == 1) //准备开始布防{green = ~green; //绿灯闪}if(flag_bufang == 1) //确认布防{green = 0; //如果延时布防成功绿灯长亮if(hw == 1) //红外有输出{flag_alarm = 1;}}}/******************对应不同按键处理**********************/ void key_with(){if(key_can == 1) //按键紧急报警{flag_alarm = 1; //报警标志位;}if(key_can == 2) //布防按键{flag_bufang_en = 1;}if(key_can == 3) //取消报警把变量清零{flag_alarm = 0;flag_bufang = 0;flag_bufang_en = 0;flag_value = 0;P2 = 0xff;}}/******************主程序**********************/void main(){time_init();while(1){key();yellow = ~hw; //红外热释电指示灯有输出就亮黄灯if(key_can < 10){key_with(); //按键设置函数}if(flag_300ms == 1){flag_300ms = 0;hongwai_dis(); //红外报警函数}}}/*************定时器0中断服务程序***************/ void time0_int() interrupt 1{static uint value;TH0 = 0x3c;TL0 = 0xb0; // 50msvalue ++;if(value % 6 == 0){flag_300ms = 1;}if(flag_bufang_en == 1){flag_value ++;if(flag_value >= 600) //30秒{flag_bufang = 1;flag_bufang_en = 0;flag_value = 0;}}}。

相关主题