最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

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

业界 admin 2浏览 0评论

摘 要

近些年来在我们的生产生活当中,门禁系统及其产品的使用越来越广泛,为了分析了IC卡门禁技术的发展趋势和IC卡门禁系统技术在门禁系统中的使用特点,以及需要优化的方面,进而进行以基于单片机的IC卡门禁系统工作原理为基础去进行设计和制作。
本论文重点通过对射频技术原理和射频卡来研究智能门禁系统,而主要的研究对象就是这款非接触式的IC卡门禁系统。相对于其它的门禁系统,它有着独特的优势,也使得它的使用最为广泛,它的核心技术是将射频识别技术和IC卡技术相结合,正是通过这种多部分技术相结合的形式,使得它的发展更有前景也更有发展潜力。本篇论文将几种不同的门禁系统进行了比较,选出合适的方案,并结合本系统预期要达到的特点加以改进,最后完成系统设计方案,并且详细的介绍了该门禁系统的硬件组成、软件组成,以及各部分的运行方式和参数。
经过最终测试,本设计达到了预期的设计效果。这套IC卡门禁系统可以高效的识别IC卡模块的读写,磁锁部分也能及时的做出开关指令,并且在IC卡管理上可以进行加入用户卡,删除用户卡,以及键盘密码控制等功能。总体的系统功能均以达到了预期目的。

关键词:单片机;射频识别技术;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开发界面图

原理图

