资源描述
.wd.综合课程设计说明书 题目:基于RFID的门禁系统设计 学生姓名: 李隆均 学 号: 201306100216 院 系: 电气与信息工程学院 专 业:电子信息科学与技术 指导教师: 李秦君 2016 年 6月 16 日目录一 前言 1二 案例描述 3三 需求分析 4 3.1实验箱模块的选择 4 3.2系统语言的选择 5 3.3数据交换方式 6 3.4应用程序的构造 7 3.4.1显示子程序 7 3.4.2密码子程序 8 3.5存储系统的设计及分析 9 3.6系统模块的总体设计 11 3.6.1系统硬件设计 12 3.6.2系统软件设计 12四 系统的整体描述和实现 13 4.1射频识别的简单描述 13 4.2软件构造的实现 15 4.3系统功能的具体实现 17 4.3.1系统软件调试17 4.3.2系统整体调试 18五 课程设计总结 22六 参考文献 23七 致 谢 24八 附 录 25一 前言射频识别Radio Frequency Identification,RFID技术是从20世纪80年代开场走向成熟的一项自动识别技术,是当前最受人们关注的热点之一,该项技术既传统也充满新意和活力。射频识别是无线电识别的简称,即通过无线电波进展识别。它源于无线电通信技术,综合了现代计算机智能控制、智能识别、计算机网络等高新技术,顺应了计算机集成制造系统,电子商务等热点应用的开展需要。射频识别应用电磁场,以非接触、无视觉、高可靠的方式传递特定识别信息,由于大规模集成电路技术的日益成熟,使得射频识别系统的体积大大减少,从而进入了实用化阶段。 射频识别技术具有工作距离大、信息收集处理快捷及较好的环境适应性等优点, 极大地加速了有关信息的采集和处理,在近年来获得了极为迅速的开展。基于RFID的考勤系统设计是将射频识别技术应用到家庭安防系统中的一次成功尝试。这一系统抑制了家庭生活中居住的安全性不能得到保证的弱点,能够有效地提高家庭安防系统的能力,为居家生活提供更好的,更安全的保障。随着通讯计算机技术、元器件制造技术的开展和应用,由此产生的自动识别Automatic Identification技术在许多领域得到普及。出入口门禁管理是现代化安防系统的重要组成局部,出入口只允许有进出权限者通行。门禁管理系统就是基于这些自动识别技术识别进出人员或车辆的身份权限,通过与系统中信息比照,作出预设反响。常见的自动识别技术有条形码、生物特征识别(指纹、面部特征)、IC卡和射频卡。条形码技术介质存储容量小,不能改写,易污损。生物特征识别相比照拟复杂,识别效率、误识率较高。IC卡识别和射频识别是目前较成熟且应用广泛的两种技术,作为数据存储器系统,它们内有CPU,可防更改,识别时间短。IC卡识别系统需要接触识别,存在触点对腐蚀和污染缺乏抵抗能力的缺点。射频识别系统通过非接触式工作模式, 基本原理是利用射频信号和空间耦合实现物体的自动识别。射频识别系统支持密码认证和效验,识别工作无须人工干预,它既支持只读工作模式又支持读写工作模式;射频卡可工作在恶劣环境下,识别速度快数据容量大,可以到达数10K,标签数据可以修改,写入时间短,射频卡可以设置密码保护具有更好的安全性。现阶段大多数门禁系统都是基于射频识别技术,同时RFID技术还在飞速的开展,应用越来越广泛。二 案例描述门禁系统,又称人口控制系统.在何时允许某些人进出,拒绝某些人进出,什么情况下要发生报警,记录人员的出入状况,是门禁系统最 基本的功能.智能的RFID门禁系统是对楼房中的重要通道进展管理。在门口,电梯,等人员来往频繁或重要的地方安装控制装置,例如:读卡器,键盘等,人员想要进入必须有卡才能通过,大大增强的安全性。基于RFID技术的门禁系统作为智能门禁系统的“骨干,已经成为了一项先进的高科技技术防范和管理手段,在一些经济兴旺的国家已经广泛的应用于科研,工业,博物馆,酒店,商场,医疗监护,银行,监狱等,已成为安防技术重点研究和开发的对象。1994年RFID技术进入中国,引发了中国RFID技术的应用革命。在我国基于RFID的智能门禁系统的使用仍然处于开展状态,因此对射频识别技术在门禁系统方面的应用理论及实际可行性及实用性研究的重中之重。近几年,关于识别系统的通讯模式,指纹等生物识别设备的集成管理及DVR系统的集成成为现代门禁系统开展的亮点。另外,作为蓬勃开展的生物识别技术,随着其区分技术的的不断成熟,以及人们对这类产品的进一步了解,假设价格因素能保持人们可以承受的范围内,那么,该技术的应用前景将是十分广泛的。射频识别(RFID,即Radio Frequency Identification)技术是自动识别技术在无线电技术方面的具体应用与开展,其 基本原理是利用射频方式进展非接触双向通信,以到达识别与数据交换的目的1。具有高精度、适应环境能力强、抗干扰强、操作快捷等优点,能够实现无线自动识别,主动监控的功能。RFID技术作为一项先进的自动识别和数据采集技术,在实际应用中取得了显著的成效,已经成功应用到生产制造、物流管理、公共安全等各个领域。随着RFID技术的日益成熟和普及,各国政府都意识到RFID技术的研究价值和蕴涵的巨大商机,制定相关政策加大财力、物力投资,积极推动本国RFID技术开展。RFID技术的运用是非接触式IC卡目前的潮流,更快的响应速度和更高的频率是未来的趋势。三 需求分析3.1实验箱模块的选择本次实验选择的是实验箱中的高频模块,即HF高频下识别卡不需要绕制线圈,可以通过印刷的方式制作天线。识别卡一般是负载调制的方式工作,也就是通过识别卡的负载电阻的接通和断开促使读写器天线上的电压发生变化,实现远距离识别卡对天线电压进展振幅调制。就频率而言,高频RFID具有以下特性:工作频率为13.56MHz,该频率的波长大概为22米。除了金属材料外,该频率的波长可以穿过大多数的材料,但是往往会降低读取距离。识别卡感应器需要离开金属一段距离。该频段在全球都得到认可并没有特殊的限制。该系统具有防冲撞特性,可以同时读取多个识别卡。可以把某些数据信息写入识别卡中。数据传输速率比低频要快且价格不是很贵。高频RFID主要应用有:航空包裹的管理和应用瓦斯钢瓶的管理应用预收费系统酒店门锁的管理和应用大型会议人员通道系统固定资产的管理系统医药物流系统的管理和应用智能货架的管理系统运行简要说明: :上电后,430先通过并口访问7970芯片,在没有读到卡时,程序运行在串口读写模式,并每隔0.5s向串口发送一个“D,直到有写操作为止。:当有卡读写时,针对相应的卡,程序进入不同的协议中,并且点亮相应的LED灯。(2)API 调用说明 :上电后,配置完内部存放器,程序进入串口读写程序,可以进展人机交互。:当读到不同协议的卡时,程序退出串口读写程序,进入相应的协议子程序中目前支持14443A协议和15693协议。读完卡后,退出相应的协议子程序,进入串口读写程序。(3)ISO 15693 第三局部 通过读卡器获取指令流,读卡器采用TI trf7970读卡器芯片,开发资料参考协议ISO 15693,trf7970 datasheet,参考trf7960EVM.pdf实现ISO 15693第三局部指令局部,防碰撞实验。高频读写模块中,利用高频卡可以进展识别操作,因此高频读写有以下特性:1.支持近场通讯 (NFC) 标准 NFCIP-1 (ISO/IEC 18092) 和 NFCIP-2 (ISO/IEC 21481) 2.用于 ISO15693、ISO18000-3、ISO14443A/B、和 FeliCa 的完全集成的协议处理 3.集成编码器、解码器和用于 NFC 启动程序的数据成帧, 对所有 3 个比特率 (106 kbps, 212 kbps, 424 kbps)的有源和无源目标操作及卡仿真。 4.用于 NFC 无源发射机应答器仿真操作的具有可编程唤醒电平的 RF 场侦测器 。5.用于 NFC 物理冲突防止的 RF 场检测器。 6.用于 ISO14443A 防冲突 (不完整字节) 操作 (发射机应答器仿真或者 NFC 无源目标)的集成状态机。 7.输入电压范围:2.7 VDC 至 5.5 VDC 。8.可编程输出功率: +20 dBm (100 mW), +23 dBm (200 mW)。 9.可编程 I/O 电压电平从 1.8 VDC 至 5.5 VDC。3.2开发语言的选择软件构造框图:系统软件主要包括信号处理和系统管理两个局部,信号处理模块采用C语言编程,系统管理局部软件采用Microsoft Visual C+编程,VC+是Windos平台上的C+编程环境,学习VC要了解很多Windos平台的特性并且掌握MFC、ATL、COM等的知识,C+的具有就是界面简单,占用资源少,操作方便的特点。其中建设了一个中间数据库,编程简单,开发时间短,能够实现双卡识别功能,控制道阀自动开启和关闭,同时具有报警功能。其软件流程图如以以下图1所示。基于RFID的门禁系统数据采集模块存储模块显示模块门控模块报警模块键盘模块图一 软件构造框图3.3 数据交换的方式本次设计采用数据库存储用户信息及数据,执行程序之前,首先要设置串口波特率等相关串口参数,然后上位机通过串口向下位机发送命令,并进入串口中断。下位机根据接收SBUF的值做相应的处理。程序流程图如图2所示开场上位机发送读卡命令YYNN有感应卡验证感应卡权限权限满足开门,显示正确信息报警,显示错误信息延时后,自动关门完毕 图2 数据采集子程序流程图3.4 应用程序的构造3.4.1 显示子程序显示子程序的主要功能是对当前的门控状态进展显示,显示函数首先判断是写命令操作还是写数据操作,假设是写命令操作,那么根据命令进展相应的操作,如清屏、设置显示模式等;假设是写数据操作,那么在显示器上显示相应数据。程序流程图如图3所示。显示程序液晶初始化设置第一行显示数据地址显示第一行数据设置第二行显示数据地址显示第二行数据延时后,清屏完毕延时 图3 显示子程序流程图3.4.2密码子程序 密码子程序流程图如图4所示,当程序运行时,会一直判断是否有按键被按下,当有按键被按下时,系统会确定键值,关将键值存入到密码数组里,然后将输入的密码与本身的密码做比照,假设一样,那么执行开门和显示正确信息的操作;假设不一样,那么执行报警和显示错误信息的操作。密码子程序是整个门禁系统的关键局部,因为在通过密码程序的实施之后,才可以进展数据的访问与访问者的信息匹配,因此,密码系统就好比整个门禁系统的大门,它是连接访问者与数据的关键一环。其中,密码程序的代码如下:P1=0x0f;if(P1!=0x0f) compare(P1);for(n=0;n10;n+) if(inputn!=passwordn) break; if(n=10) if(m10) continue; WriteLcdCom(0x01);/清屏 WriteLcdCom(0x80); /第一行数据指针地址 for(s=0;s16;s+) WriteLcdDat(str2s); LEDG=0; BUZ=0; delay_10ms(20); LEDG=1; BUZ=1; WriteLcdCom(0x01); input0= ; else if(n10)&(P1=0xbd) WriteLcdCom(0x01);/清屏 WriteLcdCom(0x80); /第一行数据指针地址 for(s=0;s16;s+) WriteLcdDat(str4s); LEDR=0; for(s=0;s5;s+) BUZ=0; delay_10ms(20); BUZ=1; delay_10ms(20); LEDR=1; 密码子系统的流程图如下:开场有键按下去除按键抖动的影响确定键值存入密码数组密码正确开门,显示正确信息报警,显示错误信息延时后,自动关门完毕YYN 图4 密码子程序流程图3.5存储系统的设计及分析本设计中数据的存储芯片选用的是AT24C04,该芯片是串行的E2PROM,支持I2C总线数据传送协议。程序流程图如图5所示。存储程序AT24C04初始化向AT24C04 写 入 要 存 储 的 数 据延时N 完毕图5 存储系统程序流程图当我们完成对存储过程的分析之后,我们需要对存储过程加以实施,此时,就需要编写存储程序的代码,存储程序核心的代码如下:void eeprom()write_byte(0,0x1e);write_byte(1,0xda); write_byte(2,0x62); write_byte(3,0xb6);write_byte(4,0x25); write_byte(5,0xee); write_byte(6,0xde);write_byte(7,0xb6); write_byte(8,0x05); write_byte(9,0xc8);write_byte(10,0x43);write_byte(11,0xb8);write_byte(12,0x3a); write_byte(13,0x04);write_byte(14,0x5d);write_byte(15,0xb6);bit shout(uchar write_data)/ 从MCU移出数据到AT89C51uchar i; bit ack_bit;for(i = 0; i 8; i+) / 循环移入8个位SDA1 = (bit)(write_data & 0x80); _nop_(); SCL1 = 1; delayNOP(); SCL1 = 0; write_data = 1; SDA1 = 1; / 读取应答delayNOP();SCL1 = 1;delayNOP(); ack_bit = SDA1; SCL1 = 0; return ack_bit; / 返回AT24C04应答位void write_byte(uchar addr, uchar write_data) start(); shout(OP_WRITE); shout(addr); shout(write_data); stop(); delay_10ms(1); 3.6 系统模块的总体设计依据上述功能的分析,系统中模块分别为:数据采集模块、数据处理模块、数据存储模块、显示模块、串口发送/接收模块、密码输入模块、报警机制模块。系统功能构造图如图6所示,各功能模块具体功能如下:1.数据采集模块:当RFID卡进入到读卡器读卡范围时,读卡器读取卡序列号的过程。2.数据处理模块:针对于采集到的数据处理,从而对得到的数据进展判断其有效性。3.数据存储模块:用来存储数据。4.显示模块:用来接收单片机发送的数据,并对数据进展操作从而得到要显示的信息。5.串口发送/接收模块:主要用来通过串口发送和接收数据。6.密码输入模块:针对于用按键输入密码,根据密码的正确与否来进展相应的操作。7.报警机制模块:当出现非法卡或输入的密码不正确时产生报警。综合数据处理模块读卡器处理模块密码处理模块读卡模块存储模块门控模块报警模块显示模块存储模块门控模块报警模块 显示模块 图6 系统功能构造图3.6.1系统硬件设计系统硬件设计主要由AT89C51主控芯片和ISO/IEC15693读卡器模块构成。硬件电路由八局部构成:微控制器AT89C51、读卡器模块ISO/IEC15693、LCD1602显示、串口通信MAX232、按键电路、AT24C04存储、报警电路、门控电路。微控制器AT89C51负责读卡器模块ISO/IEC15693的初始化,上位机通过串口向ISO/IEC15693发送命令,ISO/IEC15693根据上位机发送的命令做相应的操作,然后将得到的信息传送给微控制器AT89C51,然后微控制器控制其它模块完成显示、报警、判断和门控操作。上位机与下位机之间的连接主要是通过串口进展通信,采用MAX232芯片并将芯片的输入和输出管脚连接到AT89C51的I/O口,在MAX232的引脚上连接10F的电解电容用来滤波。读卡器模块ISO/IEC15693与微控制器AT89C51之间的通信是通过I2C总线进展的,由于AT89C51单片机本身并没有I2C总线,所以将ISO/IEC15693模块的串行时钟线与数据线接到AT89C51的两个I/O口,然后通过模拟I2C时序来完成AT89C51与ISO/IEC15693之间的通信,为了防止出现三态,在ISO/IEC15693的串行时钟线和数据线上分别上拉10k电阻。而ISO/IEC15693读卡器与RFID卡之间的数据通信主要是通过天线进展的。AT24C04与AT89C51之间的通信也是通过模拟I2C时序进展,同时为了防止出现三态,在时钟线与数据线上分别连接5.1 k的上拉电阻。LCD1602与AT89C52之间的通信是通过将LCD1602的3条控制线和8条数据线与AT89C51的I/O口相连。对于按键电路的设计是将3*4按键直接连接到AT89C51的7位I/O口,采用线反转法通过查询方式进展工作。3.6.2 系统软件设计软件主要实现数据的采集,数据的分析,模块之间的通信,以及相应的数据处理。1.数据采集:读卡器ISO/IEC15693通过天线读取RFID卡的数据,然后将数据传送出去。2.数据分析:AT89C51接收到数据后,将数据传送给AT24C04或上位机,AT24C04或上位机对数据进展分析,从而判断数据的有效性。3.模块之间的通信:AT89C51与ISO/IEC15693/AT24C04之间的通信都是通过模拟I2C总线进展的, I2C总线的高效性、高实用性、高可靠性数据传输增强了系统的实时性和可靠性。4.数据处理:针对数据的采集和分析的结果做出相应的处理,例如显示、报警、门控等。四 系统的整体描述和实现4.1射频识别的简单描述在本设计中,采用的是射频识别技术。下面对射频识别技术做一下简要介绍:1.射频识别技术原理通常情况下,RFID的应用系统主要由读写器和RFID卡两局部组成的,见以以下图7。其中,读写器一般作为计算机终端,用来实现对RFID卡的数据读写和存储,它是由控制单元、高频通讯模块和天线组成。而RFID卡那么是一种无源的应答器,主要是由一块集成电路(IC)芯片及其外接天线组成,其中RFID卡芯片通常集成有射频前端、逻辑控制、存储器等电路,有的甚至将天线一起集成在同一芯片上。RFID应用系统的 基本工作原理是RFID卡进入读写器的射频场后,由其天线获得的感应电流经升压电路作为芯片的电源,同时将带信息的感应电流通过射频前端电路检得数字信号送入逻辑控制电路进展信息处理,所需回复的信息那么从存储器中获取经由逻辑控制电路送回射频前端电路,最后通过天线发回给读写器。可见,RFID卡与读写器实现数据通讯过程中起关键的作用是天线。一方面,无源的RFID卡芯片要启动电路工作需要通过天线在读写器天线产生的电磁场中获得足够的能量;另一方面,天线决定了RFID卡与读写器之间的通讯信道和通讯方式。 图7 射频识别系统原理图2.射频识别系统典型构造射频识别系统的典型构造见图8,主要是由两部份组成:读写器和射频卡。读写器同射频卡之间通过无线方式通讯,因此它们都有无线收发模块及天线或感应线圈。射频卡中有存储器,内存容量为几个比特到几十千比特。可以存储永久性数据和非永久性数据。永久性数据可以是射频卡序列号,它是用来作为射频卡的唯一身份标识,不能更改;非永久性数据写在E2PROM等可重写的存储器内,用以存储用户数据。射频卡可以根据读写器发出的指令对这些数据进展相应的实时读写操作。控制模块完成接收、译码及执行读写器的命令,控制读写数据,负责数据安全等功能。射频卡分无源卡和有源卡两种,有源卡内置天线和电池,而无源卡只有内置天线没有电池,其能量由读写器提供,由于无源卡无需电池因此其尺寸较小且使用寿命长,应用越来越广泛。读写器内的控制模块往往具有很强的处理功能,除了完成控制射频卡工作的任务,还要实现相互认证、数据加解密、数据纠错、出错报警及与计算机通信等功能。计算机的功能是向读写器发送指令,并与读写器之间进展数据交换。图8 RFID系统典型构造图8为RFID系统的工作过程,这是一个无源系统,即射频卡内不含电池,射频卡工作的能量是由射频读写模块发出的射频脉冲提供。(1)射频读写模块在一个区域内发射能量形成电磁场,区域大小取决于发射功率、工作频率和天线尺寸。(2)射频卡进入这个区域时,接收到射频读写模块的射频脉冲,经过桥式整流后给电容充电。电容电压经过稳压后作为工作电压。(3)数据解调局部从接收到的射频脉冲中解调出命令和数据并送到逻辑控制局部。逻辑控制局部接收指令完成存储、发送数据或其它操作。(4)如果需要发送数据,那么将数据调制然后从收发模块发送出去。(5)读写模块接收到返回的数据后,解码并进展错误校验来决定数据的有效性,然后进展处理,必要时可以通过RS232或RS422或RS485或RJ45或无线接口将数据传送到计算机。读写器发送的射频信号除提供能量外,通常还提供时钟信号,使数据同步,从而简化了系统的设计。有源系统的工作原理与此大致一样,不同处只是卡的工作电源由电池提供的。4.2 软件构造的实现4.2.1 系统的整体软件构造系统软件设计是整个系统设计的重要局部,在硬件电路的根基上,加上软件编程才可以实现系统预期的功能。在本系统中,软件的设计主要包括:数据采集模块、存储模块、显示模块、门控模块、报警模块、键盘模块和上位机软件的设计几个方面。本系统的软件构造框图如图9所示。1.数据采集模块:读卡器ISO/IEC15693通过天线读取RFID卡的数据,然后将数据传送出去。2.存储模块:AT89C51接收到数据后,将数据传送给AT24C04进展存储。3.显示模块:AT89C51接收到数据后,将数据与AT24C04里存储的数据进展比照,假设两者完全一样,那么液晶显示正确的信息;假设不一样,那么液晶显示错误的信息。4.门控模块:AT89C51接收到数据后,将数据与AT24C04里存储的数据进展比照,假设两者完全一样,那么进展开门操作;假设不一样,那么不开门。5.报警模块:AT89C51接收到数据后,将数据与AT24C04里存储的数据进展比照,假设不一样那么报警。6.键盘模块:通过键盘输入密码,并根据输入密码的有效性做相应的操作。基于RFID的门禁系统数据采集模块存储模块显示模块门控模块报警模块键盘模块显示模块完毕报警模块图9 软件构造框图 串口发送/接收局部的调试:将电路板与计算机连接以后,用一段简单的程序进展调试。发现在调试的过程中,串口不能正常通信,经过查证后发现是电容正负极接反了,修正以后,便能正常通信了。注:电容的选择要注意,应选择0.1F/1F/10F的电容。存储局部的调试:将AT24C04与单片机连接好后,编写一段简单的存储程序,将字符存入到24C04里,并取出查看存储数据的正确性。通过调试后,并未发现问题。存储电路调试成功。读卡器局部的调试:将读卡器接口与单片机相连后,用串口调试助手检测读卡器。在用串口助手向读卡器发送读卡命令时,当有卡MIFIRE S50、S70卡进入读卡器读卡范围内时,会向串口助手返回卡序列号,以此证明读卡器可用。4.3 系统功能的具体实现4.3.1 系统软件调试在进展软件调试之前要先进展人工检查代码,要仔细认真的检查,在程序中要多添加注释,以便检查方便。在人工检查无误后,才可以进展动态检查,也就是上机调试。通过编译可以得到语法错误的信息,根据提示信息找出程序中出错之处并改正。有时提示的出错信息并不是真正出错的行,这就要求我们善于分析,找出真正的错误,而不要单纯从字面意义上找出错信息,要懂得变通的理解并解决问题。软件调试时,也要模块式进展。调试时可用单步运行和断点运行方式,通过检查系统的CPU现场情况、RAM的内容和I/O口的状态,检测程序执行结果是否符合设计要求。同时,还可以发现系统中存在的硬件设计错误和软件算法错误。待各个模块调好后再进展系统程序联调。这个阶段假设出现故障,可以检查算法上是否有冲突、参数传递是否正确等。在使用WAVE软件时,调试的方法和技巧最为重要,不同的情况采用不同的调试方法,有助于程序的实现。在设计过程中显示运行结果一般用全速调试,调试时主要使用了跟踪调试、断点调试。1跟踪调试:跟踪应用程序用户能够在运行应用程序时,看到PC指针在应用源代码程序中确实切位置。跟踪型:单步执行一条语句程序,有利于观察变量。但是,如果调用一个函数,那么进入函数中,在函数中单步执行每一条语句。跟踪使用热键F7。单步型:单步执行每条语句程序,如果调用一个函数,那么不进入函数中。单步使用热键F8。2断点调试如果程序中某块代码实际运行正常的情况下,仍用跟踪调试,将大大浪费时间,而且很枯燥,因此调试中第二个重要工具是在源代码中某一处设置断点,大多数调试程序通过使用断点中止程序执行。在程序调试中用到使用断点调试,即在指定行上设置断点后,全速执行程序,看是否能进展到设置断点所在行。如果用断点调试,由比照容易观察出程序变量的改变及程序运行的结果。设置断点热键CtrlF8。3查看变量WAVE软件可以通Watch窗口进展查看变量。通过添加观察项菜单可以将用户希望观察的变量添加到观察窗口及数据窗口观察。在设计过程中常用观察窗口观察程序中的变量,修改程序中的错误。4.3.2 系统整体调试 将各个局部的硬件模块合并成一个整体,把软件各个局部程序合并到一个主程序中。通过伟福访真器和伟福调试软件WAVE6000开场整体调试,硬件局部用万用表来测试硬件每局部的接通性。软件局部的测试主要方法是通过设置断点、单步执行等方法来测试程序的正确性。在确定软硬件无问题后,将程序通过烧写器把程序烧到单片机中。将程序烧写到控制芯片AT89C52,翻开电源,电源指示灯亮,整个系统启动。运行上位机,向下位机发送读卡命令,下位机接收到读卡命令后,当有RFID卡进入到读卡器的读卡范围内时,假设RFID卡为有效卡便会在执行开门操作的同时在液晶上显示正确信息;假设不是有效卡那么在报警的同时在液晶上显示错误信息。当通过键盘输入密码后,系统会判断密码的有效性,假设是有效密码那么开门并在液晶上显示正确信息;假设无效那么报警并显示错误信息。整个系统完成。本系统能在翻开电源并运行上位机后,能自动向下位机发送读卡命令,当有RFID卡进入到读卡器的读卡范围内时,那么会自动读取卡序列号,并将卡序列号传送给上位机,上位机判断卡的有效性。假设该卡是有效卡,系统会执行开门并在液晶上显示正确的信息;假设该卡是非法卡,那么会报警并显示错误的信息。本系统能够有效、方便、安全地控制重要场所的出入访问,具有可靠性高、保密性强、方便快捷等特点。整个系统中数据传输的过程:发送到SDA线上的每个字节必须为8位。每次传输可以发送的字节数量不受限制,每个字节的后面必须跟一个响应位。首先传输的是数据的最高位MSB。如果从机要完成一些其他功能后例如一个内部中断服务程序才能接收或发送下一个完整的数据字节。可以使用时钟线SCL保持低电平迫使主机进入等待状态。当从机准备好接收下一个数据字节释放时钟线SCL后,数据传输继续。在一些情况下,可以用与I2C总线格式不一样的格式例如兼容CBUS的器件。甚至在传输一个字节时,用这样的地址起始的报文可以通过产生停顿条件来终止,此时不会产生响应。数据传输必须带响应,相应的响应时钟脉冲由主机产生。在响应时钟脉冲期间,发送器释放SDA线高。在响应的时钟脉冲期间,接收器必须将SDA线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。当然,必须考虑建设和保持时间。当从机不能响应从机地址时例如它这在执行一些实时函数不能接收或发送,从机必须使数据保持高电平。主机然后产生一个停顿条件终止传输或者产生重复起始条件开场新的传输。如果从机接收器响应了从机地址但是在传输了一段时间后不能接收更多数据字节,主机必须再一次终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平,主机产生一个停顿或重复起始条件。如果传输中有主机接收器,它必须通过在从机产生时钟的最后一个字节不产生一个响应,向从机发送器通知数据完毕。从机发送器必须释放数据线,允许主机产生一个停顿或重复起始条件。所有的主机在SCL线上产生它们自己的时钟来传输I2C总线上的报文。数据只有在时钟的高电平周期有效。因此,需要一个确定的时钟进展逐位仲裁。同步时钟通过线与连接I2C接口到SCL线来执行。这就是说:SCL线的高到低切换会使器件开场数它们的低电平周期,而且一旦器件的时钟变低电平,它会使SCL线保持这种状态直到到达时钟的高电平。但是,如果另一个时钟仍处于低电平周期。这个时钟的低到高切换不会改变SCL线的状态。因此,SCL线被有最长低电平周期的器件保持低电平。因此,低电平周期短的器件会进入高电平的等待状态。当所有有关的器件数完了它们的低电平周期后,时钟线被释放并变成高电平。之后,器件时钟和SCL线的状态没有差异。而且所有器件会开场数它们的高电平周期。首先完成高电平周期的器件会再次将SCL线拉低。这样,产生的同步SCL时钟的低电平周期由低电平周期长的器件决定,而高电平周期由高电平周期最短的器件决定。最后整个系统的搭建就 基本完成,此时本系统具体实现的功能如下:1.数据采集:读卡器ISO/IEC15693通过天线读取RFID卡的数据,然后将数据传送出去。2.数据分析:AT89C51接收到数据后,将数据传送给AT24C04或上位机,AT24C04或上位机对数据进展分析,从而判断数据的有效性。3.模块之间的通信:AT89C51与ISO/IEC15693/AT24C04之间的通信都是通过模拟I2C总线进展的, I2C总线的高效性、高实用性、高可靠性数据传输增强了系统的实时性和可靠性。4.数据处理:针对数据的采集和分析的结果做出相应的处理,例如显示、报警、门控等。五 课程设计总结通过两周的课程设计,我对RFID的工作原理已经有熟悉的认识,掌握的有关RFID应用系统开发的 基本步骤并且有了深刻的认识。RFID原理及应用在21世纪知识经济时代有着重要的地位。在以各种智能化为背景的前提下,RFID正的得到蓬勃的开展。本次课程设计就是在这个潮流下进展了高频、低频及相关应用设备的系统开发。起初在看到这个课设的时候我几乎毫无头绪,不过通过前期的关于RFID的的根基实验和不断的在网上和图书馆查阅资料,使我对RFID的 基本原理与应用和门禁系统的设计有了一个大体的思路,对其中涉及到的知识也进展了学习和模仿。在一开场,我遇到了一些问题,解决这些问题的方法就是去图书馆查阅有关资料,或上网查阅有关信息,或请教教师,终于按时完成了本次课程设计。这次课设不仅考察了我们对课堂上所学的专业知识的理解程度,也锻炼了我们的动手能力。提高了我独立思考问题,解决问题的能力。从总体看,我觉得这次课设是我自身的知识丰富了不少,但同时也发现了自己的缺乏之处。例如在动手方面和知识的融合方面,不能很好的与实践相结合。软件操作不够熟练。使我明白了要先学好理论知识才能很好的与实践相结合,才能熟练的运用到生活中。六 参考文献1.陈国栋基于射频识别技术的门禁系统研究与设计D中南大学,200501012.黄菊生基于智能IC卡的网络门禁系统设计与开发D湖南大学,200310103.游战清,李苏剑,张益强等无线射频识别技术RFID理论与应用M北京:电子工业出版社,20044.安静宇基于非接触式IC卡门禁系统的设计D西安科技大学,20065.康行健天线原理与设计M国防工业出版社,1998.65-736.韩瑜,焦小澄高效的LCD模块显示程序设计方法计算机工程与应用2004,22(1):123-1267.董蕴华,郑先锋.基于RFID技术的无线门禁系统的设计J.通信技术2009.8.李刚,曾锐利,林凌.基于射频识别技术的智能交通系统J.信息与控制,2006, 35(5):555-5599.贾林.射频识别技术(RFID)及其在物流交通领域的应用J.交通世界, 2005(10):50-53.10.查振元,朱华炳.电子门禁系统组成J.机电产品开发与创新,2003.11.李朝清PC机及单片机数据通信技术M北京:北京航空航天大学出版社,2000.10-22,33-60附录:界面显示子程序/ CardRead.cpp : 实现文件#includestdafx.h#includeHFExample.h#includeCardRead.h#includeEmployeeAdd.h#includeSelector.h#include/ CCardRead 对话框IMPLEMENT_DYNAMIC(CCardRead, CPropertyPage)CRITICAL_SECTION m_cs;CCardRead:CCardRead(): CPropertyPage(CCardRead:IDD), m_readeraddr(_T(2), m_modsel(0)CCardRead:CCardRead()void CCardRead:DoDataExchange(CDataExchange* pDX)CPropertyPage:DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT_READERADDR, m_readeraddr);DDX_Control(pDX, IDC_LIST2, m_listtags);DDX_Radio(pDX, IDC_RADIO1, m_modsel);BEGIN_MESSAGE_MAP(CCardRead, CPropertyPage)ON_BN_CLICKED(IDC_BTN_CONNECTTOREADER, &CCardRead:OnBnClickedBtnConnecttoreader)ON_BN_CLICKED(IDC_BTN_CARDREAD, &CCardRead:OnBnClickedBtnCardread)ON_NOTIFY(NM_RCLICK, IDC_LIST2, &CCardRead:OnNMRclickList2)ON_COMMAND(ID_32771, &CCardRead:On32771)ON_BN_CLICKED(IDC_BTN_LISTEMPTY, &CCardRead:OnBnClickedBtnListempty)END_MESSAGE_MAP()/ CCardRead 消息处理程序void CCardRead:OnBnClickedBtnConnecttoreader()/ TODO: 在此添加控件通知处理程序代码CWaitCursor wc;UpdateData();if(m_readeraddr.IsEmpty()AfxMessageBox(TEXT(请输入读写器地址), MB_ICONINFORMATION, 0);return ;LPTSTR p = m_readeraddr.GetBuffer();char ccommno=*p;m_readeraddr.ReleaseBuffer();CString t;GetDlgItem(IDC_BTN_CONNECTTOREADER)-GetWindowText(t);if( TEXT(连接) = t)if(m_modsel != m_presel)if(!SetConfigInfo(HFExample,m_modsel)TRACE(Set HFExample Config info ERRn);DWORD newcom;newcom=_tcstoul(m_readeraddr,NULL,10);if(newcom != m_precom)if(!SetConfigInfo(HFExampleCom,newcom)TRACE(Set HFExampleCom Config info ERRn);if(m_modsel = 0)/网关模式TCHAR _comm10=0;_stprintf_s(_comm ,9, TEXT(COM%c),ccommno);CSelector seler(_comm);if(!seler.SelHF()AfxMessageBox(HF模块未准备好, MB_ICONSTOP, 0);return ;if(!m_preader-ConnectToReader(m_readeraddr)AfxMessageBox(连接失败, MB_ICONSTOP, 0);return ;GetDlgItem(IDC_BTN_CONNECTTOREADER)-SetWindowText(TEXT(断开);GetDlgItem(IDC_BTN_CARDREAD)-EnableWindow(TRUE);GetDlgItem(IDC_RADIO1)-EnableWindow(FALSE);GetDlgItem(IDC_RADIO2)-EnableWindow(FALSE);elseif(m_preader-DisConnectFromReader()GetDlgItem(IDC_BTN_CONNECTTOREADER)-SetWindowText(TEXT(连接);GetDlgItem(IDC_BTN_CARDREAD)-EnableWindow(FALSE);GetDlgItem(IDC_RADIO1)-EnableWindow();GetDlgItem(IDC_RADIO2)-EnableWindow();BOOL CCardRead:OnInitDialog()CPropertyPage:OnInitDialog();/ TODO: 在此添加额外的初始化/Tags Listm_listtags.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);m_listtags.InsertColumn(0,TEXT(#);m_listtags.InsertColumn(1,TEXT(ID);m_listtags.InsertColumn(2,TEXT(Cnt);m_listtags.InsertColumn(3,TEXT(姓名);CRect rect4;m_listtags.GetClientRect(rect4); /获得当前客户区信息m_listtags.SetColumnWidth(0,rect4.Width()/10); /设置列的宽度。m_listtags.SetColumnWidth(1,5*rect4.Width()/10);m_listtags.SetColumnWidth(2,rect4.Width()/10);m_listtags.SetColumnWidth(3,3*rect4.Width()/10);m_hsayhelloevent=CreateEvent( NULL, / no security attributesFALSE, / manual-reset event?FALSE, / initial state is signaled?NULL); / object not namedif(NULL = m_hsayhelloevent)TRACE(create event for sayhello failedn);m_hsayhello=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE )sayhello,(LPVOID)this,0,NULL);if(NULL = m_hsayhello)TRACE(create thread for sayhello failedn);GetDlgItem(IDC_EDIT_READERADDR)-SetWindowText(TEXT(COM1);GetEPCToName();if (!GetConfigInfo(HFExample,&m_presel)TRACE(Get HFExample ini Err:);elsem_modsel=m_presel;if (!GetConfigInfo(HFExampleCom,&m_precom)m_precom=_tcstoul(m_readeraddr,NULL,10);TRACE(Get HFExampleCom ini Err:);elsem_readeraddr.Format(%d,m_precom);m_preader=new CHFReader;if(m_preader = NULL)TRACE(TEXT(Create HFReader Errorn);UpdateData(FALSE);InitializeCriticalSection(&m_cs);return TRUE; / return TRUE unless you set the focus to a control/ 异常: OCX 属性页应返回FALSEvoid CCardRead:OnBnClickedBtnCardread()/ TODO: 在此添加控件通知处理程序代码CWaitCursor wc;CString t;GetDlgItem(IDC_BTN_CARDREAD)-GetWindowText(t);if(TEXT(开场读卡) = t)m_listtags.DeleteAllItems();m_epc.clear();if( !m_preader-BeginInventory(callback1,this) TRACE(BeginInventory errorn);GetDlgItem(IDC_BTN_CARDREAD)-SetWindowText(TEXT(停顿读卡);elseif(TEXT(停顿读卡) = t)if(!m_preader-CancelInventory()TRACE(CancelInventory errorn);GetDlgItem(IDC_BTN_CARDREAD)-SetWindowText(TEXT(开场读卡);BOOL CCardRead:OnSetActive()/ TODO: 在此添加专用代码和/或调用基类GetEPCToName();return CPropertyPage:OnSetActive();void CCardRead:GetEPCToName()
展开阅读全文