基于单片机的IC卡门禁系统设计

目 录

摘 要 I

Abstract II

引 言 1

1 主要研究内容及总体设计方案 3

1.1 系统方案设计 3

1.2系统工作原理 6

2 硬件设计 7

2.1 主控电路 7

2.2 电源模块电路 10

2.3 键盘模块电路 10

2.4 读卡器模块电路 10

2.4.1 读卡器模块 11

2.4.2 IC卡的功能组成 12

2.5 射频识别电路 14

2.6 显示模块电路 14

3 软件设计 16

3.1 系统程序开发流程 16

3.2 主程序设计 18

4 实物制作 21

结 论 23

参考文献 24

附录1 原理图 25

附录2 源程序清单 26

致 谢 32

摘 要

近些年来在我们的生产生活当中,门禁系统及其产品的使用越来越广泛,为了分析了IC卡门禁技术的发展趋势和IC卡门禁系统技术在门禁系统中的使用特点,以及需要优化的方面,进而进行以基于单片机的IC卡门禁系统工作原理为基础去进行设计和制作。

本论文重点通过对射频技术原理和射频卡来研究智能门禁系统,而主要的研究对象就是这款非接触式的IC卡门禁系统。相对于其它的门禁系统,它有着独特的优势,也使得它的使用最为广泛,它的核心技术是将射频识别技术和IC卡技术相结合,正是通过这种多部分技术相结合的形式,使得它的发展更有前景也更有发展潜力。本篇论文将几种不同的门禁系统进行了比较,选出合适的方案,并结合本系统预期要达到的特点加以改进,最后完成系统设计方案,并且详细的介绍了该门禁系统的硬件组成、软件组成,以及各部分的运行方式和参数。

经过最终测试,本设计达到了预期的设计效果。这套IC卡门禁系统可以高效的识别IC卡模块的读写,磁锁部分也能及时的做出开关指令,并且在IC卡管理上可以进行加入用户卡,删除用户卡,以及键盘密码控制等功能。总体的系统功能均以达到了预期目的。

关键词:单片机;射频识别技术;IC读写模块;按键

Abstract

In recent years, access control system and its products are used more and more widely in our production and life. In order to analyze the development trend of intelligent IC Carmen access control technology and the characteristics of intelligent IC Carmen access control system technology used in access control system, and the need for optimization, and then to intelligent IC Carmen ban system based on the principles of work to design and production.

This paper focuses on the principle of RF technology and RF card to study the intelligent access control system, and the main research object is the contactless intelligent IC Carmen access control system. Compared with other access control systems it has a unique advantage, but also makes it the most widely used. Its core technology is the radio frequency identification technology and IC card technology, it is through this multi-part technology combined form, making its development more promising and more potential. In this paper, several different access control systems are compared, and combined with the system expected to meet the requirements of the characteristics of improvement, the final selection of a suitable program. And detailed introduction of the access control system hardware composition, software composition, as well as the operation of the various parts and parameters.

After the final test, the design to achieve the desired design effect. The intelligent IC Carmen forbidden system can efficiently identify the read and write of the IC card module, the magnetic lock part can also make the switch instruction in time, and can add the user card and delete the user card in the IC card management, and the replacement of user cards. The overall system function module is to achieve the expected function.

Key words: MCU; Radio Frequency Identification Technology; IC read-write Module; key

引 言

随着最近几年门禁系统的使用范围不断扩大,它的发展方向也在不断扩大,不仅仅有IC卡门禁系统,还有生物虹膜门禁系统,指纹门禁系统,甚至还出现了更为高级的面部识别系统。这些系统已经应用到了我们的生活当中,但是不同的门禁系统的使用范围不同,经济价格不同,以及方便程度不同,这正是我们研究IC卡门禁系统的意义。

不断提高的生活质量,使得越来越多的人们安全防范意识也在不断的增强。所以在智能门禁发展趋势的大背景下,智能IC卡门禁系统的发展势在必行。该系统通讯线路较为简易,相对其他系统而言成本更本低、可靠性更高、也更便于维护,尤其是对现有的老社区、旧办公楼的智能化改造、以及生活中的门锁柜锁等,会让其既安全又方便。门禁系统俨然已成为发达国家、发展中国家和地区最主要的安保系统之一。

门禁系统的发展上,它是由传统的简单机械结构发展而来,传统锁的核心是钥匙和锁芯,以最原始的机械结构达到一个上锁的功能,而越来越多的人能够轻易破解其上锁功能,正因如此传统锁被意外违法开锁的情况频发,使得传统锁的安全性得不到保障,并且传统锁通常会备用很多把钥匙,放置交接都有可能出现意外遗失的情况,这就会产生很多麻烦。而磁卡锁有易被复制的缺点,卡片锁与读卡机的磨损又比较严重,容易损坏,进而IC卡门禁系统的出现优点就显得格外突出并解决了这个问题。首先IC卡门禁系统的电磁锁质量耐抗强度非常高,普通的破坏不会对其产生致命的影响,并且智能IC卡门禁系统的IC卡不会被复制,不用担心被复制的危险,并且智能IC卡门禁系统是非接触类的卡锁,不会对其产生巨大的损耗。智能IC卡门禁系统最大的优点莫过于使用网络技术,网络技术的特点就是不会受到时间和环境的过多的限制,从而它的使用范围也变得更加广泛。智能IC卡门禁系统使得通道管理提升了到了电子科技时代。正因如此电磁锁如此多的优点极大的影响了智能门禁系统的发展趋势。