源程序清单
#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(so
1)//读数据
++rxdata;
while(sck1)
continue;
}
return rxdata;
}
//--------同步串行口接收-------
unsigned char rx(void)
{
char i;
if(cp
1)//检测CP脚是否出现低电平
return;
EA=0;//屏蔽中断
for(i=25;–i;)//保证CP的宽度大于时钟宽度
{
if(sck0)
{EA=1;
return;
}
}
while(sck
1)//等待时钟线出现低电平
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(cardok
1)//判断是否有刷卡
{
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(cardok
1)//判断是否有刷卡
{
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();
}


## 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。
![在这里插入图片描述](https://i-blog.csdnimg/direct/08daf15d27c143ddad333e0c62f1a881.png)

图4.1 主体实物图

![在这里插入图片描述](https://i-blog.csdnimg/direct/b34834ba2936437eab2e1b7067e0c5d3.png)

图4.2 电磁锁实物图
![在这里插入图片描述](https://i-blog.csdnimg/direct/542b116364bc46538a36c09eb34ae4db.png)

图4.3 读卡器实物图


## 结 论

经过这一段时间的不懈努力最终完成了对设计论文的编写以及实物的制作。系统硬件的整体设计主要包括:AT89C51为核心的主控电路模块、以LCD1602液晶显示器为显示模块、MIFARE读卡类型的IC卡读卡模块、以及12V供电的电磁锁外设部件所构成的一套完整系统。并且通过模块化的设计将系统拆分成各个功能模块并且逐个攻破,最终完成了系统的硬件设计。而软件方面首先按照主程序的功能要求去分步完成,先将主程序函数设计好之后,分块设计其各部分的功能函数,正因为以模块化的方式去设计,使得整个系统的软件与硬件之间的协议和系统规划功能结构更加简约、稳定、高效。良好的硬件电路,精简的程序使得我们的设计实物功能得以全部实现。
相对与其他磁卡锁系统如:生物虹膜门禁系统、指纹门禁系统、以及更为高级的面部识别系统相比,它们的使用范围不同,经济价格不同,方便程度也各不相同。IC卡门禁系统有着独特的自身优势,其价格更为经济,应用范围更加宽泛,可以满足大多数用户的使用。除此之外就是IC卡门禁系统的独有特性了,它可以通过较为简单的电路,通过对读卡器进行简单的设计,就可以满足更多复杂条件或多变环境下的场合工作。
通过本次设计项目,也让我对我们专业的内容有了更深入的了解,无论是Keil5的主程序设计、还是硬件上的读卡器设计、显示器模块的设计、控制电路的组装焊接、以及其结构组成都有了更深层次的了解。IC卡门禁系统的迅猛发展会随着我们的科技发展不断的发展,未来会增加更多方便、实用、安全的功能。并且在使用范围也会更加广泛,比如在住户、银行、公司企业和智能大厦等部门都可能会被广泛应用,甚至发展到其他经济发展较为落后的国家,总而言之科技的发展必将带来技术上的进步,IC卡门禁系统的未来发展必将呈现出势如破竹之势。









摘 要

近些年来在我们的生产生活当中,门禁系统及其产品的使用越来越广泛,为了分析了IC卡门禁技术的发展趋势和IC卡门禁系统技术在门禁系统中的使用特点,以及需要优化的方面,进而进行以基于单片机的IC卡门禁系统工作原理为基础去进行设计和制作。
本论文重点通过对射频技术原理和射频卡来研究智能门禁系统,而主要的研究对象就是这款非接触式的IC卡门禁系统。相对于其它的门禁系统,它有着独特的优势,也使得它的使用最为广泛,它的核心技术是将射频识别技术和IC卡技术相结合,正是通过这种多部分技术相结合的形式,使得它的发展更有前景也更有发展潜力。本篇论文将几种不同的门禁系统进行了比较,选出合适的方案,并结合本系统预期要达到的特点加以改进,最后完成系统设计方案,并且详细的介绍了该门禁系统的硬件组成、软件组成,以及各部分的运行方式和参数。
经过最终测试,本设计达到了预期的设计效果。这套IC卡门禁系统可以高效的识别IC卡模块的读写,磁锁部分也能及时的做出开关指令,并且在IC卡管理上可以进行加入用户卡,删除用户卡,以及键盘密码控制等功能。总体的系统功能均以达到了预期目的。

关键词:单片机;射频识别技术;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开发界面图

原理图

源程序清单
#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(so
1)//读数据
++rxdata;
while(sck1)
continue;
}
return rxdata;
}
//--------同步串行口接收-------
unsigned char rx(void)
{
char i;
if(cp
1)//检测CP脚是否出现低电平
return;
EA=0;//屏蔽中断
for(i=25;–i;)//保证CP的宽度大于时钟宽度
{
if(sck0)
{EA=1;
return;
}
}
while(sck
1)//等待时钟线出现低电平
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(cardok
1)//判断是否有刷卡
{
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(cardok
1)//判断是否有刷卡
{
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();
}


## 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。
![在这里插入图片描述](https://i-blog.csdnimg/direct/08daf15d27c143ddad333e0c62f1a881.png)

图4.1 主体实物图

![在这里插入图片描述](https://i-blog.csdnimg/direct/b34834ba2936437eab2e1b7067e0c5d3.png)

图4.2 电磁锁实物图
![在这里插入图片描述](https://i-blog.csdnimg/direct/542b116364bc46538a36c09eb34ae4db.png)

图4.3 读卡器实物图


## 结 论

经过这一段时间的不懈努力最终完成了对设计论文的编写以及实物的制作。系统硬件的整体设计主要包括:AT89C51为核心的主控电路模块、以LCD1602液晶显示器为显示模块、MIFARE读卡类型的IC卡读卡模块、以及12V供电的电磁锁外设部件所构成的一套完整系统。并且通过模块化的设计将系统拆分成各个功能模块并且逐个攻破,最终完成了系统的硬件设计。而软件方面首先按照主程序的功能要求去分步完成,先将主程序函数设计好之后,分块设计其各部分的功能函数,正因为以模块化的方式去设计,使得整个系统的软件与硬件之间的协议和系统规划功能结构更加简约、稳定、高效。良好的硬件电路,精简的程序使得我们的设计实物功能得以全部实现。
相对与其他磁卡锁系统如:生物虹膜门禁系统、指纹门禁系统、以及更为高级的面部识别系统相比,它们的使用范围不同,经济价格不同,方便程度也各不相同。IC卡门禁系统有着独特的自身优势,其价格更为经济,应用范围更加宽泛,可以满足大多数用户的使用。除此之外就是IC卡门禁系统的独有特性了,它可以通过较为简单的电路,通过对读卡器进行简单的设计,就可以满足更多复杂条件或多变环境下的场合工作。
通过本次设计项目,也让我对我们专业的内容有了更深入的了解,无论是Keil5的主程序设计、还是硬件上的读卡器设计、显示器模块的设计、控制电路的组装焊接、以及其结构组成都有了更深层次的了解。IC卡门禁系统的迅猛发展会随着我们的科技发展不断的发展,未来会增加更多方便、实用、安全的功能。并且在使用范围也会更加广泛,比如在住户、银行、公司企业和智能大厦等部门都可能会被广泛应用,甚至发展到其他经济发展较为落后的国家,总而言之科技的发展必将带来技术上的进步,IC卡门禁系统的未来发展必将呈现出势如破竹之势。









发布评论

评论列表 (0)

  1. 暂无评论