智能楼宇防盗及灯控系统_第1页
智能楼宇防盗及灯控系统_第2页
智能楼宇防盗及灯控系统_第3页
智能楼宇防盗及灯控系统_第4页
智能楼宇防盗及灯控系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、智能楼宇防盗及灯控系统第1章 绪论第1节 智能楼宇防盗及灯控系统的背景和意义随着人们生活水平的不断提高,生活质量不断增长,人们对安全也提出了更高的要求。人们的居住环境安全与否,尤为重要。鉴于此,安全防御系统的设置就显得极其重要,人们采取了许多措施来保障安全,以往的做法是安装防盗门、防盗网,但也存在有碍美观,不符合防火要求等不足之处,而且由于这些方法的科技含量太低,不能有效地防止坏人的入侵。因此,人们对自己所处环境的安全性提出了更高的要求, 在这样的社会背景和需求下,智能楼宇防盗报警系统也就应运而生,而且它已经成为小区智能化的必要组成部分。本设计主要对楼宇监控的基本功能进行了设计,可以分时段对检

2、测到的信号做出不同判断;采用了模块化的设计方法,将整个系统分解为不同的程序模块,再将不同程序模块分为不同的子程序,用多个小程序组成了功能负载的系统。第2节 系统方案的选择和论证1.2.1 系统设计要求1.防盗系统在00:0007:00时间段内处于防盗状态,当检测到有人进入则发出声光报警,并记录进入时间,该时间能够在系统掉电的情况下依然存储无误。2.防盗系统在07:0018:00时间段内处于检测人数状态,每当一个人进入,则计数一次,当达到人数上限时,发出报警,人数上限可以手动修改。3.防盗系统在18:0000:00时间段内处于灯控状态,当检测到有人进入则点亮楼道照明灯,无人时则关闭照明灯。1.2

3、.2 主控模块的选择方案一:8051片内有4k ROM,无须外接外存储器和373,更能体现“单片”的简练。但是自己所编写的程序无法烧写到其ROM中,只有将程序交芯片厂代为烧写,并是一次性的,今后任何人都不能改写其内容,技术上有局限,在调试过程中会增大成本。方案二:ATMEL 公司的AT89C51、AT89S51在与众多的51系列单片机相比之下更显实用,因为这两款单片机不但和8051指令、管脚完全兼容,而且其片内的4K程序存储器是FLASH工艺的,用户可以用电的方式瞬间擦除、改写程序,一般专为ATMEL AT89xx 做的编程器均带有这些功能。显而易见,这种单片机对开发设备的要求很低,开发时间也

4、大大缩短。另外,AT89C51、AT89S51目前的售价比8031还低,市场供应也很充足,比较符合本次设计的要求。方案三:AT89S52是2003年ATMEL推出的AT89S系列的新型品种,除了完全兼容8051和AT89C51外,还多了ISP编程和看门狗功能,其中的ISP在线编程技术既降低了成本也无需反复插拔芯片,可避免损坏芯片管脚,同时可省去了仿真器和专用编程器,大大减低了操作难度和成本;而且该单片机的性能稳定且内存达8KB,与其他同类单片机相比,它的性价比非常高。综上所述,对这三种方案进行比较后,确定选择方案三中介绍的AT89S52作为本次设计的主控芯片。1.2.3红外信号检测模块的方案选

5、择方案一:采用红外线对管收发电路,但是这样不论是检测到人时,还是物体经过,都会产生报警信号,而本次设计所要求的是防盗,只要求对人体进行检测,所以排除本方案。方案二:采用人体红外感应模块来输入报警信号,这样硬件连接简单,相应的软件设计也会随之简化,而且这种模块直线检测距离远,范围广,工作也较为稳定。综合比较以上两种方案,决定选择方案二实现本次设计的红外信号检测功能。1.2.4显示模块的方案选择方案一:LED数码管静态显示,这种方法编程容易,管理也较简单,但是占用单片机I/O口线资源较多,也给焊接增加了一定的难度。方案二:LED数码管动态显示,价格低廉,不仅减少了对I/O口的浪费,而且能够同时驱动

