表1 逻辑关系表
环境光信号 时钟信号 人体信号 教室灯状态
强 0 休息时间 0 无人 0 关 0
强 0 休息时间 0 有人 1 关 0
强 0 规定上课时间 1 无人 0 关 0
强 0 规定上课时间 1 有人 1 关 0
弱 1 休息时间 0 无人 0 关 0
弱 1 休息时间 0 有人 1 关 0
弱 1 规定上课时间 1 无人 0 关 0
弱 1 规定上课时间 1 有人 1 开 1
4.3 时钟模块
初始化系统启动自检时,首先会判断时钟芯片DS1302的运行状态,当检测到DS1302处于启动状态时才对其进行初始化启动的始终。实时时钟芯片DS1302的初始化及其读写程序设计的关键是要遵循其时序要求[12]。
4.3.1 时钟程序设计
对DS1302进行读写的程序流程图,如图10所示:
图10 DS1302进行读写的程序流程图
在对DS1302进行操作时,读出的数据为BCD码,同样在写操作时,写入的数据也必须为BCD码,这就需要在数据写入之前、读出之后进行必要的数据进制之间的转换,以便与系统其他数据在比较时相对应。本系统中,设定的时间参数一般都为二进制或十751进制数,故程序中要进行二进制与BCD码间的转换。
4.4 软件抗干扰的设计
(1)数据采集误差的软件对策
①采用软件滤波算法,可以滤掉大部分由输入信号干扰而引起的输出控制的错误。最常用的方法有:中值法、比较舍取法、一阶递推滤波法。具体要选取哪种方法,必须依据信号的变化规律来进行选择。至于开关量要采用多次采集的方法来去除开关抖动。
②关键的数据可采用软件冗余技术,就是给数据添加一定冗余位,以达到数据检错和纠错的目的。
(2)程序运行失控的软件对策
①指令冗余。对于AT89S51单片机,大部分的指令是单字节,当出错程序落在其上时,错误的程序可以自动进入正轨;当落在多字节指令上时,程序将会继续出错,所以在对程序流向起着决定性作用的指令前插入几条NOP指令,就会使被弹飞指令进入正轨。 51单片机的教室智能照明控制系统设计+仿真图+源代码(7):http://www.751com.cn/zidonghua/lunwen_1719.html