在技术方面,文章首先系统的介绍了非接触式IC门禁系统的控制系统设计方案。通过多种不同的方案进行比较,最后通过科学的数据对比,选出最合适本系统的方案,然后是对硬件模块进行分块解读。本系统分为以下几大模块;主电路模块、显示电路模块、读卡器模块、键盘控制模块、以及射频信号模块等。

软件部分包括软件开发环境及流程、系统总体工作流程、LED指示灯子程序设计等。除此之外文章也详细地阐述了射频识别技术的构成,特点和参数,在硬件上要采用AT89C51单片机和IC读写模块+DS1302+LCD1602液晶总线技术;软件编程前应分析工作流程;重点为控制器主程序设计、读取I/O口状态子程序设计、通信子程序设计等,最终达到通过IC卡读写系统射频识别技术,对其系统的信号进行了实现。

这套门禁系统这套系统是以人们的使用方便和管理方便为目,高安全性、高可靠性的管理系统是其最大的特点。所以在设计内容上着重考虑到经济价格方面,以及使用方便等方面,并且所有的功能都要在可行性方案内去实施。今天的智能IC卡门禁系统代表的是当下的科学技术,而越来越先进的技术会让其有更深层次的突破和发展。

通过本次内容的设计,也让我对科技的迅猛发展有了更加深刻的认识,不管是Keil5方面的编程的主函数的设计,还是小模块功能的设计,通过简单合理的程序逻辑让看似简单实际又很困难的功能能够得以实现。而在硬件模块上的制作也同样让我获益匪浅,特别是合理的利用单片机管脚,能够同时驱动多模块同时运行的强大功能。

智能IC卡门禁系统会随着科技的发展而发展,相信未来的门禁系统一定会在功能技术上有着更大的突破,而使用的领域也会越来越广泛,科技也一定会让其在未来有更大的发展空间和价值。

1 主要研究内容及总体设计方案

1.1 系统方案设计

方案一:本方案的核心在于系统的芯片选取上,这里选择的是PIC16C84单片机为核心芯片。之所以选这款单片机芯片是因为其强大的功能,CMOS EEPROM微控制器为8位,在模块功能上它的性能也十分强大,尤其是它的RISC信号指令。并且它的单字节的指令有35条,这使得它的运行速度更优于AT系列单片机。

它的主要指令只需要一个指令周期,除了程序分支指令是需要两个指令周期,而程序分支指令应用并不是很多。在芯片内有1K×14的EEPROM程序存储器,而程序指令的宽度仅为14位。显示模块选用LCD1602液晶显示屏,键盘上选用独立式键盘,它的功能原理相对简单,键按指的令发出是通过判断芯片I/O口处读取口的电平的高低去判断的,从而达到发射指令控制的这样效果。

这套方案总体来讲核心功能十分强大,但是也有他的不足之处,就是这种方式的I/O口占用的数量相对较多。而且对键盘处理的这一部分还要克服一个键盘的抖动的问题。在我们现有的内力上想改善防抖问题,分为软件防抖和硬件防抖,而这一块的技术方面我们还尚未做到完善,所以这也是我们的备选方案之一。此方案应该选取的控制电路图如图1.1所示。

图1.1 独立式控制电路图

方案二:本方案的核心在于系统的芯片选取上是十分重要的,我选用AT89C51这款芯片。之所以选择这款芯片是因为,这款芯片它具有很多优越性除了低功耗、稳定的性能之外还有CMOS 8位微控制器,这款控制器并不是最高效的控制器,但是作为我们系统控制器是足够的。

除此之外它有系统可编程Flash存储器为4K字节。灵活的8位CPU和在系统可编程Flash,易失性存储与工业其他产品指令和引脚完全兼容,它的广泛使用与它良好的兼容性是分不开的。正因如此才使得性能不是最强大的AT89C51在市场有其足够的市场。

在控制方面上我预计选用行列扫描的键盘形式,模块的电源正极通过一个小值电阻连接列线,这套模块有很多优势,它的输入端为列线连接的单片机I/O口,输出端是以行线所连接的单片机I/O口。它的工作原理是判断输入线的高低电平,进而判断是否有按键按下,正常时候是没有按键被按下,它输出端的所有列线都是高电平,当有键按下,高电平将会被输入线拉低。

这套方案总体巧妙的运用了高低电平,并且性价比非常高,以一个较为经济的价格可以达到一个令人满意的系统控制效果,并且51系列单片机是一款我们相对熟悉的一款芯片,而行列式的控制模块也跟更容易理解其控制原理,方便我们后期的代码编写。所以方案二也是我们的备选方案之一。行列式的控制电路如图1.2所示。

