一种基于单片机和串行EEPROM的智能密码锁

发布者:化羽2015最新更新时间:2012-01-09 关键字:智能密码锁  单片机  串行EEPROM  AT89C51  AT24C01 手机看文章 扫描二维码
随时随地手机看文章

1.引言

电子技术的飞速发展,给传统的机械锁带来了巨大的变革,现代的电子技术与机械技术相结合,产生了一大批如声控锁、电子密码锁、遥控锁,指纹锁等先进的锁具。虽然这类产品安全性高,但因其生产成本高,安装使用不方便,在一定程度上限制了这类产品的普及和推广。本文介绍的是一种基于AT89C51单片机和AT24C01串行EEPROM的智能密码锁的硬件设计和软件实现方法,这种电路设计具有防试探按键输入、智能控制上锁、开锁、报警、修改密码等多种功能。密码长度可变,保密性强,灵活性高,外接各种执行机构,可广泛用于车辆、大门、保险柜等各种需上锁的场合。

2.设计思路

本设计中,智能密码锁工作时分为两种工作状态,分别是正常状态和锁定状态。锁定状态时,输出锁定信号,供外部执行机构使用,实现上锁功能;正常状态时,锁定信号消失,供外部执行机构使用,实现开锁功能。初始密码存储在AT24C01中,开锁时,将从面板上的微键盘输入的数字序列与AT24C01中存储的密码相比较,如果位数及每一位上的数都相吻合,则进行开锁动作,转入正常状态,否则仍将锁定。

为安全起见,密码可以进行更改。在正常状态时,程序允许用户随时进行密码修改,密码长度和数字可随意进行组合。

为防止程序“跑飞”等异常情况,本设计在软件中使用了简单的“程序陷阱”技术,根据实际需要,可酌情增加“看门狗”电路。无论是硬件复位还是软件复位后,自动进入锁定状态,保证异常情况下的安全。

锁定状态时,自动开启报警功能。如遇非法情况(如车辆锁定下仍万一发生移动等,可将这些情况转换为计数脉冲形式输入),计数若干次后报警(计数值可通过程序调整)。另外,为防止非法用户进行恶意多次试探开锁,连续三次输错密码,将进行报警。直至开锁后,所有报警消失。

3. AT89C51单片机和AT24C01串行EEPROM及其通讯

AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,内置8位中央处理器和Flash存储单元的AT89C51为智能密码锁提供了高性价比的解决方案。

AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口。AT89C51具有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。下图是PDIP封装的AT89C51引脚图:

AT24C01是美国ATMEL公司的低功耗CMOS串行EEPROM,它内含128×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。AT24C01具有PDIP、MSOP/TSSOP及SOIC等三种封装形式,以适应不同产品的需求。下图是PDIP封装的AT24C01引脚图:

