本科毕业论文
题 目 基于AT89C51家庭防盗报警系统设计 学 院 信息科学技术学院 专 业 电子信息工程 毕业届别 姓 名 指导教师 职 称 讲 师
目 录
摘 要 ................................................................................................................................................................... I 关键词 ................................................................................................................................................................... I Abstract ................................................................................................................................................................ II Key words ............................................................................................................................................................ II 1绪论 ................................................................................................................................................................... 1
1.1设计背景 ................................................................................................................................................ 1 1.2发展概况 ................................................................................................................................................ 1 2系统方案设计 ................................................................................................................................................... 3
2.1系统的总体方案设计结构及其特点和功能 ........................................................................................ 3 2.2设计方案的比较及确定 ........................................................................................................................ 4 2.3人体检测模块设计 ................................................................................................................................ 4 2.4显示模块选择 ........................................................................................................................................ 5 2.5传感器的选择 ........................................................................................................................................ 5
2.5.1热释电传感器的红外辐射与红外探测的原理结构 ................................................................. 6 2.5.2红外测温工作原理 ..................................................................................................................... 6 2.5.3红外传感器的结构 ..................................................................................................................... 7 2.5.4菲涅尔透镜 ................................................................................................................................. 9 2.6热释电红外传感器控制电路芯片选择 .............................................................................................. 10 2.7防火探测器电路设计 ...........................................................................................................................11 3硬件设计 ......................................................................................................................................................... 13
3.1单片机最小系统 .................................................................................................................................. 13 3.2时钟电路模块设计 .............................................................................................................................. 14 3.3温度采集模块设计 .............................................................................................................................. 15 3.4液晶显示电路模块 .............................................................................................................................. 16 3.5声音报警电路 ...................................................................................................................................... 17 4系统软件设计 ................................................................................................................................................. 18
4.1控制模块程序设计 .............................................................................................................................. 18 4.2中断函数流程图 .................................................................................................................................. 20 4.3软件流程图 .......................................................................................................................................... 21 5系统测试 ......................................................................................................................................................... 22
5.1测试方法与仪器 .................................................................................................................................. 22 5.2测试数据 .............................................................................................................................................. 22
5.2.1 检测范围测试结果 .................................................................................................................. 22
结论 .................................................................................................................................................................... 23 参考文献 ............................................................................................................................................................ 24 致谢 .................................................................................................................................................................... 25 附录 .................................................................................................................................................................... 26
附录1仿真电路图 .................................................................................................................................... 26 附录2实物图 ............................................................................................................................................ 26 附录3部分程序代码 ................................................................................................................................ 27
XX:基于AT89C51家庭防盗报警系统设计
基于AT89C51家庭防盗报警系统设计
XXX
(XX大学信息科学技术学院电子信息工程专业,山西太原,530070 )
摘 要:本文介绍了家庭智能化中的防盗报警系统。智能化防盗报警系统集防盗功能于一体,可全天候自动检测盗警。传感器采用热释电传感器,对盗情进行检测,当有人闯入时,传感器检测到盗情,然后向单片机发出中断申请,单片机控制报警电路开始报警。温度传感器在其温度系数晶振受到温度变化时产生信号并传送给单片机经单片机处理控制报警电路开始报警。
本系统通过独立按键和液晶显示电路实现人间交互,本系统同时还具有自我诊断功能,出现故障能自动进行处理。系统从硬件和软件两方面进行了抗干扰设计,使其具有较好的抗干扰能力,完成系统可靠工作。
关键词:家庭智能防盗报警系统;自动报警;传感器
1
XXX:基于AT89C51家庭防盗报警系统设计
Home security and alarm system based on AT89C51
XXX
(Major in Information Science and technology in the College of electronics And information engineering of XX University,Gansu Lanzhou 530070)
Abstract:This article describes a family of intelligent alarm system。Set of security functions in one intelligent anti-theft alarm system,is always automatically detect stolen police。Sensor using pyroelectric sensor, tested for stolen love, when someone broke into the sensors detect stolen love,and then issued to the SCM interrupt request, single chip microcomputer control alarm Circuit began to call the police。Temperature Coefficient of temperature sensors in its crystal oscillator received signal and temperature changes to the Single Chip MCU - treated control alarm Circuit began to call the police。
The system for human interaction through independent Keyboard and LCD circuits,this system also has a self - diagnosis function at the same time。failures can be automatically processed。System from the hardware and software anti - interference design of two, to have better anti-interference ability。 complete system work。
Key words: Home intelligent alarm system;automatic warning;sensor
II
XX:基于AT89C51家庭防盗报警系统设计
1绪论
1.1设计背景
现如今在科学技术的不断带动下,社会的经济,人们的物质生活水平等都在飞速的提升,个人的经济财富也在不断的积累,因此人们对私有财产的保护意识也在不断的增强,另一方面,社会的不断变化发展,竞争日趋激烈,人口大量聚集、人色各异、使得居家失盗、抢劫事件时有发生,在社会治安保障体系难以全保之下,为了个人的财产,家庭的安全能够保障,广大人民都在寻求一个能都全方位、及时有效的保障家居安全措施。越来越多的家庭,选择在家里安装安防监控设备,如:红外探测器,湿度报警,门禁,烟感,监控等报警设备。然而这些系统往往各自独立而且是通过电话线上传报警信息,经常发生误报,漏报等事情。在很多情况下,即使发生了入侵报警,也因为与警方联动不及时,造成犯罪嫌疑人偷盗后逃离,事后办案难的后果。在社会的治安现实需求和政府的推动之下,市场上便应用而生出大量的安全防盗报警系统。[1] 因此,为了满足现代化住宅防盗报警系统的需要本设计设计出了一中新型的家庭防盗报警系统。
1.2发展概况
当前家庭普遍应用的防盗报警器主要有红外线报警器、压力触发式防盗报警器、开关电子防盗报警器和压力遮光触发式防盗报警器等,然而这几种比较常见的报警器都存在不同的缺点:a、红外线报警器容易受各种热源、阳光源干扰;被动红外穿透力差,人体的红外辐射容易被遮挡,不易被报警器接收;易受射频辐射的干扰;环境温度和人体温度接近时,探测和灵敏度明显下降,有时造成短时失灵。b、压力触发式防盗报警器由于压力板式安装在垫子内,当主机停止工作,主人在家走动时,都很容易误报和失报,其可靠性低。c、开关式电子防盗报警器一般只有一个定点,有效范围小,而且各种开关也易坏,误报和失报的概率就高,不可靠。d、遮光式触发防盗报警器在受到太阳光照射就会引起误报,如果由于风吹窗帘的摆动等遮住了光也会引起误报,所以这种报警器的可靠性也不高。再者,就闭路监控电路防盗系统而言:它的安装线路复杂,而且技术要求比较高,价格也比较昂贵,不利于广泛利用。[2]
本设计将介绍的智能防盗防火报警系统,它是基于智能住宅蓬勃发展的背景,为了满足广大用户对安全系统的强烈要求,而设计并开发的。智能防盗防火报警系统的首要任务是根据住宅小区的类型、使用功能及防护风险等要求,为保障小区人身财产安全,通过运用传感器探测、双音多频远程数据传输等技术形成智能报警系统,以达到保障住宅安全的
1
XXX:基于AT89C51家庭防盗报警系统设计
目的。其中双音多频(DTMF)信号收发芯片的发送部分采用信号失真小、频率稳定性高的开关电容式D / A 变换器,可发出16 种双音多频DTMF 信号:接收部分用于完成DT信号的接收、分离和译码,并以4 位并行二进制码的方式输出。当遇到盗情、火情等各种险情的时候,该系统可以通过电话网络自动向相关部门发出语音求救信号,已达到保护用户生命财产的目的。[3]
2
XXX:基于AT89C51家庭防盗报警系统设计
2系统方案设计
2.1系统的总体方案设计结构及其特点和功能
智能住宅防盗防火智能报警系统开发设计方案是参照国内外相关先进技术的发展状况,在根据我国住宅建设的实际情况,以及各相关方面的协调发展状况,为满足新时期居民的居住要求,真正实现智能化报警的要求来确定的。
本防盗防火报警系统是一种新型的电子安全报警系统,该系统的设计是将电子探测、智能控制和电话通讯技术相结合,从而形成一个防盗、防火报警系统。系统总体由防盗防火探测器、用户端自动报警器与控制线路三部分构成,[4]如图2.1 所示为系统总体组成框图。
看门狗电路EPROM 防盗探测器 温度探测器 报警开关
用户端自动报警器AT89C51 控制电路 LCD显示电路 指示灯
时钟电路 控制输出/输入
电源电路 图2.1 智能防盗防火报警系统组成框图
本系统的基本工作过程:
用户端的防范现场,一旦有人入侵、或发生火灾等紧急情况时,与之相应的报警探测器(各种防火、防盗报警按钮等)立即向用户端自动报警器发出报警信号。接到警情事件后,自动报警器立即进行确认(多次巡检中断信号)。在用户端自动报警器的面板上设有LED 显示器、键盘以及三色警灯(LED ) ,三色警灯分别指示火灾或红外的防火防盗报警、正常工作及系统出现故障的状态,即报警灯(红)、工作灯(绿)和故障灯(黄)。正常时LED 显示时间,事件发生时锁定显示当时的时间。用户端报警器同时具有探头故障报警功能,避免由于探头掉电而漏报,出现故障时点亮故障灯;如果判断探头掉线(被剪断),则会有声光报警。如果出现误触发而报警时可以通过触发延迟时间(505 定时器)去解除,另外用户端自动报警器还具备状态信息(如有无交流电、备用电池电量是否不足
3
XXX:基于AT89C51家庭防盗报警系统设计
等)上报的功能,可以对预设的普通电话、手提电话实现报警。
2.2设计方案的比较及确定
防盗(防火)报警系统一般是由入侵探测器、防盗(防火)报警控制器和接警中心组成。它的最简单形式是本地(家庭、单位)报警系统,它的组成部分是入侵探测器和本地报警控制器,以及声光报警器。
该系统设计方案有以下几种:[5]方案1;利用固定点电话联网防盗报警系统来实现家庭防盗报警,该系统由编程主机、探测器、门磁和遥控器组成,一旦发生警情,能把报警信息通过邮电通讯网络瞬间远程传输到用户设定的固定电话上,同时向接警中心报告,中心联网电脑可通过电子地图、数据库、电脑语音提示、监听现场情况,显示发生警情的单位、地址、方位、发案时间、所辖派出所(巡逻大队)经历分布,及时调动警力做出快速处理。方案2;通过传感器检测家庭安全隐患,把检测结果送入单片机,通过单片机控制报警灯和高音报警器的启动。方案3:用摄像图像处理法。
摄像部分 人体检测 D/A A/D 场存储器 正常信号/报警信号输出 控制部分 图2.2 摄像图像处理法结构框图
该方法通过摄像头监控,将得到的图像A/D转换后发送给存储器,控制部分通过处理器判断后分析宿舍内有无异常情况,将结果D/A转换后输出正常信号或者报警信号,从而实施对用户家庭等场所的监控。
由于方案1功能复杂,适合用于小区等大型场所。方案3需要用摄像头,而且对处理器的要求比较高,制作流程也比较复杂。这样一来,会大大提高制作成本。方案2采用红外对管来配合热释电模块,可以实现5m范围内的检测。热释电具有不可重复触发的工作特性,可抑制干扰,而且成本较低,满足题目要求。
通过比较,方案2能满足我们实时快捷的要求,更加简单有效,固本设计选择方案2。
2.3人体检测模块设计
人体检测模块要求系统具有对人体检测与声光报警功能。实现这一功能首先要求系统能够进行人体检测,判断房间里有没有人。
4
XXX:基于AT89C51家庭防盗报警系统设计
有以下两个方案供选择:方案1:用摄像头监控,把监控到的出入物品通过转换传输到监控人员的主板界面并进行存储。方案2:用红外对管来配合热释电模块实现。用555时钟芯片控制红外发射管发射38k的方波,接收管在另一侧接收信号。红外对管可以检测一切物品的出入,而热释电模块可将对象定位到人。红外对管用于人数统计,热释电模块用于对象定位。
经比较,方案1需要用摄像头,而且对处理器的要求比较高,制作流程也比较复杂。这样一来,会大大提高制作成本,不适合用在学生宿舍这种场所。方案2采用红外对管配合热释电模块,可以实现5m范围内的检测。热释电具有不可重复触发的工作特性,可抑制干扰,而且成本较低,满足题目要求。综合考虑,我们选择方案2。[6]
2.4显示模块选择
LED是指Light Emitting Diode(发光二极管),而我们说的这个LED是指用发光二极管作为光源的液晶显示器。 LCD是指Liquid Crystal Display(液晶显示器),它采用CCFL(冷阴极荧光灯)做光源。他们采用不同的背光源。
LED显示器和LCD显示器的区别主要如下:LED的显示器更薄, 更省电,寿命更长, 拥有更广的色域, LED由于光谱几乎全部集中于可见光频率,没有紫外线和红外线,故没有热量,没有辐射,属于典型的绿色光源,在强光下也可以照看不误,并能在零下40度的低温工作。 更高的对比度从显示技术上说,LCD是由液态晶体组成的显示屏,而LED则是由发光二极管组成的显示屏。LED数码显示中每一个像素单元就是一个发光二极管,如果是单色,一般是红色发光二极管。如果是彩色,一般是三个三原色小二极管组成的一个大二极管。这些二极管组成的矩阵由数码控制实时显示文字或者图像,造价相对低廉,组成的显像面积大。 而LCD液晶的像素单元是整合在同一块液晶板当中分隔出来的小方格。通过数码控制这些极小的方格进行显像,表现效果更细腻。
LED优点:色彩好、寿命长、环保就背光源应用而言,色彩好、寿命长、环保是LED优点所在。众所周知,液晶显示器本身不会发光,它依靠背光源将光线穿过显示面板,展现图形图像。而传统的LCD显示器不够环保,价格更高,接口大都采用模拟接口,传输信号易受干扰、显示器每部需要加入模数转换电路、无法升级到数字接口等问题。可视角度小,容易失真, 响应时间过慢,亮度和对比度低。因此本设计采用LED液晶显示器作为显示设备。
2.5传感器的选择
5
XXX:基于AT89C51家庭防盗报警系统设计
2.5.1热释电传感器的红外辐射与红外探测的原理结构
热释电传感器又称人体红外传感器,是利用红外辐射与红外测温的原理来探测的,红外测温以非接触形式检测出人体辐射的红外线,并将其转换变为电压信号时,还能鉴别出运动的生物与其它非生物,是测温技术中的主要手段,其特点是测温范围广,响应速度快和不明显破坏被测对象温度场, 被广泛应用于防盗报警、 来客告知及非接触开关,遥测等红外领域。
非接触式红外线测温其测量不干扰被测温场,不影响被测温场的分布,从而具有较高的测温准确度,测温范围宽,探测器的响应时间短,反应速度快,易于快速与动态测量,不必接触被测物体,操作方便,可以确定微小目标的温度。但当辐射继续作用于热释电元件,使其表面电荷达到平衡时,便不再释放电荷。因此,热释电传感器不能探测恒定的红外辐射。
红外传感器是一种新型的传感器,能够探测物体辐射的红外线。通常将电磁波谱间隔在0.76~1000μm的区域称为红外光谱区,热释电元件的工作原理是基于热释电效应,即在强电介质温度变化ΔP的自然极化的存在,此时传感器有电信号输出,晶体的这种性质被称为热释电极或热释电效应。
有些热释电晶体,他们的自发极化方向能用外电场来改变,这些晶体称作热释电——铁电体。例如:LiTaO2(钽酸锂)、BaTi O2(钛酸钡)和TGS(硫酸三甘酞)等。为了使传感器能够长期稳定地工作,提高灵敏度,增强抗干扰能力,这里选用了TGS晶体制作的双型探测器 。[6]
2.5.2红外测温工作原理
红外测温仪由光学系统、光电探测器、信号放大器及信号处理、显示输出等部分组成。光学系统汇聚其视场内的目标红外辐射能量,视场的大小由测温仪的光学零件及其位置确定。红外能量聚焦在光电探测器上并转变为相应的电信号。该信号经过放大器和信号处理电路,并按照仪器内置的算法和目标发射率校正、环境温度补偿后转变为被测目标的温度值。
在自然界中,一切温度高于绝对零度的物体都在不停地向周围空间发出红外辐射能量。物体的红外辐射能量的大小按波长的分布 —— 与它的表面温度有着十分密切的关系。因此,通过对物体自身辐射的红外能量的测量,便能准确地测定它的表面温度,这就是红外辐射测温所依据的客观基础。黑体是一种理想化的辐射体,它吸收所有波长的辐射能量,没有能量的反射和透过,其表面的发射率为 1。但是,自然界中存在的实际物体,
6
XXX:基于AT89C51家庭防盗报警系统设计
几乎都不是黑体,为了弄清和获得红外辐射分布规律,在理论研究中必须选择合适的模型,这就是普朗克提出的体腔辐射的量子化郑子模型,从而导出了普朗克黑体辐射的定律,即以波长表示的黑体光谱辐射度,这是一切红外辐射理论的出发点,故称 黑体辐射定律。所有实际物体的辐射量除依赖于辐射波长及物体的温度之外,还与构成物体的材料种类、制备方法、吸热过程以及表面状态和环境条件等因素有关。
因此,为使黑体辐射定律适用于所有实际物体,必须引入一个与材料性质及表面状态有关的比例系数,即发射率。该系数表示实际物体的热辐射与黑体辐射的接近程度,其值在零和小于 1 的数值之间。根据辐射定律,只要知道了材料的发射率,就知道了任何物体的红外辐射特性。影响发射率的主要因素在:材料种类、表面粗糙度、理化结构和材料厚度等。
目标 制冷器 同 光学成像扫描系统 红外探 测器 前置 放大 步 显示记录 信号处理转换 主放 图2.3为红外探测仪原理
2.5.3红外传感器的结构
红外探测器是红外热释传感器的重要组成部分。它可以分成热释电探测器和光子探测器两大类:其中,热释电探测器是电效应工作的探测器,其响应速度虽不如光子型,但由于它可在室温下使用、光谱响应宽、工作频率宽,灵敏度与波长无关,因此其应用领域广,容易使用。常用的热释电探测器如:LiTaO2(钽酸锂) 探测器、BaTi O2(钛酸钡) 探测器和TGS(硫酸三甘酞)探测器等。
下图2.4为热释电红外传感器的结构图、电路图。传感器的敏感元为PZT,在上下两面做上电极,并在表面加一层黑色氧化膜以提高其转化效率。它的等效电路是一个在负载电阻上并联一个电容的电流发生器,其输出阻抗极高,而输出电压信号又极其微弱,故在管内附有JFET及厚膜电阻,以达到阻抗变大的目的。
7
XXX:基于AT89C51家庭防盗报警系统设计
图2.4 热释电红外传感器的结构图、电路图
图2.5 热释电传感器的实物照片
所谓自发极化是在没有外电场作用时,铁电晶体或铁电陶瓷中存在着由于电偶极子的有序排列而产生的极化,称为自发极化。在垂直于极化轴的表面上,单位面积的自发极化电荷量称为自发极化强度。它是一个矢量,用P表示,其单位为C/m2。
热释电体的自发极化强度随着温度升高自发极化强度而下降。当温度升高到Tc时,自极化消失,此时的温度称为居里温度。当温度超过这一温度时,铁电体便会发生变化,从极化晶体变为非极化晶体,极化强度则变为零。在一般情况下,晶体自发极化所产生的表面束缚电荷被吸附在晶体表面上的自由电荷所屏蔽,当红外辐射照射时,晶体受热,热释电晶体温度升高在晶体两端将会产生数量相等而符号相反的电荷。这种由于热变化而产生的电极化现象称为热释电效应。通常,晶体自发极化所产生的束缚电荷被空气中附集在晶体外表面的自由电子所中和,其自发极化电矩不能显示出来。当温度变化时,晶体结构中的正、负电荷重心产生相对位移,晶体自发极化值就会发生变化,在晶体表面就会产生电荷耗尽。如图2-6所示的电路连接负载,则在红外辐射时,就有电流流过负载经放大后成为
8
XXX:基于AT89C51家庭防盗报警系统设计
输出信号。
图2.6 电路连接负载输出信号
没有经过调制的红外辐射热释电晶体,使晶体表面的温度达到一个新的平衡值,电极表面的感应电荷也变化到新的平衡值,晶体表面就不会消耗电荷,也就不再输出信号。因此,热释电探测器与其他热释探测器不同,它只存在温度升降的过程中才有信号输出。所以利用热释电探测器探测的红外辐射必须经过调制。若红外线照射热释电晶体的调制频率为f的,则晶体的温度自发极化强度(PS)及其引起的面束缚作电荷密度均以频率f作周期性的变化。如果1/f小于自由电荷中和面束缚电荷所需要的时间,那么在垂直于自发极强度(PS)的晶体的两个端面之间就会产生开路电压。如果用负载电阻R把两个电极连接起来,就会有热释电电流Is 通过负载。[7]热释电晶体自发极化强度随温度变化,使电极表面感应电荷发生变化,其等效电路如图2.7所示。
C’ G’ Y V 图2.7等效电路图
电流源的电流强度为Is为:
IS?APd(?T)dt
式中:p为自发极化强度对温度变化率,称为热释电系数,
2.5.4菲涅尔透镜
菲涅尔透镜 (Fresnel lens) ,又名螺纹透镜,多是由聚烯烃材料注压而成的薄片,也有玻璃制作的,镜片表面一面为光面,另一面刻录了由小到大的同心圆,它的纹理是根据光
9
XXX:基于AT89C51家庭防盗报警系统设计
的干涉及扰射以及相对灵敏度和接收角度要求来设计的。透镜的要求很高。一片优质的透镜必须表面光洁,纹理清晰,其厚度随用途而变,多在1mm左右,特性为面积大、厚度薄及侦测距离远。 菲涅尔透镜菲涅尔透镜在很多时候相当于红外线及可见光的凸透镜,效果较好,但成本比普通的凸透镜低很多。多用于对精度要求不是很高的场合,如幻灯机、薄膜放大镜、红外探测器等。
菲涅尔透镜利用透镜的特殊光学原理,在探测器前方产生一个交替变化的“盲区”和“高灵敏区”,以提高它的探测接收灵敏度。当有人从透镜前走过时,人体发出的红外线就不断地交替从“盲区”进入“高灵敏区”(如图2.8所示)。这样就使接收到的红外信号以忽强忽弱的脉冲形式输入,从而强其能量幅度。
菲涅尔透镜作用有两个:一是聚焦作用,即将热释红外信号折射(反射)在PIR上,第二个作用是将探测区域内分为若干个明区和暗区,使进入探测区域的移动物体能以温度变 化的形式在PIR上产生变化热释红外信号。菲涅尔透镜,简单的说就是在透镜的一侧有等距的齿纹,通过这些齿纹,可以达到对指定光谱范围的光带通(反射或者折射)的作用。传统的打磨光学器材的带通光学滤镜造价昂贵。菲涅尔透镜可以极大的降低成本。
因此,配有菲涅尔透镜的热型红外传感器被广泛应用于自动门、自动水龙头、防盗报警、自动灯、火灾监测、自动电梯、非接触触温度测量等领域。[4]
51.62 56.62 10.00 8.00 45.00 44.0 图2.8人体红外由盲区进入高灵敏区
2.6热释电红外传感器控制电路芯片选择
热释电红外传感器输出的检测信号很小。要经过放大、比较等几个环节才能输出控制信号。使电路执行相关动作。热释电红外传感器控制电路就是根据检测信号的特点和输出信号的要求,完成上述功能的电路。本套系统采用通用原件构成热释电红外传感器的控制系统。下图2.9是控制电路的结构框图:
10
XXX:基于AT89C51家庭防盗报警系统设计
输入 低频放大 比较整形 输出
图2.9控制电路结构图
LM324是四则运算放大集成电路,它采用14脚双列直插塑料封装,如图2.10所示。它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。每一组运算放大器可用图2所示的符号来表示,它有5个引出脚,其中“+”、“-”代表两个信号输入端,“VCC”、“GND”分别正、负电源端,“Vo”为输出端。两个信号输入端中,“-”为反相输入端,表示运放输出端Vo的信号与该输入端的相位相反;“+”为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。LM324的引脚排列见图2.11。
图2.10 LM324电压参考电路图
图2.11管脚连接及其功能
LM324的特点: 1 真差动输入级; 2 可单电源工作:3V-32V ;3 短路保护输出;4 低偏置电流:最大100nA ;5 每封装含四个运算放大器;6 行业标准的引脚排列;7 具有内部补偿的功能;8 共模范围扩展到负电源; 9 输入端具有静电保护功能。由于LM324具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,被广泛的应用在各种电路当中。[6]
2.7防火探测器电路设计
温度探测器使用数字温度传感器DS18B20 , 5V 直流电压供电。DS18BZO 的测温原理是利用温敏振荡器的频率随温度变化的关系,把温度信号直接转换为串行数字信号,通过内部计数器对受温度影响的振荡器周期的计数可实现温度测量。探测器中DS18B20 采
11
XXX:基于AT89C51家庭防盗报警系统设计
用寄生电源供电方式,保证在有效的DS18B2O 时钟周期内能提供足够的电流,图2.12中采用一个MOSFET 管和MCU 的I/O 口来完成对DS18B2O 的总线上拉,然后通过另一I/O 对DS18B2O 进行控制并取得温度值。
图2.12温度探测器电路
系统微处理器采用美国ATMEL 公司生产的AT89C51 单片机。AT89C51 采用COMS 工艺,是一种低功耗、高性能的,与INTEL 8051 系列单片机完全兼容的8 位微控制器。AT89C51 内部具有4K 字节的Flash (闪速)存储器,可反复擦写,在设计程序时可反复修改原程序、编译、并烧写到单片机,适合单片机最小系统的开发与研制。[7]
12
XXX:基于AT89C51家庭防盗报警系统设计
3硬件设计
3.1单片机最小系统
AT89C51 是一种带有4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统。但是一般我们在设计中总是喜欢把按键输入、显示输出等加到上述电路中,成为小系统。单片机主要擅长系统控制,而不适合做复杂的数据处理,在设计单片机最小系统时通常选用AT89C5l、AT89C52、AT89S51、AT89S52(S系列芯片支持ISP功能)等型号的8位DIP-40封装的单片机作为MCU,一个典型的单片机最小系统一般由时钟电路、复位电路、键盘电路、显示电路等部分组成,有时也外扩有片外RAM和ROM以及外部扩展接口等电路。图3.1为单片机最小系统结构框图。[8]
外部RAM 显示 51单片机 键盘 系统时钟 复位电路
图3.1单片机最小系统机构框图
如下图3.2所示,单片机的电源采用5V供电,时钟电路也就是振荡电路采用11.0592MHZ晶振,向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。图中的电容起稳定作用。其复位电路采用混合复位电路,在上电的时候会自动复位,也可手动复位。方便在单片机死机的时候进行重启。
13
XXX:基于AT89C51家庭防盗报警系统设计
图3.2单片机最小系统
3.2时钟电路模块设计
图3.3显示的是DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。反之当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。[9]
图3.3 DS1302的引脚图
14
XXX:基于AT89C51家庭防盗报警系统设计
DS1302与单片机的连接也仅需要3条线:CE引脚、SCLK串行时钟引脚、I/O串行 数据引脚,Vcc2为备用电源,外接32.768KHz晶振,为芯片提供计时脉冲。
图3.4 DS1302与单片机的连接原理图
3.3温度采集模块设计
如图3.5所示。采用数字式温度传感器DS18B20,它是数字式温度传感器,具有全数字温度转换及输出先进的单总线数据通行,最高12位分辨率。具有测量精度高,精度可达土0.5摄氏度耐磨耐碰。积小,附加功能强大,使用方便,分装形式多样,仅需要一条数据线进行数据传输,使用P0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。
图3.5 DS18B20温度采集
DS18B20测量温度时使用其内部的低温度系数振荡器的振荡频率受温度的影响很小能产生稳定的频率信号;高温度系数振荡器随温度变化其震荡频率明显改变,将被测温度转换成频率信号。当内部计数门打开时,DS18B20开始计数,计数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性度加以补偿。测量结果存入温度寄存器中。一般情况下温度寄存器中的温度值以9位数据格式表示,由于其符号位扩展成高8位,所以最后以16位补码形式读出。[10]DS18B20工作过程一般遵循以下协议:
15
XXX:基于AT89C51家庭防盗报警系统设计
初始化-ROM操作命令-存储器操作命令-处理数据。
图3.6 DS18B20的封装及引脚排列
图3.7 DS18B20的外部电路连接图
3.4液晶显示电路模块
液晶显示屏以其微功耗、体积小、显示内容丰富、程序简单、超薄轻巧的诸多优点,在各类仪表和低功耗系统中得到广泛的应用。LCM1602是指显示的内容为16字X2行的字符型液晶模块,其内部的字符发生存储器(CGROM)已经存储了不同的点阵字符图形,这些字符有,阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,其中数字与字母同ASCII码兼容。
图3.8液晶显示实物图
16
XXX:基于AT89C51家庭防盗报警系统设计
图3.9 液晶显示电路
3.5声音报警电路
声音报警电路通常可以有两种方法实现,一是采用单片机或可编程逻辑器件完成,二 是采用分立元件实现。
如下图3.10 所示:采用分立元件的方法实现声音报警。高音报警电路选用12V的高音喇叭作为报警装置,使用SS8050大功率三极管做驱动电路,当SPK为高电平时,三极管导通。反之则截至。本系统中经过软件设置使报警器真实模拟了声音频率均匀拉高,还原、再拉高的过程。形成频率在976~1945Hz之间平滑递增的声音效果。实现报警器声音非常逼真。[11]
图3.10声音报警电路
17
XXX:基于AT89C51家庭防盗报警系统设计
4系统软件设计
家庭防盗自动报警系统软件部分采用模块化设计,分为主控模块、温度检测模块、人体检测模块、显示模块及读写数据模块。应用了c语言编程,在Keil uVision4环境里,使用Top 2000-B 型编程器将程序写入单片机。
4.1控制模块程序设计
如下图4.1系统主流程图所示:在开机后,由于单片机的P3.2 和P3.3 引脚分别与防盗、防火传感器相连接。单片机首先进行初始化,将数码管、高音警报器、炫目灯等外设关闭,同时将中断总允许位、外部中断0允许位和定时计数器T1开启,关闭外部中断1允许位和定时计数器T0。其中布防/撤防按键用来触发外部中断0,热释电传感器用来触发外部中断1,外部中断1允许位的开启与关闭由外部中断0来控制。方便对报警器进行布防与撤防功能。定时计数器T0用来控制高音报警器的发音频率以使其发出逼真的报警声;定时计数器T1用作延时函数。[12]
18
XXX:基于AT89C51家庭防盗报警系统设计
开始 延迟100ms 系统初始化 液晶显示时间 初始化其他模块 开启报指示灯亮 盗警 调用PROCESS 蜂鸣器响 火警 调用PROCESS 报警
图4.1主程序流程图
19
XXX:基于AT89C51家庭防盗报警系统设计
4.2中断函数流程图
下图4.2、4.3为中断函数流程图:
外部中断0请求 打开外部中断1允许位,并将数码管、高音报警器、炫目灯关闭。
图4.2 中断函数流程图
外部中断1请求 数码管显示E,炫目灯开启。同时开启定时中断0允许位 定时中断T0请求 延时20S T0重装初值、高音报警器取反 关闭各个外设 图4.3中断函数流程图
20
XXX:基于AT89C51家庭防盗报警系统设计
软件流程图
下图为系统的整体详细软件流程图(图4.4)
开始 系统初始关闭所有用用电备 红外检测是否有人 开启防火模式 是 是 否 是否开启防盗进行温度采集 否 报警灯 广度采集 温度是否过高 开启 灯光开启在合是 适的档次 蜂鸣器响应 结束 图4.4软件流程图
21
否
4.3
XXX:基于AT89C51家庭防盗报警系统设计
5系统测试
5.1测试方法与仪器
在软件开发前序阶段文成之后,为了提高开发软件的可靠性,需对软件进行测试来最 大限度的去除软件中的错误,改进软件的可靠性。我们采用将系统软件模块化的方式,确定测试范围确保在最可能的情况下,实现完全测试。
软件测试始终伴随着软件开发的整个过程,在开发总体设计时采用静态白盒测试,编码过程中采用单元白盒测试,模块集成时采用关键路径测试,与下位机连调时采用模拟测试、黑盒测试与加压测试。测试过程中所需仪器有VICTOR VC890C+ 万用表, HAMEG HM303-6 示波器 ,米尺等。
通过测试,解决多处隐含的错误,基本保证了软件的现场运行要求,但是仍不能保证解决了所有的隐患错误。因此需要进一步系统调试。本系统采用Keil C51软件进行调试,首先依据各功能模块的功能要求和工作过程画出城西的流程图,然后根据流程图和系统的硬件连接写出详细的C语言程序,接着对各个子程序进行编译,调试,运行,看看能否达到其功能,然后再将整个程序写在一起进行整体调试。在整体调试中注意变量不可重复使用,以及调用子程序时各参数必须统一,在编译通过时,最好把整个程序在单步执行一遍。但不执行时,应打开处理器窗口和数据窗口,看每步执行之后各个特殊功能寄存器中的数据的变化,以便确保整个程序按照系统的工作过程和功能要求执行。[13]
5.2测试数据
5.2.1 检测范围测试结果
RA'?k?? 3 1 12 10
RB'?k?? 4 5.1 26 20
C2?pF? 10000 10000 1000 1000
F?kHz? 20.8 23.7 37.9 48
L?m? 5 5.5 6.5 4.5
表 5.2.1 检测范围测试
22
XXX:基于AT89C51家庭防盗报警系统设计
结论
随着信息时代的不断发展,智能监控等靠科技成果进入高速发展时期,智能小区(家庭)防盗、防火报警系统作为智能化系统中的子系统之一,同样面临着智能化的挑战与机遇。针对不同的对家居坏境,防盗报警系统对各方面因素的考虑,既要便于使用,又要方便安装与维护还要有利于扩张与升级,以及信息集成和信息共享,通信技术的发展等影响。本设计采用KeilC51开发系统,完成了程序模块规划、设计与编程,实现了对信号处理过程的编程和调试。整个系统主要由AT89C51芯片、热释电传感器、声光报警、键控组成。性能好,工作稳定,无论从软件还是从硬件方面其结构、功能、安全、经济等方面均是比较实际的家庭防盗防火报警系统。
由于各方面的原因此次设计还存在着许多不足和待完善之处,还有待于以后进一步的研究、发展和完善,在防盗报警监控系统开发这个大的实践性极强的课题当中要使其产品化,能够经受住实际应用的严格考验,还要进行许多深入细致的工作。而且随着科技水平的不断提高,对智能系统及管理措施的要求也在不断加强。因此还需我们进一步的那里去开发和实践。
23
XXX:基于AT89C51家庭防盗报警系统设计
参考文献
[1]钱晓军.家庭无线智能防盗报警系统[J].安防科技.2003年07期 [2]范冰彦.家庭无线智能防盗报警系统[J].安防科技.2003年03期
[3]宋松娥.安全防盗报警系统的组成及其作用[J] .中国安防产品信息.1993年02期 [4]王洪.智能住宅防盗报警系统的研制与设计[A].湖南省电工技术学会第七次会员代表大会暨2004学术年会论文集[C].2004年。
[5]韩毅.上班族,如何保护自己的家——家庭防盗报警系统[J].安防科技.2003年07期 [6]王洪建.AT89C2051在小区防盗报警系统中的应用[A].第七届青年学术会议论文集[C].2005年
[7]刘豫喜.基于单片机控制的自动拨号报警器[A].科技、工程与经济社会协调发展——河南省第四届青年学术年会论文集(上册)[C].2004年
[8]张毅刚等.MCS-51单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社,1990 [9]董诗白.《数字电子技术基础》[M] .北京:高等教育出版社2006.5
[10]李华主编MCS-51单片机实用接口技术[M].北京:北京航空航天大学出版社,1993 [11]周航慈.单片应用程序设计技术[M].北京:北京航空航天大学出版社,1990 [12]何立民.单片机应用技术选编[M].北京:北京航空航天大学出版社,1996 [13]涂时亮等.单片机软件设计艺术[M].重庆:科学文献出版社重庆分社,1987
[14]Kirill Yelizarov .V. home security System [M]: Mierochip TechnologyInc.1998D.L. Virk. Automation in Construction.1997,6(5):447-461
[15] G.S. Cheung, J.Y.M,Azzi,D. Intelligence in building [M]: the protential of advanced modeling Love day. D.L.Virk. Automation in Construction.1997,6(5):447-461
24
XXX:基于AT89C51家庭防盗报警系统设计
致谢
时光匆匆如流水,转眼便是大学毕业时节,春梦秋云,聚散真容易。离校日期已日趋渐进,毕业设计的完成也随之进入了尾声。
大学四年是我一生的最重要阶段,是学习专业知识及提高自己综合能力的重要阶段。从跨入大学的校门的那一刻起我就时刻牢记这一信念。从开始进入课题到设计的顺利完成,一直都离不开周老师、同学、朋友给我热情的帮助,在这里请接受我诚挚的谢意!
凡是预则立,不预则废。一个没有规划的人生,就象是一叶在茫茫大海上漫无目标的小舟,随波飘荡。在即将走向社会的时候,我们必须对自己的职业生涯进行规划。要认识到一个人的成长绝不是一件孤立的事,没有别人的支持与帮助绝对不可能办到。为适应社会需要,促进自我发展,我们除了学好本专业知识以外,更应该积极参加社会实践活动,以勤奋、团结、积极进取的态度热身投入与未来的事业生涯之中,学会与人友好、沟通、相处,团结进取。以团队为基准,在团队中培养工作能力,努力提高综合素质,不断追求、不断完善、不断发展。
最后,我向信息科学技术学院各位领导,电子信息工程专业的所有老师表示衷心的感谢,谢谢你们四年来的辛勤栽培,谢谢你们在教学的同时更多的是传授我们做人的道理,谢谢四年里面你们孜孜不倦的教诲!
25
XXX:基于AT89C51家庭防盗报警系统设计
附录
附录1仿真电路图
附录2实物图
26
XXX:基于AT89C51家庭防盗报警系统设计
附录3部分程序代码
/**************************************************************** **工程名称:智能防盗防火报警系统
**功能描述:采用AT89C52做主控芯片, **说 明:如有硬件改动,直接修改*.h
里的设置即可
**注 意:焊接电路板式一定要仔细细心
****************************************************************/ void delay(uchar x) //使能1602 EnableLCD() { }
/******************************************************************** * 功能 : 1602命令函数
***********************************************************************/ void enable(uchar del) {
RS = 0; RW = 0; P0 = del; E = 1;
RS=0; RW=0; E=0; delay(3); E=1;
27
XXX:基于AT89C51家庭防盗报警系统设计
}
delay(3); E=0;
/******************************************************************** * 功能 : 1602写数据函数
***********************************************************************/ void write(uchar del) { }
/******************************************************************** * 功能 : 1602初始化,请参考1602的资料
***********************************************************************/ void L1602_init(void) { }
enable(0x01); enable(0x38); enable(0x06); enable(0x0c); E=0; RS = 1; RW = 0; P0 = del; E = 1; delay(3); E=0;
28
XXX:基于AT89C51家庭防盗报警系统设计
/******************************************************************** * 名称 : L1602_char(uchar hang,uchar lie,char sign)
***********************************************************************/ void L1602_char(uchar hang,uchar lie,char sign) { }
//写LCD内部地址函数
WriteLCDRAM(unsigned char data *address,m) { }
/******************************************************************** * 名称 : L1602_string(uchar hang,uchar lie,uchar *p)
* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示\"ab cd ef\" , ***********************************************************************/
unsigned char i,j;
for(i=0;i if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie - 1; enable(a); write(sign); 29 XXX:基于AT89C51家庭防盗报警系统设计 void L1602_string(uchar hang,uchar lie,uchar *p) { } //时钟调节// void timechange() { uchar a,num=1; uchar year,mon,day,hour,min,sec; //进入调时循环 while(num) { if(t==0) delay(5); if(t==0) { uchar a; if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie - 1; enable(a); while(1) { if(*p == '\\0') break; write(*p); p++; } 30 XXX:基于AT89C51家庭防盗报警系统设计 num++; } //退出调时按键m if(m==0) delay(5); if(m==0) num=0; enable(0x0f); a=uc_R1302(0x81)|0x80; v_W1302(0x8e,0); v_W1302(0x80,a); beep(); while(!t); //调时到年以后退出调时 if(num==7) num=0; //num=1调秒 if(num==1) { enable(0xc0+12); if(jia==0) delay(5); if(jia==0) { while(!jia); //秒加一 sec=bcdtodec(uc_R1302(0x81)&0x7f); 31 XXX:基于AT89C51家庭防盗报警系统设计 sec++; if(sec>59) sec=0; L1602_char(2, 12, sec/10%10+48); L1602_char(2, 13, sec%10 + 48); v_W1302(0x80,dectobcd(sec)|0x80); } if(jian==0) delay(5); if(jian==0) { while(!jian); //秒减一 sec=bcdtodec(uc_R1302(0x81)); sec--; if(sec==-1) sec=59; L1602_char(2, 12, sec/10%10+48); L1602_char(2, 13, sec%10 + 48); v_W1302(0x80,dectobcd(sec)|0x80); } } if(num==2) { enable(0xc0+9); if(jia==0) delay(5); //调分钟 32 XXX:基于AT89C51家庭防盗报警系统设计 if(jia==0) { min = bcdtodec(uc_R1302(0x83)); min++; while(!jia); if(min>59) min=0; L1602_char(2, 9, min / 10 % 10 + 48); L1602_char(2, 10, min % 10 + 48); v_W1302(0x82,dectobcd(min)); } if(jian==0) delay(5); if(jian==0) { min = bcdtodec(uc_R1302(0x83)); min--; while(!jian); if(min==-1) min=59; L1602_char(2, 9, min / 10 % 10 + 48); L1602_char(2, 10, min % 10 + 48); v_W1302(0x82,dectobcd(min)); } } if(num==3) //调小时 33 XXX:基于AT89C51家庭防盗报警系统设计 { enable(0xc0+6); if(jia==0) delay(5); if(jia==0) { hour = bcdtodec(uc_R1302(0x85)); hour++; while(!jia); if(hour>23) hour=0; L1602_char(2, 6, hour / 10 % 10 + 48); L1602_char(2, 7, hour % 10 + 48); v_W1302(0x84,dectobcd(hour)); } if(jian==0) delay(5); if(jian==0) { while(!jian); hour = bcdtodec(uc_R1302(0x85)); hour--; if(hour==-1) hour=23; L1602_char(2, 6, hour / 10 % 10 + 48); L1602_char(2, 7, hour % 10 + 48); 34 XXX:基于AT89C51家庭防盗报警系统设计 v_W1302(0x84,dectobcd(hour)); } } if(num==4) { enable(0x80+13); if(jia==0) delay(5); if(jia==0) { //调日期 hour = bcdtodec(uc_R1302(0x87)); day++; while(!jia); if(day>31) day=0; L1602_char(1, 13, day / 10 % 10 + 48); L1602_char(1, 14, day % 10 + 48); v_W1302(0x86,dectobcd(day)); } if(jian==0) delay(5); if(jian==0) { while(!jian); day=bcdtodec(uc_R1302(0x87)); day--; 35 XXX:基于AT89C51家庭防盗报警系统设计 if(day==-1) day=31; L1602_char(1,13,day/10%10+48); L1602_char(1,14,day%10+48); v_W1302(0x86,dectobcd(day)); } } if(num==5) { enable(0x80+10); if(jia==0) delay(5); if(jia==0) { //调月份 mon = bcdtodec(uc_R1302(0x89)); mon++; while(!jia); if(mon>12) mon=0; L1602_char(1, 10, mon / 10 % 10 + 48); L1602_char(1, 11, mon % 10 + 48); v_W1302(0x88,dectobcd(mon)); } if(jian==0) delay(5); if(jian==0) 36 XXX:基于AT89C51家庭防盗报警系统设计 { while(!jian); mon = bcdtodec(uc_R1302(0x89)); mon--; if(mon==-1) mon=12; L1602_char(1, 10, mon / 10 % 10 + 48); L1602_char(1, 11, mon % 10 + 48); v_W1302(0x88,dectobcd(mon)); } } if(num==6) { enable(0x80+7); if(jia==0) delay(5); if(jia==0) { //调年份 year = bcdtodec(uc_R1302(0x8d)); year++; while(!jia); if(year>20) year=0; L1602_char(1, 7, year / 10 % 10 + 48); L1602_char(1, 8, year % 10 + 48); v_W1302(0x8c,dectobcd(year)); 37 XXX:基于AT89C51家庭防盗报警系统设计 } if(jian==0) delay(5); if(jian==0) { while(!jian); year = bcdtodec(uc_R1302(0x8d)); year--; if(year==-1) year=20; L1602_char(1, 7, year / 10 % 10 + 48); L1602_char(1, 8, year % 10 + 48); v_W1302(0x8c,dectobcd(year)); } } } if(num==0) { enable(0x0c); } //关闭光标闪烁 v_W1302(0x80,uc_R1302(0x81)&0x7f);//开启1302记时 } /******************************************************************** * 名称 : v_RTInputByte() * 功能 : 往DS1302写入1Byte数据 * 输入 : ucDa 写入的数据 38 XXX:基于AT89C51家庭防盗报警系统设计 * 输出 : 无 ***********************************************************************/ void v_RTInputByte(uchar ucDa) { } /******************************************************************** * 名称 : uc_RTOutputByte() * 功能 : 从DS1302读取1Byte数据 * 输入 : 无 uchar i; ACC = ucDa; T_RST = 1; for(i=8; i>0; i--) { T_IO = ACC0; T_CLK = 1; T_CLK = 0; ACC = ACC >> 1; } * 返回值: ACC ***********************************************************************/ uchar uc_RTOutputByte(void) { uchar i; T_RST = 1; for(i=8; i>0; i--) 39 XXX:基于AT89C51家庭防盗报警系统设计 } { ACC = ACC >>1; ACC7 = T_IO; T_CLK = 1; T_CLK = 0; } return(ACC); /******************************************************************** * 名称 : v_W1302(uchar ucAddr, uchar ucDa) * 功能 : 往DS1302写入数据 * 输入 : ucAddr: DS1302地址, ucDa: 要写的数据 * 返回值 : 无 ***********************************************************************/ void v_W1302(uchar ucAddr, uchar ucDa) { } T_RST = 0; T_CLK = 0; T_RST = 1; v_RTInputByte(ucAddr); // 写地址 _nop_(); _nop_(); v_RTInputByte(ucDa); // 写1Byte数据 T_CLK = 1; T_RST = 0; 40 XXX:基于AT89C51家庭防盗报警系统设计 /******************************************************************** * 名称 : uc_R1302(uchar ucAddr) * 功能 : 读取DS1302某地址的数据 * 输入 : ucAddr: DS1302地址 * 返回值 : ucDa :读取的数据 ***********************************************************************/ uchar uc_R1302(uchar ucAddr) { } /******************************************************************** * 名称 : bcdtodec(uchar bcd) * 功能 : BCD码转换为DEC码(DEC码为十进制数据:BCD:0x11->DEC为数值 11(HEX:0x0b)) * 输入 : bcd码 * 输出 : dec码 uchar ucDa; T_RST = 0; T_CLK = 0; T_RST = 1; v_RTInputByte(ucAddr); //写地址,命令 _nop_(); _nop_(); ucDa = uc_RTOutputByte(); //读1Byte数据 T_CLK = 1; T_RST = 0; return(ucDa); 41 XXX:基于AT89C51家庭防盗报警系统设计 ***********************************************************************/ uchar bcdtodec(uchar bcd) { uchar data1; data1=((bcd&0x70)>>4)*10+(bcd&0x0f); } uchar dectobcd(uchar dec) { uchar dat; } /******************************************************************** * 名称 : Write_DS1302Init() * 功能 : 往DS1302中写入数据。最开始显示的数据就是在这里设置的。 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Write_DS1302Init(void) { v_W1302(0x8e,0); v_W1302(0x80,0x00);//写入秒 v_W1302(0x8e,0); v_W1302(0x82,0x00);//写入分 v_W1302(0x8e,0); dat=((dec/10)<<4|(dec%10)); return dat; return data1; 42 XXX:基于AT89C51家庭防盗报警系统设计 v_W1302(0x84,0x00);//写入小时 v_W1302(0x8e,0); v_W1302(0x86,0x00);//写入日 v_W1302(0x8e,0); v_W1302(0x88,0x00);//写入月 v_W1302(0x8e,0); v_W1302(0x8a,0x00);//写入星期 v_W1302(0x8e,0); v_W1302(0x8c,0x00);//写入年 v_W1302(0x90,0xa6);//单二极管,2K电阻充电 } /******************************************************************** * 名称 : Run_DS1302(void) * 功能 : 读出DS1302中的数据,并在液晶1602上进行显示 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Run_DS1302(void) { uchar sec, min, hour, day, month, year; v_W1302(0x8f, 0); sec = bcdtodec(uc_R1302(0x81)); //读出DS1302中的秒 v_W1302(0x8f, 0); min = bcdtodec(uc_R1302(0x83)); //读出DS1302中的分 v_W1302(0x8f, 0); 43 } XXX:基于AT89C51家庭防盗报警系统设计 hour = bcdtodec(uc_R1302(0x85)); //读出DS1302中的小时 v_W1302(0x8f, 0); day = bcdtodec(uc_R1302(0x87)); //读出DS1302中的日 v_W1302(0x8f, 0); month = bcdtodec(uc_R1302(0x89)); //读出DS1302中的月 v_W1302(0x8f, 0); year = bcdtodec(uc_R1302(0x8d)); //读出DS1302中的年 L1602_char(2, 6, hour / 10 % 10 + 48); //字符ASIIC码显示,0的ASIIC=48 L1602_char(2, 7, hour % 10 + 48); L1602_char(2, 8, ':'); L1602_char(2, 9, min / 10 % 10 + 48); L1602_char(2, 10, min % 10 + 48); L1602_char(2, 11, ':'); L1602_char(2, 12, sec / 10 % 10 + 48); L1602_char(2, 13, sec % 10 + 48); L1602_char(1, 7, year / 10 % 10 + 48); L1602_char(1, 8, year % 10 + 48); L1602_char(1, 9, 0); L1602_char(1, 10, month / 10 % 10 + 48); L1602_char(1, 11, month % 10 + 48); L1602_char(1, 12, 1); L1602_char(1, 13, day / 10 % 10 + 48); L1602_char(1, 14, day % 10 + 48); L1602_char(1, 15, 2); 44 XXX:基于AT89C51家庭防盗报警系统设计 void beep() { uchar i; for(i=0;i<100;i++) { delay(1); } BEEP=0; } void int0() interrupt 0 { } void int1() interrupt 2 { } /******************************************************************** 45 BEEP=~BEEP; timechange(); if(flag_count == 1 ) { } //EA=0; P31 = 0; XXX:基于AT89C51家庭防盗报警系统设计 * 名称 : Main(void) * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main(void) { int fire_temp; unsigned int count; char flag = 0; time2[14]=0; L1602_init(); //writch(); jtod=0; L1602_string(1,1,\"DAY 20\"); //初始化液晶 //显示字符 // L1602_string(2,1,\"TIME\"); EX0=1; IT0=1; Write_DS1302Init(); 46 XXX:基于AT89C51家庭防盗报警系统设计 P10 = 0; P11 = 0; P30 = 0; P31 = 1; P20 = 0; //P33 = 1; // P33 = 0; // for(count = 0;count < 1300; count++) { sdelay(10); } EX1=1; IT1=1; EA=1; P31 = 1; P20 = 1; while(1) { 47 XXX:基于AT89C51家庭防盗报警系统设计 Read18B20(); //读出18B20温度数据 DealTempData(); //处理温度数据 L1602_char(2,12,time2[10]); L1602_char(2,13,time2[11]); L1602_char(2,14,time2[12]); L1602_char(2,15,time2[13]); //小数第一位 fire_temp = ((time2[10] - '0') * 10 ) + (time2[11] - '0'); if( !P36) { sdelay(10); if( !P36 ) //P20 = 1; flag_f = ~flag_f; // 火灾报警开关 } if( flag_f ) { P11 = 1; // 指示灯开 if( fire_temp > 28 ) { 48 XXX:基于AT89C51家庭防盗报警系统设计 P30 = 1; // 报警 // P20 = 1; } else { P30 = 0; // } } else { //P20 = 0; P30 = 0; P11 = 0; // } if( !P37) // { sdelay(8); if( !P37 ) { 报警 ; // 关闭报警 指示灯关 防盗报警开关 49 XXX:基于AT89C51家庭防盗报警系统设计 flag_t = ~flag_t; } } if( flag_t ) { if(flag == 0) { for(count = 0;count < 1200; count++) { sdelay(10); } flag = 1; } flag_count = 1; P10 = 1; //防盗指示灯开 // EX1=1; // IT1=1; //EA=1; } 50 XXX:基于AT89C51家庭防盗报警系统设计 else { P10 = 0; P31 = 1; flag_count = 0; // EX1=0; //IT1=0; //EA=0; flag = 0; // 防盗指示灯关 } // L1602_char(2,16,time2[14]); // EnableLCD(); // WriteLCDRAM(time2,15);/* if((t==0)&&(m==0)) { Write_DS1302Init(); } */ Run_DS1302(); //时钟芯片开始工作 } } 51 //初始化时钟芯片 因篇幅问题不能全部显示,请点此查看更多更全内容