引言

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

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

1、系统工作原理

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

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

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

2、系统设计

2.1 硬件支持

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

2.2 软件设计

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

图1 系统程序流程图

2.2.1 主程序模块

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

2.2.2 密码比较判断模块

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

2.2.3 密码修改模块

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

STC89C52向AT24C02写入密码子程序:

void wrtte_byte(uchar date)

STC89C52 从 AT24C02读取密码子程序:

2.2.4 键盘扫描模块

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

2.2.5定时模块

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

2.2.6 液晶显示模块

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

3 系统仿真

为了方便程序高度。本文采用了 Protues 仿真,仿真图如图2所示。

3.1系统介绍

图2中U1为STC89C52是个系统的核心,编写的程序以二进制的文件导入其中;U2为AT24C02,第5和第6个引脚分别与单片机的P1.2和P1.3相连;LCD1为1602液晶显示器,引脚连接如图2所示;独立按键DOOR,当门关上为键按下状态;D1为模拟*灯,当密码正确,按下BESURE键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语言程序,以STC89C52单片机为核心的电子密码锁设计相关推荐

  1. 51单片机的电子钟c语言程序,基于51单片机的电子钟C语言程序

    基于单片机C语言的电子钟程序代码与仿真 基于51单片机的电子钟C语言程序: 程序代码 #include #include #define uchar unsigned char #define uin ...

  2. c51单片机音乐门铃C语言程序,基于51单片机的无线音乐门铃设计

    include #define sound_amount 5 // 歌曲的数量 sbit pause=P2^5; // 播放 暂停 sbit speaker=P2^7; // 无源蜂鸣器 // uns ...

  3. 基于51单片机的数字电压表c语言程序,基于51单片机的数字电压表的设计..doc

    数字电压表的设计目录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc282204562" 绪论1 HYPERLINK \l & ...

  4. 基于51单片机的数字电压表c语言程序,基于AT89C51单片机的直流数字电压表设计毕业论文+任务书+Proteus代码+电路图+源码...

    摘 要 数字电压表是一种结构简单.应用广泛的测量仪表,近年来越来越多地应用在电压测量场合,因此对其测量精度.可靠性和可维护性的要求也越来越高.数字电压表是也诸多数字化仪表的核心与基础,其数字化是将连续 ...

  5. 51单片机简易计算器C语言程序,用51单片机制作的简单计算器程序

    三.程序源代码 #include <reg51.h>#include <intrins.h> #include <ctype.h> #include <std ...

  6. 电子时钟单片机c语言程序,51单片机电子时钟C语言程序

    本程序基于ATM89系列单片机的电子时钟C语言程序,能显示月日时分秒,同时还能调节其值!显示方式用六个8段数码管! #include//头文件 #define uchar unsigned char/ ...

  7. c语言密码锁程序,简易密码锁(C语言程序).doc

    简易密码锁(C语言程序) 单片机小程序程设计 简易密码锁 姓 名 : 静 学 号 :2011 目录 功能介绍2 框图介绍2 引脚介绍3 硬件电路图5 程序设计5 设计心得11 功能介绍 实现功能:一共 ...

  8. 单片机 中断秒表 c语言程序,51单片机c语言的秒表设计.doc

    51单片机c语言的秒表设计.doc 课程设计报告 基于AT89C51单片机的秒表设计 院 系 电子信息工程学院 专 业 电子信息工程 1 姓 名 摘 要 本设计是设计一个单片机控制的多功能秒表系统. ...

  9. 简易电子钟c语言程序,(最新整理)基于51单片机的电子钟C语言程序

    <(最新整理)基于51单片机的电子钟C语言程序>由会员分享,可在线阅读,更多相关<(最新整理)基于51单片机的电子钟C语言程序(9页珍藏版)>请在人人文库网上搜索. 1.完整) ...

  10. AT89C51单片机流水灯c语言程序及详解(扫盲教程)

    AT89C51单片机是我们学习单片机必学的一个单片机,也是单片机入门的教材,下面给大家展示一下流水灯的编写方法适合初学者 首先先在proteus画出仿真图,方便仿真程序 下面来编写程序,先来写入头函数 ...

最新文章

  1. Oracle Start With关键字
  2. 他们用卷积神经网络,发现了名画中隐藏的秘密
  3. rabbitmq中的三种交换器(匹配模式)
  4. 房间计费系统改造——数据库设计
  5. jstat和jmap使用
  6. 在Android中实现监听 返回键,主键,菜单键
  7. html hover图片效果,CSS第9款:Imagehover.css 纯CSS打造的图片悬停效果
  8. Visual Studio 2010/2013 UTF8编码调试时显示中文
  9. Java并发编程实战 第14章 构建自定义的同步工具
  10. java去除网页中的广告和导航等信息_**css+html纯css怎样去除导航子菜单中的默认背景?**...
  11. 关于政府房价调控的一个误区
  12. 【下载】1200页CV经典《计算机视觉:算法与应用》第二版开放下载
  13. 星外主机系统被ZKEYS全资收购合并了
  14. 台式计算机如何组装,怎样组装基本台式机
  15. 一毕业就上了艘“火箭”,这群校招生在大公司创业
  16. Excel表格中数据比对和查找的几种技巧
  17. 重装java后hadoop配置文件的修改
  18. 【经典算法】·二分法
  19. Python数据分析——世界自杀概况分析
  20. C++的名字空间(很重要)

热门文章

  1. 宏基4752g 开机进度条卡到75%左右,解决办法
  2. 手机网络IP地址问题
  3. inurl_搜索引擎命令site,intitle,inurl,分别代表什么意思
  4. 2022低压电工考试题及答案
  5. python 蒙特卡罗_python实现蒙特卡罗方法(代码示例)
  6. c语言中等于号和大于号的优先级,C  读书笔记之 关系运算符重载 大于号 小于号  等于号==...
  7. 计算机应用期刊查重率要求,计算机学报先审稿还是先查重
  8. gopro lrv文件和thm文件
  9. Java编写五线谱上的音符_五线谱音符(五线谱1234567表示图)
  10. linux清华源地址,pip清华镜像源使用方法总结