基于ATS单片机的教室灯光智能控制系统设计_第1页
基于ATS单片机的教室灯光智能控制系统设计_第2页
基于ATS单片机的教室灯光智能控制系统设计_第3页
基于ATS单片机的教室灯光智能控制系统设计_第4页
基于ATS单片机的教室灯光智能控制系统设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、基于AT89S51单片机的教室灯光智能控制系统设计一、系统设计要求:该系统以AT89S51单片机作为控制模块的核心部件,采用热释红外人体传感器检测人体的存在,采用光敏三极管构成的电路检测环境光的强度;根据教室合理开灯的条件,通过对人体存在信号和环境光信号的识别与判断,完成对教室灯光的智能控制,避免了教室用电的大量浪费。系统还具有报警功能;同时还采用了软/硬件的“看门狗”等抗干扰措施二、系统控制方案分析 该控制器以自然光强度和人体存在作为控制器的主要输入参数,能够实现自动与手动控制相兼容。在自然环境光较强光线足够时,无论人是否存在,都不开灯;在自然环境光较弱时,有人存在且超过一定时间,控制器自动

2、打开电灯,直到人离开后再延时一定时间后关灯。同时,还可设置作息时间来控制,夜晚超过12点,若还有人存在,则关闭自动控制器的运行,改用开关来手动控制,以解决因特殊情况下,自动控制器的不人性化运行。 所研究的教室灯光控制器主要是由硬件和软件两大部分组成。硬件部分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到设计目的。三、系统控制模块的硬件设计 系统控制模块的硬件构成及简介 系统控制单元是以AT89S51单片机主控模块为核心,其它外围电路主要包括:环境光采集电路、时钟模块、热释红外传感器

3、模块、看门狗模块、按键电路、EEPROM存储模块、超时报警模块、数码管显示模块,其结构框图如图2-1所示。 图2.1系统控制结构框图 环境光模块采用光敏三极管来检测环境光的强度,有光照时,电阻减小,随着光照强度的减弱,电阻逐渐增大,把光信号转化成电信号,实现对光强度的检测。 人体存在传感器模块采用HP-208是基于红外线技术的智能产品,实现对人体存在的检测。 硬件时钟模块采用具有充电能力的低功耗,具有临时性存放数据的RAM寄存器的实时时钟芯片DS1302。该电路的接口简单、价格低廉、使用方便,被广泛的使用。 系统数据存储及故障保护部分由X5045组成,X5045是一种串行通讯的512字节EEP

4、ROM,同时兼有看门狗和电源监控功能键盘模块。1.系统控制的主要硬件电路 考虑到本系统安装时受环境影响因素比较多,且教室控制设备中的人体存在传感器、光敏三极管等经常会因环境情形变化而不稳定,所以在设计过程中,电子元器件的选用、线路布置和设备的安放要充分考虑到抗干扰问题。2. 系统主控电路 本系统的主控模块采用AT89S51作为主控芯片,它是一种低功耗,8位CMOS工艺处理器,具有8K在线可编程Flash存储器,片内的Flash可多次编程,为在线编程提供了方便。片内有128字节的RAM,4KB的EEPROM,由于合理的安排使用片内RAM空间,所以没有片外扩展的RAM,使电路结构简洁。该芯片的主要

5、特征见如表2.1:表2.1 AT89S51主要特征单片机最小系统如图2-2所示: 图2-2 单片机最小系统3.系统供电电路 系统供电原理如图2-3所示,采用+5V电压供电。本设计采用输出电压为9V的变压器。系统接通220V交流电源后,将220V交流电变压到9V,经过二极管全波整流、电解电容C1,C2滤波,再经正输出稳压器LM7805,为了缓冲负载突变,改善瞬态响应,输出端还采用了电容C3,C4,最后得到+5V的直流电压,用于给控制系统中单片机系统及其它外围电路的Vcc端供电。. 图2-3 系统供电电路4.数据采集电路 教室的环境光强度和人体存在与否是系统主要的输入参数,因此教室中的环境光照强度