图1.2 行列式的控制电路图

方案三:本方案的核心在于系统的芯片选取上也是十分重要的,我们以MSP430单片机芯片为核心。这款单片机有很多它独有的优势,拥有16位的混合信号处理器,最大的特点就是它的功率功耗很小,并且它的健康使用时间更长,并且可以高效、精准的处理混合信号。最开始的时候它是由美国的德州仪器(TI)开始推出市场,它的应用也比较广泛,主要优势体现于高可靠性、方便扩展、功耗更小、所占空间更小、使用更为简洁等优点,主要针对于更大功能需求上的应用需要。

系统上它把各个模块的模拟电路、数字电路和微处理器汇到一起,然后通过强大的芯片对其进行混合信号的处理,然后迅速发出指令,它的指令集是十分简单迅速的、更低的功耗的混合型单片机,这款单片机通体来说具有很好整合电路能力,所以这是我们选择这款芯片原因。然而我们在能完成相对简单的电路的前提下,我们考虑芯片的经济价格。

最后就是我们整个电路的而核心控制模块的选取了。这是一款串并转换电路的键盘形式这款控制电路为74LS164,它一共有8个按键,工作原理为串并转化芯片它把SDA(P10)上的串行数据化为8位的并行数据。正是通过并行数据达到其数据传输的效果。它以S1-S8作为盘扫描,S1-S8依次输出低电平,当扫描到其他的管脚上是,如果S1~S7上的数据经过简单处理得到对应的键值。则说明扫描到的是P11等于0。如果P11检测为高电平,那么说明电路是没有按键为关闭状态。

总体来讲,74LS164型号的控制器拥有较为齐全的功能,但是较我们以往的学习经验,这款74LS164型号的控制器我们应用较少,相对陌生。74LS164控制器电路图如图1.3所示。

图1.3 74LS164型号的控制器电路图

通过以上三种方案的对比,第一种方案总体的功能十分强大,但是难以解决防抖问题,而第三套方案的功能也很成熟,但价格方面较高。综合上述方案的优缺点,我们基于经济和知识贮备等多方面的考虑,最终选择最为常用的方案二AT89C51系统。

1.2系统工作原理

(1)通过对系统初始化,然后通过扫描IC卡,系统会对卡片进行校验,校验成功方可打开电磁锁;

(2)智能门禁系统可以对IC进行增加或删除,并且带有显示器,可以直观的了解当前的系统或卡片情况,从而进行设置,而硬件上采用单片机和IC读写模块+DS1302+LCD1602液晶总线技术;

(3)具有通讯报警功能,绿灯表示允许通过,红灯表示禁止通过;

(4)门禁系统的本模块是将接触式IC卡技术应用于其中,使得整个门禁系统具有使用方便、快捷、安全的特点。除此之外还有很高的性价比和优越的扩展性。本系统结构框图如图1.4所示。

图1.4 系统结构框图

2 硬件设计

2.1 主控电路

在主控电路上,本系统采用的是最为经济常用的AT89C51单片机,它的工作电压为4.5V-5.5V,工作频率在40MHz之内。主控模块的是通过AT89C51对各部分模块进行功能整合最终达到完整系统运行的。它共有的四个并行的I/O口为P0.1、P0.1、P0.2、P0.3,这里面P0.1口只是普通的I/O口;P0.0可以做数据总线、地址总线的端口;P0.2可以做地址总线;P3的功能最为强大可以作为RXD、TXD、WR、RD、INT0、INT1来使用。正是因为其完善的端口功能也使得系统的各个模块正常运行得以保障。主控芯片AT89C51原理图如图2.1所示。

图2.1 AT89C51原理图

在本系统中LCD1602液晶显示屏模块需要11个引脚,除了连接单片机的四个I/O口外,还有P0.4-P0.7端口,以及P1-P1.2端口。蜂鸣器报警模块需要1个,本设计将P1.4端口连接蜂鸣器。按键模块需要8个引脚,我们以P2.0-P2.7作为其键盘控制模块的输出引脚。除此之外RFID模块需要5个,读卡模块需要7个,电磁锁继电器驱动模块需要4个,下载口需要2个,这套方案下来我们的模块引脚已经全部满足了,并且有EA、ALE、PSEN等引脚的剩余。在完成了设计方案功能的前提下,这些剩余引脚不会对系统有任何影响。

系统核心AT89C51它具有很多优越性,除了低功耗、稳定的性能之外还有CMOS8位微控制器,这款控制器并不是最高效的控制器,但是作为我们这套系统控制器是足够的。

除此之外它有系统可编程Flash存储器为4K字节。灵活的8位CPU和在系统可编程Flash,易失性存储与工业其他产品指令和引脚完全兼容,它的广泛使用与它良好的兼容性是分不开的。与标准类型的MCS-51指令集和输出管脚相兼容依赖于其ATMEL是由高密度稳固存储器技术制造而成,使得ATMEL的AT89C51是一种经济、高效、广受青睐微控制器。

