1、基于单片机控制电子密码锁的毕业设计 王仁杰基于单片机控制电子密码锁都的毕业设计王仁杰(10港控11)摘要 随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,安全性能低,无法满足人们的需要。 本文设计从经济实用的角度出发,采用美国 Atmel 公司的单片机 AT89S51 与低功耗CMOS 型 E2PROM AT24C02 作为主控芯片与数据存储器单元,结合外围的键盘输入、显示、报警、开锁等电路,用汇编语言编写主控芯片的控制程序,设计了一款可以多次更改密码具有报警功
2、能的电子密码锁。经实验证明,该密码锁具有设计方法合理,简单易行,成本低,安全实用,符合住宅、办公室用锁要求,具有推广价值。关键词 : 单片机 密码锁个数不够 毕业设计说明书(论文)外文摘要Title Electronic Cipher Lock AbstractAs electronic products are developing towards intelligence and minimiza,singlechip computers (SCM ) have become the first choice for controllers in the development of el
3、ectronic products. With the improvement of peoples living standards,it has become particularly prominent about how to achieve Anti-theft family. The traditional mechanical lock has such shortcoming as simple structure , Low security, it cant meet peoples demands. For practicality, this paper designs
4、 a new electronic cipher lock, which has the function of alarm and whose cipher can be changed many times. This cipher lock uses AT89S51 SCM and E2PROM AT24C02 as main chip and data memory cell . The author made this ciphor lock by use of making controlled program of master CMOS with periphery elect
5、rocircuit of keyboard input, display, alarm and unlock. Experiments show that the designed cipher lock is characterized by its reasonable designing methods, simple operation, low cost and property of safety and practicalityBesides,it works well as a residence lock and has great potential for commerc
6、ial developmentKeywords Cipher lock SCM Alarm 删目 录第一章 引言11.1 电子密码锁简介11.2 电子密码锁的发展趋势11.3 本设计所要实现的目标2第二章 设计方案32.1 采用以单片机为核心的控制3第三章 硬件电路设计431 主要元器件介绍43.1.1主控芯片AT89S5143.1.2 存储芯片AT24C0193.1.3 LCD1602 显示器103.1.4 晶体振荡器113.2 硬件电路设计123.2.1 电路总体构成133.2.2 电源输入部分143.2.3 键盘输入部分143.2.4 密码存储部分153.2.5 复位部分163.2.6
7、晶振部分173.2.7 显示部分173.2.8 报警部分183.2.9 开锁部分19第四章 软件设计20结 论24致 谢25参 考 文 献26附 录 一27附 录 二44行间距1 引言目录里为“第一章”前后不一致1.1 电子密码锁简介 电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其特点如下:1) 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。2) 密码可变,用户可以
8、随时更改密码,防止密码被盗,同时也可以避免因人员更替而使锁的密级下降。3) 误码输入保护,当输入密码多次错误时,报警系统自动启动。4) 无活动零件,不会磨损,寿命长。5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。每段首行空2汉字格,下面同样要求1.2 电子密码锁的发展趋势 在日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。目前门锁主要用弹子锁,其钥匙容易丢失;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。针对这些锁具给人们带来的不便
9、若使用机械式钥匙开锁,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。它的出现为人们的生活带来了很大的方便,有很广阔的市场前景。由于电子器件所限,以前开发的电子密码锁,其种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,在后为多是基于 EDA 来实现的,其电路结构复杂,电子元件繁多,也有使用早先的 20 引角的 2051 系列单片机来实现的,但密码简单,易破解。随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,使用更加方便,安全保密性更强,由以前的单密码输入发展到现在的,密码加感应元件,实现了真正的电子加密,用户
10、只有密码或电子钥匙中的一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的第 0 页 共 47 页提高出现了越来越多的电子密码锁出于安全、方便等方面的需要许多电子密码锁已相继问世。但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子防盗锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗锁。组合使用信息也能够使电子防盗锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。可以看出组合使用电
11、子信息是电子密码锁以后发展的趋势。1.3 本设计所要实现的目标 本设计采用单片机为主控芯片,结合外围电路,组成电子密码锁,用户想要打开锁,必先通过提供的键盘输入正确的密码才能将锁打开,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。密码可以由用户自己修改设定,锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。2 设计方案2.1 采用以单片机为核心的控制 由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比。一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O 口、
12、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些的还有一些最基本的比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员的适应性、技术支持等。基于以上因素本设计选用单片机 AT89S51 作为本设计的核心元件,利用单片机灵活的编程设计和丰富的 I/O 端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接 AT24C02 芯片用于密码的存储,外接 LCD1602 显示器用于显
13、示作用。当用户需要开锁时,先按键盘开锁键之后按键盘的数字键 09 输入密码。密码输完后按下确认键,如果密码输入正确则开锁,不正确显示密码错误重新输入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后输入原来的密码,只有当输入的原密码正确后才能设置新密码。新密码输入无误后按确认键使新密码将得到存储,密码修改成功。可以看出方案二控制灵活准确性好且保密性强还具有扩展功能,根据现实生活的需要此次设计采用此方案。3 硬件电路设计31 主要元器件介绍3.1.1主控芯片AT89S51 AT89S51 是一个低功耗,高性能 CMOS 8 位单片机,片内含 4k Bytes ISP(In-
14、systemprogrammable)的可反复擦写 1000 次的 Flash 只读程序存储器,器件采用 ATMEL 公司的高密度、非易失性存储技术制造,兼容标准 MCS-51 指令系统及 80C51 引脚结构,芯片内集成了通用 8 位中央处理器和 ISP Flash 存储单元,功能强大的微型计算机的 AT89S51 可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51 具有如下特点:40 个引脚,其引脚排列如图3-1所示,4k Bytes Flash 片内程序存储器,128 bytes 的随机存取数据存储器(RAM),32 个外部双向输入/输出(I/O)口,5 个中断优先级 2
15、 层中断嵌套中断,2 个 16 位可编程定时计数器,2 个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51 设计和配置了振荡频率可为 0Hz 并可通过软件设置省电模式。空闲模式下,CPU 暂停工作,而 RAM 定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存 RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP 和 PLCC 字体不统一等三种封装形式,以适应不同产品的需求。应先见文字后见图,见我加的红色部分,以下要求相同图不清晰图3-1 AT89S51 芯片引脚图其主要功能特性:兼容 MCS-51 指令系统
16、32 个双向 I/O 口4k 可反复擦写(1000 次)ISP Flash ROM4.5-5.5V 工作电压2 个 16 位可编程定时/计数器全双工 UART 串行中断口线2 个外部中断源中断唤醒省电模式看门狗(WDT)电路灵活的 ISP 字节和分页编程时钟频率 0-33MHz128x8 bit 内部 RAM低功耗空闲和省电模式3 级加密位软件设置空闲和省电功能双数据寄存器指针标点和空格 可以看出 AT89S51 提供以下标准功能:4K 字节 Flash 闪速存储器,128 字节内部 RAM,32 个 I/O 口线,看门狗(WDT),两个数据指针,两个 16 位定时器/计数器,一个 5 向量两
17、级中断结构,一个全双工串行通信口,片内振荡器及时钟。同时, AT89S51 可降至 0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式何在 RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直接到一个硬件复位。 AT89S51 引角功能说明:Vcc:电源电压;GND:地;P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(
18、低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。行间距大了!P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。部分P1口具有第二功能; 端口引脚 第二功能 P1.5 MOSI(用于ISP编程) P1.6 MISO(用于ISP编程) P1.7 SCK(用于ISP编程)这是啥?P2口:
19、P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。在访问位地址的外部数据存储器(如执行:MOVX Ri 指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。Flash 编程或校验时,P2也接收高位地址和其它控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
20、作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如表3-1 所示同样需要先见文字后见表。表3-1 P3口的第二功能端口引脚第二功能端口引脚第二功能RXD (P3.0)串行输入口T0(P3.0)定时|计数器0外部输入TXD (P3.1)串行输出口T1(P3.0)定时|计数器1外部输入INT0 (P3.2)外中断0WR(P3.0)外部数据存储器写选通INT1 (P3.3)外中断1RD(P3.0)外部数据存储器读选通 RST:复位输入。当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。WDT益出将使该
21、引脚输出高电平,设置SFR AUXR 的 DISRTO 位(地址8EH)可打开或关闭该功能。DISRTO 位缺省为RESET输出高电平打开状态。 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:第当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位禁位后,只有一条MOVX 和MOVC指令ALE才会被激活。此外,该引脚伎被微弱拉高,单
22、片机执行外部程序时,应设置ALE无效。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,高有两次有效的PSEN信号。 EA/VPP:外部访问允许。欲使CPU公访问外部程序存储器(地址0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上12V的编程电压Vpp。 XTAL1:振荡器反相放大器及内
23、部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。AT89S51芯片内部结构包括:特殊功能寄存器:特殊功能寄存器的片内空间分存地址并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。而写这些地址单元将不能得到预期的结果。 中断寄存器:各中断允许控制位于IE寄存器,5个中断源的中断优先级控制位于IP寄存器。 双时钟指针寄存器:为方便地访问内部和外部数据存储器,提供了两个16位数据 指针寄存储器:PD0位于SFR区块中的地址82H、83H和DP1位于地址84H、85H,当SFR中的位DPS=0时选择DP0,而DPS=1时选择DP1。在使用前初始化DPS。 电源空闲标
24、志:电源空闲标志(POF)在特殊功能寄存储器SFR中PCON的第4位(PCON.4),电源打开时POF置“1”,它可由软件设置睡眠状态并不为复位所影响。 存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。 程序存储器:如果EA引脚接地(GND),全部程序均执行外部存储器。在AT89S51,假如接至Vcc(电源),程序首先执行从地址0000H0FFFH(4KB)内部程序存储器,再执行地址为1000HFFFFH(60KB)的外部程序存储器。 数据存储器:在AT89S51的具有128字节的内部RAM,这128字节可利用直接或间接寻址方
25、式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。看门狗定时器(WDT):WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看狗复位SFR(WDTRST)构成。外部复位时,WDT默认为关闭状态,要打开WDT,必按顺序将01H和0E1H写到WDTRST寄存器,当启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位外没有其它方法关闭WDT,当WDT溢出,将使RST输出高电平的复位脉冲。3.1.2 存储芯片AT24C01 AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含2568位存储空间,具有工作
26、电压宽(2.55.5 V)、擦写次数多(大于10000次)、写入速度快(小于10 ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和IO线,并且支持在线编程,进行数据实时的存取十分方便。AT24C02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线是一种用于IC器件之间连接的二线制总线。他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址
27、识别每个器件。AT24C02正是运用了I2C规程,使用主从机双向通信,主机(通常为单片机)和从机(AT24C02)均可工作于接收器和发送器状态。主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。不清晰图3-2 AT24C02两种引脚图24C02 中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加 1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读
28、取。为降低总的写入时间,一次操作可写入多达 8 个字节的数据。3.1.3 LCD1602 显示器现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。1602 型 LCD显示模块具有体积小,功耗低,显示内容丰富等特点。1602 型 LCD 可以显示 2 行 16 个字符,有 8 位数据总线 D0 D7 和 RS,R/W,EN 三个控制端口,工作电压为 5V,并且具有字符对比度调节和背光功能。表3-2 1602 型表的前面没文字引出,补上后面同要求 LCD 的接口信号说明:编号符号引脚说明编号符号引脚说明1VSS电源地9D2DATA I/O2VDD电源正极10D3DATA I/O3V
29、0液压显示偏压信号11D4DATA I/O4RS数据命令选择端12D5DATA I/O5RW读写选择端13D6DATA I/O6E使能信号14D7DATA I/O7D0DATA I/O15BLA背光源正极8D1DATA I/O16BLK背光源负极一个表格不能分成2页表3-3 1602 型 LCD 的主要技术参数显示容量16*2个字符芯片工作电压4.55.5V工资电流20ma(5V)模块最佳工作电压5V字符尺寸2.98*4.35MM其基本操作程序如下标点读状态:输入:RS=L,RW=L, E=H 输出:D0D7=状态字读数据:输入:RS=H,RW=H, E=H 输出:无写指令:输入:RS=L,R
30、W=L, D0D7=指令码,E=高脉冲 输出:D0D7=数据写数据:输入:RS=H,RW=L, D0D7=数据, E=高脉冲 输出:无3.1.4 晶体振荡器晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。以声卡为例,要实现对模拟信号 44.1kHz或 48kHz 的采样,频率发生器就必须提供一个 44.1kHz 或 48kHz 的时钟频率。如果需要对这两种音频同时支持的话,声卡就需要有两颗晶振。但是现在的娱乐级声卡为了降低成本,通常都采用 SCR 将输出的采样频率固定在 48kHz,但是 SRC 会对音质带来损害,而且现在
31、的娱乐级声卡都没有很好地解决这个问题。现在应用最广泛的是石英晶体振荡器。石英晶体振荡器是一种高精度和高稳定度的振荡器,石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代 LC 谐振回路的晶体谐振元件。石英晶体振荡器广泛地应用在电视机、影碟机、录像机、无线通讯设备、电子钟表、单片机、数字仪器仪表等电子设备中。为数据处理设备产生时钟信号和为特定系统提供基准信号。在单片机中为其提供时钟频率。石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两
32、个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。3.2 硬件电路设计 本设计主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判
33、断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线圈即可,当然也可以用继电器的常开触点去控制电磁铁吸合线圈。 本系统共有两部分构成,即硬件部分与软件部分。其中硬件部分由电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,软件部分对应的由主程序、初始化程序、LCD显示程序、键盘扫描程序、启动程序、关闭程序、建功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。其原理框图如图3-3所示。 电源输入键盘输入显示电路复位电路报警电路密码存储电路开锁电路晶振
34、电路图3-3 系统原理框图 3.2.1 电路总体构成 在确定了选用什么型号的单片机后,就要确定在外围电路,其外围电路包括电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,根据实际情况键盘输入部分选择4*4矩阵键盘,显示部分选择字符型液晶显示LCD1602,密码存储部分选用AT24C02芯片来完成。如果打印后图不清晰,必须自己画(所有图)图3-4 系统电路图3.2.2 电源输入部分 密码锁主控制部分电源需要用5V直流电源供电,其电路如下所示,把频率为50Hz、有效值为220V的单相交流电压转换为幅值稳定的5V直流电压。其主要原理是把单相交流电经过电源
35、变压器、整流电路、滤波电路、稳压电路转换成稳定的直流电压。 由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的作用显现出来起到降压作用。降压后还是交流电压,所以需要整流电路把交流电压转换成直流电压。由于经整流电路整流后的电压含有较大的交流分量,会影响到负载电路的正常工作。需通过低通滤波电路滤波,使输出电压平滑。稳压电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而获得稳定性足够高的直流电压。本电路使用集成稳压芯片7805解决了电源稳压问题。3.2.3 键盘输入部分 由于本设计所用到的按键数量较多而不适合用独立按键式键盘。采用的
36、是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等。键盘的每个按键功能在程序中设定,其大体功能与单片机接法如图。图3-5 键盘电路图3.2.4密码存储部分用 EPROM 芯 片 AT24C02 存 储 密 码 。 AT24C02 是 美 国 Atmel 公 司 的 低 功 耗 CMOS 型E2PROM,内含2568位存储空间,具有工作电压宽(2.55.5 V)、擦写次数多(大于10000次)、写入速度快(小于1
37、0 ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和IO线,并且支持在线编程,进行数据实时的存取十分方便。地址寄存器每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线是一种用于IC器件之间连接的二线制总线。他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。AT24C02正是运用了I2C规程,使用主从机双向通信,主机(通常为单片机)和从机(AT24
38、C02)均可工作于接收器和发送器状态。主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方式,其接线图如图:图3-6 键盘电路图3.2.5 复位部分 单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC0000H,使单片机从第个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复位期间(即RST为高
39、电平期间),P0口为高组态,P1P3口输出高电平;外部程序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。根据实际情况选择如图4-6所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容C1上的电压很小,复位下拉电阻 RRST 上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,由于电容C1足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容C1通过R5放电。当电容C1放电结束后,RST
40、端的电位由R5与R6分压比决定。由于R5R6 因此RST为高电平,CPU处于复位状态,松手后,电容C1充电,RST端电位下降,CPU脱离复位状态。R5的作用在于限制按键按下瞬间电容C1的放电电流,避免产生火花,以保护按键触电。图3-7 复位电路图3.2.6 晶振部分 AT89S51引脚XTAL1和XTAL2与晶体振荡器及电容C2、C1按图4-7所示方式连接。晶振、电容C1C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在033MHz之间,电容C1、C2取值范围在530pF之间。根据实际情况,本设计中采用1
41、2MHZ做为系统的外部晶振。电容取值为20pF。图3-8 晶振电路图3.2.7 显示部分为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示器LCD1602取代普通的数码管来完成。只有按下键盘上的开启按键后,显示器才处于开启状态。同理只有按下关闭按键后显示器才处于关闭状态。否则显示器将一直处于初始状态,当需要对密码锁进行开锁时,按下键盘上的开锁按键后利用键盘上的数字键09输入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少个*。当密码输入完成时,按下确认键,如果输入的密码正确的话, LCD子显示“RIGHT”,单片机其中P2.0引角会输出低电平,使三极管T2导通,电磁
42、铁吸合,电子密码锁被打开,如果密码不正确,LCD显示屏会显示“ERROR”,P2.0输出的是高电平,电子密码锁不能被打开。通过LCD显示屏,可以清楚的判断出锁所处的状态。其显示部分引脚接口如图图3-9 显示部分电路图3.2.8 报警部分 报警部分由陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,“叮”声,每按一下,发声一次,密码正确时,不发声直接开锁,当密码输入错误时,单片机的P2.1引脚为低电平,三极管T3导通轰鸣器发出噪鸣声报警。如图图3-10 报警电路图3.2.9 开锁部分开锁控制电路的功能是当输入正确的密码后将锁打开。系统使用单片机其中一引脚线发出信号,经三极管放大后,由继
43、电器驱动电磁阀动作将锁打开。用户通过键盘任意设置密码,并储存在EEPROM中作为锁码指令。只有用户操作键盘时,单片机的电源端才能得到3V电源,否则单片机处于节电工作方式。开锁步骤如下:首先按下键盘上的开锁按键,然后利用键盘上的数字键09输入密码,最后按下确认键。当用户输入一密码后,单片机自动识码,如果识码不符,则报警。只有当识码正确,单片机才能控制电子锁内的微型继电器吸台。当继电器吸台以后带动锁杆伸缩,这时,锁勾在弹簧的作用下弹起,完成本次开锁。开锁以后,单片机自动清除掉由用户输人的这个密码。如图3-11图3-11 开锁电路图4 软件设计 本系统软件设计由主程序、初始化程序、LCD显示程序、键
44、盘扫描程序、键功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。主要程序设计流程图如下所示每个图需要简短解释:开始初始化键盘扫描启动程序键盘扫描键功能程序关闭程序结束 图4-1 主程序流程图键功能程序NY密码输入程序键值=09?NY开锁程序键值=开锁?NY键值=清除?清除程序NY设置程序键值=设置?NY确认程序键值=确认?返回 图4-2 键功能流程图设置程序初始化按设置键输入旧密码确认程序N输入旧密码正确?输入次数加1YN次数大于3?Y输入新密码报警确认程序返回再次输入密码确认程序N两次输入相同?Y设置成功图4-3 密码设置流程图开锁程序初始化按开锁键输入密码确认程序N所输入密码正确?输入次数加YN次数Y开锁成功报警程序返回图4-4 开