1
项目训练三 门禁系统
一、目的要求
1.掌握门禁系统的概念。
2.掌握非接触式 IC 卡门禁系统的组成。
3.通过门禁系统的训练,掌握串行静态显示的方法。
4.掌握卡号显示方法。
5.进一步掌握单片机的使用技巧和方法。
二、任务目标
利用单片机 AT89S52 构成一非接触式 IC 卡门禁系统,要求实现如下功能:
1.程序控制开锁
当读卡器检索到合法 IC 卡时,由 CPU 提供一个低电平信号,因为,AT89S52 单片
机复位是高电平有效,并且实际电路必须有看门狗电路,一旦出现故障,也需高电平复
位,因此,采用低电平作为控制门的开有效信号。
2.出门按钮开锁
按钮按下,给出一个开关信号,此时门锁同样被打开。
3.从消防安全考虑,如果发生意外或危险,只要断开电源,门锁同样可以被打开。
4.读卡显示
当读卡器检索到合法射频卡时,七段数码管可以显示出此卡的卡号,以便识别出持
卡人身份。
5.蜂鸣器报警
当门锁处于开启状态时,超过延时时间,蜂鸣器发出蜂鸣,以提示用户及时关门。
6.工作指示灯
红色指示灯提示电源正常供电。
绿色指示灯提示门锁工作状态,刷卡合法,绿色指示灯亮。
三、工具器材
直流电源 5V/500、门禁系统套件、编程器、PC 机等。
四、预备知识
随着科学的进步、社会的发展,人们对生活质量有了更高的要求,对安全防范有了
更多的需求,如何有效地控制人员的出入成了一个新的课题。为此应运而生的门禁控制
系统在众多安防产品中脱颖而出。
门禁系统顾名思义,就是对出入口通道进行管制的系统,是一种管理人员进出的数
字化管理系统。
2
门禁系统由门禁控制器、门禁读卡器、卡片、电控锁以及相应的软件、电源和其他
相关门禁设备等组成。
目前非接触式 IC 卡门禁系统应用广泛。本训练项目将以天大银河科技有限公司研制
的门禁系统为载体,重点讲解门禁系统的控制核心——AT89S52 单片机。
(一)非接触式 IC 卡门禁系统框图
非接触式 IC 卡门禁系统包括读写器、中央控制电脑的软件管理系统、中央控制电脑
与读写器之间的数据传输三部分。其中读写器是核心,包括 MCU、复位电路、时钟电路、
报警及工作指示电路、显示电路、键盘、数据存储等主控模块及非接触式 IC 卡读写模块
和电锁驱动部分。非接触式 IC 卡门禁系统框图如图 所示。
门禁系统采用 AT89S52 单片机作为控制核心,采用射频卡完成刷卡进门,按钮出门
功能。其工作流程见图 所示。
(二)门禁系统中单片机口的资源分配
为实现门禁系统的功能,需读卡:2 条线(,INT1);键盘:3 条线(,
,);门控:6 条线(上锁,门态,出门开关,音量,灯);存储:3 条线(,
,);通讯:5 条线(RXD,TXD,,,INT0);显示:2 条线(,
)。表 门禁系统 I/O 口资源分配
键 键 显示键 申请 通讯 通讯 读卡 显示
出门按钮 蜂鸣器 指示灯 门态 上锁 SCL SDA
“0”有效 “0”响 “1”亮 “1”上锁 24C64
WR
图 非接触式 IC 卡门禁系统框图
主控
MCU 单片机芯片
(89S52)
时钟电路
传输模块
(MAX232)
中央
控制
电脑
数据存储电路
24C64
EM9931
模 块
电 锁
天
线
显 示 键 盘 出 门
按 钮
报警及
工作指示
指示
复位电路
3
其中,存储芯片选用 24C64,通信芯片选用 75176。 控制通讯芯片 75176,“0”:收、
“1”:发; 控制通讯申请信号,“0”:申请、“1”:不申请;INT0 控制通信的 AB 线,
B2=0 时接通、B2=1 时断开。单片机口资源的具体分配见表 。
初始化
装载权限
寻 卡
加入权限?
下一张卡提权 执行报警
执行开门
取时间+卡号+BCC 码
发送数据
写 入 24C64 中 数 据
指针加 12 纪录数加
1
发送纪录数
清空 24C64 数据
指 针 =0 纪 录 数
=0
N
N
N
YY
Y
图 非接触式 IC 卡门禁机总体工作流程
卡号在数据库?
纪录满否?
4
(三)各部分电路原理分析
非接触式 IC 卡门禁机工作过程为当刷卡时,蜂鸣器响一下,如卡权限获得允许,显
示模块显示卡号,同时继电器动作将门锁打开,指示灯点亮,延时一段时间后继电器再
次动作将门锁锁闭,指示灯熄灭;当按下出门按钮时,继电器动作将门锁打开,指示灯
点亮,延时一段时间后继电器再次动作将门锁锁闭,指示灯熄灭。当遇到非法卡时,该
系统不显示卡号,门锁不开。原理电路如图 所示。
1.门控锁电路
门控锁电路如图 所示。
偏置电阻 R3 与三级管 Q16、Q6 构成复合驱动电路以提高驱动能力,控制锁的开与
闭。
当 为高电平时 Q16 导通,Q6 截止,此时继电器的控制线圈为开路,继电器不
动作。门锁接于继电器常闭端,门锁闭合,门处于锁死状态。
当 口输出低电平时 Q16 截止,Q6 导通,此时继电器的控制线圈闭合,继电器
动作。继电器常闭端断开,门锁打开,门处于打开状态。
2.蜂鸣器电路
蜂鸣器电路由蜂鸣器、三极管 Q1、Q2 及电阻 R2 组成。电路如图 所示。当
输出高电平时,Q1 导通,Q2 截止,蜂鸣器回路开路,蜂鸣器不响。
当 输出高电平时,Q1 截止,Q2 导通,蜂鸣器回路闭合,蜂鸣器发出响声。
3.串行口在门禁系统中的应用
门禁系统读卡采用串口中断方式。
a) 非接触式射频卡的基本原理
图 蜂鸣器电路
R2
680
图 门控锁电路
5
每个卡片内都有一个小芯片和感应线圈。价格低廉、国内最普及的EM ID卡,大都为
瑞士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 10ASCII Data Characters Checksum 03
6
(a)9600 bps,N,8,1
即波特率 9600bPS;数据位元:8bits;停止位元:1。
(b)PIN5:TX 非反相输出。
(c)PIN6:TX 反相输出。
(d)卡片号码为 62E3086CED,传送的 HEX 值如下
10ASCII DATA:36H,32H 45H,33H 30H,38H 36H,43H 45H,44H
(6 2 H E 3 H 0 8 H 6 C H E D H)
CHECKSUM:(62H)XOR(E3H)XOR(08H)XOR(6CH)XOR(EDH)=08H
Checksum 为二进制格式数据。
故 MTP-K4 射频模块输出的完整的二进制
文档如下所示:
02 36 32 45 33 30 38 36 43 45 44 08 03
f) 串行口程序分析
读卡是随机的,不确定的,并且软件开销
大,会降低响应速度,因此不能采用查询方式。
故门禁系统的读卡采用串口中断方式,随时读
卡,随时响应。晶振必须是 。
(1)读卡单元
门禁系统采用 EM9913BF ID 射频卡读卡
器。电路如图 所示。
读卡模块将数据按 RS232 和 Wiegand26 格式输出。
EM9913BF 各引脚功能见表 。
表 EM9913BF 各引脚功能
引脚号 引脚名称 I/O 说 明
1 DC 5V 输入 +5V 直流输入
2 ANT 输入 线圈引脚输入
3 NC 空引脚
4 GND 输入 接地
5 NC 空引脚
6 ENLED 输入 指示灯控制线,低电平使用
7 ENBEEP 输入 蜂鸣器控制线,低电平使用
8 OK_SD 输出 Wiegand 26 数据输出指示
9 BZ 输出 蜂鸣器信号线
10 D0 输出 Wiegand 26 数据 DATA0 输出
11 D1 输出 Wiegand 26 数据 DATA1 输出
12 LED 输出 指示灯信号输出
13 TXD 输出 RS232 数据输出
图 读卡单元连接图
7
(2)波特率初值计算
晶振为 ,串行接口工作于方式 1,波特率为 9600b/s。
公式: 代入已知条件,计算出初值为FDH。
(3)串口中断初始化程序
SIC: ANL TMOD,#0FH ;串口始化子程序
ORL TMOD,#20H
MOV TH1,#0FDH
MOV TL1, #0FDH
SETB TR1
MOV IE,#90H
MOV SCON,#50H ;方 式 1 十 位 异 步 收 发
RET
(4)串口中断子程序,该程序中加入不死机程序
ZD: PUSH ACC ;中断子程序
PUSH 00H
PUSH 02H
MOV R0, #30H ;首地址
MOV R2, #0BH; 11 个字节的 ASCII
LL1:ACALL LL2
JB F0, LL3
NOP
NOP
MOV @R0, A
INC R0
DJNZ R2, LL1
POP 02H
POP 00H
POP ACC
NOP
MOV 0FH, #33H
RETI
LL2:MOV 04H, #28H
LL4:JNB RI, LL6
CLR RI
( 1)
256
384
OSC
baud
SMOD
X
f
f
8
MOV A, SBUF
CLR F0
RET
LL6:MOV 05H, #0AH
LL5:DJNZ R5, LL5
DJNZ R4, LL4
SETB F0
RET
LL3:POP 02H
POP 00H
POP ACC
RETI
END
4.显示电路
在门禁系统中,显示串行静态显示方式。采用 74LS164 作为静态显示器接口,
作为时钟, 作为显示数据输入。如图 所示。
图 门禁系统中的串行显示电路
g) 显示程序
(1) 直接显示段码程序。将 20H—27H 中的段码从左到右显示出来。
ORG 0000H
LJMP MAIN
MAIN:MOV SP, #60H
MOV 20H, #06H
MOV 21H, #5BH
MOV 22H,#4FH
MOV 23H,#66H
9
MOV 24H,#6DH
MOV 25H,#7DH
MOV 26H,#07H
MOV 27H,#7FH
LCALL ST
SJMP $
ST:MOV R0, #20H
MOV R2,#08H
LP1:MOV R1,#08H
MOV A,@R0
LP2:RLC A
MOV ,C
CLR
SETB
DJNZ R1,LP2
INC R0
DJNZ R2,LP1
RET
END
(2)把 10H 开始代码变成段码放到 20H 开始的单元中。
方法一:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:MOV SP,#60H
MOV 10H, #01H
MOV 11H, #02H
MOV 12H, #03H
MOV 13H, #04H
MOV 14H, #05H
MOV 15H, #06H
MOV 16H, #07H
MOV 17H, #08H
LCALL XIANSHI
LCALL ST
SJMP $
XIANSHI: MOV R2, #08H
MOV R0, #10H
10
MOV R1, #20H
LP3: MOV A, @R0
ADD A, #06H
MOVC A, @A+PC
MOV @R1, A
INC R0
INC R1
DJNZ R2, LP3
RET
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H 00H
ST:MOV R0, #20H
MOV R2,#08H
LP1: MOV R1,#08H
MOV A,@R0
LP2:RLC A
MOV ,C
CLR
SETB
DJNZ R1,LP2
INC R0
DJNZ R2,LP1
RET
END
方法二:
ORG 0000H
LJMP MAIN
MAIN: MOV SP,#60H
PORT EQU 0155H
LCALL ST
SJMP $
XIANSHI: MOV R2, #08H
MOV R0, #10H
MOV R1, #20H
MOV DPTR, #PORT
LP3: MOV A, @R0
MOVC A, @A+DPTR
MOV @R1, A
11
INC R0
INC R1
DJNZ R2, LP3
RET
ST: MOV R0, #20H
MOV R2,#08H
LP1: MOV R1,#08H
MOV A,@R0
LP2: RLC A
MOV ,C
CLR
SETB
DJNZ R1,LP2
INC R0
DJNZ R2,LP1
RET
PORT 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
7FH,6FH,77H,7CH,39H,5EH,79H,71H 00H
END
(3)将压缩码变非压缩码显示出来。
ORG 0100H
MAIN:MOV SP,#60H
MOV 10H, #39H
MOV 11H, #41H
MOV 12H, #42H
MOV 13H, #43H
MOV 14H, #44H
MOV 15H, #45H
MOV 16H, #46H
MOV 17H, #38H
LCALL ASC
LCALL XIANSHI
LCALL ST
SJMP $
ASC: MOV R2,#08H
MOV R0,#10H
MOV R1,#20H
LP4: MOV A, @R0
12
ANL A, #0FH
MOV @R1, A
INC R1
MOV A, @R0
SWAP A
ANL A, #0FH
MOV @R1, A
INC R0
INC R1
DJNZ R2, Lp4
RET
XIANSHI: MOV R2, #08H
MOV R0, #10H
MOV R1, #20H
LP3: MOV A, @R0
ADD A, #06H
MOVC A, @A+PC
MOV @R1, A
INC R0
INC R1
DJNZ R2, LP3
RET
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H 00H
ST:MOV R0, #20H
MOV R2,#08H
LP1:MOV R1,#08H
MOV A,@R0
LP2:RLC A
MOV ,C
CLR
SETB
DJNZ R1,LP2
INC R0
DJNZ R2,LP1
RET
END
13
h) 卡号显示
ID 卡读出 11 个字节的 ASCII,要显示卡号,需进行数值转换。
(1)ID 卡读出的 11 个字节 ASCII 码放在以 30H 开始的单元,先将 ASCII 码转换
成 16 进制数,因第一个字节是包装头,不参与转换。
其程序如下:
LE: MOV R0, #30H ; ASCⅡ转 16 进制数子程序
MOV R2, #0AH ;10 个字节
LE4: MOV A, @R0
ACALL LE1
MOV @R0, A
INC R0
DJNZ R2, LE4
RET
LE1: CJNE A, #40H, L13
SJMP LE3
L13: JC LE2
ADD A, #09H
LE2: ANL A, #0FH
CLR C
RET
LE3: SETB C
RET
(2)把上面转换的 10 个 16 进制数,变成 5 个压缩的 16 进制数,30H 放最高位,34H
放最低位。
LB: MOV A, 30H ; 装配压缩 16 进制数子程序
SWAP A
ADD A, 31H
MOV 30H, A
MOV A, 32H
SWAP A
ADD A, 33H
MOV 31H, A
NOP
NOP
MOV A, 34H
SWAP A
ADD A, 35H
MOV 32H, A
14
MOV A, 36H
SWAP A
ADD A, 37H
MOV 33H, A
NOP
NOP
MOV A, 38H
SWAP A
ADD A, 39H
MOV 34H, A
RET
(3)上面程序中,30H 到 35H 字节是先高后低,而后面调用子程序,需要先低后高,
所以,先要把 33H 单元中的内容送到 35H 单元中,即把 34H,35H 里 2 个压缩的 16 进制
数变成 3 个字节的压缩的 10 进制数。
LD: MOV 35H, 33H ; 压缩 16 进制数转非压缩 10 进制子程序
MOV R0, #34H
MOV R7, #02H
MOV R1, #28H
LCALL LD1
RET
LD1: MOV A, R0
MOV R5, A
MOV A, R1
MOV R6, A
MOV A, R7
INC A
MOV R3, A
CLR A
LD2: MOV @R1, A
INC R1
DJNZ R3, LD2
MOV A, R7
MOV B, #08H
MUL AB
MOV R3, A
LD3: MOV A, R5
MOV R0, A
MOV A, R7
15
MOV R2, A
CLR C
LD4: MOV A, @R0
RLC A
MOV @R0, A
INC R0
DJNZ R2, LD4
MOV A, R6
MOV R1, A
MOV A, R7
MOV R2, A
INC R2
LD5: MOV A, @R1
ADDC A, @R1
DA A
MOV @R1, A
INC R1
DJNZ R2, LD5
DJNZ R3, LD3
RET
(4)再把压缩的 10 进制数变成非压缩的 10 进制数,即变成代码,为显示卡号做准
备
L11:MOV R1,#10H
MOV R2,#03H
MOV R0,#28H
L12:MOV A, @R0
ANL A, #0FH
MOV @R1, A
INC R1
MOV A, @R0
SWAP A
ANL A, #0FH
MOV @R1, A
INC R0
INC R1
DJNZ R2, L12
RET
16
(5)把代码变成段码。
LF: MOV R2, #08H;代码--段码
MOV R0, #10H
MOV R1, #20H
LF1: MOV A, @R0
ADD A, #06H
MOVC A, @A+PC
MOV @R1, A
INC R0
INC R1
DJNZ R2, LF1
RET
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
DB 00H,40H,73H,03H,18H,23H,1CH,3DH,76H,0FH,1EH,38H
(6)调显示子程序,采用串显方法,节省资源。
XSH: MOV R0, #20H ;显示子程序
MOV R2,#08H
LP1: MOV R1,#08H
MOV A,@R0
LP2: RLC A
MOV ,C
CLR
SETB
DJNZ R1,LP2
INC R0
DJNZ R2,LP1
RET
5.非接触式 IC 卡门禁机电路
如图 所示。
17
图
P3
.7
非
接
触
式
IC
卡
门
禁
机
电
路
原
理
图
18
(四)非接触式 IC 卡门禁系统参考程序
门禁系统程序主要包括读卡、数制转换、显示、合法卡比较、开锁、中断子程序、
延时子程序等模块。
1.显示子程序模块
图 为显示子程序流程图。
显示子程序:
XSH: MOV R0, #20H
MOV R2,#08H
LP1: MOV R1,#08H
MOV A,@R0
LP2: RLC A
MOV , C
CLR
SETB
DJNZ R1,LP2
INC R0
DJNZ R2,LP1
RET
2.门禁系统程序
图 为门禁系统程序流程图。
门禁系统程序清单:
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP ZD
ORG 0300H
MAIN: MOV SP, #60H
CLR ;关指示灯
LCALL BEING ;调显“H”子程序
M1: LCALL SIC ;调串口始化子程序
L03: MOV A, 0FH ;判卡
CJNE A, #33H, L03
MOV 0FH, #00H
MOV 17H, #10H
ACALL L04E0 ;ASCⅡ转 16 进制数子程序
将存有段码单元的地址送R0
循环初值8送R1
循环初值8送R1
取出段码送寄存器A
将段码按位左移,最高为送
,并产生移位脉冲
R0-1,R0=0?
(R0)+1
R1-1,R1=0?
返回
N
Y
N
Y
图 显示子程序流程图
19
ACALL L04B0 ;调装配压缩 16 进制数子程序
ACALL L1234 ;调压缩 16 转非压缩 10 进制子程序
ACALL L11 ;压缩--非压缩
ACALL L120F ; 代码--段码子程序
ACALL L1261 ; 调显示子程序
开始
初始化
指示灯亮一下
显示“ H”
有卡吗?
读卡
判权限
合法?
开锁开门指示灯亮
显示卡号
延时
关门
结束
出门开关?
N
N
Y
Y
N
Y
图 门禁系统程序流程图
20
SETB 开锁子程序
CLR
SETB
CLR
MOV R5,#0FFH
L8: DJNZ R5, L8
LCALL DEL ;延时 10S
CLR
LCALL DEL
SETB
SETB
CLR
JNB , AL
LJMP M1
AL: CLR
LCALL DEL
SETB
RET
SIC: ANL TMOD, #0FH ;串口始化子程序
ORL TMOD, #20H
MOV TH1, #0FDH
MOV TL1, #0FDH
SETB TR1
MOV IE, #90H
MOV SCON, #50H
RET
ZD: PUSH ACC ;中断子程序
PUSH 00H
PUSH 02H
MOV R0, #30H
MOV R2, #0BH
LL1: ACALL LL2
JB F0, LL3
NOP
NOP
21
MOV @R0, A
INC R0
DJNZ R2, LL1
POP 02H
POP 00H
POP ACC
NOP
MOV 0FH, #33H
RETI
LL2: MOV 04H, #28H
LL4: JNB RI, LL6
CLR RI
MOV A, SBUF
CLR F0
RET
LL6: MOV 05H, #0AH
LL5: DJNZ R5, LL5
DJNZ R4, LL4
SETB F0
RET
LL3: POP 02H
POP 00H
POP ACC
RETI
L04E0: MOV R0, #30H ; ASCⅡ转 16 进制数子程序
MOV R2, #0AH
L04E4: MOV A, @R0
ACALL L04A0
MOV @R0, A
INC R0
DJNZ R2, L04E4
RET
L04A0: CJNE A, #40H, L13
SJMP L04AD
L13: JC L04A9
ADD A, #09H
L04A9: ANL A, #0FH
CLR C
22
RET
LE3: SETB C
RET
L04B0: MOV A, 30H ; 装配压缩 16 进制数子程序
SWAP A
ADD A, 31H
MOV 30H, A
MOV A, 32H
SWAP A
ADD A, 33H
MOV 31H, A
NOP
NOP
MOV A, 34H
SWAP A
ADD A, 35H
MOV 32H, A
MOV A, 36H
SWAP A
ADD A, 37H
MOV 33H, A
NOP
NOP
MOV A, 38H
SWAP A
ADD A, 39H
MOV 34H, A
RET
L1234: MOV 35H, 33H ; 压缩 16 转非压缩 10 进制子程序
MOV R0, #34H
MOV R7, #02H
MOV R1, #28H
LCALL L0D91
RET
L0D91: MOV A, R0
MOV R5, A
MOV A, R1
MOV R6, A
23
MOV A, R7
INC A
MOV R3, A
CLR A
L0D99: MOV @R1, A
INC R1
DJNZ R3, L0D99
MOV A, R7
MOV B, #08H
MUL AB
MOV R3, A
L0DA3: MOV A, R5
MOV R0, A
MOV A, R7
MOV R2, A
CLR C
L0DA8: MOV A, @R0
RLC A
MOV @R0, A
INC R0
DJNZ R2, L0DA8
MOV A, R6
MOV R1, A
MOV A, R7
MOV R2, A
INC R2
L0DB3: MOV A, @R1
ADDC A, @R1
DA A
MOV @R1, A
INC R1
DJNZ R2, L0DB3
DJNZ R3, L0DA3
RET
L11: MOV R1,#10H
MOV R2, #03H
MOV R0, #28H
24
L12: MOV A, @R0
ANL A, #0FH
MOV @R1, A
INC R1
MOV A, @R0
SWAP A
ANL A, #0FH
MOV @R1, A
INC R0
INC R1
DJNZ R2, L12
RET
L120F: MOV R2, #08H ;代码—段码
MOV R0, #10H
MOV R1, #20H
L12F: MOV A, @R0
ADD A, #06H
MOVC A, @A+PC
MOV @R1, A
INC R0
INC R1
DJNZ R2, L12F
RET
DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H
DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H
DB 00H, 40H, 73H, 03H, 18H, 23H, 1CH, 3DH, 76H, 0FH, 1EH, 38H
L1261: MOV R0, #20H ;显示子程序
MOV R2,#08H
LP1: MOV R1, #08H
MOV A,@R0
LP2: RLC A
MOV , C
CLR
SETB
DJNZ R1, LP2
INC R0
25
DJNZ R2, LP1
RET
BEING: MOV 10H, #10H ;显‘H’子程序
MOV 11H,#10H
MOV 12H,#10H
MOV 13H,#10H
MOV 14H,#10H
MOV 15H,#10H
MOV 16H,#10H
MOV 17H,#18H
LCALL LF
LCALL XSH
RET
DEL: MOV R6, #0FFH ;延时子程序
Y2: MOV R7, #0FFH
Y1: DJNZ R7, Y1
DJNZ R6, Y2
RET
END
五、实训环节
1.按图装配完成门禁系统控制电路,并进行硬件调试及测试。 20分
2.输入源程序,编译、连接并进行调试。 40分
3.运行程序,观察运行结果。 20分
4.若需判卡是否合法,如何修改程序?运行修改程序,观察结果。 20分
六、成绩评定
小题分值 ⑴ 20 ⑴ 40 ⑴ 20 ⑴ 20 总分
小题得分