在满足本设计的所有功能前提下,低廉的价格为嵌入式控制系统提供了良好的设计方案,所以选取AT89C51单片机为本系统的核心。AT89C51单片机引脚功能如表2.1所示。

表2.1 AT89C51单片机引脚功能表

引脚名称 功能

P1.0~P1.7 8位双向I/O口

RST 复位端

RXD 串行口输入端

TXD 串行口l输出端

INT0/INT1 外部中断0/1输入

T0/T1 定时器0/1输入

XTAL2/XTAL1 接晶振

VCC/VSS 电源

P3.0~P3.7 8位双向I/O口

WR/RD 片外数据存储

51单片机最小系统包括时钟电路和复位电路这两个重要部分。时钟电路为芯片提供工作频率,可以理解为芯片的心脏,通常晶振离单片机越近越好,晶振的振荡频率直接影响单片机的处理速度,频率越快处理速度越高。

在本设计中我们采用的是12MHz的晶振,这样的频率相对较高,对单片机的反应速度有较大的提升。本系统的时钟电路中并联的两个起振电容C1、C2采用30pF的电容。VCC、GND、晶振输出引脚和一个没有用到的悬空引脚(有些晶振也把该引脚作为使能引脚)为有源晶振的4个引脚。无源晶振两侧的引脚就是晶体的2个引出脚了,它没有正负极,是两个工作效果相同的两个引脚,用我们的单片机上的两个晶振引脚接上去即可。而有源晶振,输出引脚是不需要接的,只要接到单片机晶振的输入引脚上就可以达到完整效果。

另一重要部分就是复位电路,这部分与我们的手机重启效果是一样的。如果受到外界条件干扰出现程序BUG的时候,系统在运行过程中就会出现卡死的情况,启动复位按键,系统的程序就会重新开始执行。复位电路的极性电容C1的大小直接影响单片机的复位时间,但是它的大小也是有范围的,通采用范围在10-30uF之间的电容,一般电容的容值越大单片机的恢复时间越短。本设计模块经过不断的测试最后选用容值为10uF的复位电容。

2.2 电源模块电路

在电源模块上本设计选用的是以5V电源为系统供电的总电源,这套电源模块最大的优点就是以简洁的电路提供稳定的电源供应。其中P2为电源插座,C1、C2为电源电路电容。供电方式有很多种,既可以通过电脑的USB,还可手机数据线,甚至还可以用充电宝等供电设备为其供电。

当电源接通后,此时系统电源输出的是额定5V的直流电,红色发光二极管常亮,再次按下按键,电源模块电路已经断开,此时的系统没有电源输出,红色发光二极管灯光熄灭。在引脚方面VCC为电源电压,用+5V主电源去连接单片机的引脚(2根)。GND为模块的接地线。电源模原理图如图2.2所示。

图2.2 电源模原理图

2.3 键盘模块电路

本系统采用行列扫描的键盘形式,这部分系统电路的列线以四个阻值为10k的并联电阻与电源正极相连,它的输入端为列线连接的单片机I/O口,输出端是以行线所连接的单片机I/O口。

在控制方面上我选用行列扫描的键盘形式,模块的电源正极通过一个小值电阻连接列线,这套模块有很多优势,它的输入端为列线连接的单片机I/O口,输出端是以行线所连接的单片机I/O口。系统巧妙的用高低电平的信号完成了该模块对系统的控制。它的工作原理是判断输入线的高低电平,进而判断是否有按键按下,正常时候是没有按键被按下,它输出端的所有列线都是高电平,当有键按下,高电平将会被输入线拉低。以此键盘控制电路得以实现。行列扫描按键原理图如图2.3所示。

图2.3 行列扫描按键原理图

2.4 读卡器模块电路

IC卡门禁系统主要是由四部分所构成:IC卡、读卡器、PC管理机以及外部门禁设备。每一部分都是不可缺少的部分,读卡器电路是整套智能IC卡门禁系统的重中之重。它的构成分为以下几部分,分别为微处理器、外围扩展器件、读写芯片、射频天线、串行通信接口等。

本设计中读卡器模块PC管理机系统读卡器是独立工作的,通过从读卡器中读取到的数据将传给采集器,进行采集后再把收集到的数据传送给PC管理机,最终由单片机的I/O口根据刷卡情况发出控制信号,外部门禁设备判断门是否将门打开。

2.4.1 读卡器模块

RFID-RC522读卡器是本模块的IC卡门禁系统的主要设备,其工作电压为3.3V,工作频率为13.56MHz,并使用5个I/O口。这部分直接与PC机通过RS-232串行口相连,如果IC卡进入读卡器天线射频能量范围内,那么信号就会被读卡器所接收,如果接上串行口和+5V电源之后,那么读取卡中的数据就会被接收,如果要让数据存储到计算机中就要,通过射频信号与IC卡模块进行通信,并且认证密码。读卡器系统是一个数据采集处理的功能模块,处理来自身份识别单元的数据。本系统的IC卡读卡器其内部结构图如图2.4所示。

