摘要:介绍一种通过Protues软件成功仿真的电子密码锁的实现过程。它采用高可靠性的STC89C52单片机来实现开锁和密码的识别,采用具备I2C总线接口的E2PROM芯片来完成密码的存储,通过1602液晶显示器提示程序运行状态和使用步骤,利用蜂鸣器模拟报警,发光二极管模拟锁的开关。该系统用C语言编写程序,与汇编语言相比具备更好的移植性和可读性,便于修改和增减功能。

关键词:Protues;密码锁;单片机;C语言

O 引言

电子密码锁是现代生活中常用的加密工具。它克服了机械式密码锁密码量少、安全性能差的缺点,尤其是微控制器的智能电子密码锁,不仅具有电子密码锁的功能,还可引入智能化管理功能,从而使密码锁具有更高的安全性和可靠性。

电子密码锁通常使用ARM和单片机控制,单片机相对ARM实现较为简单,功能较为完善,因此使用单片机控制较多。用单片机控制的密码锁常使用汇编语言编写程序,显示器多数用数码管。而本文所介绍的电子密码锁使用移植性及可读性强的高级语言C语言编写,便于修改和增减功能;同时采用显示清楚,功率消耗小而且寿命长的1602液晶显示器,显示更加直观,使用更加方便。从经济实用的角度出发,采用STC8 9C52单片机设计出一种具有密码设置、报警和防止多次试探密码功能的电子密码锁,通过Protues软件成功地进行了仿真。

1 系统工作原理

本系统以STC89C52单片机为核心,使用4×4矩阵键盘作为数据输入方式,驱动1602显示器提示程序运行过程和开锁的步骤。本系统的密码判断过程如下:

当使用者输入6位密码后按下BESURE键,单片机通过密码逐个比较,如果输入的6位密码和设定的密码完全相同,那么能成功驱动开锁模拟灯将锁打开。若输入6位密码与设定的密码不相同,按下BESURE键后,模拟灯不亮,可以按BACK键重新输入。由于输入密码过程中难免输入失误,如果密码输错,可直接按下BACK键重新输入,但是系统不允许无限次地按BACK键,以免密码被套用,当3次密码输入都错误,单片机将驱动蜂鸣器报警。并且本系统输入密码还有时间限制,若在规定的时间内没有将正确密码输入也会报警。

修改密码功能如下:当密码输入正确后,按下SET键可新设置密码。每设定一位新密码,单片机将其送给E2PROM,当6位新密码都输入完毕,系统将自动回到程序开始,重新读取密码并保存,使用者需输入新的密码才能将锁打开。

2 系统设计

2.1 硬件支持

使用的元器件有:核心芯片STC89C52、存储芯片AT24C02、液晶显示1602、矩阵键盘、报警蜂鸣器、独立按键(模拟门的开关)、发光二极管(模拟锁的开关)和三极管(放大电流)。

2.2 软件设计

本系统软件包括主程序模块、密码比较判断模块、修改密码模块、键盘扫描模块、液晶显示模块及定时程序等模块。系统程序流程如图1所示。

2.2.1 主程序模块

主程序主要用于定义全局变量,给全局变量赋初值,初始化E2PROM,启动定时器以及从AT24C02中读取密码,为整个程序提供数据。

2.2.2 密码比较判断模块

该模块的功能是将键盘输入的密码利用if语句与设定的密码进行逐个比较,若密码完全正确则开锁;若不正确,则按下BACK键,重新输入密码,每按下BACK键一次,输入次数将自加1,当3次都出错则报警。

2.2.3 密码修改模块

在密码输入正确情况下,可以按下SET对密码进行重新设置,每设定一位就将密码送给AT24C02存储起来,当设置6位密码完毕后,系统将自动跳到程序开始,调用新设置的密码。

STC89C52向AT24C02写入密码子程序:

2.2.4 键盘扫描模块

该模块具备功能有:逐列扫描键盘确定被按键的具体位置、判断键盘上有无键按下、消除去抖动、判断闭合的键是否释放等功能。