6、和人体存在成为系统数据采集的主要对象。常见的环境光强度采集器件主要有光敏二极管和光敏三极管,考虑抗干扰的需要,选用灵敏度较高的光敏三极管。此外,人体存在传感器要求灵敏度高,可靠性强。环境光强度采集电路 光电传感器是一种能够将光转化为电量的传感器。采用的光敏三极管除了具有光敏二极管将光信号转化为电信号的功能外,还具有对电信号的放大功能。在无光照时,三极管的穿透电流很小,为暗电流,有光照时,产生的Ib增大,成为光电流Ie,光电流的大小与光照强度成正比,于是在负载电阻上就能得到随光照强度变化而变化的电信号。光敏三极管具有灵敏度高,体积小,工作电压低,工作电流小,发光均匀稳定,响应速度快,寿命长等特点

7、。环境光采集电路原理如图为2-4所示。当环境光照强度大于一定程度时,光敏三极管D6呈现低阻状态1K,三极管Q12的基极电压升高,Q12管饱和导通,集电极输出低电平。当环境光强度小于一定程度时,光敏三极管D6呈现高阻状态100,使三极管Q12截止,集电极输出高电平。其中调节R26阻值,可使三极管Q12受环境光强度影响在适当的亮度下导通。图2-4环境光电路人体存在信号采集电路人体存在传感器采用HP-208-N-L人体感应模块(低电平输出)。基于红外线技术的自动控制产品,灵敏度高,可靠性强,广泛应用于各类自动感应电器中。人体传感器的1号引脚为电源信号端VCC,2号引脚为采集信号输出端OUT,3号引脚

8、为地信号端GND。其硬件连接如图2-5 图 2-5 人体存在信号采集电路5.系统时钟电路 根据教室灯光使用特性,该系统还应受到时间的控制,因此本研究还加入硬件时钟电路以保证系统的智能化运行。 考虑到本系统停电时需为时钟电路提供电源、且不占用太多单片机资源,于是采用具有充电能力的实时时钟芯片DS1302,作为临时性存放数据的RAM寄存器。此芯片采用的是串行通信方式,还可为掉电保护电源提供充电功能,也可以将此功能关闭。该芯片对年、月、日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。DS1302只需三根线即可与单片机进行通信,体积小,使用简单,时钟精度较高,满足系统的要求,其引

9、脚图如图2-6所示。 图2-6 DS1302的引脚图各引脚的功能为: Vcc1:主电源;Vcc2:备份电源。当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2< Vcc1时,由Vcc1向DS1302供电。 SCLK:串行时钟,输入,控制数据的输入与输出; I/O:三线接口时的双向数据线; CE:输入信号,在读、写数据期间,必须为高。 DS1302与单片机接口电路连接如图2-7,其中Vcc2外接3.6V可充电的锂电池,为DS1302的备用电源。Vcc1外接供电 模块的稳定输出电压+5V,为DS1302的主电源。DS1302由Vcc1和Vcc2两者中较大者供电。

10、系统正常运行时,Vcc1大于Vcc2,因此由Vcc1给DS1302供电,在主电源关闭的情况下,则由Vcc2给DS1302供电,保持时钟的连续运行。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送,与单片机的复位信号相连。时钟输入端SCLK接单片机P1.5引脚,进行时钟控制。 图 2-7 时钟电路6.继电器驱动电路 继电器驱动接口电路如图2-8所示,这里继电器由相应的PNP型号的9012三极管来驱动。开机时,单片机初始化后的P3.5、P3.6 为高电平,三极管截止,所以开机后继电器始终处于释放状态。如果P3.5、P3.6 为低

