项目训练三门禁系统.docx
《项目训练三门禁系统.docx》由会员分享,可在线阅读,更多相关《项目训练三门禁系统.docx(36页珍藏版)》请在冰豆网上搜索。
项目训练三门禁系统
项目训练三门禁系统
一、目的要求
1.掌握门禁系统的概念。
2.掌握非接触式IC卡门禁系统的组成。
3.通过门禁系统的训练,掌握串行静态显示的方法。
4.掌握卡号显示方法。
5.进一步掌握单片机的使用技巧和方法。
二、任务目标
利用单片机AT89S52构成一非接触式IC卡门禁系统,要求实现如下功能:
1.程序控制开锁
当读卡器检索到合法IC卡时,由CPU提供一个低电平信号,因为,AT89S52单片机复位是高电平有效,并且实际电路必须有看门狗电路,一旦出现故障,也需高电平复位,因此,采用低电平作为控制门的开有效信号。
2.出门按钮开锁
按钮按下,给出一个开关信号,此时门锁同样被打开。
3.从消防安全考虑,如果发生意外或危险,只要断开电源,门锁同样可以被打开。
4.读卡显示
当读卡器检索到合法射频卡时,七段数码管可以显示出此卡的卡号,以便识别出持卡人身份。
5.蜂鸣器报警
当门锁处于开启状态时,超过延时时间,蜂鸣器发出蜂鸣,以提示用户及时关门。
6.工作指示灯
红色指示灯提示电源正常供电。
绿色指示灯提示门锁工作状态,刷卡合法,绿色指示灯亮。
三、工具器材
直流电源5V/500、门禁系统套件、编程器、PC机等。
四、预备知识
随着科学的进步、社会的发展,人们对生活质量有了更高的要求,对安全防范有了更多的需求,如何有效地控制人员的出入成了一个新的课题。
为此应运而生的门禁控制系统在众多安防产品中脱颖而出。
门禁系统顾名思义,就是对出入口通道进行管制的系统,是一种管理人员进出的数字化管理系统。
门禁系统由门禁控制器、门禁读卡器、卡片、电控锁以及相应的软件、电源和其他相关门禁设备等组成。
目前非接触式IC卡门禁系统应用广泛。
本训练项目将以天大银河科技有限公司研制的门禁系统为载体,重点讲解门禁系统的控制核心——AT89S52单片机。
(一)非接触式IC卡门禁系统框图
非接触式IC卡门禁系统包括读写器、中央控制电脑的软件管理系统、中央控制电脑与读写器之间的数据传输三部分。
其中读写器是核心,包括MCU、复位电路、时钟电路、报警及工作指示电路、显示电路、键盘、数据存储等主控模块及非接触式IC卡读写模块和电锁驱动部分。
非接触式IC卡门禁系统框图如图P3.1所示。
门禁系统采用AT89S52单片机作为控制核心,采用射频卡完成刷卡进门,按钮出门功能。
其工作流程见图P3.2所示。
(二)门禁系统中单片机口的资源分配
为实现门禁系统的功能,需读卡:
2条线(P1.1,INT1);键盘:
3条线(P1.5,P1.6,P1.7);门控:
6条线(上锁,门态,出门开关,音量,灯);存储:
3条线(P2.0,P2.1,P2.2);通讯:
5条线(RXD,TXD,P1.2,P1.3,INT0);显示:
2条线(P1.0,P1.4)。
表P1.1门禁系统I/O口资源分配
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
键
键
显示键
申请
通讯
通讯
读卡
显示
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
出门按钮
蜂鸣器
指示灯
门态
上锁
SCL
SDA
“0”有效
“0”响
“1”亮
“1”上锁
24C64
其中,存储芯片选用24C64,通信芯片选用75176。
P1.2控制通讯芯片75176,“0”:
收、“1”:
发;P1.3控制通讯申请信号,“0”:
申请、“1”:
不申请;INT0控制通信的AB线,B2=0时接通、B2=1时断开。
单片机口资源的具体分配见表P1.1。
(三)各部分电路原理分析
非接触式IC卡门禁机工作过程为当刷卡时,蜂鸣器响一下,如卡权限获得允许,显示模块显示卡号,同时继电器动作将门锁打开,指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭,指示灯熄灭;当按下出门按钮时,继电器动作将门锁打开,指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭,指示灯熄灭。
当遇到非法卡时,该系统不显示卡号,门锁不开。
原理电路如图P3.2所示。
1.门控锁电路
门控锁电路如图P3.3所示。
偏置电阻R3与三级管Q16、Q6构成复合驱动电路以提高驱动能力,控制锁的开与闭。
当P2.3为高电平时Q16导通,Q6截止,此时继电器的控制线圈为开路,继电器不动作。
门锁接于继电器常闭端,门锁闭合,门处于锁死状态。
当P2.3口输出低电平时Q16截止,Q6导通,此时继电器的控制线圈闭合,继电器动作。
继电器常闭端断开,门锁打开,门处于打开状态。
2.蜂鸣器电路
蜂鸣器电路由蜂鸣器、三极管Q1、Q2及电阻R2组成。
电路如图P3.4所示。
当P2.6输出高电平时,Q1导通,Q2截止,蜂鸣器回路开路,蜂鸣器不响。
当P1.2输出高电平时,Q1截止,Q2导通,蜂鸣器回路闭合,蜂鸣器发出响声。
3.串行口在门禁系统中的应用
门禁系统读卡采用串口中断方式。
a)非接触式射频卡的基本原理
每个卡片内都有一个小芯片和感应线圈。
价格低廉、国内最普及的EMID卡,大都为瑞士nEM或台湾GK公司的4100、4102系列IC芯片+线圈+卡基封装而成。
每张卡有且只有一个唯一的、不可更改和复制的ID内码(64位2进制加密的永不重复的卡号),因其安全可靠、价格低廉而大量应用于身份识别、产品防伪等领域。
b)非接触式IC卡系统的构成与特点
非接触式IC卡(也称为“应答器”)是射频识别系统的电子数据载体,卡中嵌有耦合元件和微电子芯片。
在读写器的响应范围之外,非接触式IC卡处于无源状态。
通常,非接触式IC卡没有自己的供电电源(电池),只是在读写器响应范围之内,卡才是有源的,卡所需要的能量以及时钟脉冲、数据,都是通过耦合单元的电磁耦合作用传输给卡的。
c)非接触式IC卡读写器
典型的非接触式IC卡读写器(也称为“阅读器”)包含有高频模块(发送器和接收器)、控制单元以及与卡连接的耦合元件。
由高频模块和耦合元件发送电磁场,以提供非接触式IC卡所需要的工作能量以及发送数据给卡,同时接收来自卡的数据。
d)常见的卡号输出格式说明
ID卡最常见到的五种读卡方式的卡号定义如下(其中H指十六进制Hex,D指十进制Dex):
(1)格式1
10位十六进制的ASCII字符串,即10位十六进制格式。
如:
某样卡读出十六进制卡号为“01026f6c3a”。
格式
(1)是读卡器输出的最基本格式,其它几种格式都是基于这种格式转换而成的。
(2)格式2
将格式1中的后8位,转换为10位十进制卡号,即8H—10D格式,如将“026f6c3a”转换为“0040856634”。
(3)格式3
将格式1中的后6位,转换为8位十进制卡号,即6H—8D格式。
如将“6f6c3a”转换为“07302202”。
(4)格式4
将格式1中的倒数第5、第6位,转换为3位十进制卡号,再将后4位,转换为5位十进制卡号,中间用“,”分开,即“2H+4H”格式。
如将2H—“6f”转换为“111”,4H—“6c3a”转为“27706”。
最终将2段号连在一起输出为“111,27706”。
(5)格式5
将格式1中后8位的前4位,转换为5位十进制卡号,再将后4位,转换为5位十进制卡号,中间用“,”分开,即“4H+4H”。
照此转换结果为:
00623,27706
本教材中的门禁系统使用的卡格式是格式4。
e)RS232卡号输出协议
串行输出格式如下:
02
10ASCIIDataCharacters
Checksum
03
(a)9600bps,N,8,1
即波特率9600bPS;数据位元:
8bits;停止位元:
1。
(b)PIN5:
TX非反相输出。
(c)PIN6:
TX反相输出。
(d)卡片号码为62E3086CED,传送的HEX值如下
10ASCIIDATA:
36H,32H45H,33H30H,38H36H,43H45H,44H
(62HE3H08H6CHEDH)
CHECKSUM:
(62H)XOR(E3H)XOR(08H)XOR(6CH)XOR(EDH)=08H
Checksum为二进制格式数据。
故MTP-K4射频模块输出的完整的二进制文档如下所示:
02363245333038364345440803
f)串行口程序分析
读卡是随机的,不确定的,并且软件开销大,会降低响应速度,因此不能采用查询方式。
故门禁系统的读卡采用串口中断方式,随时读卡,随时响应。
晶振必须是11.0592MHz。
(1)读卡单元
图P3.5读卡单元连接图
门禁系统采用EM9913BFID射频卡读卡器。
电路如图P3.5所示。
读卡模块将数据按RS232和Wiegand26格式输出。
EM9913BF各引脚功能见表P2.2。
表P2.2EM9913BF各引脚功能
引脚号
引脚名称
I/O
说明
1
DC5V
输入
+5V直流输入
2
ANT
输入
线圈引脚输入
3
NC
空引脚
4
GND
输入
接地
5
NC
空引脚
6
ENLED
输入
指示灯控制线,低电平使用
7
ENBEEP
输入
蜂鸣器控制线,低电平使用
8
OK_SD
输出
Wiegand26数据输出指示
9
BZ
输出
蜂鸣器信号线
10
D0
输出
Wiegand26数据DATA0输出
11
D1
输出
Wiegand26数据DATA1输出
12
LED
输出
指示灯信号输出
13
TXD
输出
RS232数据输出
(2)波特率初值计算
晶振为11.0592MHz,串行接口工作于方式1,波特率为9600b/s。
公式:
代入已知条件,计算出初值为FDH。
(3)串口中断初始化程序
SIC:
ANLTMOD,#0FH;串口始化子程序
ORLTMOD,#20H
MOVTH1,#0FDH
MOVTL1,#0FDH
SETBTR1
MOVIE,#90H
MOVSCON,#50H;方式1十位异步收发
RET
(4)串口中断子程序,该程序中加入不死机程序
ZD:
PUSHACC;中断子程序
PUSH00H
PUSH02H
MOVR0,#30H;首地址
MOVR2,#0BH;11个字节的ASCII
LL1:
ACALLLL2
JBF0,LL3
NOP
NOP
MOV@R0,A
INCR0
DJNZR2,LL1
POP02H
POP00H
POPACC
NOP
MOV0FH,#33H
RETI
LL2:
MOV04H,#28H
LL4:
JNBRI,LL6
CLRRI
MOVA,SBUF
CLRF0
RET
LL6:
MOV05H,#0AH
LL5:
DJNZR5,LL5
DJNZR4,LL4
SETBF0
RET
LL3:
POP02H
POP00H
POPACC
RETI
END
4.显示电路
在门禁系统中,显示串行静态显示方式。
采用74LS164作为静态显示器接口,P1.0作为时钟,P1.4作为显示数据输入。
如图P3.6所示。
图P3.6门禁系统中的串行显示电路
g)显示程序
(1)直接显示段码程序。
将20H—27H中的段码从左到右显示出来。
ORG0000H
LJMPMAIN
MAIN:
MOVSP,#60H
MOV20H,#06H
MOV21H,#5BH
MOV22H,#4FH
MOV23H,#66H
MOV24H,#6DH
MOV25H,#7DH
MOV26H,#07H
MOV27H,#7FH
LCALLST
SJMP$
ST:
MOVR0,#20H
MOVR2,#08H
LP1:
MOVR1,#08H
MOVA,@R0
LP2:
RLCA
MOVP1.4,C
CLRP1.0
SETBP1.0
DJNZR1,LP2
INCR0
DJNZR2,LP1
RET
END
(2)把10H开始代码变成段码放到20H开始的单元中。
方法一:
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
MOV10H,#01H
MOV11H,#02H
MOV12H,#03H
MOV13H,#04H
MOV14H,#05H
MOV15H,#06H
MOV16H,#07H
MOV17H,#08H
LCALLXIANSHI
LCALLST
SJMP$
XIANSHI:
MOVR2,#08H
MOVR0,#10H
MOVR1,#20H
LP3:
MOVA,@R0
ADDA,#06H
MOVCA,@A+PC
MOV@R1,A
INCR0
INCR1
DJNZR2,LP3
RET
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H00H
ST:
MOVR0,#20H
MOVR2,#08H
LP1:
MOVR1,#08H
MOVA,@R0
LP2:
RLCA
MOVP1.4,C
CLRP1.0
SETBP1.0
DJNZR1,LP2
INCR0
DJNZR2,LP1
RET
END
方法二:
ORG0000H
LJMPMAIN
MAIN:
MOVSP,#60H
PORTEQU0155H
LCALLST
SJMP$
XIANSHI:
MOVR2,#08H
MOVR0,#10H
MOVR1,#20H
MOVDPTR,#PORT
LP3:
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR0
INCR1
DJNZR2,LP3
RET
ST:
MOVR0,#20H
MOVR2,#08H
LP1:
MOVR1,#08H
MOVA,@R0
LP2:
RLCA
MOVP1.4,C
CLRP1.0
SETBP1.0
DJNZR1,LP2
INCR0
DJNZR2,LP1
RET
PORT3FH,06H,5BH,4FH,66H,6DH,7DH,07H
7FH,6FH,77H,7CH,39H,5EH,79H,71H00H
END
(3)将压缩码变非压缩码显示出来。
ORG0100H
MAIN:
MOVSP,#60H
MOV10H,#39H
MOV11H,#41H
MOV12H,#42H
MOV13H,#43H
MOV14H,#44H
MOV15H,#45H
MOV16H,#46H
MOV17H,#38H
LCALLASC
LCALLXIANSHI
LCALLST
SJMP$
ASC:
MOVR2,#08H
MOVR0,#10H
MOVR1,#20H
LP4:
MOVA,@R0
ANLA,#0FH
MOV@R1,A
INCR1
MOVA,@R0
SWAPA
ANLA,#0FH
MOV@R1,A
INCR0
INCR1
DJNZR2,Lp4
RET
XIANSHI:
MOVR2,#08H
MOVR0,#10H
MOVR1,#20H
LP3:
MOVA,@R0
ADDA,#06H
MOVCA,@A+PC
MOV@R1,A
INCR0
INCR1
DJNZR2,LP3
RET
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H00H
ST:
MOVR0,#20H
MOVR2,#08H
LP1:
MOVR1,#08H
MOVA,@R0
LP2:
RLCA
MOVP1.4,C
CLRP1.0
SETBP1.0
DJNZR1,LP2
INCR0
DJNZR2,LP1
RET
END
h)卡号显示
ID卡读出11个字节的ASCII,要显示卡号,需进行数值转换。
(1)ID卡读出的11个字节ASCII码放在以30H开始的单元,先将ASCII码转换成16进制数,因第一个字节是包装头,不参与转换。
其程序如下:
LE:
MOVR0,#30H;ASCⅡ转16进制数子程序
MOVR2,#0AH;10个字节
LE4:
MOVA,@R0
ACALLLE1
MOV@R0,A
INCR0
DJNZR2,LE4
RET
LE1:
CJNEA,#40H,L13
SJMPLE3
L13:
JCLE2
ADDA,#09H
LE2:
ANLA,#0FH
CLRC
RET
LE3:
SETBC
RET
(2)把上面转换的10个16进制数,变成5个压缩的16进制数,30H放最高位,34H放最低位。
LB:
MOVA,30H;装配压缩16进制数子程序
SWAPA
ADDA,31H
MOV30H,A
MOVA,32H
SWAPA
ADDA,33H
MOV31H,A
NOP
NOP
MOVA,34H
SWAPA
ADDA,35H
MOV32H,A
MOVA,36H
SWAPA
ADDA,37H
MOV33H,A
NOP
NOP
MOVA,38H
SWAPA
ADDA,39H
MOV34H,A
RET
(3)上面程序中,30H到35H字节是先高后低,而后面调用子程序,需要先低后高,所以,先要把33H单元中的内容送到35H单元中,即把34H,35H里2个压缩的16进制数变成3个字节的压缩的10进制数。
LD:
MOV35H,33H;压缩16进制数转非压缩10进制子程序
MOVR0,#34H
MOVR7,#02H
MOVR1,#28H
LCALLLD1
RET
LD1:
MOVA,R0
MOVR5,A
MOVA,R1
MOVR6,A
MOVA,R7
INCA
MOVR3,A
CLRA
LD2:
MOV@R1,A
INCR1
DJNZR3,LD2
MOVA,R7
MOVB,#08H
MULAB
MOVR3,A
LD3:
MOVA,R5
MOVR0,A
MOVA,R7
MOVR2,A
CLRC
LD4:
MOVA,@R0
RLCA
MOV@R0,A
INCR0
DJNZR2,LD4
MOVA,R6
MOVR1,A
MOVA,R7
MOVR2,A
INCR2
LD5:
MOVA,@R1
ADDCA,@R1
DAA
MOV@R1,A
INCR1
DJNZR2,LD5
DJNZR3,LD3
RET
(4)再把压缩的10进制数变成非压缩的10进制数,即变成代码,为显示卡号做准备
L11:
MOVR1,#10H
MOVR2,#03H
MOVR0,#28H
L12:
MOVA,@R0
ANLA,#0FH
MOV@R1,A
INCR1
MOVA,@R0
SWAPA
ANLA,#0FH
MOV@R1,A
INCR0
INCR1
DJNZR2,L12
RET
(5)把代码变成段码。
LF:
MOVR2,#08H;代码--段码
MOVR0,#10H
MOVR1,#20H
LF1:
MOVA,@R0
ADDA,#06H
MOVCA,@A+PC
MOV@R1,A
INCR0
INCR1
DJNZR2,LF1
RET
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
DB00H,40H,73H,03H,18H,23H,1CH,3DH,76H,0FH,1EH,38H
(6)调显示子程序,采用串显方法,节省资源。
XSH:
MOVR0,#20H;显示子程序
MOVR2,#08H
LP1:
MOVR1,#08H
MOVA,@R0
LP2:
RLCA
MOVP1.4,C
CLRP1.0
SETBP1.0
DJNZR1,LP2
INCR0
DJNZR2,LP1
RET
5.非接触式IC卡门禁机电路
如图P3.7所示。
图P3.7非接触式IC卡门禁机电路原理图
(四)非接触式IC卡门禁系统参考程序
门禁系统程序主要包括读卡、数制转换、显示、合法卡比较、开锁、中断子程序、延时子程序等模块。
1.显示子程序模块
图P3.8为显示子程序流程图。
显示子程序:
XSH:
MOVR0,#20H
MOVR2,#08H
LP1:
MOVR1,#08H
MOVA,@R0
LP2:
RLCA
MOVP1.4,C
CLRP1.0
SETBP1.0
DJNZR1,LP2
INCR0
DJNZR2,LP1
RET
2.门禁系统程序
图P3.9为门禁系统程序流程图。
图P3.8显示子程序流程图
门禁系统程序清单:
ORG0000H
LJMPMAIN
ORG0023H
LJMPZD
ORG0300H
MAIN:
MOVSP,#60H
CLRP2.5;关指示灯
LCALLBEING;调显“H”子程序
M1:
LCALLSIC;调串口始化子程序
L03:
MOVA,0FH;判卡
CJNEA,#33H,L03
MOV0FH,#00H
MOV17H,#10H
ACALLL04E0;ASCⅡ转16进制数子程序
ACALLL04B0;调装配压缩16进制数子程序
ACALLL1234;调压缩16转非压缩10进制子程序
ACALLL11