2.2.5 定时模块

本模块用于对密码输入时间控制。在程序开始运行时首先对定时器进行了初始化,从按下PUT IN键开始,系统开始计时,当输入的时间达到规定的时间将立即报警。

2.2.6 液晶显示模块

此模块包括液晶初始化、命令的输入、显示数据的输入。其中命令是用于控制液晶状态是否显示光标,光标是否闪烁,是否清除原来数据以及显示的具体位置。数据显示主要是将要显示的信息按需要准时显示出来。

3 系统仿真

为了方便程序调试,本文采用了Proteus仿真,仿真图如图2所示。

3.1 系统介绍

图2中U1为STC89C52是整个系统的核心,编写的程序以二进制的文件导入其中;U2为AT24C02,第5和第6个引脚分别与单片机的P1.2和 P1.3相连;LCD1为1602液晶显示器,引脚连接如图2所示;独立按键DOOR,当门关上为键按下状态;D1为模拟开锁灯,当密码正确,按下BE- SURE键D1将亮;BUZ1为蜂鸣器报警。当程序编写好并导入到单片机里后,按下图2最下面的开始按钮,1602液晶显示器将提示密码锁的运行状态,系统开始工作。

3.2 开锁功能

当电源开启时,1602液晶显示Welcome欢迎界面,当按下PUT IN键后,显示器显示PUT IN CODES提示使用者输入密码,如图3所示。几秒后液晶显示器上提示将自动消失。此时可输入正确密码,且密码输入时显示*而不会将输入的数据显示出来。当输入密码完毕后,按下BESURE键,如果输入的密码正确D1将亮(D1作为开锁的模拟开关)。若密码错误,可以按下BACK键,程序将跳到loop(开始界面),重新输入密码,同时输入次数将增加一次。当3次都输入错误则自动报警,并且输入密码的时间必须在规定的时间完成,否则也会报警。

3.3 密码设定

在密码输入正确后,按下SET键可对密码进行重新设置,液晶显示器显示SET CODS。同样几秒后提示信息将自动消失,此时开始重设密码。在密码设定过程中会将设定的数字显示出来,每输入一位密码需按下YES键确定,当设置的密码达到6位将自动回到启动界面。

4 结论

(1)成功仿真实现了1602液晶显示,密码开锁,密码设置,防止多次试探,报警等功能。

(2)采用C语言编写程序,具有很强的移植性,为系统增减和修改功能带来了方便。

