基于51单片机的IC卡门禁控制系统软件设计
2015-05-30唐凯
唐凯
【摘要】随着现代科技的发展,门禁控制系统在安全技术防范领域扮演着越来越重要的角色。其软件系统的开发和设计起着重要的作用。
1、前言
随着现代科技的发展,门禁控制系统在安全技术防范领域扮演着越来越重要的角色,这是建立在先进的计算机技术,通信技术各非接触的射频识别技术之上,通过持有非接触式IC卡来对人的进出实施放行,拒绝和记录等操作的智能化控制系统。非接触式IC卡的核心技术为射频识别,其环境适应性强,可全天候,无接触地完成自动识别功能。
本系统以89C51系列单片机STC89C52为控制核心,利用非接触式射频卡模块读取用户手中的IC卡信息,识别成功后与系统存储的IC卡库数据进行比对校验,如果IC卡数据库中有IC卡则证明IC卡合法,单片机通过控制继电器控制电子锁门禁开启和关闭。同时采用键盘作为IC卡录入和删除,LCD1602液晶作为人机交互显示,让系统具备更大的实用价值。
2、系统总程序设计
系统上电后首先进行初始化,完成液晶、键盘等初始化任务。然后进入死循环,单片机控制IC卡模块时时扫描判断是否有IC靠近,当靠近时,启动IC卡读取程序,识别IC卡卡片信息后,与AT24C02芯片内存储的IC卡数据库信息进行比对,如果校验成功则控制门禁开,反之则不开门禁。整个过程LCD1602液晶显示操作过程及数据信息。
3、IC卡读写子程序设计
3.1 Mifare射频卡技术参数
(1)容量为8K位(bits)1K字节(bytes)EEPROM
(2)分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位
(3)每个扇区有独立的一组密码及访问控制
(4)每张卡有唯一序列号,为32位
(5)具有防冲突机制,支持多卡操作
(6)无电源,自带天线,内含加密控制逻辑和通讯逻辑电路
(7)数据保存期为10年,可改写10万次,读无限次
(8)工作温度:-20℃~50℃(湿度为90%)
(9)工作频率:13.56MHZ
(10)通信速率:106 KBPS
(11)读写距离:10 cm以内(与读写器有关)
3.2 IC卡读写卡的过程一般包含如下几个步骤:
(1)复位应答(Answer to request)
射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型。
(2)防冲突机制(Anticollision Loop)
当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。
(3)选择卡片(Select Tag)
选择被选中的卡的序列号,并同时返回卡的容量代码。
(4)三次互相确认(3 Pass Authentication)
选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,则必须进行另一扇区密码校验。)
IC卡读写流程图如图所示
3.3 IC卡读写操作流程图
4.按键程序的设计
按键作为人机交互的方式,在该设计中起着至关重要的作用。实现IC卡的录入与删除。当读卡模块检测到该IC卡时,如果该IC卡没有被录入,当有键按下时,则该卡被记录,拥有进出该门禁的权限;如果该IC卡被录入了,当有键按下时,则该卡被删除,被取消进出权限。
图4.3 键盘子程序流程图
本系统用到了5个按键,它们的功能分别是:调节时间的时钟加、时钟减、分钟加、分钟减和添加/删除用用户卡。它们采用的是独立按键的连接方式,一端连接地,一端连在单片机的P1.0到P1.4口上。它们的程序实现是:首先给P1.0到P1.4口高电平,然后扫描这些I/O口上是否有电平变化,当它们有变化是说明有键被按下,最后根据是哪个I/O口的电平变化了判断是哪个键被按下。它的程序流程图如图4.3所示
5. LCD1602液晶显示子程序
1602液晶是字符型液晶,它的内部自带字符库,它可以写两行的字符,同时每行可以显示16个字符。在这里要显示的是实时时间,IC的编号和权限以及一些提示信息。
LCD1602的操作步骤:初始化;写命令(RS=L)设置显示坐标;写数据(RS=H)。根据其操作步骤设计LCD1602液晶显示程序流程图如图4.4。
从此流程图我们得出:LCD液晶显示屏在写显示程序的时候,我们要先写命令,再设定字符显示和汉字的位置,最后写数据,在每写一次命令或数据都需要判断液晶是否忙。打开液晶显示屏进入初始化状态,开始写命令,首先判断LCD是否忙,如果是P0.7=0,那么进入下一步写命令,如果不是P0.7=0,返回LCD是否忙。
6 电子锁门禁开关子程序设计
本系统的电子锁门禁开关,单片机只需要输出高低电平即可。当输出高电平时门禁关、低电平门禁开。程序流程如图4.5所示。
7 报警子程序设计
本系统的报警提示是通过蜂鸣器和LED来实现的,系统中用的是无源蜂鸣器。无涯蜂鸣器要给脉冲信号才能实现鸣叫,在程序的设计中,通过定时器产生脉冲信号来控制蜂鸣器报警。根据报警电路原理,当读卡模块检测到有非法卡进入,单片机输出一个报警信号,开启定时器产生脉冲信号给蜂鸣器报警。
报警子程序的流程图如图4.6所示。
8小结
在进行程序设计的时候,各个模块的子程序是比较好书写的,但是各个模块之间的数据传输,什么时候该模块工作,调用该模块的函数,需要对系统有一个总的了解和把握,这是软件设计中的最大的一个问题。