软件主要分以下5个功能模块:初始化与自检模块、解码与读卡模块、数据校验模块、通信模块和串行存储器读写模块等。串行存储器读写模块的主要功能是,为其它模块提供访问串行存储器的读写模块子程序。因此,除串行存储器读写模块外,其余4个模块相对独立。这样,就降低了程序编制、调试的复杂性,提高了软件的可靠性和可维护性。
初始化与自检模块的功能是使系统恢复到初始状态,并对各硬件电路进行检测。检测范围包括:感应卡读写IC是否正常、实时时钟是否正常工作、串行存储器读写是否正确、红外线检测电路是否正常工作、电机驱动电路、蜂鸣器及LED显示等。利用LED的亮/灭组合指示故障电路,自检覆盖率达90%以上,大大提高了生产和维修工作的效率。
解码与读卡模块主要负责驱动感应卡读写IC,并对其返回的曼彻斯特码数据进行解码。提高解码的速度和成功率是编制该模块的难点。成功解码后,解码与读卡模块将读到的卡上数据以二进制码形式传送给数据校验模块进行处理。后者以当前时间和存放在串行存储器中的设置数据为依据进行校验,确认是否为有效卡,从而决定是否开锁,并完成写开锁记录、新卡替旧卡等操作。
通信模块负责控制与手挂式POS机的通信,利用POS机设置门锁的房间号、开始时间、结束时间、读卡密码、当前时间等重要参数,并将存放在锁内的开锁记录上传,以便传递到电脑进行统计分析。为防止非法操作,通信时要进行密码核对。
(4)低功耗技术
由于采用电池供电,在设计智能电子门锁时必须很好地解决低功耗问题。在静态时,平均电流应保持在25μA左右,这样,4节5号碱性电池的使用寿命一般可达1年以上。为此,我们采取以下措施:
①选用PIC16F73。该芯片在睡眠模式下,如果I/O口状态设置得当,电池可控制在1μA左右。
②尽可能降低晶振频率。由于PIC16F73采用了先进的RISC结构,即使在晶振频率较低的情况下,也能稳定工作,并提供足够的处理能力。
③尽可能延长睡眠时间,缩短工作时间。为此,采用了红外线探测技术。MCU在99%以上的时间内都处于功耗极低的睡眠状态,读卡IC等大多数电路也停止工作,只有红外线检测电路定时发射红外线信号。若无物体靠近,接收电路不会接收到红外线信号,MCU就继续睡眠;如有物体靠近,接收电路就会收到反射回来的红外线信号,并立即通知MCU进行读卡操作。处理好红外线检测电路的灵敏度和抗干扰能力的关系非常重要,如果灵敏度太低,就会产生读卡反应慢的现象;如果对抗干扰能够不够,各种灯光或太阳光中的红外线可能引起误触发,使系统经常处于工作状态,都会严重影响系统性能。