图2.4 IC卡读卡器其内部结构图

本系统选用的读卡器是针对Philips公司MIFARE产品设计的RFID-RC522类型读卡器,这个公司有非接触式IC卡和接触式IC卡两种。我们使用的是MIFARE列的非接触式IC卡,参数标如下:

(1)读写卡片类型:MIFARE;

(2)天线可操作距离:天线的实际信号接收距离为3~8cm;

(3)卡片存储容量:卡存储EEPROM大小为1K字节;

(4)射频输出:通过功率匹配将天线线圈直接连接到功率输出级;

(5)供电电压:5V士10%(小于100mA);

(6)接口:标准RS232(读卡器)。

2.4.2 IC卡的功能组成

IC卡相当于智能门IC卡门禁系统开门钥匙,它的工作原理其实很简单,主要是电磁感应技术。当磁力线圈产生感应电流,同时将卡内信息向读卡器发送过去,收到信息后读卡器继续向芯片发送信号,从而完成读卡这相工作。本论文使用的非接触式IC卡是Philips公司的MIFARE1卡。非接触式IC卡的功能组成如图2.5所示:

IC卡的类型由非接触式IC卡和IC卡读卡器构成。两者各有优势和特点,非接触式IC卡与接触式IC卡相比,有以下特点:

(1)稳定性好、使用方便;

(2)不需要与读卡器接触,减少摩擦损耗,使用时间更长;

(3)系统动态处理;

(4)经济价格更合理;

(5)使用安全性更有保障。

图2.5 IC卡的功能组成图

2.5 射频识别电路

在射频识别电路中,除了RFID-RC522读卡器,最重要部分为AMS1117-3.3芯片。最大输入电压为15V,输出电压为3.267-3.333V,电容为电解电容。这部分可以处理波形转换。通过接收读卡器上的13.56MHz的无线电调制频率进行整波,接收到的电波被分成了两部分,一部分这个频率被送到调制解调模块,另一部分进行波形转换,把正弦波转换成方波,然后对其整流滤波,并过滤掉无法识别和无用的电波。然后通过电压调节模块对电压进行进稳压等特殊处理,最终将整合好的波形输出供给卡片上的各部分电路。电路做出相应的反应。

在身份识别单元的设计中,设计读卡器等其余硬件的基础是先确定RFID卡。所以首先应根据系统的要求来选定RFID卡。

系统的主要参数要求如下:

●通信频率:13.56MHz;

●防冲突:可同时处理多张卡;

●读写距离:在80mm(与天线形状有关)能高效传递读写数据;

●半双工通信方式;

●数据处理完整且安全;

●典型处理速度很快,通常小于200ms。

通过前面分析,以及本门禁系统的设计功能,正因为Philips公司的芯片及其产品占有极其强大的功能优势,我们才能将这部分信号处理的准确无误,这部分的技术性能十分成熟稳定,使用时间长,性能效果好,所以最终我们在射频模块选择符合标准Philips公司性价比超高的读写芯片AMS1117-3.3,在其特性完全符合本系统的各项要求下,还能达到一个稳定、高效的射频模块。

2.6 显示模块电路

本设计采用LCD1602液晶显示屏。它的好处有很多,该液晶显示屏由单片机进行直接驱动,其显示功能强大,可以显示多量的数字和文字,并且显示清晰美观,而价格方面相对来说也比较经济,最主要的是这款显示器的额定工作电压为5V,所以更适合我们这套系统电路。显示器的命令操作插脚为RS、RW和EN,连接到单片机的P2.4、P2.5和P2.6引脚。数据插脚D0-D7分别与单片机的P0.0-P0.7引脚相连。其中,左右两边以及串联一个电阻的AO口进行接地,VDD与A口连接电源。除此之外本电路中的液晶显示的对比度即清晰度是可以通过电位器进行调节的。LCD1602液晶显示电路原理图如图2.6所示。

图2.6 LCD1602液晶显示电路原理图

3 软件设计

3.1系统程序开发流程

软件部分是整个门禁控制系统的灵魂,软件编制首先要选择合适的编程语言,因为合适的编程语言是我们实现功能的一条捷径,相应软件的编制是让系统的各部分模块功能能够完整的实现的前提。实际上能够给这套系统或者这套单片机编程开发的软件有很多,但基于我们对软件编制的能力以及所掌握的语言方法,对于此系统而言,以AT89C51单片机为核心的嵌入式系统而言,所有的控制都是由单片机程序控制实现,经过最终确定本设计中我们方案开发环境是Keil5。这套程序开发不仅提供了完整的Windows开发环境界面,还支持C语言开发,并且简单高效。软件Keil5开发界面如图3.1所示。

图3.1 Keil5开发界面图

打开Keil5首先需要建立"Project"工程,选择"New uVision Project",为新建的工程命名后点击保存,这样一个空白的主程序文件就建好了。然后选取以"AT89C51"为本设计的单片机型号,将我们的核心加入到工程中,成功建立工程后,点"Source Group"按键,可添加.c文件,如果想编辑文件,点击"Add",然后设计要求的程序。并且单片机的特殊功能寄存器I/O口通过Keil5可直接被操作,除此之外还可以直接访问片内或片外存储器。软件开发流程图如图3.2所示。

