龙源期刊网 http://www.qikan.com.cn
基于C语言STC89C52单片机电子密码锁的设计与仿真
作者:金 桂,向国梁
来源:《现代电子技术》2010年第19期
摘 要:介绍一种通过Protues软件成功仿真的电子密码锁的实现过程。它采用高可靠性的STC89C52单片机来实现开锁和密码的识别,采用具备I2C总线接口的E2PROM芯片来完成密码的存储,通过1602液晶显示器提示程序运行状态和使用步骤,利用蜂鸣器模拟报警,发光二极管模拟锁的开关。该系统用C语言编写程序,与汇编语言相比具备更好的移植性和可读性,便于修改和增减功能。
关键词:Protues; 密码锁; 单片机; C语言 中图分类号:TN433-34文献标识码:A 文章编号:1004-373X(2010)19-0176-03
Design and Simulation of Electronic Code Lock Using STC89C52 MCU Based on C Language JIN Gui, XIANG Guo-liang
(Department of Physics & Electronic Information Engineering, Xiangnan University, Chenzhou 423000, China)
Abstract: The implementation of an electronic code lock which was successfully simulated by
TC89C52 to achieve the unlocking
and identification of the code, adopts I2C bus-uses LCD1602 to prompt the program′s running state and working procedures, adopts buzzer to
imitate the alarm and LED to imitate the switch. It is convenient to modify and add function by using C language program,which is more transplantable and reliable compared to assembly language. Keywords: Protues; code lock; single chip microcomputer; C language 0 引 言
电子密码锁是现代生活中常用的加密工具。它克服了机械式密码锁密码量少、安全性能差的缺点,尤其是微控制器的智能电子密码锁,不仅具有电子密码锁的功能,还可引入智能化管理功能,从而使密码锁具有更高的安全性和可靠性。
龙源期刊网 http://www.qikan.com.cn
电子密码锁通常使用ARM和单片机控制[1],单片机相对ARM实现较为简单,功能较为完善,因此使用单片机控制较多。用单片机控制的密码锁常使用汇编语言编写程序,显示器多数用数码管[2-3]。而本文所介绍的电子密码锁使用移植性及可读性强的高级语言
语言编写,便于
修改和增减功能;同时采用显示清楚,功率消耗小而且寿命长的1602液晶显示器,显示更加直观,使用更加方便。从经济实用的角度出发, 采用STC89C52[4]单片机设计出一种具有密码设置、报警和防止多次试探密码功能的电子密码锁,通过Protues软件成功地进行了仿真。 1 系统工作原理
本系统以STC89C52单片机为核心,使用4×4矩阵键盘作为数据输入方式,驱动1602显示器提示程序运行过程和开锁的步骤。本系统的密码判断过程如下:
当使用者输入6位密码后按下BESURE键,单片机通过密码逐个比较,如果输入的6位密码和设定的密码完全相同,那么能成功驱动开锁模拟灯将锁打开。若输入6位密码与设定的密码不相同,按下BESURE键后,模拟灯不亮,可以按BACK键重新输入。由于输入密码过程中难免输入失误,如果密码输错,可直接按下BACK键重新输入,但是系统不允许无限次地按BACK键,以免密码被套用,当3次密码输入都错误,单片机将驱动蜂鸣器报警[5]。并且本系统输入密码还有时间限制,若在规定的时间内没有将正确密码输入也会报警。
修改密码功能如下:当密码输入正确后,按下SET键可新设置密码。每设定一位新密码,单片机将其送给E2PROM,当6位新密码都输入完毕,系统将自动回到程序开始,重新读取密码并保存,使用者需输入新的密码才能将锁打开。 2 系统设计 2.1 硬件支持
使用的元器件有:核心芯片STC89C52、存储芯片AT24C02、液晶显示1602、矩阵键盘、报警蜂鸣器、独立按键(模拟门的开关)、发光二极管(模拟锁的开关)和三极管 2.2 软件设计
本系统软件包括主程序模块、密码比较判断模块、修改密码模块、键盘扫描模块、液晶显示模块及定时程序等模块。系统程序流程如图1所示。 图1 系统程序流程图 2.2.1 主程序模块
主程序主要用于定义全局变量,给全局变量赋初值,初始化E2PROM,启动定时器以及从AT24C02[6]中读取密码,为整个程序提供数据。
放大电流)。

