湖南人文科技学院毕业论文(设计)
应答信号,则判断为受控单元出现故障。
4.5 门禁控制电路
系统中门禁控制电路是系统一个动作执行部分,主要是由微处理器AT89C52根据射频读写器读得的数据对外部门磁开关、指示灯等进行操作。对门磁开关控制是由单片机对继电器的控制完成的,见图4-6。
电源线AC220V门磁电源门磁电锁线门磁线门禁读卡控制器出入门门夹电锁上位机图4-6 门磁开关控制
在门禁读卡控制器内设有CPU、RS485通信电路、电子实时时钟电路、射频ID卡读卡解码电路,同时具备卡片资料存储器与进出数据缓冲器,它通过RS485通信转换器与计算机连接,计算机上安装上位机门禁系统软件平台,可用于对读写器进行参数设置、卡片授权、门口监控、人员考勤、出入数据等管理。当有读卡出入时,自动将该卡片信息进行校验,校验合法后将该卡数据、使用者、当前时间存入进出数据缓冲器内,并发出开门指令,通过电源线传送开门指令到电源端,电源启动继电器切换电源内部供电方向,使电锁自动打开,整个过程无须通过计算机,读卡机即可自行完成。非法卡被禁止访问,出门时只要按动出门按钮,电锁自动打开。当非正常或暴力开门时,门磁输出报警信号,将报警信号传送到读卡机内,系统以弹出报警对话框提示报警。通过门禁系统软件平台对读卡器设置出入管理功能后,进出数据通过计算机处理可作为考勤数据。
24
湖南人文科技学院毕业论文(设计)
第5章 基于射频识别的门禁系统软件设计
5.1 RFID信息读取工作流程
读卡器主程序要完成初始化、与MF RC500的中断处理程序、与PC机通信中断处理程序等操作,流程图如图5-1所示。
开始系统初始化N有卡进入Y报警N卡合法Y串口中断图5-1 读卡器主程序流程图
初始化主要包括对单片机的各端口及有关寄存器设置初值、对MF RC500各寄存器设定初始值、打开射频场、看门狗复位及对串口进行初始化等。
MF RC500芯片的内部寄存器按页分配,并通过相应寻址方法获得地址。内部寄存器共分8页,每页有8个寄存器,每页的第一个寄存器称为页寄存器,用于选择该寄存器页。每个寄存器由8位组成,其位特性有四种:读/写、只读、仅写和动态。其中动态属性位可由微控制器读写,也可以在执行实际命令后自动由内部状态机改变位值。
单片机通过对MF RC500内部寄存器的读写,可以预置和读出卡片信息。寄存器在芯片复位状态为其设定初始值。例如对卡片进行读操作,则必须对MF RC500内部的BCNTR寄存器,BCNTS寄存器,STACON寄存器等进行设置,对每个状态进行判别,对最终读得的数据还必须进行校验等。以下是初始化时对寄存器的部分相应设置。
25
湖南人文科技学院毕业论文(设计)
Register--write(RegCloekQControl,oxo);//设置时钟控制初始值 Register--Write(RegcloekQControl,0x40);
Register--write(RegTxContral,Oxss);//设置发送控制初始值 Register--write(RegRxControll,0x73):
Register--.write(RegDeeode‘ontrol,oxos)://设置译码控制初始值 Register--write(RegBitphase,OxAD)://初始化位相 Register--write(RegRxThreshold,OxFF);//初始化最小阀值
Register--write(RegRxcontrol2,Ox0l);//根据运行环境的处理速率可调整该值 Register--write(RegFIFoLevel,oxos)://初始化FIFo缓存 Register--Write(RegTime‘lock,oxo7):/l定时器初始值装载 Register--write(RegTimerReload,oxoa); , restart--WratchweDog;//复位看门狗
5.2 读卡过程及程序设计介绍
读卡器软件编程实现对射频卡的一系列操作,主要有:防冲突程序、卡片的读写程序以及对卡片block(数据块)的操作等。读卡程序的设计思想是在上电初始化后,射频场一旦检测有Mifare 1卡进入射频天线的有效范围,读卡程序按顺序启动防冲突程序和认证程序,验证成功后最后操作卡片读写程序。程序流程图见图5-2所示,下面介绍其中的几个主要过程。 5.2.1 询卡
由于Mifare l卡是一种以被动方式工作的卡,进入射频区的Mifare l卡上电后进入IDLE状态,它通过吸收感应区内的磁场能量进行工作,不会主动发出信号。读卡器必须不间断地向外发出请求信号,符合条件的卡只有在接收到请求信号之后才会进行响应(称为响应卡),响应卡会向读卡器返回卡的类型号(2个字节),Mifare l卡返回的类型号为ox0004。
程序中用Mf500ComReq()函数不断向外循环发请求信号,检查感应区是否有符合条件的卡,一旦有符合条件的卡进入并被选中,程序退出循环请求过程,进入防冲突过程。
Request指令分为Request std和Request all两个指令。Request all指令的功能是在
26
湖南人文科技学院毕业论文(设计)
天线范围内检查所有符合条件的卡,无论是处于IDLE状态还是HALT状态的卡,都会响应。Request std指令只对天线范围内处于IDLE状态的卡有效,对HALT状态的卡无效。
考虑到至少有两张卡同时进入感应区的可能,设计中采用Request all指令,Mf500ComReq()函数主要代码及相关注释见附录1。
寻卡N有卡Y防冲突选择卡片验证N是写卡读卡Y写卡启动串口图5-2 读卡过程流程图
5.2.2 防冲突
所谓防冲突又叫防碰撞、防重叠,就是从多张进入感应区的卡中选出一张来进行操
27