11、电平,三极管的基极就会被拉低而产生足够的基极电流,使三极管导通,继电器就会得电吸合,从而驱动负载,点亮相应电灯。继电器的输出端并联100欧的电阻和6800皮法电容,目的是避免继电器吸合与释放期间产生火花。继电器线圈两端反相并联的二极管是起到吸收反向电动势的功能,保护相应的驱动三极管,这种继电器驱动方式硬件结构比较简单。 图2-8 继电器驱动电路7.超时报警电路 本系统采用的超时报警电路如图2-9所示。单片机的P3.4端口外加一个10K的上拉电阻,再经过限流电阻100欧与三极管C945的基极相连。当P3.4 端口为低电平,即基极为低电平时,三极管导通,驱动蜂鸣器发出声音,以示教室灯工作超时。若P

12、3.4端口为高电平,即基极为高电平时,三极管截止,蜂鸣器不工作,教室灯工作正常。本系统采用超时报警电路方便了管理人员对教室灯的管理,能够科学、有效地管理教室电灯。 图2-9超时报警电路8.按键控制电路 按键控制电路如图2-10所示。按键的输入信号分别接到P2.0,P2.1,P2.2,P2.3,用二极管和与门电路将按键信号引到外中断0的引脚P3.2。按键控制电路采用单片机P2口的低4个口作按键的输入信号端,信号取自电阻的分压。当按键未按下时,P2.0P2.3端口的电压接近电源电压,为高电平,当某一按键按下时,对应端口被按纽开关短接到地,为低电平。单片机检测4个端口电平的变化,从而确定是哪个键被按

13、下。键盘工作方式采用中断扫描方式,4个二极管和10K电阻组成与门电路,当任一键按下时,与门输出P3.2引脚的电平都会由高为低。P3.2第二功能是外部中断0的输入引脚,我们利用其电平的变化产生中断,在中断服务程序中读入P2口低4位信号,确定哪个键按下,执行相应的按键功能,0.1pf电容和10K电阻组成滤波电路,消除按键的抖动。 图2-10按键控制电路9.系统看门狗电路 在单片机工作过程中,不可避免的会由于外界的干扰而产生程序跑飞、死机甚至造成整机瘫痪等情况。为了能够及时恢复单片机的工作,只能采用重新复位的方法,因此还应该在硬件设计中使用看门狗电路,这样在单片机发生死机的情况下,看门狗将产生一个复

14、位信号给单片机,使单片机复位,重新执行程序。由于系统同时需要看门狗和EEPROM,所以本设计中使用芯片X5045。X5045的引脚排列如图2-11。 图2-11 X5045的引脚图看门狗定时器的预置时间是通过X5045的状态寄存器的相应位来设定的。如表2.2状态寄存器所示,X5045状态寄存器共有6位。其中WD1.WD0和看门狗电路有关,其余位和EEPROM的工作设置有关。表2.2 状态寄存器 WD1=0,WD0=0,预置时间为1.4S, WD1=0,WD0=1,预置时间为0.6S, WD1=1,WD0=0,预置时间为0.2S, WD1=1,WD0=1,禁止看门狗工作。 看门狗电路的定时时间长

15、短可由具体应用程序的循环周期决定,通常比系统正常工作时最大循环周期的时间略长即可。 X5045硬件部分连接如图2-12。 图2-12 系统看门狗电路系统看门狗电路由系统数据存储及故障保护部分组成,X5045是一种串行通信512字节的EEPROM,同时兼有看门狗和电源监控功能,X5045有三种可编程看门狗周期,上电和VCC低于检测门限时,输出复位信号,X5045输出复位高电平有效,为了复位更加可靠,其复位输出端外接一个10K的上拉电阻,并与AT89S51的复位端相连。看门狗能在电源上电、掉电期间产生一个复位信号。该芯片还带有一个1.4秒的看门狗定时器可用来监控单片机的工作。如果在1.4秒内未检测

