袁梦觉,王 斌
(长安大学 信息工程学院,陕西 西安 710064)
门禁系统是一种涉及到电子、机械、计算机、通信等相关技术的新型现代化的出入口安全管理系统,随着计算机技术的快速发展,它的应用更加广泛,并逐渐朝着识别更准确、更智能的方向发展。单片机发展到现在,其性能不断提高,功能不断完善,而且具有价格低、功耗低、集成度高、速度快、体积小等特点,因而被广泛应用于工业控制、智能仪器仪表、数据采集处理等领域[1]。校园一卡通作为在校师生必备的且具有唯一标识的识别卡,具有多种综合功能,可用于校园消费、身份认证等方面。因此,将校园一卡通和单片机结合在一起应用于门禁系统中,使室外人员只需通过刷卡进行身份识别和验证即可实现控制电子锁开门与否。该系统利用校园一卡通作为有效的身份识别媒介和载体,在避免重复制作识别卡的同时,也进一步实现了校园一卡通的多功能性,更好地发挥其身份认证的功能。
门禁系统以安全为第一位原则,这就要求门禁系统不仅能够稳定运行,完成实验室人员正常开门的功能,而且还能够防护非实验室人员的各种恶意操作,这些恶意操作主要包括胡乱按键、试探密码和拆卸主控板等。针对上述情况,首先将门禁系统的主控板安装在室内,室外人员无法知道主控板的位置,再由单片机软件程序来实现其他防护功能。
门禁控制系统以校园一卡通为身份识别媒介,其硬件系统以STC89C52RC单片机为核心,通过Wiegand 26数据接收电路配合单片机的外部中断,接收读卡器发送的校园一卡通卡号信息数据,进行判别用户身份,控制是否开门。此外,为了实现开门方式的多样性,应加入密码开门方式,以备应急需要。系统的软件设计除了能实现正常开门的功能外,还应增加一些对不正常操作的处理。因此,整个系统应具有以下功能:
1)用户通过刷卡或输入密码开门;
2)防止非真实用户胡乱按键;
3)防止非真实用户试探密码;
4)使用看门狗定时器防止程序异常。
STC89C52RC单片机是宏晶科技有限公司推出的一款可靠性高、安全性高、价格低、功耗低的单片机。该单片机内部有8 k的Flash,512 B的RAM,3个定时计数器,以及看门狗定时器。外部除了并行I/O口外,还有一个UART串口,2个外部中断引脚。STC89C52RC单片机支持ISP在线下载程序,其内部的Flash可反复擦写10万次以上。
STC89C52RC单片机的丰富资源完全满足门禁系统的需求,其ISP在线下载程序的方法也极大的方便了开发人员,同时,它的高可靠性也为门禁系统的实现提供了强有力的保障。
读卡器与单片机之间通信采用Wiegand 26协议[2],Wiegand协议是由摩托罗拉公司制定的一种国际上统一标准的协议,其中26-Bit是一个广泛使用的工业标准,几乎所有的门禁控制系统都接受Wiegand 26协议。
Wiegand数据输出由两根线组成,分别是DATA0和DATA1,两根线分别输出数据0和数据1,输出数据0时,DATA0线上出现低电平,输出数据1时,DATA1线上出现低电平。
Wiegand信号波形图如图1所示。
图1 Wiegand信号波形图Fig.1 Wiegand signal waveform figure
图1中,当DATA1数据位变为低电平时,代表一位数据1,当DATA0数据位变为低电平时,代表一位数据0,低电平维持时间为 20~200 μs,两个脉冲的时间间隔在 200 μs~200 ms之间。
Wiegand 26协议输出格式为:
E XXXX XXXX XXXX XXXX XXXX XXXX O 二进制
第1位为2~13位的偶校验位;
第2~9位对应电子卡HID的低8位;
第10~25位对应电子卡的PID号码;
第26位为14~25位的奇校验位;
以上数据从左到右顺序发送,高位在前,低位在后。
门禁系统的硬件组成框图如图2所示,主要包括STC89C52RC单片机模块、Wiegand 26数据接收模块和电子锁驱动模块3部分。
图2 门禁系统的硬件组成框图Fig.2 Hardware diagram of entrance guard system
STC89C52RC单片机[3]是整个门禁系统的核心,其最小系统[4]原理如图3所示,包括复位电路、振荡电路,以及门禁系统与读卡器及电子锁的接口。
其中P0.0和P0.1作为Wiegand数据输入接口,P0.2作为控制读卡器LED的接口,P0.3作为控制读卡器蜂鸣器的接口,P0.4作为使能读卡器接口,P0.5作为电子锁控制接口,P3.2作为外部中断使用,用于检测Wiegand 26数据的到来与否。
图3 单片机最小系统原理图Fig.3 Schematic diagram of MCU small system
Wiegand 26数据接收电路是为了使单片机更准确地接收Wiegand 26数据而设计的,因为如果采用查询方式接收Wiegand 26数据,当数据到来时若MCU正在处理其他任务,将可能会造成Wiegand 26数据丢失。因此,设计接收数据在单片机中断程序中执行,大大增加了数据接收的可靠性。其数据接收电路原理如图4所示,Wiegand数据先经过74LS375锁存器,锁存器的输出端分别接单片机的P0.0和P0.1端口,同时锁存器的输出经过74LS04与门连接到单片机的一个外部中断引脚上。这样,当有一位数据进入时,就会触发单片机的外部中断,在单片机的外部中断服务程序中判断到来的数据是1还是0,并将数据存储到相应的位数上,直至26位数据存储完毕。
图4 Wiegand 26数据接收电路原理图Fig.4 Schematic diagram of wiegand 26 data receiving circuit
电子锁驱动电路原理图如图5所示,继电器采用一个NPN型三极管来驱动,当三极管的基极处于高电平时,三极管工作在放大状态,驱动继电器吸合,继电器吸合导致电子锁的一端接到了12 V的电压上,而另一端接地,实现了控制电子锁开门。
图5 电子锁驱动电路原理图Fig.5 Schematic diagrame of lectronic lock driving
门禁系统的软件设计主要包括主程序设计、子程序设计和中断服务程序设计。
1)主程序设计
主程序[5]是整个门禁系统的总控制程序,主程序流程图如图6所示,其中包括外部中断、定时器以及其他外设的初始化,初始化后等待读卡器数据输入,由于刷卡数据位为26位,密码数据位为24位,因此,在主程序中要区分刷卡和输入密码两种开门方式。如果判断为刷卡,则刷卡成功后判别卡号是否为室内人员的卡,控制是否开门。如果判断为输入密码,则等待用户输入密码,用户输入密码后判别密码是否正确,控制是否开门。用户刷卡失败、卡号错误、密码错误或者开门之后均会引起系统复位,重新等待数据输入。
图6 主程序流程框图Fig.6 Flow diagram of main program
2)子程序设计
子程序包括初始化子程序,校验用户卡号或密码子程序,电子锁控制子程序,复位子程序等。
初始化子程序负责初始化定时器、外部中断及电子锁控制端,是保证系统正常运行的基础。
校验用户卡号或密码子程序是通过对读卡器发送到单片机上的Wiegand 26数据进行解析得到相应的卡号或密码,并与单片机中存储的室内人员卡号或密码比对,若有相同的卡号或密码则返回TRUE,否则返回FLASE。
电子锁控制子程序负责电子锁的开启,通过控制电子锁驱动电路中三极管的基极控制端,给出相应的电平来开启电子锁。
复位子程序就是当用户刷卡失败、胡乱按键、卡号错误或密码错误之后,复位相应的数组、标志位等。
3)中断程序设计
当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件,处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断[6]。
采用中断方式接收Wiegand数据,是为了保证接收到的Wiegand数据的完整性,使其不会因CPU正在处理其他任务而导致Wiegand数据的某一位或几位丢失,其中DATA0或DATA1每来一次低电平引发一次单片机中断,在中断程序中查询到来的数据是0还是1,然后存储到相应的位数上,每26次中断代表一次数据读取完成。
以下是中断程序的核心代码,因代码较长,略去中间部分,中断程序内设置标志位变量flag,初始值为1,每执行一次中断flag递增1。例如,第一次执行中断时程序跳转到case 1处,识别偶校验位,并在存入偶校验位后,flag递增1,当第二次执行中断时,程序跳转到case 2处,判断Wiegand 26数据当前位是0还是1,如果为0则将Wiegand数组的最高位和0做与操作,如果为1则将Wiegand数组的最高位和1做或操作,flag继续递增1,以此类推,直至flag递增到26,完成一次Wiegand 26数据的读取,其中中间24位为相应用户的识别信息。
文中提出了一种基于校园一卡通和STC89C52RC单片机的门禁系统设计方法,该方法借助于校园一卡通作为身份认证媒介,以STC89C52RC单片机为核心进行数据处理,最终实现了控制电子锁的开启。另外,还详细阐述了该系统的实现方法,包括硬件系统、软件系统以及系统控制思想的设计。按照本文提出的方案设计实现的样品,经安装在实验室大门上进行实际测试,测试结果表明,该系统运行稳定,未出现门禁系统运行但无法开门的现象,在方便实验室人员进出的同时也提高了实验室的安全性,有较高的应用价值。
[1]马家辰.MCS-51单片机原理及接口技术[M].哈尔滨:哈尔滨工业大学出版社,2001.
[2]柴卉,万振凯.韦根协议在门禁系统中的应用[J].仪器仪表用户,2007(5):111-112.
CHAI Hui,WAN Zhen-kai.Application of wiegand protocol for entrance guard system[J].Electronic Instrumentation Customer,2007(5):111-112.
[3]宏晶科技.STC89C52RC Datasheet[EB/OL].http://www.stcmcu.com/datasheet/stc/STC -AD -PDF/STC89C51RC -RD +_GUIDE-CHINESE.pdf.
[4]张毅刚.单片机原理与应用设计[M].北京:电子工业出版社,2008.
[5]孙振伟,刘云洁.基于AVR单片机的电冰箱控制系统的设计[J].电子设计工程,2011(10):157-159.
SUN Zhen-wei,LIU Yun-jie.Design of refrigerator control system based on AVR microcomputer[J].Electronic Design Engineering,2011(10):157-159.
[6]林益平,陈统坚.80C196MC/MD单片机多个中断程序的同步问题[J].微处理机,2000(3):37-39.
LIN Yi-ping,CHEN Tong-jian.The synchro-control between multiple interrupt programs of 80C196MC/MD [J].Microprocessors,2000(3):37-39.