基于AT89C51的电子密码锁设计
2017-04-08周炳高美珍洪家平
周炳 高美珍 洪家平
摘要:本设计是基于AT89C51单片机为控制核心的密码锁设计方案。控制核心采用单片机AT89C51,配备相应的硬件电路和烧录软件程序,可以实现密码输入及修改、报警、开关锁、信息显示以及键盘锁定等功能。在本设计中,根据识别密码的正误来执行开锁或者报警,利用AT24C02串行存储器来修改和存储密码。经测试,本电子锁具有可靠性高、能耗低、易操作等优点。
关键词:密码锁;AT24C02;单片机;AT89C51
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2017)05-0232-02
Abstract: This design is based on the AT89C51 microcontroller as the core of the design of the password lock. The control core using SCM AT89C51, equipped with the corresponding hardware circuit and software programming procedures, can realize the password input and modify, alarm, switch lock, information display and keyboard lock function. In this design, according to the identification code or to perform lock or alarm, using AT24C02 serial memory to modify and store passwords. After testing, the electronic lock has the advantages of high reliability, low energy consumption, easy operation, etc.
Key words: Combination lock;AT24C02;Single-chip microcomputer;AT89C51
随着社会的发展以及人们生活水平的提高,随之而来也带来了安全方面的问题。在日常生活或单位工作中,由于住宅或部门安全措施的不足,被撬事件屡见不鲜,由此带来的个人人身财产安全方面的隐患也越来越受到众多人们的重视。传统的机械锁因其材料简陋、结构简单、工艺技术落后,已经越发不能满足现代锁所要求的安全性能了。于是安全系数高、易于操作的电子密码锁应运而生,并且伴随着技术的发展,电子密码锁正向着多功能化发展。
电子密码锁是一种通过输入密码来访问控制系统,从而控制机械开關的闭合,完成开锁、闭锁任务的电子产品。无论是从锁的可靠性还是安全性来看,电子密码锁都是远远超过了传统的机械锁。目前最常见的电子密码锁有遥控式和键盘式两类,本设计从成本、功耗、易操作等角度综合考虑,采用键盘式电子密码锁。
1系统总体设计
本系统设计主体上是由单片机、时钟电路、掉电储存模块、LCD显示模块、复位电路、矩阵键盘、警报机构以及开锁机构构成。其中,主控单元采用AT89C51单片机,显示单元采用LCD1602液晶显示屏,主输入单元采用矩阵键盘,存储单元采用电可擦除存储器AT24C02,警报机构采用蜂鸣器,发光二极管代替开锁机构完成整个系统设计。系统总体结构框图如图1所示:
2系统硬件设计
本设计需要用到的元器件主要包括:单片机AT89C51、电可擦除存储器AT24C02、液晶显示屏LCD1602、4行4列式矩阵键盘、蜂鸣器以及发光二极管等。在Proteus软件中系统硬件电路仿真图如图2所示:
在本次系统硬件电路设计中,单片机AT89C51的四个端口是做出如下分配的:P0端口首先接一个上拉电阻,然后再与LCD1602液晶显示屏的八位双向数据端D0~D7口相连接;P2端口分成两个部分,P2.0~P2.2口是与LCD1602液晶显示屏的4~6引脚相连接,余下的P2.5与P2.6口和电可擦除存储器AT24C02相连接;P1和P3端口比较简单,P1端口直接与4×4矩阵键盘相连接,P3端口直接用作于警报电路和开锁电路的接口。
2.1矩阵键盘设计
单片机AT89C51的P1端口与4×4矩阵键盘相连接,其中,P1.0~P1.3口和P1.4~P1.7口分别是作为4×4矩阵键盘的行输出口和列输出口。行与列输出口是不相互连接的,有按键被按下时,相对应的行与列才能相互连接。当程序算法一定时,每个按键的行值和列值也是固定且互异的,当按下按键时,通过逐行扫描,读出I/O口的值就能确切知道被按下的键是哪一个按键。在本设计中,数字键0~9直接对应着输入数字的0~9,功能键A为确认键,B为返回键,C为改密键,D为闭锁键,E与F不用。
2.2显示电路设计
LCD1602液晶显示屏一共拥有16个引脚,在本次系统设计中,单片机AT89C51的P2.0、P2.1、P2.2口线分别与LCD1602液晶显示屏的4、5、6号引脚相连接,已经编写并且烧录好的程序通过控制这3个引脚实现指令或数据的写和执行,然后根据指令或数据写和执行进一步来实现LCD1602液晶显示屏的显示功能。需要指出的是,由于LCD需要提供足够的电流才能正常工作,因此在实际的应用当中,要先在数据端口接一上拉电阻以确保液晶显示屏能正常工作。
2.3存储电路设计
AT24C02是串行E2PROM中的一种,具有I2C总线接口功能,即可以通过I2C总线接口来进行操作。同时AT24C02也是一个有专门写保护功能的电可擦除串行存储器。在Proteus软件的E2PROM仿真图中,单片机AT89C51的P2.5口是作为串行时钟输入线的接口,P2.6口是作为数据线的接口。A0~A2接地,所以单片机AT89C51在写AT24C02时,地址为10100000B=0A0H;在读AT24C02时,地址为10100001B=0A1H。当WP=0时,单片机可以进行读写操作。
3系统软件设计
本系统软件设计程序可以分为系统主程序、4×4矩阵键盘扫描子程序、LCD显示模块子程序、掉电存储子程序、定时器中断子程序、密码输入子程序以及警报子程序等。其中,系统主程序流程图如图3所示:
3.1键盘扫描子程序
键盘识别程序的原理是单片机通过逐行扫描来判断是否有键按下,当确认有键按下时,再在该行中确认是哪一列的键被按下。在此次系统软件设计中,单片机初始化时,P1端口的P1.0~P1.3口赋值为0,P1.4~P1.7口赋值为1,CPU则扫描整个P1端口。如果P1=0xf0成立,则表明没有键按下,否则就有键按下。
3.2显示模块子程序
由于本设计中要求液晶显示屏LCD1602可以显示密码输入、错误提示以及密码修改等界面信息,因此需要编写多个显示子程序来满足上述要求。下面就列出LCD1602液晶显示屏的写数据子函数:
4系统调试与仿真
把已经编写好的C语言源程序放到Keil环境下进行编译、调试,仿真完成。当输入密码正确时,发光二极管发光,LCD1602液晶显示屏显示欢迎回家界面。根据图2的系统电路原理图,设计并制作出了实物硬件电路板。经过再三检查无误后,进行了实物的试验运行。运行的结果又再一次证明了本次系统设计中Proteus软件仿真的所有运行结果。
5結束语
出于经济适用的角度,设计出了这一款能够修改密码、输入密码错误次数过多能够自动发出警报以及能够实现机械上锁功能的电子密码锁。经过反复多次的检测,系统各个步骤均能够按照界面上的提示正确运行。总体上来说,此次设计虽然还有很多有待改进的地方,但大体性能指标都达到了预期要求。经实物检验,本设计能够较好适用于家庭住宅、办公场所等位置,具有比较大的市场推广价值。
参考文献:
[1] 郭天祥.新概念51单片机C语言教程[M].电子工业出版社,2009.
[2] 赵文博,刘文涛.单片机语言C51程序设计[M].北京:人民邮电出版社,2005.
[3] 皮大熊,南光群,刘金华.单片机课程设计指导书[M].北京理工大学出版社,2010.
[4] 贾正松.单片机系统复位电路设计[J].科技资讯,2007(36):91-92.
[5] 袁新燕.浅谈单片机应用系统的调试[J].自动化与仪器仪表,2000(3):56-57.
[6] 宋锦.电子密码锁设计与调试[J].电脑知识与技术,2011(33).48-51
[7] 韩团军.基于单片机的电子密码锁设计[J].国外电子测量技术,2010(7).35-39
[8] 赵亮,侯国锐.单片机C语言编程与实例[M].北京:人民邮电出版社,2003.
[9] 袁可为.单片机控制密码锁设计[J].信息通信,2012(10):46-48.
[10] 武红玉.电子密码锁的设计[J].机械与电子,2012(10):185-187.