门禁系统设计.docx
《门禁系统设计.docx》由会员分享,可在线阅读,更多相关《门禁系统设计.docx(22页珍藏版)》请在冰豆网上搜索。
门禁系统设计
门禁系统设计
设计内容:
1.门禁系统的硬件设计;
2.门禁系统的软件设计。
设计目标:
1.通过RFID技术,验证射频门禁卡的合法性,控制电子门锁的开启;
2.门禁卡信息进行管理。
系统功能:
1.卡片的使用模式:
采用13.56MHz非接触式物联网射频卡;
2.刷卡开门:
用户进入门禁管制区域时需刷卡,读卡器读取信息后,将信息传输到主机,主机首先判断信息是否合法,如合法则发出开门指令,不合法则发出报警,同时记录用户刷卡事件;
3.管理控制;对控制器的记录进行收集管理,可增加、删除、更新用户信息;
4.记录存储;系统可将门禁控制器运行产生的所有用户刷卡事件、报警时间等进行记录;
5.报警功能:
如发生控制器异常、非法卡开门等事件时系统发出报警信号。
6.
门禁系统设计框图
晶振、复位
电路
读卡器:
读射频卡信息。
按键模块:
注册通行卡。
按下设置键,把工作模式切换到注册模式后,刷卡并显示卡号自动注册。
注册完成后液晶显示注册完成。
再次刷这张IC卡时,就能开门。
注销通行卡(清除存储器的卡号数据)
按下设置键,把工作模式切换到注销模式后,刷卡并显示自动注
销,就把存储里保存的卡号数据清除。
清除数据后,IC卡已经处于
注销状态
一.硬件设计内容(系统硬件电路图设计)
1.各模块选用的硬件介绍
刷卡模块、单片机模块、继电器模块、按键模块以及蜂鸣器模块组成。
其用
高频读卡器模块FM1702能读写荷兰Philips公司的Mifare非接触式射频卡,读卡距离约10cm控制模块采用STC89C52单片机,它具有8K可编程Flash存储器。
单片机与读卡器通信是采用SPI通信。
1.1STC89C52单片机介绍
控制的核心选用STC89C52其主要性能如下:
1.STC89C52单片机与MCS-51单片机产品能够兼容
2.在系统内可编程Flash存储器8K字节
3.擦写周期可达到100000次
4.程序存储器可做到三级加密
5.可编程I/O口线数量达到32个
6.总共有三个16位计数器
7.中断源的数目达到了8个
8.单片机具有全双工UART串行通道
9.不启动是能耗低
10.停电以后中断可复位
(1)功能特性描述
该STC89C5单片机作为低功耗、高性能CMO的8位微控制器,系统可编程Flash存储器拥有8K。
运用Atmel公司独特的高密度难丢失存储器技术制造,与工业上的80C51产品说明可以和引脚完全的兼容。
单片机上Flash做到程序存储器在系统中可以编程,大众化编程器也可进行编程。
在单片机的芯片上,有8位CPU和在系统可编程Flash,做到了STC89C52为众多嵌入式控制应用系统提供高灵活、极为有效的的解决方案。
(2)引脚图如下:
图1.1STC89C52弓I脚图
(3)引脚介绍:
VCC:
接电源
GND接地
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,弓I脚用作高阻抗输入。
当访问外部
程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,pl输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校
验时,P1口接收低8位地址字节。
表1.1P0口第二功能
引脚
第2功能
P1.0
T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5
MOSI(在系统编程用)
P1.6
MISO(在系统编程用)
P1.7
SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DF)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@R)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)
使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
表1.2P3口第二功能
引脚
第2功能
P3.0
RXD(串行口输入端)
P3.1
TXD(串行口输出端)
P3.2
INT0(外部中断0请求输入端,低电平有效)
P3.3
INT1(外部中断1请求输入端,低电平有效)
表1.3P3口第二功能
引脚
第2功能
P3.4
T0
(定时器/计数器0计数脉冲输入端)
P3.5
T1
(定时器/计数器1计数脉冲输入端)
P3.6
WR
(外部数据存储器写选通信号输出端,低电平有效)
P3.7
RD
(外部数据存储器读选通信号输出端,低电平有效)
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/PROG地址锁存控制信号(ALE是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或
时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会
跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN外部程序存储器选通信号(PSEN是外部程序存储器选通信号。
当
AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND为了执行内部程序指令,EA应该接VCC在flash编程期间,EA也接收12伏VPP电压。
XTAL1振荡器反相放大器和内部时钟发生电路的输入端
XTAL2振荡器反相放大器的输出端
1.2FM1702高频读卡器模块介绍
OKIN
:
—竺
9I#V序号
A9
抑抽堆
1
OSCIN
I
曉扱鞘入:
f*££■13.56MW2
2
IFLQ
0
中听祝L输阳中斷■请威信号
3
MHN
1
申畅■入匚ISOU443IfrijZMftMff«号
4
TY1
0
:
&射口「制1邸2卫仇:
im方石佶缶佑号
5
TVDD
PWR.
規妍聃电紜?
£1TX2的幢出能凰
6
TX2
Q
M口佥■出酬■榊幻岳砂血拮号
7
rvss
PWK
S
co
I
1?
制汩号iSt砥甩平
3
Cl
I
姫制怙号:
隹附也平
10
C2
I
捋搁悄号!
艮烏亚平
11
DVES
PWR
ft?
*
12
M1SO
o
士入从曲:
13
SCK
1
E屏擅号
14
MOSI
1
主出从入:
15
NSS
I
橫口选通厭电平市农
16
C3
1
控制拮号:
崔懸髦平
17
QVPD
PWR
18
阳DO
PWR
1^
AUX
O
KKM试価号■曲土・IK■报器试會号,ATestArHOutSel
20
AV5S
PWR
21
RX
1
嶽收口[忒氏外化罠蝇M合」二讯列1乳§百扯1U脚,日廿
22
VMID
PWR
11匙lDOnF.ti.ff
23
R-STPD
1
豐悝丑梓业佰号:
為电平时复惶训認电IS.品掠轉止【fU购■•人
24
OSCDUT
Q
AHih
blip^UAxAuiptLijii1i|rnrn
性能参数:
1、输入电压:
5〜5.5V
2、输入电流:
刷卡电流<25mA
3、通讯方式:
SPI
4、有效刷卡高度:
3-10cm(视天线、卡和周围环境而不同)
5、使用环境:
-25~70摄氏度
6、尺寸:
95.8*54.3(单位:
mm)
1.3Mifare射频卡介绍
本设计中采用的射频卡为Mifare射频卡,其核心是PHILIPS公司的
Mifare1ICS50系列微芯片。
卡片上无源,工作时的电源能量由卡片读写器天线发送无线电载波信号祸合到卡片上天线而产生电能,一般可达2V以上,供卡片上
IC工作。
工作频率13.56MHZ
Mifare的主要指标
容量为8K位EEPROM
分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位每个扇区有独立的一组密码及访问控制每张卡有唯一序列号,为32位具有防冲突机制,支持多卡操作
无电源,自带天线,内含加密控制逻辑和通讯逻辑电路数据保存期为10年,可改写10万次,读无限次工作频率:
13.56MHZ通信速率:
106KBPS
读写距离:
10mm以内(与读写器有关)
(1)卡与读写器的通讯
1复位应答Mifare卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型。
2防冲突机制当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。
3选择卡片选择被选中的卡的序列号,并同时返回卡的容量代码。
4三次互相确认选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。
(在选择另一扇区时,则必须进行另一扇区密码校验。
)
(2)系统的工作方式为:
STC89C52空制FM1702驱动天线对Mifare卡进行读写操作;然后根据所得的数据对其他接口器件,如和上位PC机之间进行通信,把数据传给上位机。
与上位机的通信采用RS485通信模块,通信距离能够达到1200米左右。
整个系统由5V电源供电。
(3)工作原理:
系统数据存储在无源Mifare中。
读写器的主要任务是传输能量给Mifare卡,并建立与之的通信。
单片机控制MFRC500将其接收到的信号通过RS485传送给上位PC机。
然后等待上位机传回的信号,确定是否控制执行器开门,还是报警。
2STC89C52的电路连接
本系统中,STC89C526路连接图如下图2.2所示,采用SPI通信方式进行连接,与FM1702模块芯片的数据总线相连。
P0口的一部分端口线与FM1702SI芯片的控制总线相连,在电源和地之间加上一个排阻,上电如果初始化成功,则提示
可以刷卡,如初始化失败,贝「直停留在初始化界面
图22刷卡模块接口原理图
图2.3STC89C52接线图
3LCD12864液晶显示屏的介绍
LCD12864液晶显示屏是带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128X64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8X4行16X16点阵的汉字.也可完成图形显示•低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
3.1显示屏模块模块连接电路图
图3.4显示屏模块连接图
单片机与显示屏的接口电路部分:
液晶显示屏的数据接口线与单片机的P1
口相连,P0.0,P0.1,P0.2用于使能和控制对液晶屏的读写等操作。
4AT24C02介绍
AT24C02是低电压工作的2K位串行电可擦除制度存储器,内部组织为256
个字节,每个字节8位,该芯片被广泛应用于低电压及低消耗的工商业领域
4.1AT24C02存储模块模块连接电路图
图3.7存储器模块接口原理图
4.2主要特性:
1.工作电压:
1.8V〜5.5V2.输入/输出引脚兼容5V3.应用在内部结构:
128x8(1K),256x8(2K),512x8(4K),1024x8(8K),2048x8(16K)4.二线串行接口
5.输入引脚经施密特触发器滤波抑制噪声6.双向数据传输协议7.兼容
400KHz(1.8V,2.5V,2.7V,3.6V)8.支持硬件写保护9.高可靠性:
读写次数:
1,000,000次
极限额定参数:
引脚定义:
表3.4引脚定义
引脚名称
引脚功能
A0-A2
器件地址输入
SDA
串行数据输入输出
SCL
串行时钟输入
WP
写保护
VCC
电源
GND
地
引脚描述:
串行时钟信号引脚(SCL:
在SCL俞入时钟信号的上升沿将数据送入EEPROM器件,并在时钟的下降沿将数据读出。
串行数据输入/输出引脚(SDA:
引脚可实现双向串行数据传输。
该引脚为
开漏输出,可与其他多个开漏输出器件或开集电极器件线或链接。
器件/页地址脚(A2,A1,AO):
A2,A1和A0引脚为AT24C02的硬件地址输入引脚,在一个总线上最一个总线上最多可寻址八个2K器件,A2,A1和A0必须内部链接。
写保护(WP引脚:
AT24C02具有用于硬件数据写保护功能的引脚。
当该引脚接GND寸,允许正常的读写操作,当该引脚接VCC寸,芯片启动写保护功能
5电子锁控制
电子锁控制采用9012三极管驱动5V继电器,单片机的输出OUT通过9012三极管驱动继电器,继电器的输出直接接继电器线圈的一端,线圈的另一端接
GND继电器的公共点和长开点分别接电子锁的两跟控制线由于电子锁的开关是靠两根控制线是否连通来控制的,当两根控制线接在一起时就开门,反之如果两根控制线断开就锁门。
因此当单片机的输出端输出高电平时三极管倒通,9012的输入端为低电平,由于9012在这电路中起到开关作用,因此9012输出为高电平。
此时继电器线圈上有电流流过,继电器吸合,电子锁的两根控制线接通,电子锁开门。
反之,如果单片机输出高电平三极管不倒通,9012三极管的输出为低电平,因此继电器线圈没电路,继电器不动作,电子锁的控制线保持断开,电子锁锁门。
电路图如下:
6报警电路
报警电路有一个直流蜂鸣器和9012三极管构成,电路图如图所示。
图中
Alarm为单片机的P2.4脚,当需要蜂鸣器报警时只需要将单片机的P2.4管脚置为高电平,三极管倒通,电流从+5V电源经过蜂鸣器和三极管的CE极流向地,蜂鸣器有电流流过则发声报警。
当单片机P2.4管脚为低电平时,三极管截止,没有
图3.9蜂鸣器模块
7射频卡读卡器块的复位电路
射频卡读卡器块的采用了按键复位电路,当系统发生故障,可通过按下复位
按键,系统将复位,让系统重新初始化运行。
8按键模块
射频卡读卡器在系统初始化后进入工作模式,通过按键来切换各种模式。
工作模式按下K1即进入注册模式,再次按下K1进入注册模式,接着按K1循环到工作模式。
9LED显示模块
图3.12LCD显示模块
射频卡读卡器工作模式下刷卡,当PowerLed为低电平D1亮,则表示刷卡成功此卡为合法卡允许进入。
当LED为低电平时D2亮,说明此是所刷的卡编号并未存储在存储器中进入报警状态。
.射频卡读卡器的软件设计
现在单片机编程使用的语言大多为汇编语言和C语言。
运用汇编语言编程的好处是代码生成效率高,程序运行速度快;不足是程序的可读性和可移植性比较差,用汇编语言编写单片机应用系统程序的周期长,调试和排错相当困难。
C语言是一种通用的计算机程序设计语言,它既可用来编写计算机的系统程序,也可用来编写一般的应用程序,用它编写的程序,具有较好的可读性和可移植性。
所以在本设计中运用C语言进行射频卡读卡器程序设计。
1系统流程及主程序介绍
系统工作是按固定顺序执行的,主要流程如图
开始
系统工作流程图
2读卡器
读卡器主程序内用要完成系统初始化,读卡器和高频频FM1702模块的中断
处理程序,以及与PC机通信中断处理程序等操作.
3读卡过程及程序设计介绍
读卡器软件编程来进行对射频卡的一系列操作,主要有:
防冲突程序、卡片的读写程序以及对卡片数据块的操作等。
读卡程序的设计思路是在系统初始化后射频场检测有Mifarel卡进入射频天线的有效范围,读卡程序按顷序启动防冲突程序和认证程序,验证成功后最后操作卡片读写程序。
程序流程图见图所示,下面介绍其中的几个主要过程。
3.1寻卡过程
Mifare1卡是一种以被动方式工作的卡,进入射频区的Mifare1卡上电后进入IDLE状态,它通过吸收感应区内的磁场能量进行工作,不会主动发出信号。
读卡器必须不间断地向外发出请求信号,符合条件的卡只有在接收到请求信号之后才会进行响。
程序中用Mf500ComRe(q)函数不断向外循环发请求信号,检查感应区是否有符合条件的卡,一旦有符合条件的卡进入并被选中,程序退出循环请求过程,进入防冲突过程。
Requeststd指令分为和Requestall两个指令。
Requestal指令的功能是在天线范围内检查所有符合条件的卡,无论是处于IDLE状态还HALT状态的卡,都会响应。
Requeststd指令只对天线范围内处于IDLE状态的卡有效,对HALT状态的卡无效。
考虑到至少有两张卡同时进入感应区的可能,设计中采用Requestall指令,Mf500ComRe(q)函数主要代码及相关注释见附录。
3.2防冲突
所谓防冲突又叫防碰撞、防重叠,就是从多张进入感应区的卡中选出一张来进行操作。
如果只有一张进入感应区,并且已经知道了卡的序列号(SN),则可跳过此步,直接进入选卡命令,若不知道卡的序列号,则必须调用防冲突函数mF500CascAnticoll(),以得到感应区内卡的序列号。
若同时有多张卡在感应区内防冲突函数能够选择其中的一张卡并得到其序列号。
防冲突指令只是获得一张Mifare1卡的序列号,并没有真正选中这张卡。
选中卡应由Select(见下一步)指令完成。
SN为40位长5个字节,实际有意义的只有前4个字节,最后一个字节是SN的异或校验的校验码,在获得SN之后,一般应在程序中对所接收到的SN进行校验,以确保数据的正确性。
mF500CascAnticoll()函数主要代码及相关注释见附录。
3.3选择卡片
选择卡片就是根据已知的序列号读出卡的容量编码(一字节)。
只有经过这一步骤后才算真正选中了一张卡,以后的操作都对这张卡进行。
选择卡片指令是很重要的,而且必须首先被使用,因为卡片只有先被选中了,然后才能进行读、写等操作。
选择卡片过程是通过Mf500CascSelect()函数实现的,其主要程序代码及相关注释见附录。
3.4读取卡片
如果完成了前面几个步骤,说明所选卡是本系统的卡,就可以对Mifare卡正常进行读、写了。
读卡函数Mf500Read()从已通过密码验证的扇区中读取一个数据块,共16个字节,其中前面几个字节即为卡号(1个字节表示2位卡号,本系
统卡号长度为10,所以需要前面5个字节。
)Mf500Read()函数主要代码及相关
注释见附录
3.5卡挂起
当对卡中的数据处理完后,程序应使卡处于挂起状态,此时即使卡在感应区域,读卡器也不会再对该卡进行任何操作。
Mf500Halt()函数用来实现卡挂起功能,其主要代码及相关注释见附录。
附实物图