基于AT89S51单片机的教室灯光智能控制系统设计

继电器驱动接口电路如图2-8所示,这里继电器由相应的PNP型号的9012三极管来驱动。开机时,单片机初始化后的P3.5、P3.6 为高电平,三极管截止,所以开机后继电器始终处于释放状态。如果P3.5、P3.6 为低电平,三极管的基极就会被拉低而产生足够的基极电流,使三极管导通,继电器就会得电吸合,从而驱动负载,点亮相应电灯。继电器的输出端并联100欧的电阻和6800皮法电容,目的是避免继电器吸合与释放期间产生火花。继电器线圈两端反相并联的二极管是起到吸收反向电动势的功能,保护相应的驱动三极管,这种继电器驱动方式硬件结构比较简单。

图2-8 继电器驱动电路

7.超时报警电路

本系统采用的超时报警电路如图2-9所示。单片机的P3.4端口外加一个10K的上拉电阻,再经过限流电阻100欧与三极管C945的基极相连。当P3.4 端口为低电平,即基极为低电平时,三极管导通,驱动蜂鸣器发出声音,以示教室灯工作超时。若P3.4端口为高电平,即基极为高电平时,三极管截止,蜂鸣器不工作,教室灯工作正常。本系统采用超时报警电路方便了管理人员对教室灯的管理,能够科学、有效地管理教室电灯。

图2-9超时报警电路

8.按键控制电路

按键控制电路如图2-10所示。按键的输入信号分别接到P2.0,P2.1,P2.2,P2.3,用二极管和与门电路将按键信号引到外中断0的引脚P3.2。按键控制电路采用单片机P2口的低4个口作按键的输入信号端,信号取自电阻的分压。当按键未按下时,P2.0—P2.3端口的电压接近电源电压,为高电平,当某一按键按下时,对应端口被按纽开关短接到地,为低电平。单片机检测4个端口电平的变化,从而确定是哪个键被按下。键盘工作方式采用中断扫描方式,4个二极管和10K电阻组成与门电路,当任一键按下时,与门输出P3.2引脚的电平都会由高为低。P3.2第二功能是外部中断0的输入引脚,我们利用其电平的变化产生中断,在中断服务程序中读入P2口低4位信号,确定哪个键按下,执行相应的按键功能,0.1pf电容和10K电阻组成滤波电路,消除按键的抖动。

图2-10按键控制电路

9.系统看门狗电路

在单片机工作过程中,不可避免的会由于外界的干扰而产生程序跑飞、死机甚至造成整机瘫痪等情况。为了能够及时恢复单片机的工作,只能采用重新复位的方法,因此还应该在硬件设计中使用看门狗电路,这样在单片机发生死机的情况下,看门狗将产生一个复位信号给单片机,使单片机复位,重新执行程序。由于系统同时需要看门狗和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,禁止看门狗工作。

看门狗电路的定时时间长短可由具体应用程序的循环周期决定,通常比系统正常工作时最大循环周期的时间略长即可。 X5045硬件部分连接如图2-12 。

图2-12 系统看门狗电路

系统看门狗电路由系统数据存储及故障保护部分组成,X5045是一种串行通信512字节的EEPROM,同时兼有看门狗和电源监控功能,X5045有三种可编程看门狗周期,上电和VCC低于检测门限时,输出复位信号,X5045输出复位高电平有效,为了复位更加可靠,其复位输出端外接一个10K的上拉电阻,并与AT89S51的复位端相连。看门狗能在电源上电、掉电期间产生一个复位信号。该芯片还带有一个1.4秒的看门狗定时器可用来监控单片机的工作。如果在1.4秒内未检测到其工作,出现故障,内部定时器将使看门狗WD1处于低电平状态,为系统提供保护,避免死机、程序跑飞或进入死循环等意外的发生。

四、控制模块软件设计

1.系统监控主程序模块

监控程序按模块分为监控主程序和命令处理子程序叫。监控主程序的基本任务是调用子程序,一个主程序可以调用多个子程序,对于51系列单片机,系统资源有限,主程序通常是一个无限循环的过程,即是一个反复调用子程序的过程。子程序主要分为中断子程序和功能子程序,它们之间可以互相嵌套和调用,即中断子程序可以调用功能子程序。在应用软件的设计中,尽可能各个功能模块写成子程序的形式,并通过主程序调用。而命令处理子程序完成各

种命令所规定的具体操作,它按各种命令再分为不同的子程序模块,它的编程方法与功能要求及系统应用密切相关。

监控主程序是整个控制系统的核心部分,其它外围模块一般都需经过监控模块实现其在控制系统中的作用。监控主程序接受和分析来自键盘的命令,进而把控制转到相应的处理子程序的入口,起引导作用。

本系统监控主程序模块主要包括对系统外围器件输入、输出参数的初始化自检,看门狗的激活,多任务操作模块的调用(系统中的信号采集处理、时钟管理、按键接收处理、驱动显示模块),实时中断处理等。除初始化和自检外,监控主程序一般总是把其余部分连接起来构成一个无限循环,系统所有功能都在这一循环中周而复始的有选择的执行。

1)系统自检初始化

系统自检初始化是保证整个控制系统能够正常运行的重要条件,系统加电复位后,直接进入自检初始化程序,完成系统的自检及初始化。初始化过程主要是对一些控制寄存器(如中断控制)、数据区和外部芯片(如时钟芯片DS1302等)进行初始参数设置和定义。本系统中的自检初始化主要指各接口芯片的检测、芯片内部设定参数的初始化及系统内部寄存器的初始化。 各接口芯片的检测主要检测各芯片是否已处于准备工作的就绪状态,有无硬件故障等,如检测各位LED是否正常显示系统设置开机时的界面,检测硬件时钟DS1302是处于更换芯片后初次使用为起振状态,还是处于备用电源供电振荡保持状态,即检测系统中控制时间表的有效性,检测热释红外传感器输出信号是否正常体现人体存在的信息,检测光采集电路输出的信号等。若时钟芯片处于启动状态,则需要对其进行初始化并启动实时时钟。 系统内部寄存器初始化主要是指在数据缓冲区内,各用户定义的数据变量的初始化赋值及部分特殊功能寄存器SFR的复位初始化,单片机复位后,程序计数器PC指向程序存储器的入口地址。000单元,程序状态字寄存器PSW清零,片内存储器选择工作寄存器,用户标志位F0为0状态,堆栈指针SP指向07H,其它定时器、中断允许寄存器IE,累加器ACC等皆为00H.。

2)定时中断处理设计

定时中断是利用单片机内部的定时器定时,时间到或计数值已满引起的中断,内部定时器的计数器可以对内部时钟或从外部引线T0和T1输入的外部脉冲进行计数。计数器的溢出信号作为中断请求信号,去置位定时器溢出标志位,向单片机的CPU申请中断。 定时中断为周期性中断,每隔一定的时间会中断一次。本系统中设定的定时中断主要用来构造多任务操作系统,在系统响应中断后,无需对断点实施现场保护,可直接进行多任务时间的划分工作,使相应的操作任务进入就绪状态,即该中断可以启动有关的任务操作。该定时中断处理程序框图如图3-1所示:

图3-1 定时中断处理程序框图

本系统还采用了外部中断,此外部中断主要用来判断是否有外来信号输入,若有,就采集下来并加以处理;若无,则返回到主循环。

2. 数据采集模块

本控制系统中的数据采集对象为环境光信号及人体存在信号,在程序设计中对这两个数据的采集放置在多任务模块中实施定时采集。

数据采集软件的实现

本系统考虑到环境光足够亮时,无论是否有人体存在都不开灯;而环境光不够亮时,有人体存在才开灯,无人体存在则不开灯。本系统逻辑定义为:环境光亮时为逻辑“0\符合光采集电路输出信号状态),暗时为“1\,人体存在为“1\,人体不存在为“0\,开灯为“1”,关灯为“0\,那么环境光与人体存在可以用以下的逻辑关系表来表示,如表所示3.1:

表3.1 环境光与人体存在逻辑关系

上表数据表明可将环境光参数与人体存在参数进行与操作,又由于继电器是低电平驱动,所以要将采集处理后的信号进行非操作,才可以驱动继电器工作, 即可得到教室灯的状态。

3.时钟模块

在系统启动自检初始化时,首先会对时钟芯片DS1302的运行状态进行判断,当检测到DS1302处于启动状态时才对其进行初始化,启动时钟。实时时钟芯片DS1302的初始化及其读写程序设计的关键是要遵循其时序要求。

1)数据输入输出

在对DS1302进行各种操作之前,必须先对其初始化,即需要把复位输入RST端置为高电平,

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4