基于单片机的IC卡门禁系统 - 图文 下载本文

片的卡型。

(2)防冲突机制 (Anticollision Loop)

当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。 (3)选择卡片(Select Tag)

选择被选中的卡的序列号,并同时返回卡的容量代码。 (4)三次互相确认(3 Pass Authentication)

选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,则必须进行另一扇区密码校验。) IC卡读写流程图如下图:

3.2 IC卡读写操作流程图

3.3 键盘扫描程序的设计

每个按键有它的行值和列值口,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并

15

行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

图3.3 矩阵键盘子程序流程图

16

3.4 LCD1602液晶显示子程序

1602液晶是字符型液晶,它的内部自带字符库,它可以写两行的字符,同时每行可以写40个字符。液晶显示程序流程图如下图所示: LCD1602液晶显示程序流程图如图下所示

开始 LCD初始化 LCD写命令 LCD判忙 P0.7=0 ? 否 是 写完成了? 是 设置显示位置 否

写数据 判忙 否

P0.7=0 ? 否 是 写完成了? 是 结束 图3.4 LCD1602液晶显示子程序流程图

从此流程图我们得出:LCD液晶显示屏在写显示程序的时候,我们要先写命令,再设定字符显示和汉字的位置,最后写数据,在每写一次命令或数据都需要判断

17

液晶是否忙。打开液晶显示屏进入初始化状态,开始写命令,首先判断LCD是否忙,如果是P0.7=0,那么进入下一步写命令,如果不是P0.7=0,返回LCD是否忙。

3.5 电子锁门禁开关子程序设计

本系统的电子锁门禁开关,单片机只需要输出高低电平即可。当输出高电平时门禁关、低电平门禁开。程序流程如下:

图3.5 门禁系统开关子程序流程图

3.6 报警子程序设计

本系统的报警提示是通过蜂鸣器和LED来实现的,根据报警电路原理,报警是通过一个IO口来实现的,当IO口输出低电平,蜂鸣叫叫且LED亮;当I/O口输出高电平,蜂鸣器不叫且LED灭。报警提示子程序流程如下:

图3.6 蜂鸣器/LED报警子程序流程图

18