16、到其工作,出现故障,内部定时器将使看门狗WD1处于低电平状态,为系统提供保护,避免死机、程序跑飞或进入死循环等意外的发生。四、控制模块软件设计1.系统监控主程序模块 监控程序按模块分为监控主程序和命令处理子程序叫。监控主程序的基本任务是调用子程序,一个主程序可以调用多个子程序,对于51系列单片机,系统资源有限,主程序通常是一个无限循环的过程,即是一个反复调用子程序的过程。子程序主要分为中断子程序和功能子程序,它们之间可以互相嵌套和调用,即中断子程序可以调用功能子程序。在应用软件的设计中,尽可能各个功能模块写成子程序的形式,并通过主程序调用。而命令处理子程序完成各种命令所规定的具体操作,它按各种

17、命令再分为不同的子程序模块,它的编程方法与功能要求及系统应用密切相关。 监控主程序是整个控制系统的核心部分,其它外围模块一般都需经过监控模块实现其在控制系统中的作用。监控主程序接受和分析来自键盘的命令,进而把控制转到相应的处理子程序的入口,起引导作用。 本系统监控主程序模块主要包括对系统外围器件输入、输出参数的初始化自检,看门狗的激活,多任务操作模块的调用(系统中的信号采集处理、时钟管理、按键接收处理、驱动显示模块),实时中断处理等。除初始化和自检外,监控主程序一般总是把其余部分连接起来构成一个无限循环,系统所有功能都在这一循环中周而复始的有选择的执行。 1)系统自检初始化 系统自检初始化是保

18、证整个控制系统能够正常运行的重要条件,系统加电复位后,直接进入自检初始化程序,完成系统的自检及初始化。初始化过程主要是对一些控制寄存器(如中断控制)、数据区和外部芯片(如时钟芯片DS1302等)进行初始参数设置和定义。本系统中的自检初始化主要指各接口芯片的检测、芯片内部设定参数的初始化及系统内部寄存器的初始化。 各接口芯片的检测主要检测各芯片是否已处于准备工作的就绪状态,有无硬件故障等,如检测各位LED是否正常显示系统设置开机时的界面,检测硬件时钟DS1302是处于更换芯片后初次使用为起振状态,还是处于备用电源供电振荡保持状态,即检测系统中控制时间表的有效性,检测热释红外传感器输出信号是否正常

19、体现人体存在的信息,检测光采集电路输出的信号等。若时钟芯片处于启动状态,则需要对其进行初始化并启动实时时钟。 系统内部寄存器初始化主要是指在数据缓冲区内,各用户定义的数据变量的初始化赋值及部分特殊功能寄存器SFR的复位初始化,单片机复位后,程序计数器PC指向程序存储器的入口地址。000单元,程序状态字寄存器PSW清零,片内存储器选择工作寄存器,用户标志位F0为0状态,堆栈指针SP指向07H,其它定时器、中断允许寄存器IE,累加器ACC等皆为00H.。2)定时中断处理设计 定时中断是利用单片机内部的定时器定时,时间到或计数值已满引起的中断,内部定时器的计数器可以对内部时钟或从外部引线T0和T1输

20、入的外部脉冲进行计数。计数器的溢出信号作为中断请求信号,去置位定时器溢出标志位,向单片机的CPU申请中断。 定时中断为周期性中断,每隔一定的时间会中断一次。本系统中设定的定时中断主要用来构造多任务操作系统,在系统响应中断后,无需对断点实施现场保护,可直接进行多任务时间的划分工作,使相应的操作任务进入就绪状态,即该中断可以启动有关的任务操作。该定时中断处理程序框图如图3-1所示: 图3-1 定时中断处理程序框图本系统还采用了外部中断,此外部中断主要用来判断是否有外来信号输入,若有,就采集下来并加以处理;若无,则返回到主循环。 2. 数据采集模块 本控制系统中的数据采集对象为环境光信号及人体存在信

