基于单片机教室灯光智能控制系统
4 系统软件设计
监控程序按模块分为监控主程序和命令处理子程序。由于单片机,系统资源有限,主程序通常是一个无限循环的过程,即是一个反复调用子程序的过程。子程序主要分为中断子程序和功能子程序,它们之间以互相嵌套和调用,即中断子程序可以调用功能子程序。在应用软件的设计中,尽可能把各个功能模块写成子程序的形式,并通过主程序调用。而命令处理子程序完成各种命令所规定的具体操作,它按各种命令再分为不同的子程序模块,它一般总是把其余部分连接起来构成一个无限循环,系统所有功能都在这一循环中周而复始的有选择的执行。其监控主程序流程图如图4-1所示:
初始 系统初始化 设置定时器,允许定时中断 按键处理任务 环境光处理任务 人体传感器处理任务 定时管理系统 结束
图4-1 监控主程序流程图
–16–
基于单片机教室灯光智能控制系统
4.1 定时中断处理
4.1.1 定时中断功能
定时中断是利用单片机内部的定时器定时,时间到或计数值已满引起的中断,内部定时器的计数器可以对内部时钟或从外部引线T0和T1输入的外部脉冲进行计数。计数器的溢出信号作为中断请求信号,去置位定时器溢出标志位,向单片机的CPU申请中断。定时中断为周期性中断,每隔一定的时间会中断一次。本系统中设定的定时中断主要用来构造多任务操作系统,在系统响应中断后,无需对断点实施现场保护,可直接进行多任务时间的划分工作,使相应的操作任务进入就绪状态,即该中断可以启动有关的 任务操作。
4.1.2 定时中断流程图
该定时中断处理程序框图如图4-2所示
开始 定时中断 Y 多项任务启动时间 N 下一步 图4-2 定时中断处理程序框
4.1.3 定时中断说明
所研制的控制器以自然光强度和人体存在作为控制器的主要输入参数。可以实现自动与手动控制相兼容。在自然环境光较强光线足够时,无论人员是否存在,都不开灯;在自然环境光较弱时,有人员存在且超过一定时间,控制器自动打开电灯,直到人员离开后再延时一定时间后关灯。同时,还要按作息时间来控制,夜晚超过12点,若还有人员存在,则关闭自动控制器的运行,改用机械开关来手动控制,以解决因特殊情况下,自动控制器人性化控制运行问题。
–17–
基于单片机教室灯光智能控制系统
4.2 环境光采集模块的设计
4.2.1 环境光采集模块的功能
利用传感器将光转化为电量。采用的光敏三极管除了将光信号转化为电信号的功能外,还具有对电信号的放大功能。 4.2.2 环境光采集模块的流程图
环境光采集模块的流程图如图4-3所示:
开始 系统初始化 N 强制模式 是否自动控制模Y 光照是否过弱 N 灭灯 Y 检测人体红外线
图4-3 环境光采集模块流程图
4.2.3 环境光采集模块的程序
#include
#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 sbit GM=P1^0; //光敏 sbit hw=P1^6; //人体红外 sbit relay=P3^4; /******************
电位器往右调 光敏传感器的灵敏度增加 **********************/
//继电器控制灯
sbit yellow = P1^5; //红外指示灯
变量范围0~65535
–18–
基于单片机教室灯光智能控制系统
void delay_1ms(uint x)//延时函数 { }
uint i,j;
for(i=0;i 4.2.4 环境光采集模块的说明 初始模块主要完成I/O口、定时/计数器、中断以及液晶显示屏的初始化。键盘接收模块主要用于接收初始变量,如当前时间、作息时间等的设定。同时也接受相关数据的查询,如查询设定好的作息时间、光照阈值等,数据显示模块用于显示当前的时间、定时开关时间以及用户要查询的相关数据。 4.3 热释红外传感器的设计 人体存在传感器具有本身不发出任何类型的辐射,器件功耗很小,隐蔽性好,价格低廉的优点。而缺点是容易受各种热源、光源干扰。由于红外穿透力差,因此人体的红外辐射容易被遮挡,不易被探头接收;易受射频辐射的干扰;当环境温度和人体温度接近时,探测和灵敏度就会明显下降,甚至造成短时失灵。如果人体存在却一定时间内没有活动,人体传感器则认为没有人体存在。为避免这种现象的出现,本系统软件程序中设计为有人体存在状态后间隔1分钟或更长的时间来对人体存在参数信号的采集。 4.3.1 热释红外传感器的功能 本系统考虑到环境光足够亮时,无论是否有人体存在都不开灯;而环境光不够亮时,有人体存在才开灯,无人体存在则不开灯。本系统逻辑定义为:环境光亮时为逻辑“0”(符合光采集电路输出信号状态),暗时为“1”,人体存在为“1”,人体不存在为“0”,开灯为“1”,关灯为“0”,那么环境光与人体存在可以用以下的逻辑关系表来表示,如表4-1所示: 表4-1 环境光与人体存在逻辑关系 环境光参数 人体存在参数 教室灯状态 0 1 0 1 0 0 1 1 0 0 0 1 –19– 基于单片机教室灯光智能控制系统 表4-1数据表明可将环境光参数与人体存在参数进行与操作,又由于继电器是低电平驱动,所以要将采集处理后的信号进行非操作,才可以驱动继电器工作,即可得到教室灯的状态 4.3.2 热释红外传感器的流程图 热释红外传感器流程图如图4-4所示: 开始 系统初始化 光线是否过弱 N 继电器断开 Y 是否检测到人体 Y 继电器吸合 N 延时5S N 是否检测到人体 Y 图4-4 热释红外传感器流程图 4.3.3 人体存在传感器的程序 void work()//工作函数 { static uchar value,miao; if(GM==0)//光敏(晚上) { delay_1ms(20);//延时20ms if(GM==0)//确定是晚上 { if(hw==1)//感应到人体 { –20–