6、多个数码管。其驱动程序容易编写和理解。经过以上二种方案的比较,在考虑成本和程序编写等因素后,选择方案二即LED数码管动态显示作为本次设计显示部分。1.2.5声光报警和键盘控制模块声光报警模块拟采用一个红色发光二极管和一个蓝色发光二极管作为警灯,一个无源蜂鸣器通过编程实现警笛。键盘控制模块准备用8个独立按键分别控制时间调整、报警人数上限设定和解除警报等功能,不采用矩阵按键是因为它的程序编写较为复杂。1.2.6系统最终整体硬件方案经过对以上各模块方案的比较,在考虑成本、编程难易程度等方面的前提下,确定了最终硬件方案为:红外信号检测模块:人体红外感应集成模块;主控芯片:ATMEL公司的AT89S52

7、微控制器;显示模块:LED数码管动态显示;外部控制:8个独立按键;声光报警:无源蜂鸣器,红蓝发光二极管各一个。最终整体方案的系统框图如图1-1所示。图1-1 系统整体原理框图第2章 系统硬件设计第一节 系统硬件及功能概述智能楼宇防盗及灯控系统主要由五个模块组成,其核心AT89S52微控制器,用以对其他子模块进行通信;P3口与键盘控制模块连接,实现系统的人机交互功能;P2口和P0口的部分位连接数码管,通过动态扫描的方式实现系统的显示功能;P0口的其他位连接声光报警模块,主要由一个蜂鸣器、两个发光二极管组成,当有报警信号时则由单片机控制驱动发光管和蜂鸣器实现报警功能;灯控部分以一个发光二极管模拟,

8、与单片机的一位I/O口相连;人体红外感应模块与P1.1相连以实现红外信号检测模块与微控制器之间的通信。第2节 主控模块2.2.1主控芯片简介AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/

9、O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。其引脚结构如图2-1所示。图2-1 AT89S52引脚结构2.2.2 主控模块电路的设计AT89S52单片机是双列直插40引脚的集成电路芯片,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独

10、立地作输出或输入。MCS-51单片机第20引脚为接地端;第40引脚为电源端;第31引脚需要接高电位使单片机选用内部程序存储器;第18、19脚之间接上一个12MHz的晶振为单片机提供时钟信号;第9脚为复位脚,当其接高电位时,单片机停止当前工作并恢复到初始状态。电路连接如图2-2所示。图2-2主控模块电路2.2.3红外信号检测模块LM324系列运算放大器是价格便宜的带差动输入功能的四运算放大器,可工作在单电源下,电压范围是332V或±16V。设计方案被动式红外报警器主要由光学系统、热释电红外传感器、信号滤波和放大、信号处理和报警电路等几部分组成。热释电红外线传感器 :主要部分是由一种高热

11、电系数的材料制成尺寸为2×lmm的探测元件。在每个探测器内装入一个或两个探测元件,并将两个探测元件以反极性串联,以抑制由于自身温度升高而产生的干扰。探测元件的作用是探测、接收红外辐射并将其转换成微弱的电压信号。信号处理及报警电路:电路中的传感器将输出电压信号,然后使该信号先通过一个带通滤波器滤波,由于热释电红外传感器输出的探测信号电压十分微弱(通常仅有1mV左右),而且是一个变化的信号,同时菲涅尔透镜的作用又使输出信号电压呈脉冲形式(脉冲电压的频率由被测物体的移动速度决定,通常为0.110Hz左右),所以应对热释红外传感器输出的电压信号进行放大。本设计运用集成运算放大器LM324来进

12、行两级放大,以使其获得足够的增益。图2-3红外信号检测模块连接图2.2.4 LED数码管显示模块电路的设计从图中可以观察到单片机P1口的低4位连接一片74LS47,由于74LS47的输出是低电位有效的七段译码器,因此采用共阳极的数码管。通过单片机P1口的低4位传输出的信号经过74LS47译码器码后输出给数码管显示。由于采用的是动态方式因此我们使用的是P1口的P1.4、 P1.5、 P1.6、P1.7来组合选择通道,通过编程来实现数码管的动态显示。电路连接图如图2-4所示。图2-4 LED显示模块2.2.5声光报警模块蜂鸣器可以分为有源蜂鸣器和无源蜂鸣器两种。有源蜂鸣器和无源蜂鸣器的差别主要差别