21、号,在程序设计中对这两个数据的采集放置在多任务模块中实施定时采集。数据采集软件的实现 本系统考虑到环境光足够亮时,无论是否有人体存在都不开灯;而环境光不够亮时,有人体存在才开灯,无人体存在则不开灯。本系统逻辑定义为:环境光亮时为逻辑“0"(符合光采集电路输出信号状态),暗时为“1",人体存在为“1",人体不存在为“0",开灯为“1”,关灯为“0",那么环境光与人体存在可以用以下的逻辑关系表来表示,如表所示3.1:表3.1 环境光与人体存在逻辑关系上表数据表明可将环境光参数与人体存在参数进行与操作,又由于继电器是低电平驱动,所以要将采集处理后的信

22、号进行非操作,才可以驱动继电器工作,即可得到教室灯的状态。 3.时钟模块 在系统启动自检初始化时,首先会对时钟芯片DS1302的运行状态进行判断,当检测到DS1302处于启动状态时才对其进行初始化,启动时钟。实时时钟芯片DS1302的初始化及其读写程序设计的关键是要遵循其时序要求。 1)数据输入输出 在对DS1302进行各种操作之前,必须先对其初始化,即需要把复位输入RST端置为高电平,如果RST输入为低电平,那么所有的数据传送中止,且I/O引脚变为高阻抗状态。在数据读/写完后,RST端应置成低电平,以防止外部干扰对DS1302内部时钟的影响。 同时,为了防止复位输入端受到外部的干扰,要求上电

23、时,在主电源引脚Vcc22.5V之前,RST必须为逻辑0。无论是读操作还是写操作,都必须在开头的8个时钟周期内把提供地址和命令信息的8位数据装入到DS1302的移位寄存器中。地址/命令信息用于指明40个寄存器中的哪个进行何种操作。数据在SCLK的上升沿串行输入,在开始的8个时钟周期把命令字装入移位寄存器之后,若跟随的是写命令字节,则在下8个SCLK周期的上升沿输入数据字节,若跟随在读命令字节的8个SCLK周期之后,在下8个SCLK周期的下降沿输出数据字节。程序流程如图3-3所示: 图3-3数据输入输出流程图2)时钟程序设计 驱动程序 /寄存器宏定义 #define WRITE_SECOND 0

24、x80 #define WRITE_MINUTE 0x82 #define WRITE_HOUR 0x84 #define READ_SECOND 0x81 #define READ_MINUTE 0x83 #define READ_HOUR 0x85 #define WRITE_PROTECT 0x8E /位寻址寄存器定义 sbit ACC_7 = ACC7; /管脚定义 sbit SCLK = P35; / DS1302时钟信号 7脚 sbit DIO= P36; / DS1302数据信号 6脚sbit CE = P37; / DS1302片选 5脚 /地址、数据发送子程序 void Wr

25、ite1302 ( unsigned char addr,dat ) unsigned char i,temp; CE=0; /CE引脚为低电平,数据传送中止 SCLK=0; /清零时钟总线 CE = 1; /CE引脚为高电平,逻辑控制有效 /发送地址 for ( i=8; i>0; i- ) /循环8次移位 SCLK = 0; temp = addr; DIO = (bit)(temp&0x01); /每次传输低字节 addr >>= 1; /右移一位 SCLK = 1; /发送数据 for ( i=8; i>0; i- ) SCLK = 0; temp =

26、dat; DIO = (bit)(temp&0x01); dat >>= 1; SCLK = 1; CE = 0; /数据读取子程序 unsigned char Read1302 ( unsigned char addr ) unsigned char i,temp,dat1,dat2; CE=0; SCLK=0; CE = 1; /发送地址 16 for ( i=8; i>0; i- ) /循环8次移位 SCLK = 0; temp = addr; DIO = (bit)(temp&0x01); /每次传输低字节 addr >>= 1; /右移一