图3.2 软件开发流程图

3.2主程序设计

软件主程序是系统的监控程序,所以第一步就要将始化完成,在主程序可以完整运行的前提下控制程序的流向,然后调用相关子程序的功能。当子程序的运行也没有问题后,上电复位,程序开始运行。其中详细包括:

●单片机I/O口及内部寄存器变量初始化,使整个系统处于一个确定的工作状态。

●定时器TO和T1的初值的设置:定时计数器Tl用作串口通信的波特率发生器,波特率为9600bit/s;定时计数器T0用作定时计数器,定时时间为65ms。

●中断请求控制寄存器的设置,包括定时/计数器的中断标志、外中断1的触发方式控制位、串行发送/接收中断标志、中断的使能。

●LCD1602显示器工作状态寄存器的设置,除了显示器的亮度和清晰度之外还包括扫描位数的设定,以及系统开关的提示。

●读卡芯片工作寄存器的设置,然后对天线、询卡、缓冲区相关寄存器进行指令设置。设置成功之后,将程序进入循环状态,依次判断是否需要回铃、提示用户、设置管理RFID卡(新卡注册或旧卡注销)等。主程序工作流程图如图3.3所示。

图3.3 主程序工作流程图

系统工作流程:首先为系统供应5V电压,开启开关,选择按键按钮让其复位,然后读卡模块会自动寻卡,当管理IC卡刷过后,读卡系统会自动扫描,并且会进行防冲突和选择卡片等系统功能,最后进行验证,对卡进行操作是否写卡,如果通过写卡将经过写卡流程,如果系统识别为不写卡则会进行读卡操作,并且会进行上述操作。除此之外这部分还可以对有效卡片的删除和添加功能进行设置,按键输入和设置密码控制继电器,控制信号会同时反馈到液晶显示器上进行显示状态。本系统实现了IC卡刷卡产生的信号去控制继电器开断,以此表示门的开放或关闭,整套流程的实现最终构成一套完整的工作系统。

4 实物制作

本项目的制作流程首先是确定系统的功能模块,在确定好各部分模块的功能后再进行与单片机的引脚连接,从而做到从部分到整体。在电路板的面积有限的情况下,尽可能的将电路制作的美观一些。

根据本设计需求,对实物功能进行逐一测试:

(1)打开电源后,电源指示灯红灯常亮,同时读卡指示灯常亮;

(2)用IC卡贴近读卡器,然后通过扫描IC卡,按确认功能键,系统会对卡片进行校验,如果是没经过授权管理的卡,则蜂鸣器长鸣报警,显示器显示"ERROR"磁锁不打开。

(3)扫描IC卡,门禁系统显示"ERROR"后长按功能键进行编辑,当屏幕显示"OK"的时候并且伴有蜂鸣,则说明授权管理成功。成功后重新用IC卡贴近读卡器,绿指示灯亮,蜂鸣器报警以示,屏幕显示"OK",同时电磁锁打开;

(4)键盘控制模块可以在没有IC卡的情况下通过密码将其打开。其中"A"为确认键,"B"为更换密码键,"D"键为删除键。初始密码可以进行设置和更换。

(5)经过最终的测试IC卡识别功能可以实现,对IC进行增加或删除的功能也可以实现。并且键盘控制电路可实现密码开锁以及更换密码等功能。

经过不断的调试与改良预设功能均以实现,主电路和电磁锁部分,以及读卡模块实物展示图如图4.1、图4.2、图4.3。

图4.1 主体实物图

图4.2 电磁锁实物图

图4.3 读卡器实物图

结 论

经过这一段时间的不懈努力最终完成了对设计论文的编写以及实物的制作。系统硬件的整体设计主要包括:AT89C51为核心的主控电路模块、以LCD1602液晶显示器为显示模块、MIFARE读卡类型的IC卡读卡模块、以及12V供电的电磁锁外设部件所构成的一套完整系统。并且通过模块化的设计将系统拆分成各个功能模块并且逐个攻破,最终完成了系统的硬件设计。而软件方面首先按照主程序的功能要求去分步完成,先将主程序函数设计好之后,分块设计其各部分的功能函数,正因为以模块化的方式去设计,使得整个系统的软件与硬件之间的协议和系统规划功能结构更加简约、稳定、高效。良好的硬件电路,精简的程序使得我们的设计实物功能得以全部实现。

相对与其他磁卡锁系统如:生物虹膜门禁系统、指纹门禁系统、以及更为高级的面部识别系统相比,它们的使用范围不同,经济价格不同,方便程度也各不相同。IC卡门禁系统有着独特的自身优势,其价格更为经济,应用范围更加宽泛,可以满足大多数用户的使用。除此之外就是IC卡门禁系统的独有特性了,它可以通过较为简单的电路,通过对读卡器进行简单的设计,就可以满足更多复杂条件或多变环境下的场合工作。