13、为:有源蜂鸣器和无源蜂鸣器的根本区别是产品对输入信号的要求不一样;有源蜂鸣器工作的理想信号是直流电,通常标示为VDC、VDD等。因为蜂鸣器内部有一简单的振荡电路,能将恒定的直流电转化成一定频率的脉冲信号,从面实出磁场交变,带动钼片振动发音。但是在某些有源蜂鸣器在特定的交流信号下也可以工作,只是对交流信号的电压和频率要求很高,此种工作方式一般不采用。而无源蜂鸣器没有内部驱动电路,有些公司和工厂称为讯响器,国标中称为声响器。无源蜂鸣器工作的理想信号方波。如果给预直流信号蜂鸣器是不响应的,因为磁路恒定,钼片不能振动发音。本设计需要产生警笛声,要求有不同声调,所以将采用无源蜂鸣器作为发声器件。系统中的

14、无源蜂鸣器用一个NPN型三极管8050进行驱动,声光报警模块电原理图如图2-5所示。图2-5灯光报警模块原理图2.2.6键盘控制模块键盘采用8个独立按键分别实现时间小时加一、时间分加一、人数千位加一、人数百位加一、人数十位加一、人数个位加一、系统设定开关和解除警报、显示记录的报警时间等作用。考虑到本次设计的I/O口较为充裕,为了简化软件设计难度,从而放弃使用编程复杂的矩阵键盘。因为AT89S52微控制器的P3口内部内部已经集成了上拉电阻,所以键盘控制模块的电路相对简化了很多,如图3-9所示。按键功能分配如表3-1所示。单片机I/O口功能分配P0.0小时加一P0.1分加一P0.2人数千位加一P0

15、.3人数百位加一P0.4人数十位加一P0.5人数个位加一P0.6系统设定开关P0.7解除警报、显示记录的报警时间图2-6键盘模块控制原理图第3章 系统软件设计第一节 编程语言的介绍与选择 汇编语言是用助记符、符号和数字等来表示指令的程序语言,容易理解和记忆,它与机器语言指令是一一对应的。汇编语言不像高级语言那样通用性强,而是属于某种单片机所独有的,与单片机的内部硬件结构密切相关,也就是说,每款或者每个系列的单片机都有自己专有的一套指令系统。使用汇编语言编程的麻烦在于它的可读性和可维护性比较差,如果是别人写的程序,特别是当程序没有很好的标注的时候,将非常不容易被读懂,从而导致代码的可重用性和可移

16、植性也比较低,而且在编程前需要先对所使用的单片机的硬件结构有所了解。C语言是一种结构化语言,它层次清晰,易于调试和维护,语言简洁紧凑,使用方便、灵活。它不仅具有丰富的运算符和数据类型,以便于实现各类复杂的数据结构,还可以直接访问内存地址,进行位操作。用C语言编写的程序,因为其很好的结构性和模块化,更容易阅读和维护;而且由于它的模块化,用语言编写的程序具有很好的可移植性。功能化的代码能够很方便的从一个工程移植到另一个工程,从而减少了开发时间。C语言的特点就是可以使你尽量少地对硬件进行操作,是一种功能性和结构性很强的语言。鉴于以上对汇编语言和C语言的介绍与比较,本次设计将采用可读性和可移植性相对较

17、强的C语言进行软件方面的设计。第二节 主程序设计整个软件设计包括以下几个子模块:系统初始化模块、时间系统模块、监控模块和功能模块。各模块下又包含若干子程序:系统初始化模块主要负责上电后对系统的各种初始化操作,包括系统自检子程序和定时器初始化子程序;时间系统模块主要完成时间的显示功能,包括定时中断子程序、数码管动态显示子程序和报警时间显示子程序;监控模块实现对外部命令的识别并调用相应子程序的功能,包括键盘扫描子程序、延时子程序、系统设定子程序和红外信号判断子程序;功能模块即为各功能的实现模块,包括报警子程序、计数子程序、照明子程序、声光报警子程序。系统上电后先调用自检程序检测硬件是否正常,自检完

18、成后就对定时器进行初始化以便开始计时工作。完成这些工作后,系统就会进入到一个反复的循环过程中,即先调用数码管动态显示程序使数码管显示相应的内容,接着进入键盘扫描程序判断是否有外部按键信号输入,一旦检测到有键被按下,则跳转到相关的子程序以实现不同的功能,当从子程序返回或没有按键信号输入时,就判断有没有红外信号产生,如果有,则根据当前时间的不同调用相应的功能子程序,如果没有红外信号产生,就继续依次调用数码管动态显示、键盘扫描和红外信号判断这三个子程序,从而构成一个循环。由于在程序执行过程中,数码管显示程序调用的间隔如果过大的话,数码管上不同位的显示对于人眼的感觉将不会是同时的,这样就会使系统的显示

