4 门禁系统的软件设计部分
4.1 门禁系统的总流程图
程序循环中主要工作为判断是否有刷卡,若有刷卡读出卡号,没有刷卡就显示时间,然后进行相应的处理,其流程图如图4-1所示。
在整个程序运行过程中,首先是对系统的初始化,即:
(1)设置堆栈地址:比如MOV、SP、#60H;
(2)设定PSW的值,也就是缺省的工作寄存器;
(3)设定与定时器、中断、串口相关的特殊功能寄存器;
(4)设定各IO口的初始状态,比如将连接键盘的输入输出口均设为1,红外发射电路的初始状态。
(5)内存中需要赋初值的寄存器赋初值,比如上电后要显示的内容最好先赋个初值。
(6)打开中断允许、启动定时器;
(7)开始主程序循环。
在初始化结束以后,实时时钟程序开始运行,首先读取事先设定好的时、分、秒。在这个过程中要设定显示时间标志,在本次设计中,用IRCVSTR作为显示时间标志,同时由于程序的运行,时间开始动态显示。
完成一系列运行之后,如果有卡介入,单片机立马转入识别IC卡的过程,如果IC卡合法,就会执行LED灯亮,数码管显示卡号;值得说明的是再没有卡介入或者卡不合法的情况下,数码管一直显示动态时间。在卡合法并且介入的同时,单片机会同步存储当下的时间和卡号,实现考勤的目的。
在整个程序运行的过程中,读时间子程序和读卡子程序在读时间和读卡标志的直接影响下相应不同的结果,这个结果会使数码管显示不同的数字。在显示卡号的这段时间通过延时子程序的作用下会相应一段时间。
图4-1 门禁系统的总流程
4.2 门禁系统读卡流程图
在读卡的过程中,首先是对卡的序列号进行提取,判别是不是特定类型的卡,在本次设计中设计的卡位SLE442卡,其序列号为A2 13 10 91,在序列号读取完成以后,会显示读卡成功,其标志为LED灯亮起来。此时对卡内容读取,在本次设计中,卡里面的内容为55 66,通过数码管显示卡的内容,然后把卡的内容存储起来,然后经过延时子程序,时间显示一段时间后结束显示卡号,显示当前时间,其流程图如图4-2所示。
图4-2 读卡流程图
读卡子程序
MOV SP,#60H ;设置栈底
Read_Insert_Card:
MOV ByteNum,#08H
MOV StartAdr,#00H ;从主存储区的0地址读8个字节
LCALL ReadCard
JMP Read_Insert_Card ;请在此设置断点,观察读缓冲区内容
MOV A,#55
CJNE A,30H,L1
MOV A,#66H
CJNE A,31H,L1
CLR P1.7
LCALL DELAY
L1:SETB P1.7
RET
$INCLUDE(SLE4442.INC) ;包含SLE4442驱动程序
END
4.3 门禁系统数码管显示时间、卡号流程图
在数码管显示时间和卡号之前,首先要运行读时间子程序和读卡子程序,在没有刷卡的情况下,显示时间;当有卡介入的时候通过判断是否为合法卡,卡合法的时候,会有读卡内容标志,转入卡号读取,然后在运行显示卡号程序,在数码管上显示卡内容,其流程图如图4-3所示
IC卡门禁系统微机控制软件设计(12):http://www.youerw.com/zidonghua/lunwen_9753.html