通过本次设计项目,也让我对我们专业的内容有了更深入的了解,无论是Keil5的主程序设计、还是硬件上的读卡器设计、显示器模块的设计、控制电路的组装焊接、以及其结构组成都有了更深层次的了解。IC卡门禁系统的迅猛发展会随着我们的科技发展不断的发展,未来会增加更多方便、实用、安全的功能。并且在使用范围也会更加广泛,比如在住户、银行、公司企业和智能大厦等部门都可能会被广泛应用,甚至发展到其他经济发展较为落后的国家,总而言之科技的发展必将带来技术上的进步,IC卡门禁系统的未来发展必将呈现出势如破竹之势。

参考文献

[1] 刘守义.智能卡技术[M].西安电子科技大学出版社出版,2004

[2] 吴晓苏,张中明,单片机原理与接口技术[M].人民邮电出版社出版,2005

[3] 王汝琳.智能门禁控制系统[M].北京 电子工业出版社出版,2004

[4] 梁楚樵.基于Mifare非接触式IC卡的射频识别系统研究与实现[M].武汉理工大学,2005

[5] 黄筱霞.IC卡门禁系统的设计[J].北京工商大学学报,2003

[6] 刘丽丽.非接触式智能卡系统研究与开发[M].北京化工大学,2004

[7] 曾非一.嵌入式软件开发技术研究MPC860目标机底层软件的实现[D].电子科技大学,2014

[8] 陈小忠.单片机接口技术实用子程序[M].人民邮电出版社,2005

[9] 王幸之.单片机应用系统抗干扰技术[M].航空航天大学出版社,2000

[10] 孙琴琳,陈得宝,李峥,基于互联网的门禁系统设计[J].淮北师范大学学报,2018

[11] 冯泽虎.基于单片机的可编程直流稳压电源设计[J].中国高新技术企业,2013

[12] 黄智伟.采用射频技术的门禁系统的电路设计[J].电子工程师,2001,(4)

[13] 胡汉才.单片机原理及其接口技术[M].科学出版社,2017

[14] 刘烈君.实验室门禁管理系统的设计与实施[D].东南大学,2018

[15] 赫建国.单片机在电子电路设计中的应用[M].清华大学出版社出版,2006

[16] 马祥,黄东林,刘海,梁婷婷,基于51单片机的非接触式IC门禁卡设计[J].电子世界,2018

[17] 刘运清.基于单片机的门禁系统的设计与实现[J].中国科技信息,2013

[18] 王治文,陈俊武,洪慧,面向开放管理的实验室门禁系统[J].实验室研究与探索. 2009,(6)

[19] 宗灶童,任玲,非接触校园IC卡与图书馆门禁及管理系统集成方法[J].中国科技信息,2009,(9)

附录1 原理图

附录2 源程序清单

#include<reg51.h>

#include<intrins.h>

sbit cp=P1^0;

sbit sck=P1^1;

sbit so=P1^2;

sbit beep=P3^7;

sbit led5=P0^5;

sbit KD_KEY = P2^6;

sbit KEY_SDA=P2^7;

sbit KEY_CLK=P2^5;

unsigned char chcardno[10][5]={0};

unsigned char cardok;

unsigned char j=0;

unsigned char count;

unsigned char a;

unsigned char cardno[5]={0};

unsigned char key_value;

unsigned char b=1;

//---------毫秒延时子程序----------

void delay2(unsigned char ms)

{unsigned char i;

while(ms--)

{

for(i=0;i<120;i++);

}

}

//---------蜂鸣器--------------

unsigned char feib(void)

{

beep=0;

led5=0;

delay2(250);

beep=1;

led5=1;

delay2(250);

}

void send(unsigned char a)

//判断是不是有键按下

{

unsigned char i;

for(i=0;i<8;i++)

{

if(crol (a,i)&0x80)

KEY_SDA=1;

else

KEY_SDA=0;

KEY_CLK=0;

KEY_CLK=1;

}

}

unsigned char key(void)

//判断是第几键按下

{

unsigned char buffer,display_bit,i;

buffer=0xff;//赋初值为0xff

delay2(250);//延时去抖动

display_bit=0xfe;//扫描键盘

for(i=0;i<8;i++)

{

send(display_bit);

if(!KD_KEY)//是此键按下吗?

{

buffer=display_bit;//是,则保存其键值

return(i);

break;//退出

}

display_bit=crol (display_bit,1);

//检测下一键

}

}

//------同步串行口接收一字节-------

unsigned char rx1byte()