19、部分变得异常而不易被观察,所以,为了解决这个问题,在整个系统的程序执行过程中,数码管动态显示这个子程序将会在其他子程序中被反复调用。主程序流程图如图4-1所示。图3-1主程序流程图第三节 系统自检子程序设计3.3.1系统自检流程自检主要是在系统开机后正常工作前先分别使用软件驱动关键硬件进行最简单的工作,借以检查系统的硬件部分有无损坏,电路是否有问题。首先将模拟警灯的红、蓝发光二极管和模拟灯光的发光二极管依次点亮,即将对应I/O口置低电平;蜂鸣器是无源的,在实际工作中模拟警笛的声音,这里只需反复给蜂鸣器赋予一个交替变化的交流信号,它就可以工作,发出声音;对于数码管,因为此处是为了测试硬件的好坏,

20、所以通过软件将数码管的所有8位全部打开,在段位上使其显示“8”并闪烁三次即可证明数码管是正常的。系统自检子程序流程图如图4-2所示。图3-2自检程序流程图3.3.2系统自检程序代码系统自检子程序代码如下:void selftest(void) rled=0; /红色警灯亮 for(i=20000;i>0;i-); bled=0; /蓝色警灯亮 for(i=20000;i>0;i-); light=0; /照明灯亮 for(i=20000;i>0;i-); for(i=3;i>0;i-); /警笛鸣叫 for(j=200;j>0;j-) beep=beep; del

21、ay500(); for(j=200;j>0;j-) beep=beep; delay500(); delay500(); P2=0x00; /打开数码管所有位 P0=0x11; /所有数码管显示8 for(i=6;i>0;i-) /所有数码管闪烁次 for(j=20000;j>0;j-); P0=P0; 第四节 定时器初始化及中断3.4.1定时器概述AT89S52微控制器片内有两个16位定时/计数器,即定时器0(T0)和定时器1(T1)。它们都有定时和计数的功能,可用于定时控制、延时、对外部事件计数和检测等。其中,T0由两个8位特殊功能寄存器TH0和TL0构成;T1由TH1

22、和TL1构成。每个定时器都由软件设置为定时工作方式或计数工作方式以及其他可控功能方式。设置为定时工作方式时,定时器计数AT89S52片内振荡器输出的经12分频后的脉冲,即每个机器周期使定时器(T0或T1)的数值加1直至计满溢出。当AT89S52采用12MHz晶振时,一个机器周期为1s,计数频率为1MHz。设置为计数工作方式时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。当输入脉冲信号产生由1至0的下降沿时,定时器的值加1。不管是定时还是计数工作方式,定时器T0或T1在对内部时钟或对外部事件计数时,不占用CPU时间,除非定时/计数器溢出,才可能中断CPU的当前操作。由此可见,定

23、时器是单片机中效率高而且工作灵活的部件。由于本设计需要包含时间模块,以便于在有外部红外信号输入时参考当前时间调用相应功能模块,所以要将定时器设置为定时模式,为了便于编程,决定每次定时时间为50ms,这样每1200次定时器溢出就是60秒。即一分钟。3.4.2定时中断流程当定时器溢出产生中断时,CPU开始执行定时中断程序,先将定时器重新赋初值,然后判断定时器溢出次数是否达到预设值,即计满一分钟,如果没到,则中断返回,继续执行系统的其他程序;如果已满一分钟,就重新设置溢出次数计数参数,接着判断是否计满60分钟,不是就中断返回,是则将分钟清零,将小时加一;再下来判断是否计满24小时,不是则中断返回,如

24、果是就将小时也清零。为了在计时判断过程中不影响数码管对当前时间的正常显示,专门定义了一组时间暂存器,分别对应分钟个位、分钟十位、小时个位和小时十位,当要中断返回时,就把这些暂存器中的值赋于显示寄存器,使数码管显示值得以更新。定时中断流程图如图3-3所示。图3-3 定时中断流程图3.4.3初始化及中断程序代码定时器初始化代码如下:void timerstart(void) TMOD=0x01; /定时器0模式1 IE=0x82; TH0=0x3C; /赋初值 TL0=0xB0; miao20=1200; /一分钟计数 TR0=1; /启动定时器定时中断程序代码如下:void timer0() i

25、nterrupt 1 using 1 TR0=0; /关闭定时器 TH0=0x3C; /赋初值 TL0=0xB0; TR0=1; /启动定时器 if(miao20-)=0) /是否到一分钟 miao20=1200; /重新赋值 if(minl00+)>0xf9) /数码管显示变化 minl00=0xf0; if(minh00+)>0xf6) minh00=0xf0;if(hourl00+)>0xf3) if(hourh00=0xf2)hourl00=0xf0;hourh00=0xf0; else if(hourl00>0xf9)hourh00+;hourl00=0xf0

26、; else ; hourh0=hourh00; /将后台寄存器值赋给显示寄存器 hourl0=hourl00; minh0=minh00; minl0=minl00; 第五节 数码管扫描子程序设计3.5.1动态扫描原理对于一组数码管动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此,在同一时刻如果各位数码管的位选线都处于选通状态的话,8位数码管将显示相同的字符。若要各位数码管能够显示出与本位相应的字符,就必须采用

27、扫描显示方式。即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。同时,段线上输出相应位要显示字符的字型码。这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。 3.5.2数码管扫描流程对数码管的动态扫描应按以下步骤进行:1. 先准备好要显示的数据,放入相应的显示存储单元中。2. 根据要使用的数码管的具体位置来确定扫描初值和扫描方向。3. 根据使用数码管的个数来确定扫描的位数。4. 查表将要显示的数据转换为能使数码管正确显示相对应的段码。5. 本设计的数码管扫描是按照自左向右的顺序依次显示两个4位数码

28、管,并将段值以数组的形式事先定义好了,在扫描时只需调用即可。3.5.3数码管扫描程序代码数码管扫描程序代码如下:void display(void) uchar w; /依次扫描8位计数 for(w=7;w>0;w-) P2=weiw; /从P20开始显示 switch(w) /根据位值给段位赋值 case 7:P0=P0&&hourh0;break; case 6:P0=P0&&hourl0;break; case 5:P0=P0&&minh0;break; case 4:P0=P0&&minl0;break; case

29、3:P0=P0&&qian0;break; case 2:P0=P0&&bai0;break; case 1:P0=P0&&shi0;break; case 0:P0=P0&&ge0;break; default:break; for(i=20000;i>0;i-); /延时大于1-2ms小于10ms 3.5.4显示报警时间程序代码该部分是在P3.7所对应按键被按下后,在数码管的前四位显示系统所记录的最近一次报警时间,程序代码如下:void show(void) uchar ww; /依次扫描8位计数,为保护w而重新定义一个

30、ww while(!lift) /判断解除报警键是否按下 for(ww=7;ww>=0;ww-) P2=weiww; /从P20开始显示 switch(ww) /根据位值给段位赋值 case 7:P0=P0&&polhourh;break; case 6:P0=P0&&polhourl;break; case 5:P0=P0&&polminh;break; case 4:P0=P0&&polminl;break; case 3:P0=P0&&qian0;break; case 2:P0=P0&&

31、;bai0;break; case 1:P0=P0&&shi0;break; case 0:P0=P0&&ge0;break; default:break; for(i=20000;i>0;i-); /延时大于1-2ms小于10ms 第六节 键盘扫描与系统设定子程序设计3.6.1去抖动原理在对键盘键值的读取过程中,读取的键值理应是一个稳定的读数,而实际上,按键从最初接通到稳定接通要经过数毫秒的抖动(弹跳时间),按键释放时也同样存在抖动的问题,如图4-1所示。抖动会引起一次按键多次读数,直接影响按键的准确率,因此键盘抖动的削除显得尤其重要。为了消除抖动的影响

32、,可以采用软件或硬件方法。图4-1 抖动产生示意图硬件消抖是采用硬件电路的方法对键盘的按下抖动及释放抖动进行消抖,经过消抖电路后使按键的电平信号只有两种稳定的状态。常用的消抖电路有触发器消抖电路,滤波消抖电路两种。图4-2给出滤波消抖电路:图4-2滤波消抖电路软件消抖的基本原理是当检测出有键闭合时,先执行一个延时子程序产生数毫秒的延时(通常为1020ms),待接通时的前沿抖动消失后再判别是否有键按下。当按键释放时,也要经过数毫秒延时,待后沿抖动消失后再判别键是否释放。3.6.2键盘扫描及系统设定流程键盘扫描及系统设定流程图如图4-3所示。图4-3键盘扫描及系统设定流程图3.6.3键盘扫描程序代

33、码键盘扫描自程序如下:void keyjust(void) if(P3!=0xff) /是否有健按下 for(i=20000;i>0;i-); /去抖动 if(P3!=0xff) /确实有健按下 switch(P3) /判断哪个键按下并调用相应子程序 case 0x7f:show();break;case 0xbf:syset();break;default:break; 3.6.4系统设定程序代码系统设定程序代码如下:void syset(void) while(!set)display(); /set未松开则显示数码管 while(set) /set松开则判断下级按键哪个被按下 if

34、(P3!=0xff) /是否有键按下 for(i=20000;i>0;i-); /去抖动 if(P3!=0xff) switch(P3) /判断哪个键按下并调用相应子程序 case 0xdf:if(ge0+)<=0xf9);else ge0=0xf0;break; case 0xef:if(shi0+)<=0xf9);else shi0=0xf0;break; case 0xf7:if(bai0+)<=0xf9);else bai0=0xf0;break; case 0xfb:if(qian0+)<=0xf9);else qian0=0xf0;break; cas

35、e 0xfd:if(minl0+)<=0xf9); else minl0=0xf0;if(minh0+)<=0xfb); else minh0=0xf0;break; case 0xfe:if(hourl0+)<=0xf3); else if(hourh0=0xf2)hourl0=0xf0;hourh0=0xf0; else if(hourl0<=0xf9); else hourl0=0xf0;hourh0+;break; default:break; display(); /数码管显示 for(i=20000;i>0;i-); while(!set)displa

36、y(); /键未松开则显示,否则更新数码管显示内容 ge00=ge0; shi00=shi0; bai00=bai0; qian00=qian0; minl00=minl0; minh00=minh0; hourl00=hourl0; hourh00=hourh0; 第七节 红外信号判断与各功能子程序设计3.7.1红外信号接收与功能模块流程 当热释电红外传感器检测到有人靠近时,会自动产生一个高电平的报警信号输入到主控芯片,如果此时的时间在第一时段,则经单片机控制发出声光报警并记录当前时间;如果在第二时段,则对经过人数进行计数;如果在第三时段,则自动控制照明系统开启,在人离开后自动控制照明系统关

37、闭。当接收到报警信号时,首先查询当前时间,根据时段不同跳转到相应的功能自程序。红外信号接收及功能流程图如图4-4所示。图4-4 红外信号接收及功能流程图3.7.2程序代码接收红外信号及相关功能模块程序代码如下:1.红外信号判断void hongwai(void) if(P10) /是否有红外信号产生 for(i=20000;i>0;i-); /去抖动 if(P10) /确实有红外信号产生则判断执行不同功能 if(hourh00=0)&&(hourl00<=6)func1(); else if(hourh00=0)&&(hourl00>6)|(h

38、ourh00=1)&&(hourl00<=7)func2(); else func3(); 2.报警并记录时间void func1(void) polhourh=hourh00; polhourl=hourl00; polminh=minh00; polminl=minl00; alarm();3.计数void func2(void) if(ge0+)<=0xf9); else ge0=0;if(shi0+)<=0xf9); else shi0=0;if(bai0+)<=0xf9); else bai0=0;if(qian0+)<=0xf9); e

39、lse ge0=0;shi0=0;bai0=0;qian0=0; if(qian0>qian00)alarm(); else if(bai0>bai00)alarm(); else if(shi0>shi00)alarm(); else if(ge0>ge00)alarm(); else ;4.照明void func3(void) while(P10)light=0;display(); light=1;5.声光报警void alarm(void) rled=0;bled=1; while(lift) for(j=200;j>0;j-) beep=beep; delay500(); rled=rled;bled=bled; display(); for(j=200;j>0;j-) beep=beep; delay500(); delay500(); rled=rled;bled=bled; display(); while(!lift) rled=1;bled=1;display();结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论