采用AT89C51的电子密码锁的设计

  • 来源:电子产品世界
  • 关键字:AT89C51,电子密码锁
  • 发布时间:2013-11-09 16:30

  摘要:设计了一种以单片机AT89C51为核心的电子密码锁,从硬件和软件两方面详细介绍了电子密码锁的设计方法,Proteus软件仿真结果表明,该电子密码锁的设计达到了预期的目标,具有密码正确开锁、错误报警以及密码重置等功能。

  引言

  在日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。目前门锁主要采用弹子锁,其钥匙容易丢失;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。针对这些锁具的缺陷,用密码代替钥匙的密码锁应运而生。电子密码锁的设计方案有多种,可以采用数字电路或单片机控制方案。前者是基于硬件平台,电路升级时需要更换元器件,麻烦且增加成本。以单片机为核心的设计方案,可以利用灵活的编程设计升级相关功能,扩大应用面,降低成本。文中以单片机AT89C51为核心设计了一种可多次更改设置密码,并在密码输入错误次数超过3次时能自动报警并锁定键盘的电子密码锁。

  总体设计

  设计需求

  设置6位密码,密码通过键盘输入,若密码正确,则将锁打开,密码可由用户自己修改设定,锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时需要二次确认,以防止误操作。

  具有报警和键盘锁定功能。密码输入错误时数码显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。

  设计原理

  用户通过连接单片机的矩阵键盘输入密码,单片机将用户输入的密码与预先保存的密码进行对比,从而判断密码是否正确。单片机相关引脚产生高低电平传到开锁电路或者报警电路控制开锁或者报警。

  硬件设计

  根据设计需求,硬件设计主要包括以下几个模块:键盘输入模块、数码管显示模块、报警模块、密码存储模块、电源模块等。相应的硬件设计原理框图如图1所示。

  键盘输入模块

  本设计中共设置了16个按键,包括数字键0~9,以及功能键确认、清除等。在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。本设计中采用了4*3的矩阵键盘,如图2所示。

  在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,AT89C51一个端口(如P3口)就可以构成4*4=16个按键,与直接将P3端口接单个按键相比,键盘数目多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

  数码管显示模块

  显示模块采用常见的七段数码管实现。数码管的八个段码输入端由AT89C51的P0口控制,八个位码输入端由AT89C51的P2口控制。数码管控制电路如图3所示。

  数码管有静态显示和动态显示两种显示方式,相比于静态显示方式,动态显示在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示画面,不会有闪烁感,在显示效果上和静态显示是一致的,但动态显示能节省大量的I/O口,降低硬件电路的复杂性,而且功耗更低。在本设计中采用的是动态显示方式。

  蜂鸣器报警模块

  密码输入错误次数超过3次时可通过蜂鸣器鸣叫报警。蜂鸣器报警电路如图4所示。本设计中采用压电式蜂鸣器,利用单片机 P1.7端口外接的三极管的电流放大作用驱动蜂鸣器实现发声提示。

  软件设计

  单片机电子密码锁软件设计主要包括以下几个模块:主程序模块,数码管显示模块,矩阵键盘扫描模块,键功能程序模块,密码重设模块,延时模块,蜂鸣器报警模块。

  主程序流程图如图5所示。包括键盘扫描和键功能程序两部分。

  系统启动后不断进行键盘扫描,判断是否有键按下。若无键按下则

  继续扫描,有键按下则转入键功能模块判别按下的是什么功能键,然后转入相应的功能程序,功能程序执行完毕后转到键盘扫描程序循环操作。

  矩阵键盘扫描模块

  本设计中采用行扫描法进行按键识别。由于采用机械式的按键,在按键过程中会产生抖动现象,为避免单片机误判为多次输入同一按键,必须进行消抖处理。设计中采用软件延时的方法进行消抖。在检测出有键按下后执行延时程序,前沿抖动消失后,再次检测按键状态。相关程序段如下:

  LSCAN: MOV P3,#0F0H;扫描行码

  L1: JNB P3.0,L2

  LCALL DLY_S

  JNB P3.0,L2

  MOV LINE,#00H

  LJMP RSCAN

  L2: JNB P3.1,L3

  LCALL DLY_S

  JNB P3.1,L3 MOV LINE,#01H

  LJMP RSCAN

  L3: JNB P3.2,L4 LCALL DLY_S

  JNB P3.2,L4

  MOV LINE,#02H

  LJMP RSCAN

  L4: JNB P3.3,A0

  LCALL DLY_S

  JNB P3.3,A0

  MOV LINE,#03H

  RSCAN:MOV P3,#0FH;扫描列码

  C1: JNB P3.4,C2

  MOV ROW,#00H

  LJMP CALCU

  C2: JNB P3.5,C3

  MOV ROW,#01H

  LJMP CALCU

  C3: JNB P3.6,C1

  MOV ROW,#02H

  CALCU: MOV A,LINE ;计算键值

  MOV B,#03H

  MUL AB

  ADD A,ROW

  MOV VAL,A ;键值存入VAL中

  键功能程序模块

  电子密码锁按键共分4大部分:0~9数字按键部分、开锁按键部分、密码设置按键部分、确认按键部分。键功能程序模块流程图如图6所示。

  密码设置模块

  本设计采用单片机为主控芯片,结合外围电路,组成电子密码锁,用户想要打开锁,必先通过提供的键盘输入正确的密码才能将锁打开。若提示密码输入错误,为提高安全性,当密码输入错误三次将报警。密码可由用户自己修改设定,锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时需要二次确认,以防止误操作。密码设置模块的流程图如图7所示。

  基于Proteus的系统仿真

  Proteus软件不仅能仿真单片机的工作情况,还能仿真单片机外围电路或没有单片机参与的其他电路的工作情况。本设计经仿真后,实现了预期的电子密码锁的功能。

  显示模块仿真

  出于对用户隐私的保护,密码锁输入密码时数码管用字符“-”取代输入的数字,每输入一位密码显示一位“-”,如图8所示。

  开锁模块仿真

  密码锁在输入六位正确密码后实现开锁功能。仿真中单片机P1.0接发光二极管D1,输入六位密码,按下确定按键则P1.0被置零,D1点亮表示开锁成功,如图9所示。

  密码设置模块仿真

  在开锁状态下按下密码设置键则进入密码设置状态。此时把P1.5置零,点亮发光二极管D2。D2点亮表示现在处于密码设置状态,如图10所示。

  进入密码设置后按照设计要求还要再次输入一次旧密码提高安全性以及防止误操作。再次输入六位密码,若密码错误则蜂鸣器报警。若输入的六位密码正确则点亮发光二极管D3表示旧密码输入正确可以输入新密码,如图11所示。

  接下来输入六位新密码,设置密码要输入两次新密码,而且两次输入的密码必须相同才能成功设置否则报错。第一次输入六位密码然后按下确定键,第二次再一次输入新密码,按下确认键,若两次密码相同则点亮发光二极管D5。D5亮起表示两次输入的密码相同,密码设置成功,如图12所示。

  结语

  文中设计的基于AT89C51的电子密码锁具有简单的软硬件设计电路、低廉的开发成本、简便的操作方法,并通过Proteus仿真实现了预期的功能,具有一定的推广价值。

  参考文献:

  [1] 邱娟.电子密码锁的设计[J].硅谷, 2012

  [2] 周立功.单片机实验与实践教程[M].北京:北京航空航天大学出版社,2006

  [3] 韩军团.基于单片机的电子密码锁设计[J].研究与开发,2012,(07)

  [4] 曹建林,孙捷,孙雪颖等.电子密码锁设计[J].成都信息工程学院学报,2010(04)

  [5] 周润景,袁伟亭,景晓松. Proteus在MCS-51&ARM7系统中的应用百例[M].北京:电子工业出版社,2006

  [6] 郑棣,徐迎春.基于单片机的电子密码锁设计[J].福建电脑,2012(09)

  戴文雯 南京航空航天大学(江苏 南京 210016)

……
关注读览天下微信, 100万篇深度好文, 等你来看……
阅读完整内容请先登录:
帐户:
密码: