基于射频识别的门禁系统软件设计.doc
文本预览下载声明
基于射频识别的门禁系统
软
件
设
计
设计人:张亚飞 崔兴利 陈丽婷 王亚玲 张宏幸
基于射频识别的门禁系统软件设计
1系统软件分析与设计
1.1 软件设计方法与设计语言选择
软件设计方法有三种:(1)模块化程序设计;(2)自顶向下逐步求精程序设计;(3)结构化程序设计。模块化程序设计的中心思想是要把一个复杂的应用程序按整体功能划分为若干相对独立的程序模块,各模块可以单独设计、编程、调试和查错,然后装配起来联调,最终成为一个有实用价值的程序。自顶向下逐步求精程序设计要求从系统一级的主干程序开始,集中力量解决全局问题,然后层层细化逐步求精,最终完成一个复杂程序的设计。结构化程序设计是一种较理想的程序设计方法,指在编程过程中对程序进行适当限制,使程序上下文与执行流程保持一致。由于系统可以清晰的分为几个模块,因此本系统采用模块化程序设计方法。
单片机控制软件常采用C语言或汇编语言来实现。C语言程序具有程序库支持丰富、结构化好、查错容易、移植性高等优点而获得广泛应用。而汇编语言作为面向底层的低级语言,程序执行速度最快,程序代码最小,普遍应用于驱动程序、常驻程序、特定容量大小的程序或是要求执行速度快的控制程序中。
本射频识别系统的控制元件较多,程序代码较多,尤其对MF RC500的控制程序,有4K之多。因此,采用模块化程序设计方法,以C语言实现的控制程序,按模块分别储存在AT89C52芯片内,无需单片机扩展存储器接口,简化了系统硬件结构,减低了成本,同时又提高了系统的稳定性。
1.2 系统总体程序流程设计
系统一共有三种开门方式:按钮、PC机指令、非接触式IC卡。其中按钮开门方式需要密码。非接触式IC卡开门方式是最主要的方式,这里主要对这种方式的系统工作流程进行介绍。流程图见图1.1, 整个过程中系统都与PC机之间进行数据交换[1][2]。
2 系统软件模块化设计
设备上的软件分为上位机程序和下位机程序两部分。上位机软件工作在Windows操作系统环境下,采用Visual C++和SQL编制。主要是完成下位单片机送来的数据的处理、转发以及对整个下位机进行控制等 [44][45][46] 。
下位机软件包括射频控制模块、通讯模块、人机接口模块、看门狗模块、数据存储模块、门磁控制模块, 见图 1.2 。这些程序全部固化到AT89C52的程序存储器中。
图1.1 系统感应卡开门方式工作流程图
图1.2 系统软件控制模块结构图
2.1 射频控制模块
射频控制模块就是对MF RC500的控制模块,本部分是系统最关键的部分。
(1)MF RC500复位操作
在上电之后一定要对MF RC500进行复位操作,MF RC500是高电平复位有效的,可以由AT89C52的I/O口直接复位,要注意的是:
eq \o\ac(○,1)必须在AT89C52成功复位150ms以后,再对MF RC500进行复位操作;
eq \o\ac(○,2)复位高电平必须保持200us以上。
eq \o\ac(○,3)如果复位成功,MF RC500内部的Command寄存器的值为0,如果不为0,必须重新复位 。
(2)初始化MF RC500内部寄存器
在复位成功后,再对MF RC500的内部寄存器进行初始化,只有在正确的初始化之后,MF RC500才能正常工作。
成功进行上两步操作之后,MF RC500的引脚TXl同引脚TX2之间有2.2v 左右的压差。
(3)对非接触式IC卡进行操作,MF RC500支持Mifare1卡和Mifarelight卡,本系统采用的是Mifare 1卡。射频模块的工作流程见图4.3,对Mifare 1卡的操作包括:
eq \o\ac(○,1) 请求操作
在成功复位和初始化之后,MF RC500控制天线向工作范围内的卡进行请求,请求有Request all和Request std两种,当一张Mifare卡片处在卡片读写器的天线的工作范围之内,该卡片的ATR将启动,将卡片内部数据块0中的卡片类型(TagType)号共2个字节(Mifare 1卡的返回值为00H、08H),传送给MF RC500,建立卡片与读写器的第一步通信联络。
Request all指令是非连续性的读卡指令。只读一次。但是当某一次Request all指令读卡失败时,比如,卡片没能通过密钥认证或其他原因而出错时,Request all指令将连续地读卡,直到读卡成功才进入非连续性的读卡模式。
Request all指令适用于那些需要有人工干预的场合。
Request std指令的使用和Request all指令刚巧相反,Request std指令是连续性的读卡指令。当某一张卡片在读写器天线的有效的工作范围内,Request std指令在成功地读取这一张卡片之后,进入读写器对卡片
显示全部