AT24C01与外部通讯采用I2C总线。I2C(Inter-Integrated  Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。I2C总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主控。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。时序如下图:

接收数据的IC在接收到8bit数据后,应向发送数据的IC发出特定的低电平脉冲(应答信号),表示已收到数据。时序如下图:

在开始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。控制字节如下图所示:

AT24C01写操作分为字节写和页面写两种操作,读操作分为当前地址读、随机读和顺序读等三种操作,每种读写操作都有规定的时序,可参考AT24C01用户手册。本系统采用字节写和随机读两种操作方式,具体时序由软件模拟。

4.硬件连接

AT89C51内含4k bytes程序存储器和128 bytes数据存储器,可以满足设计需要,因此外部无需扩展,节省了很多I/O口线。

系统输入部分主要有:“设置密码”键、“上锁”键、“开锁”键、3×4微键盘阵列(数字0~9以及“确定”和“取消”键)、异常情况下的计数脉冲输入等。系统输出部分主要是锁定信号的输出和报警信号的输出。

AT89C51与AT24C01的连接,通过RxD充当时钟信号线SCL,TxD充当数据线SDA来实现,I2C总线的时序由软件模拟。由于AT24C01是I2C总线上与CPU相连的唯一的一个芯片,因此可将AT24C01的地址置为000,即将A0、A1、A2接地。

具体硬件连接图如下:

5.软件实现

程序复位后,先将AT24C01中保存的密码取出,放入RAM缓冲区1中暂存,将定时器、堆栈等进行初始化,为报警系统作好准备,将RAM缓冲区2中的密码初值设置为和RAM缓冲区1中的密码不同,保证程序复位后比较密码不会相同,这时,进入RAM缓冲区1和RAM缓冲区2的密码比较程序,只有当两者位数相同而且每一位数字都相同时,执行开锁动作、输出开锁信号、进入正常状态,否则执行上锁动作、输出上锁信号、进入锁定状态。在正常状态时,可以进行重新设置密码、上锁等操作,重新设置密码时,首先验证原始密码,如相同则可进行密码更改,然后将新密码保存至AT24C01中,同时更新RAM缓冲区1。在锁定状态时,系统启动报警功能,同时等待用户开锁,如发现用户按下“开锁”键,则读入从微键盘输入的数字序列,用其更新RAM缓冲区2,转入密码比较程序,如密码相同则开锁,否则继续等待用户开锁,为防止非法用户恶意多次试探密码,可在程序中设置当连续三次输入错误密码后自动报警,直至开锁后解除。

报警系统由AT89C51内置的定时/计数器实现,锁定状态时开启,正常状态时关闭。如遇异常情况,如车辆锁定下仍万一发生移动、门锁定下仍被强行打开等,可将这些情况转换为计数脉冲形式输入,计数若干次后报警,计数值可通过程序调整。

按键和微键盘的“去抖”,为简单起见,采用软件延时的方法。为防止程序“跑飞”等异常情况,在软件中使用简单的“程序陷阱”技术,即在多余程序空间内设置一些长转移指令LJMP 0000H,进行程序复位。

程序流程图如下:

6.总结

本文作者创新点:采用串行EEPROM保存密码,用单片机实现密码锁的控制功能,克服了机械密码锁密码量少,安全性差的缺点,具有更高的安全性、可靠性。本设计中,输入采用3×4微键盘阵列,根据需要,可将其改为与电子表更改时间类似的装置。另外,可以与PC机联网,实施远距离监控、报警等功能,可广泛用于楼宇智能系统中。

参考文献

[1]刘文涛,MCS-51单片机培训教程,电子工业出版社,2005.8

[2]邬宽明,单片机外围器件实用手册,北京航空航天大学出版社,1998.12

[3]赵晓玲,单片机在指纹保险柜中的应用[J],微计算机信息,2006.7-2:134-136

关键字:智能密码锁  单片机  串行EEPROM  AT89C51  AT24C01 引用地址:一种基于单片机和串行EEPROM的智能密码锁

上一篇:基于89C55和GAL16V8,MC1413的步进电机驱动器的设计
下一篇:单片机控制的自动锁相调频发射机的设计

推荐阅读最新更新时间:2024-03-16 12:50

基于单片机和Modbus协议的停车器控制系统
道岔是一种常见的铁路配件,在铁路的正常运行中,起着至关重要的作用。作为道岔控制系统的执行机构,转辙机(switch machine)是组成铁路道岔系统的重要零件。在编组站中,为了减少中间环节,列车停车器借用转辙机控制系统。编组站上的列车停车器控制系统的可靠性、安全性和操作的方便性对于提高铁路系统的安全性和效率、降低人力成本具有重要意义。为了配合控制和监督集中化的趋势,应该采用集控式控制,并且通过协议实现和计算机的单主机多从机系统,最终并入主系统。Modbus是一种开放的、免费的通讯协议,具有数据的安全性、物理媒介的广泛适用性和网络互连的多样性等优势。因此,我们自行设计了一种居于单片机和Modbus协议的双机通信控制系统。采用主从
[单片机]
基于<font color='red'>单片机</font>和Modbus协议的停车器控制系统
基于51单片机智能灯光控制系统
一.硬件方案 智能灯光控制系统由单片机最小系统、人体感应模块、关照强度模块、灯光控制模块、电源模块和灯泡组成。本文以STC89C52单片机为核心,通过利用光照度和红外人体感应相结合主动与被动的探测方法,现了室内无人或者关照充足时灯光自动光灯,有人到来且光照不足时自动开启灯光。当人们进入家门或走出公寓,楼道灯延时一分钟后会自动熄灭。在白天,即使有人走过时,灯也不会亮,可以达到节能的目的。 主要由51单片机最小系统+红外热释电模块+光强度检测模块+继电器灯光控制模块+电源模块组成;如图: 二.设计功能 (1)通过红外热释电传感器检测人体信号。 (2)光敏电阻检测环境光的光线强度,然后通过比较器电路做比较,输出信号给单片机。 (
[单片机]
基于51<font color='red'>单片机</font>的<font color='red'>智能</font>灯光控制系统
基于AT89C51单片机的红外遥控器解码器的设计
 1 红外线遥控信号发送器电路 TC9012F的遥控信号   TC9012F为4位专用微控制器,其内部振荡电路的振荡频率fosc典型值为455 kHz。当不按下操作键时,其内部455 kHz的时钟振荡器停止工作,以减少电池消耗。内部分频电路将振荡频率,fosc进行12分频后,变成频率fc=37.9 kHz,占空比为1/3的脉冲载波信号。 红外遥控信号发送器电路由集成电路TC9012F、键盘矩阵电路、驱动器和红外发光二极管组成,遥控信号为37.9 kHz的脉冲载波被遥控编码脉冲调制的已调波,如图1所示。   遥控编码脉冲由引导码、用户码、功能码和功能码的相反码组成,用户码是同一组码发送两次,如图2所示。用户码
[单片机]
基于<font color='red'>AT89C51</font><font color='red'>单片机</font>的红外遥控器解码器的设计
嵌入式技能-51单片机仿真芯片调试
程序是调出来的!!经常有小伙伴在知乎里面提问,说怎么实现花样流水灯,怎么实现按键控制LED灯,还有C语言的一些例子怎么输出的和自己想的不一样等等诸如此类的问题,我想说的是机器是个死东西,程序的写法有千千万种,各路知乎大神不可能涵盖所有问题,只能提供指导思路,重要的还是自己要掌握排除问题的方法,其中调试程序就是让程序一步一步的执行,当出现疑难杂症时我们可以用这种方法去查看单片机寄存器和数据变量是否按照正常的逻辑运行,当我们慢慢掌握了这个技能,就算再大的问题也能排查出来,甚至能让我们少走很多弯路,话不多说,老铁们开始干吧✌✌ 实验环境 :Keil软件,版本:C51 V9.54 STC-ISP综合下载软件,版本:V6.88 仿真芯
[单片机]
嵌入式技能-51<font color='red'>单片机</font>仿真芯片调试
AVR 单片机UART以查询、中断方式发送数据
/**************************************************************************************************************** * AVR 单片机UART以查询、中断方式发送数据 * 说明:测试环境 硬件M16、开发平台IAR for AVR V5.11B ****************************************************************************************************************/ //------------
[单片机]
基于PIC微控制器的LED驱动控制电路设计
1 引言   led作为一种供电电压低,功耗小,寿命长,无辐射的新型光源,应用领域日益扩大,成为固态照明的关键光源。许多固态照明应用常采用智能控制电路系统来驱动LED以履行各种功能和任务,譬如为确保流经LED的电流不受供电电压波动的影响维持恒定,从而使LED的亮度无明显变化的亮度调节就是控制电路系统的任务之一。亮度调节涉及电流调整与调光控制。控制电路系统的另一任务是失效识别。因LED具有很强的温度相关性,大多失效又与温度有关,故控制电路系统应能履行温度补偿。此外,通过硬件选择以适应不同亮度LED组合的驱动也极必要。一块芯片上可集成全部必要硬件功能的PIC微控制器,由于价格低廉,时钟频率高达20MHz,功耗极低和工作温度范围宽等
[电源管理]
基于PIC<font color='red'>微控制器</font>的LED驱动控制电路设计
51单片机教程:按键输入、矩阵按键(按键巧用)proteus仿真+keil
IO口原理 (P1口最简单,所以这里只介绍P1,其他IO口原理类似) P1口原理 可以看到的是P1口的工作原理比较简单,首先用P1口做输入输出较为好理解。 1、内部总线:就是内部P1.X位寄存器的值,比如说内部总线P1.0上电压为0V,那么对应P1.0=0;内部总线P1.0上电压为5V,那么对应P1.0=1; 2、P1.X引脚:对应单片机引脚接口 3、读锁存器:读锁存器为1,允许读锁存器。为0,不允许读锁存器。 4、读引脚:为0不允许读引脚,为1允许读引脚 5、写锁存器:提供一个上升沿锁存数据(写数据到单片机IO口上时自动提供一个脉冲) 几个核心问题: 1、读锁存器与读引脚区别是什么? 读锁存器:读锁存器Q的电平 读引脚:
[单片机]
51<font color='red'>单片机</font>教程:按键输入、矩阵按键(按键巧用)proteus仿真+keil
单片机定时器的应用与误差纠正
1 前言    定时器是MCS-51单片机非常重要的组成部分,由于其应用与单片机的其他硬件相关,存在着一定的复杂性 。而定时器是单片机应用中解决某类复杂问题的最有为效的方法,应用非常广泛。随着定时要求的提高,在定时处理过程中所带来的误差需要校正 ,本文就MCS-51单片机的使用方法与误差校正方法进行了讨论,并给出通用算法与程序。 2 定时器工作方式与方式设置    MCS-51单片机有两路独立的定时器,每路定时器有4种工作方式(0~3),方式0是13位计数结构,计数器由TH全部8位与TL的低5位构成;方式1是16位计数结构,计数器由TH与TL全部8位共16位组成;方式2是8位计数结构方式,计数器由TL8位组成,与其他方式不同
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved