容,目的是避免继电器吸合与释放期间产生火花。每个继电器都有一对常开常闭的触点,便于在其他电路中使用,继电器线圈两端反相并联的二极管是起到吸收反向电动势的功能,保护相应的驱动三极管,这种继电器驱动方式硬件结构比较简单。
图3.2.7继电器驱动电路图
3.2.8 超时报警电路
在教室中,若采用手动方式控制时,一方面由于学生及管理人员的疏忽,教室里没有人而灯还亮着,导致教室灯工作超时,能源浪费,于是本系统采用超时报警电路,以声音的方式来提醒管理人员是否关闭电源。另一方面由于学生学习紧张,在夜里忘了时间点,学习期间开灯时间过长,致使教室灯工作超时,于是本系统超时报警电路就会发出声音,提醒学生应该休息或必需改用遥控器手动方式来控制灯了。这样,还可以更好地保护公共设施。本系统采用超时报警的电路如图3.2.9的P3.4端口外加一个10K的上拉电阻,再经过限流电阻100欧与三极管C945的基极相连。当P3.4端口为低电平,即基极为低电平时,三极管导通,驱动蜂鸣器发出声音,以示教室灯工作超时。若P3. 4端口为高电平,即基极为高电平时,三极管截止,蜂鸣器不工作,教室灯工作正常。本系统采用超时报警
21
电路方便了管理人员对教室的管理,能够更好地、及时地管理教室。
图 3.2.9 超时报警的电路
4控制模块软件设计与开发
在单片机硬件系统的基础上,再配上相应的软件,才能构成一个完整的系统。用户软件的开发与系统硬件有着密切的关系。在系统的硬件及输入输出方法确定后,程序软件就可以完全独立的进行设计、开发。在程序设计过程中,采用合理的程序设计结构是一项关键技术。在本系统的设计过程中,总体设计采用自上至下的设计思想将主程序设计好,而在各个部分展开成从属程序或子程序时,是将各个小模块分别进行设计和编程,同时在编程的过程中又用到了结构程序设计的思想。
本控制系统软件模块主要包括:系统监控主程序模块、数据采集模块、时钟模块、显示驱动模块及系统键功能和存储模块。
4.1系统监控主程序模块
监控程序按模块分为监控主程序和命令处理子程序。监控主程序的基本任务是调用子程序,一个主程序可以调用多个子程序,对于51系列单片机,系统资源有限,主程序通常是一个无限循环的过程,即是一个反复调用子程序的过程。子程序主要分为中断子程序和功能子程序,它们之间可以互相嵌套和调用,即中断子程序可以调用功能子程序。在应用软件的设计中,尽可能各个功能模块写成子程序的形式,并通过主程序调用。而命令处理子程序完成各种命令所规定的具
22
体操作,它按各种命令再分为不同的子程序模块,它一般总是把其余部分连接起来构成一个无限循环,系统所有功能都在这一循环中周而复始的有选择的执行。其监控主程序流程图如图4-1所示:
图 4-1 监控主程序流程图
4.1.1系统自检初始化
系统自检初始化是保证整个控制系统能够正常运行的重要条件,系统加电复位后,直接进入自检初始化程序,完成系统的自检及初始化。初始化过程主要是对一些控制寄存器(如中断控制)、数据区和外部芯片(如时钟芯片DS1302等)进行初始参数设置和定义。本系统中的自检初始化主要指各接口芯片的检测、芯片内部设定参数的初始化及系统内部寄存器的初始化。
各接口芯片的检测主要检测各芯片是否己处于准备工作的就绪状态,有无硬件故障等,如检测各位LED是否正常显示系统设置开机时的界面,检测硬件时钟DS1302是处于更换芯片后初次使用为起振状态,还是处于备用电源供电振荡保持状态,即检测系统中控制时间表的有效性,检测人体传感器输出信号是否正常体现人体存在的信息,检测环境光是如何影响光采集电路输出的信号等。若时钟芯片处于启动状态,系统控制时间表无效,则需要对其进行初始化并启动实时时钟。
23
上电 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不停地执行这些任务中的某一个任务,以
24
至能最大限度地提高CPU的利用率,加快运行速度,各任务(程序)不被耽误运行。
本系统多任务的执行是对定时中断中设置的实时标志进行检测,通过标志位的状态决定各任务的调用。任务的执行在微观上是分时顺序进行的,但在宏观上可以认为是同时执行的。因此,各任务在实时系统中的就会处于四种状态中的某
运行 等待 就绪 图 4-1-3 休眠 种状态之下,这四种状态如图4-1-3所示。
当某个任务获得CPU的执行权时,CPU执行该任务,此时任务处于运行状态。等待状态是指任务的执行需要等待某一事件发生,则由运行状态退出,进入等待状态。就绪状态是任务满足所有启动条件后所进入的状态。休眠状态是任务己执行完的状态。
4.2数据采集模块
本控制系统中的数据采集对象为环境光信号及人体存在信号,在程序设计中对这两个数据的采集放置在多任务模块中实施定时采集。 4.2.1存在传感器的优缺点
人体存在传感器有优点,也有缺点。优点便是本身不发任何类型的辐射,器件功耗很小,隐蔽性好,价格低廉。而缺点是容易受各种热源、光源干扰;由于红外穿透力差,因此人体的红外辐射容易被遮挡,不易被探头接收;易受射频辐射的干扰;环境温度和人体温度接近时,探测和灵敏度明显下降,有时还会造成短时失灵。试验检测也证明了这点,只要人体存在却有巧秒左右没有活动,人体传感器则认为没有人体存在。为避免这种现象的出现,本系统软件程序中设计为有人体存在状态后间隔2分钟或更长的时间来对人体存在参数信号的采集。
25