1、项目管理项目训练三门禁系统 (项目管理)项目训练三门禁系统项目训练三门禁系统一、目的要求1掌握门禁系统的概念。2掌握非接触式IC卡门禁系统的组成。3通过门禁系统的训练,掌握串行静态显示的方法。4掌握卡号显示方法。5进一步掌握单片机的使用技巧和方法。二、任务目标利用单片机AT89S52构成一非接触式IC卡门禁系统,要求实现如下功能:1程序控制开锁当读卡器检索到合法IC卡时,由CPU提供一个低电平信号,因为,AT89S52单片机复位是高电平有效,并且实际电路必须有看门狗电路,一旦出现故障,也需高电平复位,因此,采用低电平作为控制门的开有效信号。2出门按钮开锁按钮按下,给出一个开关信号,此时门锁同样
2、被打开。3从消防安全考虑,如果发生意外或危险,只要断开电源,门锁同样可以被打开。4读卡显示当读卡器检索到合法射频卡时,七段数码管可以显示出此卡的卡号,以便识别出持卡人身份。5蜂鸣器报警当门锁处于开启状态时,超过延时时间,蜂鸣器发出蜂鸣,以提示用户及时关门。6工作指示灯红色指示灯提示电源正常供电。绿色指示灯提示门锁工作状态,刷卡合法,绿色指示灯亮。三、工具器材直流电源5V/500、门禁系统套件、编程器、PC机等。四、预备知识随着科学的进步、社会的发展,人们对生活质量有了更高的要求,对安全防范有了更多的需求,如何有效地控制人员的出入成了一个新的课题。为此应运而生的门禁控制系统在众多安防产品中脱颖而
3、出。门禁系统顾名思义,就是对出入口通道进行管制的系统,是一种管理人员进出的数字化管理系统。门禁系统由门禁控制器、门禁读卡器、卡片、电控锁以及相应的软件、电源和其他相关门禁设备等组成。目前非接触式IC卡门禁系统应用广泛。本训练项目将以天大银河科技有限公司研制的门禁系统为载体,重点讲解门禁系统的控制核心AT89S52单片机。(一)非接触式IC卡门禁系统框图非接触式IC卡门禁系统包括读写器、中央控制电脑的软件管理系统、中央控制电脑与读写器之间的数据传输三部分。其中读写器是核心,包括MCU、复位电路、时钟电路、报警及工作指示电路、显示电路、键盘、数据存储等主控模块及非接触式IC卡读写模块和电锁驱动部分
4、。非接触式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.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0键键显示键申
5、请通讯通讯读卡显示P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0出门按钮蜂鸣器指示灯门态上锁SCLSDA“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卡门禁机工作过程为当刷卡时,蜂鸣器响一下,如卡权限获得允许,显示模块显示卡号,同时继电器动作将门锁打开,指示灯点亮,延时一段时间后继电器
6、再次动作将门锁锁闭,指示灯熄灭;当按下出门按钮时,继电器动作将门锁打开,指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭,指示灯熄灭。当遇到非法卡时,该系统不显示卡号,门锁不开。原理电路如图P3.2所示。1门控锁电路门控锁电路如图P3.3所示。偏置电阻R3与三级管Q16、Q6构成复合驱动电路以提高驱动能力,控制锁的开与闭。当P2.3为高电平时Q16导通,Q6截止,此时继电器的控制线圈为开路,继电器不动作。门锁接于继电器常闭端,门锁闭合,门处于锁死状态。当P2.3口输出低电平时Q16截止,Q6导通,此时继电器的控制线圈闭合,继电器动作。继电器常闭端断开,门锁打开,门处于打开状态。2蜂鸣器电路蜂
7、鸣器电路由蜂鸣器、三极管Q1、Q2及电阻R2组成。电路如图P3.4所示。当P2.6输出高电平时,Q1导通,Q2截止,蜂鸣器回路开路,蜂鸣器不响。当P1.2输出高电平时,Q1截止,Q2导通,蜂鸣器回路闭合,蜂鸣器发出响声。3串行口在门禁系统中的应用门禁系统读卡采用串口中断方式。a) 非接触式射频卡的基本原理每个卡片内都有一个小芯片和感应线圈。价格低廉、国内最普及的EMID卡,大都为瑞士nEM或台湾GK公司的4100、4102系列IC芯片线圈卡基封装而成。每张卡有且只有一个唯一的、不可更改和复制的ID内码(64位2进制加密的永不重复的卡号),因其安全可靠、价格低廉而大量应用于身份识别、产品防伪等领
8、域。b) 非接触式IC卡系统的构成与特点非接触式IC卡(也称为“应答器”)是射频识别系统的电子数据载体,卡中嵌有耦合元件和微电子芯片。在读写器的响应范围之外,非接触式IC卡处于无源状态。通常,非接触式IC卡没有自己的供电电源(电池),只是在读写器响应范围之内,卡才是有源的,卡所需要的能量以及时钟脉冲、数据,都是通过耦合单元的电磁耦合作用传输给卡的。c) 非接触式IC卡读写器典型的非接触式IC卡读写器(也称为“阅读器”)包含有高频模块(发送器和接收器)、控制单元以及与卡连接的耦合元件。由高频模块和耦合元件发送电磁场,以提供非接触式IC卡所需要的工作能量以及发送数据给卡,同时接收来自卡的数据。d)
9、 常见的卡号输出格式说明ID卡最常见到的五种读卡方式的卡号定义如下(其中H指十六进制Hex,D指十进制Dex):(1)格式110位十六进制的ASCII字符串,即10位十六进制格式。如:某样卡读出十六进制卡号为“01026f6c3a”。格式(1)是读卡器输出的最基本格式,其它几种格式都是基于这种格式转换而成的。(2)格式2将格式1中的后8位,转换为10位十进制卡号,即8H10D格式,如将“026f6c3a”转换为“634”。(3)格式3将格式1中的后6位,转换为8位十进制卡号,即6H8D格式。如将“6f6c3a”转换为“2”。(4)格式4将格式1中的倒数第5、第6位,转换为3位十进制卡号,再将后
10、4位,转换为5位十进制卡号,中间用“,”分开,即“2H4H”格式。如将2H“6f”转换为“111”,4H“6c3a”转为“27706”。最终将2段号连在一起输出为“111,27706”。(5)格式5将格式1中后8位的前4位,转换为5位十进制卡号,再将后4位,转换为5位十进制卡号,中间用“,”分开,即“4H4H”。照此转换结果为:00623,27706本教材中的门禁系统使用的卡格式是格式4。e) RS232卡号输出协议串行输出格式如下:0210ASCIIDataCharactersChecksum03(a)9600bps,N,8,1即波特率9600bPS;数据位元:8bits;停止位元:1。(b
11、)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)=08HChecksum为二进制格式数据。故MTP-K4射频模块输出的完整的二进制文档如下所示:f) 串行口程序分析读卡是随机的,不确定的,并且软件开销大,会降低响应速度,因此不能采用查询方式。故门禁系统的读卡采用串口中断方式,随时读卡,随时响应。晶振必须是11.0
12、592MHz。(1)读卡单元门禁系统采用EM9913BFID射频卡读卡器。电路如图P3.5所示。读卡模块将数据按RS232和Wiegand26格式输出。EM9913BF各引脚功能见表P2.2。表P2.2EM9913BF各引脚功能引脚号引脚名称I/O说明1DC5V输入+5V直流输入2ANT输入线圈引脚输入3NC空引脚4GND输入接地5NC空引脚6ENLED输入指示灯控制线,低电平使用7ENBEEP输入蜂鸣器控制线,低电平使用8OK_SD输出Wiegand26数据输出指示9BZ输出蜂鸣器信号线10D0输出Wiegand26数据DATA0输出11D1输出Wiegand26数据DATA1输出12LED
13、输出指示灯信号输出13TXD输出RS232数据输出(2)波特率初值计算晶振为11.0592MHz,串行接口工作于方式1,波特率为9600bs。公式:代入已知条件,计算出初值为FDH。(3)串口中断初始化程序SIC:ANLTMOD,#0FH;串口始化子程序ORLTMOD,#20HMOVTH1,#0FDHMOVTL1,#0FDHSETBTR1MOVIE,#90HMOVSCON,#50H;方式1十位异步收发RET(4)串口中断子程序,该程序中加入不死机程序ZD:PUSHACC;中断子程序PUSH00HPUSH02HMOVR0,#30H;首地址MOVR2,#0BH;11个字节的ASCIILL1:ACA
14、LLLL2JBF0,LL3NOPNOP,AINCR0DJNZR2,LL1POP02HPOP00HPOPACCNOPMOV0FH,#33HRETILL2:MOV04H,#28HLL4:JNBRI,LL6CLRRIMOVA,SBUFCLRF0RETLL6:MOV05H,#0AHLL5:DJNZR5,LL5DJNZR4,LL4SETBF0RETLL3:POP02HPOP00HPOPACCRETIEND4显示电路在门禁系统中,显示串行静态显示方式。采用74LS164作为静态显示器接口,P1.0作为时钟,P1.4作为显示数据输入。如图P3.6所示。图P3.6门禁系统中的串行显示电路g) 显示程序(1)
15、直接显示段码程序。将20H27H中的段码从左到右显示出来。ORG0000HLJMPMAINMAIN:MOVSP,#60HMOV20H,#06HMOV21H,#5BHMOV22H,#4FHMOV23H,#66HMOV24H,#6DHMOV25H,#7DHMOV26H,#07HMOV27H,#7FHLCALLSTSJMP$ST:MOVR0,#20HMOVR2,#08HLP1:MOVR1,#08HMOVA,R0LP2:RLCAMOVP1.4,CCLRP1.0SETBP1.0DJNZR1,LP2INCR0DJNZR2,LP1RETEND(2)把10H开始代码变成段码放到20H开始的单元中。方法一:OR
16、G0000HLJMPMAINORG0100HMAIN:MOVSP,#60HMOV10H,#01HMOV11H,#02HMOV12H,#03HMOV13H,#04HMOV14H,#05HMOV15H,#06HMOV16H,#07HMOV17H,#08HLCALLXIANSHILCALLSTSJMP$XIANSHI:MOVR2,#08HMOVR0,#10HMOVR1,#20HLP3:MOVA,R0ADDA,#06HMOVCA,A+PC,AINCR0INCR1DJNZR2,LP3RETDB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH
17、,79H,71H00HST:MOVR0,#20HMOVR2,#08HLP1:MOVR1,#08HMOVA,R0LP2:RLCAMOVP1.4,CCLRP1.0SETBP1.0DJNZR1,LP2INCR0DJNZR2,LP1RETEND方法二:ORG0000HLJMPMAINMAIN:MOVSP,#60HPORTEQU0155HLCALLSTSJMP$XIANSHI:MOVR2,#08HMOVR0,#10HMOVR1,#20HMOVDPTR,#PORTLP3:MOVA,R0MOVCA,A+DPTR,AINCR0INCR1DJNZR2,LP3RETST:MOVR0,#20HMOVR2,#08HL
18、P1:MOVR1,#08HMOVA,R0LP2:RLCAMOVP1.4,CCLRP1.0SETBP1.0DJNZR1,LP2INCR0DJNZR2,LP1RETPORT3FH,06H,5BH,4FH,66H,6DH,7DH,07H7FH,6FH,77H,7CH,39H,5EH,79H,71H00HEND(3)将压缩码变非压缩码显示出来。ORG0100HMAIN:MOVSP,#60HMOV10H,#39HMOV11H,#41HMOV12H,#42HMOV13H,#43HMOV14H,#44HMOV15H,#45HMOV16H,#46HMOV17H,#38HLCALLASCLCALLXIANSHI
19、LCALLSTSJMP$ASC:MOVR2,#08HMOVR0,#10HMOVR1,#20HLP4:MOVA,R0ANLA,#0FH,AINCR1MOVA,R0SWAPAANLA,#0FH,AINCR0INCR1DJNZR2,Lp4RETXIANSHI:MOVR2,#08HMOVR0,#10HMOVR1,#20HLP3:MOVA,R0ADDA,#06HMOVCA,A+PC,AINCR0INCR1DJNZR2,LP3RETDB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71H00HST:MOVR0,#20HMOVR2,
20、#08HLP1:MOVR1,#08HMOVA,R0LP2:RLCAMOVP1.4,CCLRP1.0SETBP1.0DJNZR1,LP2INCR0DJNZR2,LP1RETENDh) 卡号显示ID卡读出11个字节的ASCII,要显示卡号,需进行数值转换。(1)ID卡读出的11个字节ASCII码放在以30H开始的单元,先将ASCII码转换成16进制数,因第一个字节是包装头,不参与转换。其程序如下:LE:MOVR0,#30H;ASC转16进制数子程序MOVR2,#0AH;10个字节LE4:MOVA,R0ACALLLE1,AINCR0DJNZR2,LE4RETLE1:CJNEA,#40H,L13SJM
21、PLE3L13:JCLE2ADDA,#09HLE2:ANLA,#0FHCLRCRETLE3:SETBCRET(2)把上面转换的10个16进制数,变成5个压缩的16进制数,30H放最高位,34H放最低位。LB:MOVA,30H;装配压缩16进制数子程序SWAPAADDA,31HMOV30H,AMOVA,32HSWAPAADDA,33HMOV31H,ANOPNOPMOVA,34HSWAPAADDA,35HMOV32H,AMOVA,36HSWAPAADDA,37HMOV33H,ANOPNOPMOVA,38HSWAPAADDA,39HMOV34H,ARET(3)上面程序中,30H到35H字节是先高后低
22、,而后面调用子程序,需要先低后高,所以,先要把33H单元中的内容送到35H单元中,即把34H,35H里2个压缩的16进制数变成3个字节的压缩的10进制数。LD:MOV35H,33H;压缩16进制数转非压缩10进制子程序MOVR0,#34HMOVR7,#02HMOVR1,#28HLCALLLD1RETLD1:MOVA,R0MOVR5,AMOVA,R1MOVR6,AMOVA,R7INCAMOVR3,ACLRALD2:,AINCR1DJNZR3,LD2MOVA,R7MOVB,#08HMULABMOVR3,ALD3:MOVA,R5MOVR0,AMOVA,R7MOVR2,ACLRCLD4:MOVA,R0
23、RLCA,AINCR0DJNZR2,LD4MOVA,R6MOVR1,AMOVA,R7MOVR2,AINCR2LD5:MOVA,R1ADDCA,R1DAA,AINCR1DJNZR2,LD5DJNZR3,LD3RET(4)再把压缩的10进制数变成非压缩的10进制数,即变成代码,为显示卡号做准备L11:MOVR1,#10HMOVR2,#03HMOVR0,#28HL12:MOVA,R0ANLA,#0FH,AINCR1MOVA,R0SWAPAANLA,#0FH,AINCR0INCR1DJNZR2,L12RET(5)把代码变成段码。LF:MOVR2,#08H;代码-段码MOVR0,#10HMOVR1,#2
24、0HLF1:MOVA,R0ADDA,#06HMOVCA,A+PC,AINCR0INCR1DJNZR2,LF1RETDB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HDB00H,40H,73H,03H,18H,23H,1CH,3DH,76H,0FH,1EH,38H(6)调显示子程序,采用串显方法,节省资源。XSH:MOVR0,#20H;显示子程序MOVR2,#08HLP1:MOVR1,#08HMOVA,R0LP2:RLCAMOVP1.4,CCLRP1.0SETBP1.0DJNZR1,LP2INCR0DJNZR2,L
25、P1RET5非接触式IC卡门禁机电路如图P3.7所示。(四)非接触式IC卡门禁系统参考程序门禁系统程序主要包括读卡、数制转换、显示、合法卡比较、开锁、中断子程序、延时子程序等模块。1显示子程序模块图P3.8为显示子程序流程图。显示子程序:XSH:MOVR0,#20HMOVR2,#08HLP1:MOVR1,#08HMOVA,R0LP2:RLCAMOVP1.4,CCLRP1.0SETBP1.0DJNZR1,LP2INCR0DJNZR2,LP1RET2门禁系统程序图P3.9为门禁系统程序流程图。门禁系统程序清单:ORG0000HLJMPMAINORG0023HLJMPZDORG0300HMAIN:M
26、OVSP,#60HCLRP2.5;关指示灯LCALLBEING;调显“H”子程序M1:LCALLSIC;调串口始化子程序L03:MOVA,0FH;判卡CJNEA,#33H,L03MOV0FH,#00HMOV17H,#10HACALLL04E0;ASC转16进制数子程序ACALLL04B0;调装配压缩16进制数子程序ACALLL1234;调压缩16转非压缩10进制子程序ACALLL11;压缩-非压缩ACALLL120F;代码-段码子程序ACALLL1261;调显示子程序图P3.9 门禁系统程序流程图SETBP2.5开锁子程序CLRP2.3SETBP2.6CLRP2.3MOVR5,#0FFHL8:
27、DJNZR5,L8LCALLDEL;延时10SCLRP2.6LCALLDELSETBP2.6SETBP2.3CLRP2.5JNBP1.4,ALLJMPM1AL:CLRP2.6LCALLDELSETBP2.6RETSIC:ANLTMOD,#0FH;串口始化子程序ORLTMOD,#20HMOVTH1,#0FDHMOVTL1,#0FDHSETBTR1MOVIE,#90HMOVSCON,#50HRETZD:PUSHACC;中断子程序PUSH00HPUSH02HMOVR0,#30HMOVR2,#0BHLL1:ACALLLL2JBF0,LL3NOPNOP,AINCR0DJNZR2,LL1POP02HPOP
28、00HPOPACCNOPMOV0FH,#33HRETILL2:MOV04H,#28HLL4:JNBRI,LL6CLRRIMOVA,SBUFCLRF0RETLL6:MOV05H,#0AHLL5:DJNZR5,LL5DJNZR4,LL4SETBF0RETLL3:POP02HPOP00HPOPACCRETIL04E0:MOVR0,#30H;ASC转16进制数子程序MOVR2,#0AHL04E4:MOVA,R0ACALLL04A0,AINCR0DJNZR2,L04E4RETL04A0:CJNEA,#40H,L13SJMPL04ADL13:JCL04A9ADDA,#09HL04A9:ANLA,#0FHCLRCRETLE3:SETBCRETL04B0:MOVA,30H;装配压缩16进制数子程序SWAPAADDA,31HMOV30H,AMOVA,32HSWAPAADDA,33HMOV31H,ANOPNOPMOVA,34HSWAPAADDA,35HMOV32H,AMOVA,36HSWAPAADDA,37HMOV33H,ANOP