{

char i;

char rxdata;

for(i=9;--i;)

{

rxdata<<=1;

while(sck0)//等待始终上升沿
continue;
if(so1)//读数据

++rxdata;

while(sck1)
continue;
}
return rxdata;
}
//--------同步串行口接收-------
unsigned char rx(void)
{
char i;
if(cp1)//检测CP脚是否出现低电平

return;

EA=0;//屏蔽中断

for(i=25;--i;)//保证CP的宽度大于时钟宽度

{

if(sck0)
{EA=1;
return;
}
}
while(sck1)//等待时钟线出现低电平

continue;

cardno[0]=rx1byte();//读第一个字节

cardno[1]=rx1byte();//读第二个字节

cardno[2]=rx1byte();

cardno[3]=rx1byte();

cardno[4]=rx1byte();

cardno[5]=rx1byte(); //读第六个字节

while(cp0) //等待CP脚恢复高电平
continue;
EA=1;
//读卡结束,校验卡号
i=cardno[0]+cardno[1]+cardno[2]+cardno[3]+cardno[4];
if(i=cardno[5])
{
cardok=1;
}
}
//---------------管理卡程序-----------
unsigned char zjz (void)
{
char i=0;
while(1)
{
rx();
P0=0XFF;
if(cardok1)//判断是否有刷卡

{

cardok=0;

if(chcardno[0][5]==0)//判断是否有管理卡

{

feib();

feib();

chcardno[0][5]=cardno[5];//设计为管理卡

}

else

{

if(chcardno[0][5]cardno[5])//判断是否是管理卡
{
feib();
feib();
feib();
delay2(250);
while(1)
{
rx();
if(cardok1)//判断是否有刷卡

{

feib();

cardok=0;

TR0=1;//起动定时器0

count=0;

break;

}

				 }
			    }
			   else
				 { 
				   for(a=1;a<=b;a++)
                    {
			          if(chcardno[a][5]==cardno[5])//判断是否是用户卡
                        {
                        feib();
					    break;
			             }
					 }
                 }
            }
    }
}

}//----------定时器子程序---------

void timer1(void) interrupt 3

{

TH0=(65536-50000)/256;

TL0=(65526-50000)%256;

count++;

key_value=key();

switch(key_value)

{

case 0://按键1

feib();

chcardno[b][5]=cardno[5];//添加用户卡

cardno[5]=0;

b++;

break;

case 1://按键2

feib();

feib();

for(a=1;a<=b;a++)

{

if(chcardno[a][5]==cardno[5])

{

chcardno[a][5]=chcardno[b][5];//删除用户卡

}

}

		   break;
	  case 2://按键3
	       feib();
		   feib();
		   feib();
	       chcardno[0][5]=0;//删除管理卡
		   break;  
	case 3://按键4
	       feib();
		   feib();
		   feib();
		   feib();
		   for(a=1;a<=b;a++)
		   {
	       chcardno[a][5]=0;//清空所有用户卡
		   }
		   break;
  }
if(count==50)//定时5S是否到
  { 
    TR0=0;	
    EA=0;
   }

}

//--------------------主程序--------------

void main(void)

{

TMOD=0x01; //定时器0

TH0=(65536-50000)/256;//定时器0初始华

TL0=(65526-50000)%256;

EA=1;

ET0=1;

P0=0XFF;

zjz();

}

致 谢

在这次毕业设计过程中,随着本次设计与论文的逐渐完成,我不仅提升了自己的理论知识与动手操作能力,更重要的是提升了我信心与能力。

本设计从选题研究到设计制作的过程中,得到了许多老师和同学的帮助与鼓励。这里要感谢我的指导教师李作纪老师的认真负责和悉心指导,他严谨的治学精神,和对工作认真的态度,对我有很深的影响。从选题到设计完成,老师都给予我们充足的指导和建议。除此之外,在实物检测过程中,陈乃周老师多次发现问题,当我查阅书籍查找资料都无法解决时,是老师放下手中的工作,不厌其烦的帮助我不断尝试与更改,给与我学术上的指导与心理安慰,感谢老师的帮助才使我顺利完成本次设计。

在这里要,我还要感谢大学四年里在学业上对我尽心帮助的所有老师们,是你们四年里孜孜不倦,传道受业解惑,成就了我今天取得的成绩。感谢陪伴我一路走来的同学们,是你们的帮助与包容,让我倍感温暖。

最后,衷心感谢母校沈阳城市学院,让我第一次身在异乡却感受到了家的温暖,班主任、导师、园区老师,在我的思想、学业、生活每个方面都做到了无微不至的关怀,受"三自教育"的鼓舞让我能够更加优秀、独立。还有母校带给我们的自信,"我行我能"会是我们作为一名"绿岛"学子一生的骄傲,千言万语汇成一句肺腑之言---"我爱绿岛"。

相关推荐
小曲程序1 分钟前
vue3 封装request请求
java·前端·typescript·vue
陈王卜19 分钟前
django+boostrap实现发布博客权限控制
java·前端·django
小码的头发丝、19 分钟前
Spring Boot 注解
java·spring boot
java亮小白199724 分钟前
Spring循环依赖如何解决的?
java·后端·spring
飞滕人生TYF31 分钟前
java Queue 详解
java·队列
武子康1 小时前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
武子康1 小时前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
苏-言1 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
界面开发小八哥1 小时前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
草莓base1 小时前
【手写一个spring】spring源码的简单实现--容器启动
java·后端·spring