电子密码锁程序C语言,基于C语言STC89C52单片机电子密码锁的设计与仿真相关推荐

  1. 基于Tiny-51操作系统的51单片机温度测控系统设计

    文章目录 基于Tiny-51操作系统的51单片机温度测控系统设计 一.设计题目 二.设计要求 三.设计作用及目的 四.硬件设计 五.软件流程 六.调试界面 七.心得体会 八.程序源码 基于Tiny-5 ...

  2. c语言密码锁门禁系统程序,基于C语言STC89C52单片机电子密码锁的系统设计与仿真...

    摘 要:介绍一种通过 Protues 软件成功仿真的电子密码锁的实现过程.它采用高可靠性的STC89C52单片机来实现*和密码酌识别,采用具备IC总线接田的EPROM芯片来完成密码的聋储,通过l602 ...

  3. 基于C语言STC89C52单片机电子密码锁的设计与仿真

    arm实现较为简单, 功能较为完善, 因此使用单片机控制较多. 显示器少数用数码管. 而本文所介绍的电子密码锁使用移植性及可读性强的高级语言C语言编写, 使用更加方便. 从经济适用的角度出发, 采用S ...

  4. 图像haar特征提取 c语言,基于C语言的特征点提取程序 本程序是利用C语言对各种信号数据的特征点提取程序 - 下载 - 搜珍网...

    基于C语言的特征点提取程序\修改后 特征点提取程序\提取特征点\Debug\football.ilk 基于C语言的特征点提取程序\修改后 特征点提取程序\提取特征点\Debug\football.ob ...

  5. 求三次样条函数c语言,基于C语言对三次样条函数的求解及程序.PDF

    基于C语言对三次样条函数的求解及程序 Va1ueEngineering 95 . 基于C语言对三次样条函数的求解及程序 TheSolutionandtheProgram toCubicSplineFu ...

  6. 数控机床编程用c语言,基于C语言数控机床智能后置处理程序的制作-(1).pdf

    基于C语言数控机床智能后置处理程序的制作 陈德存 (温州职业技术学院机械工程系,浙江温州325035) 摘要:介绍了UGCLS文件中的信息,再结合实际的业务要求,利用C语言对UG后处理文件的编辑,实 ...

  7. 单片机红外通信c语言,基于C语言的计算机与多单片机红外无线串口通信的实现.doc...

    基于C语言的计算机与多单片机红外无线串口通信的实现 基于C语言的计算机与多单片机红外无线 串口通信的实现 黄文亮 信息学院 电子信息工程专业 指导教师 刘传菊 摘要:计算机与一台或多台单片机的通信系统 ...

  8. 教材征订管理系统c语言,基于C语言的图书管理系统的设计与实现范文.doc

    毕业论文 题目:基于C语言的图书管理系统的设计与实现 英文题目:Design and Implementation of Books Management System Based on C Lang ...

  9. 单片机动态从00到99C语言,基于c语言单片机秒表课程设计1.doc

    基于c语言单片机秒表课程设计1 课程设计报告 课程名称:单片机原理及应用 报告题目:秒表 学生姓名: 所在学院:信息科学与工程学院 专业班级: 学生学号: 指导教师: 2013 年 12 月 25 日 ...

  10. 区块链java语言,基于Java语言构建区块链(一)—— 基本原型

    引言 区块链技术是一项比人工智能更具革命性的技术,人工智能只是提高了人类的生产力,而区块链则将改变人类社会的生产关系,它将会颠覆我们人类社会现有的协作方式.了解和掌握区块链相关知识和技术,是我们每位开 ...

最新文章

  1. 为什么计算机模拟不了人脑,为什么计算机永远不会拥有人类的意识?听完科学家的解释恍然大悟...
  2. CodeForces - 987E Petr and Permutations(树状数组+逆序对定理)
  3. 有两个地方,用到了javabean对象和属性字符串值之间的转换
  4. eventbus多个订阅_番石榴的EventBus –简单的发布者/订阅者
  5. centos7安装oracle12c 三
  6. Win7_刻录DVD
  7. ApacheCN 人工智能知识树 v1.0
  8. 放假为什么要借周末呢?
  9. 如果一栋楼起火谁赔偿_电动车起火,楼上25人被困,万宁一居民楼发生惊险一幕...
  10. NYOJ--891--找点
  11. edius裁剪快捷键_edius常用的快捷键有哪些-怎么设置快捷键-edius快捷键使用大全...
  12. 项目管理十大知识领域(二)--- 项目范围管理(过程、输入、工具和技术、输出)
  13. 专利申请过程中的重要文件总结
  14. Hadoop高可用原理及环境搭建
  15. (专升本)PowerPnt(幻灯片放映、演示文稿放映)
  16. 如何处理Java异常及常见异常
  17. 同样是技术出身,深夜看完张一鸣200条微博,让我越想越后怕
  18. 读《如何阅读一本书》有感
  19. 远程桌面设置分辨率的步骤
  20. [MySQL] MySQL 面试题集锦(1)

热门文章

  1. 从零开始开发一款Android App
  2. 边做边学入门微信小程序之仿豆瓣评分
  3. Android Studio 报错:Incompatible types
  4. 解决Android Studio的ADB连接不到手机问题
  5. 洛谷——P2342 叠积木
  6. python学习笔记六
  7. 80004005错误代码_0x80004005,详细教您解决0x80004005错误代码的方法
  8. 用户注册时图片验证码和短信验证码的逻辑
  9. 北京大学计算机学院复试名单2021,北京大学2021拟录取推免研究生毕业院校统计,多位来自非211高校...
  10. unity中实现火焰的效果