燕山大学本科生毕业设计(论文)
组密码与Mifare卡片上的密码进行比较实现,如果它们匹配,说明所选Mifare卡合法,则卡的验证成功,允许对卡进行读、写操作。验证卡片的过程是通过Authentication( )函数实现的。
4.3.5 读取卡号
如果完成了前面几个步骤,说明所选卡是本系统的卡,就可以对Mifare卡正常进行读、写了。读卡函数MIF_READ( )从已通过密码验证的扇区中读取一个数据块,共16个字节,其中前面几个字节即为卡号(1个字节表示2位卡号,本系统卡号长度为10,所以需要前面5个字节)。
4.3.6 卡挂起
当对卡中的数据处理完后,程序应使卡处于挂起状态,此时即使卡在感应区域,读卡器也不会再对该卡进行任何操作[17]。
4.4 其他程序设计流程图
4.4.1 LCD1602显示程序设计
显示程序的主要功能是对当前的门禁控制状态显示及执行STC89C52RC发出的显示指令,LCD1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。它可以给用户清楚地显示门禁系统状态,易于操作,起到了人机交互的作用。
图4-4 LCD1602内部显示地址
由于液晶显示模块是一个慢显示器件,在系统每发出一个控制指令时,系统首先判断是否忙碌,如果不忙碌则执行词条命令,如果是忙碌状态则取
26
第4章 门禁系统的软件设计
消此条控指令。图4-4是1602的内部显示地址:
LCD1602液晶显示模块显示程序流程图: 开始 液晶初始化 设置第一行数据显示地址 显示第一行数据 延时 设置第二行数据显示地址 显示第二行数据 延时、清屏 结束
图4-5 LCD1602程序设计流程图
4.4.2 按键控制程序设计
由于本次门禁系统设计要对RFID卡进行注册,识别,并且有期限管理等多种操作,所以要通过按键来实现多种模式的切换,图4-6是用按键控制门禁系统的程序流程图:
27
燕山大学本科生毕业设计(论文)
N 是否按K2? Y N 是否按K1? Y Y 进入清除模式 是否按K1? N 是否按K1? Y 进入注册模式 N 等待刷卡 开始 清除存储器 图4-6 按键模块程序流程图
28
第4章 门禁系统的软件设计
4.4.3 定时器模块程序设计
该门禁系统不但要求能够清除卡号,而且要有期限管理来控制RFID卡的合法性,也就是说要使已经合法的RFID卡到一定时间之后会无法刷卡开门,因此我用定时器DS1302来完成此项功能。给定时器设定一个初始时间,门禁系统开始运行时定时器时间开始增加,程序中设置一段时间,当到达设定时间时单片机就会控制存储器EEPROM使存储内容清除,从而使RFID卡无法开门,达到期限管理的目的。
图4-7 定时器模块程序流程图
结束 等待刷卡 定时器是否到达指定时间? Y 清除存储器数据 N 等待刷卡 定时器开始计时 开始 29
燕山大学本科生毕业设计(论文)
4.4.4 存储程序设计
存储器EEPROM采用AT24C02,主要的用途是把在注册模式下所刷的RFID卡的卡号保存起来,使RFID卡合法化。已经保存的卡号则为合法卡,可以开门。保存卡号的过程是在注册模式下完成的,当LCD1602显示“Register Mode”此时刷卡存储器便会保存卡号完成注册,其程序流程图如下图所示:
开始 初始化系统 等待刷卡 只显示卡号不开门 N 刷卡 是否在注册模式? Y 刷卡 保存卡号不开门 再次刷卡开门 结束 图4-8 开门模块程序流程图 30