基于AT89C52单片机的教室灯光控制系统 下载本文

图 3.2.9 超时报警的电路

4控制模块软件设计与开发

在单片机硬件系统的基础上,再配上相应的软件,才能构成一个完整的系统。用户软件的开发与系统硬件有着密切的关系。在系统的硬件及输入输出方法确定后,程序软件就可以完全独立的进行设计、开发。在程序设计过程中,采用合理的程序设计结构是一项关键技术。在本系统的设计过程中,总体设计采用自上至下的设计思想将主程序设计好,而在各个部分展开成从属程序或子程序时,是将各个小模块分别进行设计和编程,同时在编程的过程中又用到了结构程序设计的思想。

本控制系统软件模块主要包括:系统监控主程序模块、数据采集模块、时钟模块、显示驱动模块及系统键功能和存储模块。

4.1系统监控主程序模块

监控程序按模块分为监控主程序和命令处理子程序。监控主程序的基本任务是调用子程序,一个主程序可以调用多个子程序,对于51系列单片机,系统资源有限,主程序通常是一个无限循环的过程,即是一个反复调用子程序的过程。子程序主要分为中断子程序和功能子程序,它们之间可以互相嵌套和调用,即中断子程序可以调用功能子程序。在应用软件的设计中,尽可能各个功能模块写成子程序的形式,并通过主程序调用。而命令处理子程序完成各种命令所规定的具体操作,它按各种命令再分为不同的子程序模块,它一般总是把其余部分连接起

21

来构成一个无限循环,系统所有功能都在这一循环中周而复始的有选择的执行。其监控主程序流程图如图4-1所示:

图 4-1 监控主程序流程图

4.1.1系统自检初始化

系统自检初始化是保证整个控制系统能够正常运行的重要条件,系统加电复位后,直接进入自检初始化程序,完成系统的自检及初始化。初始化过程主要是对一些控制寄存器(如中断控制)、数据区和外部芯片(如时钟芯片DS1302等)进行初始参数设置和定义。本系统中的自检初始化主要指各接口芯片的检测、芯片内部设定参数的初始化及系统内部寄存器的初始化。

各接口芯片的检测主要检测各芯片是否己处于准备工作的就绪状态,有无硬件故障等,如检测各位LED是否正常显示系统设置开机时的界面,检测硬件时钟DS1302是处于更换芯片后初次使用为起振状态,还是处于备用电源供电振荡保持状态,即检测系统中控制时间表的有效性,检测人体传感器输出信号是否正常体现人体存在的信息,检测环境光是如何影响光采集电路输出的信号等。若时钟芯片处于启动状态,系统控制时间表无效,则需要对其进行初始化并启动实时时钟。

系统内部寄存器初始化主要是指在数据缓冲区内,各用户定义的数据变量的

22

上电 Reset 系统初始化 设定定时器,允许定时中断 看门狗激活 务人体传感器处理任环境光处理任务定时时钟管理显示刷新任务

初始化赋值及部分特殊功能寄存器SFR的复位初始化,单片机复位后,程序计数器PC指向程序存储器的入口地址0000单元,程序状态字寄存器PSW清零,片内存储器选择工区工作寄存器,用户标志位F0为0状态,堆栈指针SP指向07H,其它定时器、中断允许寄存器IE、累加器ACC等皆为00H。 4.1.2定时中断处理

定时中断是利用单片机内部的定时器定时时间到或计数值已满引起的中断,内部定时器的计数器可以对内部时钟或从外部引线TO和TI输入的外部脉冲进行计数。计数器的溢出信号作为中断请求信号,去置位定时器溢出标志位,向单片机的CPU申请中断。

定时中断为周期性中断,每隔一定的时间会中断一次。本系统中设定的定时中断主要用来构造多任务操作系统,在系统响应中断后,无需对断点实施现场保护,可直接进行多任务时间的划分工作,使相应的操作任务进入就绪状态,即该中断可以启动有关的任务就绪。该定时中断处理程序框图如图4-I-2所示。

N 下一步 定时中断到? Y 开始 多任务启动时间划分 图 4-1-2 定时中断处理程序框图

本系统还采用了外部中断,此外部中断主要用来判断是否有遥控器信号,若有,就采集下来并加以处理;若无,则返回到主循环。 4.1.3多任务操作系统的构建

多任务操作是将用户应用程序分成多个任务,在操作系统的管理下,以某种准则调度并分配任务由处理器去执行。多任务运行实现一般是靠CPU运行实时内核,对多任务进行分配和调度,使CPU不停地执行这些任务中的某一个任务,以至能最大限度地提高CPU的利用率,加快运行速度,各任务(程序)不被耽误运行。

23

本系统多任务的执行是对定时中断中设置的实时标志进行检测,通过标志位的状态决定各任务的调用。任务的执行在微观上是分时顺序进行的,但在宏观上可以认为是同时执行的。因此,各任务在实时系统中的就会处于四种状态中的某

运行 等待 就绪 图 4-1-3 休眠 种状态之下,这四种状态如图4-1-3所示。

当某个任务获得CPU的执行权时,CPU执行该任务,此时任务处于运行状态。等待状态是指任务的执行需要等待某一事件发生,则由运行状态退出,进入等待状态。就绪状态是任务满足所有启动条件后所进入的状态。休眠状态是任务己执行完的状态。

4.2数据采集模块

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

人体存在传感器有优点,也有缺点。优点便是本身不发任何类型的辐射,器件功耗很小,隐蔽性好,价格低廉。而缺点是容易受各种热源、光源干扰;由于红外穿透力差,因此人体的红外辐射容易被遮挡,不易被探头接收;易受射频辐射的干扰;环境温度和人体温度接近时,探测和灵敏度明显下降,有时还会造成短时失灵。试验检测也证明了这点,只要人体存在却有巧秒左右没有活动,人体传感器则认为没有人体存在。为避免这种现象的出现,本系统软件程序中设计为有人体存在状态后间隔2分钟或更长的时间来对人体存在参数信号的采集。 4.2.2数据采集软件设计的实现

24

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

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

;-------------------------------------------------------------- Function: BodySensor and Iight to light port356

DoSensLight:Mov c, port33 ;Signal of Sensor

Anl c, port37

Cpl c ;have person and no light Mov port35, c ;on relay 1 Mov port36, c ;on relay 2 Jnc SensOut ;no person to out

Haveperson:mov SensDelayBuf, #5 ;delay 5 minute SensOut: Ret

4.2.3人体存在传感器的抗干扰措施

人体存在传感器易受外界影响,于是要在使用时特别注意抗干扰性能。 1.防小动物干扰

探测器安装在推荐地使用高度,对探测范围内地面上的小动物,不产生信号。 2.抗电磁干扰

25