27、位 SCLK = 1; /读取数据 for ( i=8; i>0; i- ) ACC_7=DIO; SCLK = 1; ACC>>=1; SCLK = 0; CE=0; dat1=ACC; dat2=dat1/16; /数据进制转换 dat1=dat1%16; /十六进制转十进制 dat1=dat1+dat2*10; return (dat1); /初始化DS1302 void Initial(void) Write1302 (WRITE_PROTECT,0X00); /禁止写保护 Write1302 (WRITE_SECOND,0x56); /秒位初始化 Write1302

28、 (WRITE_MINUTE,0x34); /分钟初始化 Write1302 (WRITE_HOUR,0x12); /小时初始化 Write1302 (WRITE_PROTECT,0x80); /允许写保护 4.显示驱动模块 系统运行过程中的数据显示是人机交互对话的一个重要通道。通过的显示系统数据,我们才可以更好的了解系统运行的状态,从而方便对整个系统进行必要的操作。本系统中采用共阳极的数码管,其中采用ULN2803作为驱动数码管的段选的芯片,采用简单又便宜的9012三极管来驱动数码管的位选,节约成本,程序编写简单。 考虑到数码管驱动信号要求的电流较大,采用功率驱动器件ULN2803芯片。此芯

29、片是八组NPN型达林顿功放三极管集成芯片,典型的输入电压是5V,集电极输出功率可达50V×0.6A。因此采用ULN2803共阳极数码管的段信号驱动器。而共阳极数码管的位信号驱动则采用8个晶体管9012来实现。又由于ULN2803为低电平驱动,所以数据送到单片机端口前,应在程序中先将数据取反。然后将数据送到ULN2803输入端相连接单片机的P0端口即可。 每次先送一位要显示的数据字节,然后再送该位数码管的地址字节,直到8位显示完全。 本系统在运行过程中需要显示查看的数据有时钟及显示数值。正常工作中8位显示器显示实时时钟,显示小时、分钟、秒,其中有两位用来显示“”,用以分隔显示小时、分钟

30、和秒,这样显示更加清晰。五、系统调试运行及问题分析1.单片机系统调试方法及步骤 单片机系统的调试应包括硬件及软件两部分,主要是通过调试发现硬件及软件中存在的问题,查看其运行结果是否符合设计要求。 在对系统进行实际调试时,首先应对硬件进行静态调试,同时对系统软件进行初步调试,此后再对软件和硬件进行动态调试,最后才能使系统进入正常工作. (1)静态调试:静态调试主要是排除明显的硬件故障。在将芯片、传感器等元件连接到电路板上时,要保证各处电源极性、电压正确,以防止因电源极性接反或电压过高损坏芯片或传感器。此外,插入芯片必须在断电的情况下进行,特别注意芯片的方向不要插反。 (2)软件调试:在软件调试时

31、采用在计算机上利用模拟软件实现对单片机的硬件模拟、指令模拟及运行状态模拟,从而完成应用软件开发的全过程。调试过程中的运行状态、各寄存器状态、端口状态等都可以在指定的窗口区域显示出来,通过这些显示结果随时跟踪程序运行状态,以确定程序运行无错误。 (3)动态调试:控制系统的软件和硬件是密切相关的,由于软件模拟开发系统不能对硬件部分进行诊断,同时也不能实时在线仿真,所以用户程序还需跟硬件连接起来进行联调,同时对软件和硬件进行检查和诊断。整个单片机系统进行在线调试时,需借助仿真开发工具来对用户软件及硬件电路进行诊断、调试。 在应用系统各模块电路调试成功后,将程序加载到在线仿真器上,这时就能单步或连续地执行目标程序,同时也可以根据需要分段设置断点执行程序。而对于一些与硬件相关的用户程序,如接口驱动程序等,则需要配合硬件,进行在线调试,如果有逻辑错误,也要及时纠正

温馨提示

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

评论

0/150

提交评论