基于单片机的智能家居安防系统设计docWord文档格式.docx
- 文档编号:18860176
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:39
- 大小:1.07MB
基于单片机的智能家居安防系统设计docWord文档格式.docx
《基于单片机的智能家居安防系统设计docWord文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能家居安防系统设计docWord文档格式.docx(39页珍藏版)》请在冰豆网上搜索。
3.2 硬件系统模块设计....................................
第四章系统调试...................................
4.1 软件调试............................................
4.2 硬件调试............................................
4.3 综合调试............................................
第五章结束语......................................
致谢.................................................
附录1..............................................
附录2..............................................
附录3..............................................
参考文献...........................................
序言
随着现代人生活节奏的加快,人们在家中的时间越来越少。
此时住宅中无人值守的状态会带来很多的安全隐患,因此就需要一个设备能够让主人安心工作又不必担心家里发生了警情自己却不知道,错过了解决的黄金时间。
针对这样的一个背景,设计出此类的系统就有它的必要性,而且这样的系统对于店面等夜间无人值守的地点同样都有它的用武之地。
为解决此问题我们设计出这样的系统,该系统以单片机为核心通过PSTN实现智能家居安防报警功能,解决了家中无人值守所带来的各种安全隐患。
一旦住宅中有警情(天然气、水、盗、火)发生,系统会第一时间检测、判别警情类型,并通过PSTN远程报警让主人知道家中发生的具体情况,以便及时解决。
预置的电话号码类型不受限制(手机号码亦可)。
系统还采用多次拨号的方式,以便解决主人未能及时接到的报警电话。
另外该系统还可以安装在拥有PASN接口的任何场合,而不仅仅局限于家庭。
本论文共分5章。
第一章为任务书的分析与总体设计;
第二章为系统软件设计;
第三章为系统硬件设计;
第四章为系统调试;
第五章为结束语。
把系统软件设计放在系统硬件设计之前的原因是我们软件设计优先于硬件设计。
设计过程中我们采取了分工与合作的方法,我负责软件的编写与调试。
张峰同学负责硬件电路的设计、安装和调试,综合调试由我们共同完成。
在设计过程中,软硬件的功能总是不断的调整,以便相适应。
硬件设计和软件设计是不能截然分开的,硬件设计时应考虑软件设计的方法,而软件设计时应了解硬件的工作原理,在整个设计过程我们互相协调,提高了工作效率。
在本次毕业设计中我们的指导老师陶为戈为此次设计付出了大量辛勤的劳动,在很多问题上给予指导性的意见,同时在毕业设计的过程中得到了系各级领导的关心和指导,在此表示由衷的感谢!
由于毕业设计时间紧工作量大,错误和不妥之处在所难免,敬请谅解。
编者
2007-6-7
第一章设计任务的分析与系统的总体设计
1.1设计任务的分析
设计课题的技术指标是:
1.软件设计环境。
2.系统具有天然气、火、水、盗检测信号输入,实现一个检测信号,其他可用模拟开关代替。
3.单片机控制自动摘机、拨号、摘机检测、语音提示。
4.具有电话网接口。
通过对设计任务书中的技术指标的分析,经过思考、总结后,得出如要完成上述要求主要在于下述几个问题的解决:
1.DTMF的产生问题;
2.电话号码的输入以及存储功能;
3.自动摘挂机功能;
4.被叫用户的摘挂机的检测;
5.报警信号的检测;
6.语音播放的控制问题。
为了简化工作的难度、系统的成本以及系统的可嵌入问题,因此本设计直接利用电话机的所具有的以上所讲的1、2的两个功能。
而3、4、5中的问题可以通过单片机为核心进行控制。
1.2系统的总体设计[4]
通过对设计任务分析,对系统做出如下总体设计。
采用89c52作为控制器件,在其周围加入传感器电路,语音电路,被叫用户摘挂机判别电路等与电话机相结合,这样既方便系统移植同时又方便了对电话机的改造以便适合系统的需要,增强了系统的可嵌入性同时又降低了成本、缩短了开发周期。
见图1.2中所示:
图1.2系统总体设计方框图
第二章系统软件设计
2.1系统软件分析
第一章中已经阐述了由于受到开发周期的限制,同时也考虑到系统的可嵌入性,故采用电话机已有键盘输入显示功能与DTMF产生功能,而其它各项功能是通过单片机控制实现。
此时系统软件主要解决摘挂机、报警信号检测、被叫用户摘挂机的检测以及语音播放功能四个问题。
从软件的角度分析,其实就是一个如何运用好中断。
系统工作流程是:
首先在电话机上存储一个电话号码。
然后开机,检测是否有报警信号,如果有则摘机并拨号。
检测被叫用户是否摘机,如果被叫用户摘机,则播放语音;
如果没有摘机,则延时一段时间后,再次拨号,重复以上的步骤4次后回到检测是否有报警信号。
而具体要拨几次号码、拨几个号码都是可以实现的。
(设计中只是以一个号码为例没有做那么多,后续课题可以增加该项功能。
)
此时思路就比较清晰了,其关键问题在于解决被叫用户是否摘机上面。
在大多数的解决方案中采用对铃流信号进行判别。
也就是对铃流信号进行计时,看它持续几秒,短的铃流软件将判别为忙音,长的铃流软件判别为呼叫音,没有了铃流信号就作为通话双方接通状态处理。
这种方法在过去能够实现,现在通过上述方法却很难实现了。
问题在于现在的手机彩铃,铃流信号一旦是手机彩铃,而手机彩铃所产生的铃流信号是没有规律的。
所以上面检测铃流的方法就毫无用武之地了。
因此要想让预设号码不受有彩铃的限制,上述方法就不能使用。
通过查找大量的资料发现,在电话接通时和没有接通时是有区别的:
未接通到接通电话线的极性刚好交换。
所以可以通过这个变化来检测被叫用户是否摘机。
这种原始的方法却很有效。
通过对以上思路分析,总结出了系统软件流程,如图2.2.1所示。
图2.2.1中报警信号检测子程序以及延时子程序和被叫用户摘机的判别子程序是选用了中断的方式而不是查询方式,这是考虑系统是在报警情况下所进行的应急处理对时间有一定的要求。
此时就产生了另一个问题,就是如何解决这三个中断的优先级。
(同一优先级下让谁优先。
也就是如果这三个中断同时出现先处理哪一个的问题。
首先被叫用户摘机中断肯定是优先级最高,因为此时肯定是有了警情处在报警状态,所以它的优先级最高。
再次是拨号后延时中断服务子程序优先,同样是因为此时已经有报警信号需要处理正处于拨号的状态或者是被叫用户接听状态。
那么报警类型判别中断服务子程序的优先级就最低。
如图2.1.1所示。
由于89c52单片机中有六个中断,现在只需要使用其中的三个中断:
外部中断0,外部中断1,定时器中断0。
这三个中在同一优先级里,由查询顺序确定的优先结构,其中外部中断0的最高,其次是定时器中断0,再次是外部中断1。
这样可以将被叫用户摘机中断设为外部中断0,同一优先级下它最高;
定时器中断使用定时器/计数器0;
报警信号处理中断设为外部中断1,在这三个中断中它是最低的。
(同一优先级里)
单片机的系统开发是一个软硬件相结合的项目。
而软件在前还是硬件在前,还是同时开发,众说纷纭。
本设计是采用软件设计优先与硬件的方法,但是必须先明确一下具体要用到哪几个口。
通过对该设计总体分析以及上面中断优先级的分析。
将P3.2口(
口)定为被叫用户中断,P3.3口(
口)定为报警信号处理中断。
因为本设计采用四声语音芯片,对于不同的警情类型对应的报警语音就需要进行选通,故定义P2.0、P2.1、P2.2、P2.3口为语音播放选通口。
P1.0口用作控制继电器,从而控制电话的摘挂机;
P1.1口用来控制继电器,从而控制电话机的重拨;
P1.2,P1.3,P1.4,P1.5口用来与外设传感器相连,从而使外设与单片机有机的结合。
此时看似可以进行编写程序了,其实还是有一个问题。
总体设计中表明被叫用户摘机检测电路是要与PSTN相连的,而电话机当然也是和PSTN相连的。
这时被叫用户摘机检测电路就相当于另一个电话分机了,当电话机挂断以后,如果被叫用户摘机检测电路没有挂断,其实对于本地电话机还是相当于处于摘机状态,以至于影响下次电话机的使用或者影响下次远程报警,所以也要在被叫用户摘机判别电路中进行控制,使本地话机挂断时被叫用户摘机判别电路也与PSTN断开。
此时定义P1.6口为被叫用户摘机判别电路的控制口。
现在就可以进行程序的编程了。
图2.1.1中断优先级
2.2程序设计
通过软件流程图2.2.1与结构化程序的思想将程序分为如下几个模块:
1.主程序;
2.
中断服务子程序;
3.定时器
4.
中断服务子程序。
图2.2.1程序流程图
下面对上述模块分别进行设计:
2.2.1主程序
主程序对所要用到的外部中断以及某些端口进行初始化:
定时器0,外部中断0,外部中断1,摘挂机置初值,拨号键置初值等。
MakeNew()
{P10=0;
P11=0;
P16=0;
TMOD=0x01;
ET0=1;
TF0=0;
TR0=0;
EX0=1;
EX1=1;
EA=1;
}
中断服务子程序
此部分要对哪种报警类型进行判别、本地的摘机与拨号,然后要对定时器置初值,即拨号后定时器的延时的初值,为进入定时器中断子程序做准备。
如下图3.2.2:
图2.2.2外部中断1子程序
根据流程图编写出以下程序:
voidint1()interrupt2using0
{
P26=1;
if(P12==0)
nKeyNumber=0x00;
if(P13==0)
nKeyNumber=0x01;
if(P14==0)
nKeyNumber=0x02;
if(P15==0)
nKeyNumber=0x03;
Delay();
EX1=0;
nCounter=0;
P10=1;
P10=0;
P11=1;
TMOD=0x01;
TH0=0x3c;
TL0=0xaf;
TR0=1;
2.2.3定时器
这部分程序主要对拨号后的延时时间进行控制同时也要对播放语音时间进行控制。
即在拨号后等待被叫用户摘机延时,若被叫用户摘机,语音播放延时后就停止拨号无需再次进行拨号了。
若被叫用户为摘机则进入下次拨号。
通过此思路归纳出如下流程图:
图2.2.3定时器0中断子程序
按此流程图编写出如下程序:
voidTimer0_Overflow()interrupt1using0
{TH0=0x3c;
if(nCounter==400)
{P10=0;
Delay();
if(DisplayYN==1)
{DisplayYN=0;
P10=1;
Delay();
P10=0;
P11=0;
P16=0;
k=0;
P2=0xff;
ET0=1;
TR0=0;
TF0=0;
EA=1;
}
else
{if(k<
4)
{EX1=1;
P10=1;
P10=0;
P11=0;
P26=0;
k+=1;
}
{k=0;
P2=0xff;
Delay();
P10=0;
P11=0;
P16=0;
EX0=0;
ET0=0;
TF0=0;
TH0=0x3c;
EX1=1;
ET0=1;
TR0=0;
EX0=0;
EA=1;
}
}
nCounter++;
}
一旦被叫用户摘机就要调用对应的语音函数,这种情况下就需要进行延时,此时使用定时器0实现该功能。
按此思路归纳出如下流程图3.2.4:
图2.2.4外部0中断子程序
根据流程图编写出如下程序:
voidint0()interrupt0using0
{EX0=0;
k=0;
P16=1;
DisplayYN=1;
SoundPlay();
KeyChoose();
P27=0;
EX1=0;
TF0=0;
TR0=1;
完整的程序如下:
#include<
stdio.h>
reg51.h>
******************************************************
********************定义并行口************************
sbitP10=0x90;
//P1.0口控制摘挂机
sbitP11=0x91;
//P1.1口控制拨号
sbitP12=0x92;
//P1.2口传感器信号输入口
sbitP13=0x93;
//P1.3口传感器信号输入口
sbitP14=0x94;
//P1.4口传感器信号输入口
sbitP15=0x95;
//P1.5口传感器信号输入口
sbitP16=0x96;
sbitP25=0xa5;
sbitP26=0xa6;
//P2.6口用作置中断1
sbitP27=0xa7;
sbitP21=0xa1;
//P2.1口控制报警音类型
sbitP32=0xb2;
//外部中断0
sbitP33=0xb3;
//外部中断1
sbitP20=0xa0;
//P2.0口控制报警音类型
sbitP22=0xa2;
//P2.2口控制报警音类型
sbitP23=0xa3;
//P2.3口控制报警音类型
voidDelay();
//短延时函数
MakeNew();
//初始化函数
KeyChoose();
//报警音选择函数
Key0_Handler();
//0号报警音
Key1_Handler();
//1号报警音
Key2_Handler();
//2号报警音
Key3_Handler();
//3号报警音
voidSoundPlay();
//报警音播放函数
intnCounter=0;
//定时器溢出的计数变量
intk=0;
//拨号次数变量
intnKeyNumber;
//报警类型变量
bitDisplayYN=0;
//被叫用户摘机判别变量
main()//主函数
{MakeNew();
//初始化
P27=1;
P21=1;
while
(1)
{
if(k>
=4)//拨号是否到达四次
{P10=0;
//挂机
//停止拨号
P2=0xff;
//P2置初值
//重置拨号次数变量
//定时器0工作方式1
TH0=0x3c;
//定时器初值
TL0=0xaf;
ET0=1;
//开定时器0
TR0=0;
//允许定时器0复位
TF0=0;
//定时器0溢出复位
//开外部中断0
EX1=1;
//开外部中断1
//开全局中断
}
**************************************************
******************初始化程序**********************
MakeNew()
}
**********中断1进行判别报警类型和延时************
voidint1()interrupt2using0
//置位停止外部中断1
if(P12==0)//是第1种报警信号吗?
if(P13==0)//是第2种报警信号吗?
nKeyNumber=0x01;
if(P14==0)//是第3种报警信号吗?
if(P15==0)//是第4种报警信号吗?
//定时器0溢出计数变量复位
//拨号
//延时
//重拨
TMOD=0x01;
////定时器0开始工作
***************************************************
****定时器0中断进行延时以及拨号是否4次的判别*****
**********和被叫用户是否摘机的判别*****************
****************************************************
voidTimer0_Overflow()interrupt1using0
if(nCounter==200)//是否延时十秒了
if(DisplayYN==1)//被叫用户是否接通判别
//被叫用户摘机判别变量复位
P10=0;
4)//拨了四次了吗?
//挂
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 智能家居 系统 设计 doc