资源描述
湖南理工学院课程设计
湖南理工学院
单片微机原理课程设计说明书
设计题目:基于AT24C02的简易电子密码锁
院 部: 机械学院
专 业: 机械电子工程
组长姓名:学 号:
组员姓名:学 号:
学 号:
学 号:
起迄日期: 2016 年 6月19日 2016 年 6月 30日
指导教师:
教研室主任:
第 1 页 共 29 页
目 录
1 引言.。。。。.。。。。。.。.。。.。。。。。。。。。。。.。。。。。..。。.。。。。。。4
1.1 电子密码锁简介。.。..。.。。.。。。。.。。。。。。.。。.。.。.。。.4
1。2 电子密码锁的发展趋势..。。。。。。。。。.。。。。。...。。。.。.4
1。3 本设计所要实现的目标。.。...。。。..。。..。。.。。。。..。。5
2 设计方案的选择。。。。。。.。。。.。。。。..。。。。...。。。。。。。.。.5
2。1 方案一:采用数字电路控制方案。..。。。..。。。。。。。。。。5
2。2 方案二:采用无线遥控方式控制方案.。。。。..。..。。。。5
2。3 方案三:采用以单片机为核心的控制方案。.。。。....。5
3 主要元器件介绍。...。.。.。。。.。...。。。。.。.。。。.。。。...。6
3。1 主控芯片AT89S51...。...。.。。。。。。。。..。.。。.。。。。..。.6
3.1。1 AT89S51性能简介。。...。。.。。。。..。......。..。...。.6
3。1.2 AT89S51引角功能说明。.。。。..。。.。.。。。。.。。。。.。。。.7
3.2 存储芯片AT24C02.。。。。。..。...。。..。...。。。。。。.。.。。9
3.3 LCD1602显示器..。.。...。.。。。.。。..。。。.。。。..。。.。.10
3。3。1 接口信号说明。。。.。.。。。.。..。...。。。。.。。。。.。。。.。。10
3。3。2 主要技术参数..。.。。。.。。...。。。。。。。。。。。...。..。。11
3.3.3 基本操作程序.。...。.。。。。。...。。。.。。。..。。。。。。。。11
3。4 晶体振荡器。..。。。。。。。..。。..。。。。。.。.。.。。。...。.。.12
4 系统硬件构成。.。.。。。。。。。。.。.。。..。..。。。。。。.。。..。。。12
4。1 设计原理.。。.。。。。。。..。。.。.。...。.。。。。...。。。。.。。.12
4.2 电路总体构成。。。.。。。.。.。.。。.。。。。。。.。。.。..。。.。..13
4。3 键盘输入部分。。.。。.。。。。。。。。。.。。。..。..。。.。。。。.。.13
4。4 密码存储部分.。...。。。.。。。.。。。..。。。。.。。。。。。。..。。.14
4。5 复位部位。。。.。。。。。。。。.。.。.。。。。。。。。。。.。。。。.。.。。。 15
4。6 晶振部分..。....。。..。.。。。.。。.。。.。。。...。。.....。..15
4。7 显示部分.。.。.。.。。。.。。。。。..。。.。....。。。。..。....。15
4。8 报警部分。。。...。。。.。。。。.。。。.。.。。。。。。。。。。。.。。。。.。17
4.9开锁部分。。。。...。。。。.。。。.。。。.。。。。。.。。。。。。。。.。..。18
5 系统软件设计。。。。。.。。。。。..。。。。。.。....。.。..。.。。。.。。19
6 总结。。。。。.。..。。。。。。。。。。。。.。。。。..。..。。.。.....。.。.。22
参考文献。。...。。.。。.。。。.。。.。.。。。。......。。.。.。。。。。。...23
附录一。.。。。。。。。.。。。.。。.。.。。.。...。。.。.。。。。.。。.。.。。.。.23
附录二 。。.。.。..。。。.。。。.。.。。.。。。。.。。。。。.。。.。.。。。。。。.。33
1 引言
1。1 电子密码锁简介
电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的.其性能和安全性已大大超过了机械锁。其特点如下:
1) 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。2) 密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降.3) 误码输入保护,当输入密码多次错误时,报警系统自动启动。
4) 无活动零件,不会磨损,寿命长。
5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁.
6) 电子密码锁操作简单易行,一学即会。
1。2 电子密码锁的发展趋势
在日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。目前门锁主要用弹子锁,其钥匙容易丢失;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣.针对这些锁具给人们带来的不便若使用机械式钥匙开锁,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。它的出现为人们的生活带来了很大的方便,有很广阔的市场前景。由于电子器件所限,以前开发的电子密码锁,其种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,在后为多是基于EDA来实现的,其电路结构复杂,电子元件繁多,也有使用早先的20引角的2051系列单片机来实现的,但密码简单,易破解。随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,使用更加方便,安全保密性更强,由以前的单密码输入发展到现在的,密码加感应元件,实现了真真的电子加密,用户只有密码或电子钥匙中的一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提高出现了越来越多的电子密码锁.
出于安全、方便等方面的需要许多电子密码锁已相继问世。但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子防盗锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗锁,这样对盗贼而言是“道高一尺、魔高一丈”。组合使用信息也能够使电子防盗锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所"。可以看出组合使用电子信息是电子密码锁以后发展的趋势.
1.3 本设计所要实现的目标
该密码锁初次使用时的原始密码为123456,用户输入正确的密码信息则能够发出开锁信号.
功能要求:
1、 能够修改密码。只有输入原设定的正确密码后才能修改密码。
2、 三次输入开锁密码错误,则启动报警。
3、 显示按键信息,而且要有按键音。
4、 系统设0~9十个数字键,一个密码修改键,一个确认键。按下密码修改键,先输入原密码,解密正确后键入新密码,按确认键生效。解密错误启动报警,5秒钟后报警自动解除.
技术要求:
1、系统停电后,密码信息不会丢失,上电后仍能正常执行开锁操作。
2、系统安全可靠,不会出现死机现象.
3、密级〈106.
2 设计方案的选择
2.1 方案一:采用数字电路控制方案
用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过10秒(一般情况下,用户不会超过10秒,若用户觉得不便,还可以修改)电路将报警20秒,若电路连续报警三次,电路将锁定键盘2分钟,防止他人的非法操作。采用数字电路设计的方案好处就是设计简单但控制的准确性和灵活性差.故不采用.
2。2 方案二:采用无线遥控方式控制方案
采用无线电磁波发射模式,此方案的优点在于遥控距离更远,也无需要对准电子锁的位置,但是缺点就是由于本设计是要求设计成为一个一键式发射解锁方式,这样就容易造成无意识的解锁,比如说孩子,或者是自己在无意识的情况下进行了解锁,不利于电子锁的安全防盗。
2.3方案三:采用以单片机为核心的控制方案
由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比.一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些的还有一些最基本的比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等.在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等等因素.基于以上因素本设计选用单片机AT89S51作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接AT24C02芯片用于密码的存储,外接LCD1602显示器用于显示作用.当用户需要开锁时,先按键盘开锁键之后按键盘的数字键0-9输入密码。密码输完后按下确认键,如果密码输入正确则开锁,不正确显示密码错误重新输入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后输入原来的密码,只有当输入的原密码正确后才能设置新密码。新密码输入无误后按确认键使新密码将得到存储,密码修改成功.
可以看出方案三控制灵活准确性好且保密性强还具有扩展功能,根据现实生活的需要此次设计采用此方案.
3 主要元器件介绍
3。1 主控芯片AT89S51
AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS—51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
3。1.1 AT89S51性能简介
AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器.
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式.空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
图3—1 AT89S51PDIP封装引脚图
其主要功能特性:
兼容MCS—51指令系统 4k可反复擦写(〉1000次)ISP Flash ROM
32个双向I/O口 4.5—5。5V工作电压
2个16位可编程定时/计数器 时钟频率0—33MHz
全双工UART串行中断口线 128x8 bit内部RAM
2个外部中断源 低功耗空闲和省电模式
中断唤醒省电模式 3级加密位
看门狗(WDT)电路 软件设置空闲和省电功能
灵活的ISP字节和分页编程 双数据寄存器指针
可以看出AT89S51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟。同时, AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式.空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作.掉电方式何在RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直接到一个硬件复位。
3.1。2 AT89S51引角功能说明
Vcc:电源电压
GND:地
P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1"可作为高阻抗输入端口.在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻.
P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1",通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址.表3-1为P1口第二功能.
表3-1P1口第二功能
端口引脚
第二功能
P1。5
MOSI(用于ISP编程)
P1。6
MISO(用于ISP编程)
P1。7
SCK(用于ISP编程)
P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。对端口写“1",通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。在访问8位地址的外部数据存储器(如执行:MOVX @Ri 指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变.Flash 编程或校验时,P2也接收高位地址和其它控制信号。
P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1"时,它们被内部上拉电阻拉高并可作为输入端口。作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I.P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表3—2。
表3—2P3口的第二功能
端口功能
第二功能
端口引脚
第二功能
RXD(P3.0)
串行输入口
T0(P3.4)
定时/计数器0外部输入
TXD(P3。1)
串行输出口
T1(P3。5)
定时/计数器1外部输入
INT0(P3。2)
外中断0
WR(P3。6)
外部数据存储器写选通
INT1(P3。3)
外中断1
RD(P3。7)
外部数据存储器读选通
RST:复位输入。当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。WDT益出将使该引脚输出高电平,设置SFR AUXR 的 DISRTO 位(地址8EH)可打开或关闭该功能。DISRTO 位缺省为RESET输出高电平打开状态。
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节.即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:第当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作.该位禁位后,只有一条MOVX 和MOVC指令ALE才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲.当访问外部数据存储器,高有两次有效的PSEN信号。
EA/VPP:外部访问允许.欲使CPU公访问外部程序存储器(地址0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程电压Vpp。
XTAL1:振荡器反相放大器及内部时钟发生器的输入端.
XTAL2:振荡器反相放大器的输出端.
3.2 存储芯片AT24C02
AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽(2.5~5。5 V)、擦写次数多(大于10000次)、写入速度快(小于10 ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存取十分方便。AT24C02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写.所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线是一种用于IC器件之间连接的二线制总线。他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。 AT24C02正是运用了I2C规程,使用主/从机双向通信,主机(通常为单片机)和从机(AT24C02)均可工作于接收器和发送器状态。主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。
SOIC PDIP
图3—2 AT24C02的两种引脚图
图3—3 AT24C02的电路接线图
图中AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。在AT89C51试验开发板上它们都接地,第8脚和第4脚分别为正、负电源。第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,在AT89C51试验开发板上和单片机的P3。7连接.第6脚SCL为串行时钟输入线,在AT89C51试验开发板上和单片机的P3。6连接。SDA和SCL都需要和正电源间各接一个5。1K的电阻上拉。第7脚需要接地。
24C02中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据.
3.3 LCD1602显示器
现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了.1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。1602型LCD可以显示2行16个字符,有8位数据总线D0~D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。
3.3。1 接口信号说明
1602型LCD的接口信号说明如表3-3所示:
表3—3 1602型LCD的接口信号说明
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
Data I/O
2
VDD
电源正极
10
D3
Data I/O
3
V0
液晶显示偏压信号
11
D4
Data I/O
4
RS
数据/命令选择端(H/L)
12
D5
Data I/O
5
R/W
读写选择端(H/L)
13
D6
Data I/O
6
E
使能信号
14
D7
Data I/O
7
D0
Data I/O
15
BLA
背光源正极
8
D1
Data I/O
16
BLK
背光源负极
3.3.2 主要技术参数
1602型LCD的主要技术参数如下表所示:
表3-4 1602型LCD的主要技术参数
显示容量
16X2个字符
芯片工作电压
4.5~5。5V
工作电流
2.0mA(5。0V)
模块最佳工作电压
5.0V
字符尺寸
2。95X4.35(WXH)mm
3。3。3 基本操作程序
读状态:输入:RS=L,RW=L, E=H 输出:D0~D7=状态字
读数据:输入:RS=H,RW=H, E=H 输出:无
写指令:输入:RS=L,RW=L, D0~D7=指令码,E=高脉冲 输出:D0~D7=数据
写数据:输入:RS=H,RW=L, D0~D7=数据, E=高脉冲 输出:无
3。4 晶体振荡器
晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。以声卡为例,要实现对模拟信号44.1kHz或48kHz的采样,频率发生器就必须提供一个44。1kHz或48kHz的时钟频率。如果需要对这两种音频同时支持的话,声卡就需要有两颗晶振.但是现在的娱乐级声卡为了降低成本,通常都采用SCR将输出的采样频率固定在48kHz,但是SRC会对音质带来损害,而且现在的娱乐级声卡都没有很好地解决这个问题.现在应用最广泛的是石英晶体振荡器。 石英晶体振荡器是一种高精度和高稳定度的振荡器,石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。石英晶体振荡器广泛地应用在电视机、影碟机、录像机、无线通讯设备、电子钟表、单片机、数字仪器仪表等电子设备中.为数据处理设备产生时钟信号和为特定系统提供基准信号。在单片机中为其提供时钟频率。
石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。
4 系统硬件构成
4。1 设计原理
本设计主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线圈即可,当然也可以用继电器的常开触点去控制电磁铁吸合线圈。
本系统共有两部分构成,即硬件部分与软件部分。其中硬件部分由电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,软件部分对应的由主程序、初始化程序、LCD显示程序、键盘扫描程序、启动程序、关闭程序、建功能程序、密码设置程序、EEPROM读写程序和延时程序等组成.其原理框图如图4—1所示.
AT89S51
键盘输入
复位电路
密码存储电路
晶振电路
显示电路
报警电路
开锁电路
图4-1 电子密码锁原理框图
4。2 电路总体构成
在确定了选用什么型号的单片机后,就要确定在外围电路,其外围电路包括电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,根据实际情况键盘输入部分选择4*4矩阵键盘,显示部分选择字符型液晶显示LCD1602,密码存储部分选用AT24C02芯片来完成。其原理图如图4—2所示:
图4—2 电路原理图
4。3 键盘输入部分
由于本设计所用到的按键数量较多而不适合用独立按键式键盘。采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等.键盘的每个按键功能在程序设计中设置。其大体功能(看键盘按键上的标记)及与单片机引脚接法如图4—3所示:
图4-3 键盘输入原理图
4。4 密码存储部分
用EPROM芯片AT24C02存储密码。AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽(2。5~5.5 V)、擦写次数多(大于10000
次)、
写入速度快(小于10 ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存取十分方便.AT24C02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写.所有字节均以单一操作方式读取.为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线是一种用于IC器件之间连接的二线制总线。他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。AT24C02正是运用了I2C规程,使用主/从机双向通信,主机(通常为单片机)和从机(AT24C02)均可工作于接收器和发送器状态.主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。其接线如图4—4所示:
图4—4 密码存储电路原理图
4。5 复位部位
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;外部程序存储器读选通信号PSEN无效.地址锁存信号ALE也为高电平。根据实际情况选择如图4—5所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容C1上的电压很小,复位下拉电阻上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于
某一数值后,CPU脱离复位状态,由于电容C1足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容C1通过R5放电。当电容C1放电结束后,RST端的电位由R5与R6分压比决定。由于R5<<R6 因此RST为高电平,CPU处于复位状态,松手后,电容C1充电,RST端电位下降,CPU脱离复位状态。R5的作用在于限制按键按下瞬间电容C1的放电电流,避免产生火花,以保护按键触电。
图4-5 复位电路原理图
4。6 晶振部分
AT89S51引脚XTAL1和XTAL2与晶体振荡器及电容C2、C1按图4-6所示方式连接。晶振、电容C1/C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C1、C2取值范围在5~30pF之间.根据实际情况,本设计中采用12MHZ做为系统的外部晶振。电容取值为20pF.
图4—6 晶振电路原理图
4.7 显示部分
为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示器LCD1602取代普通的数码管来完成。只有按下键盘上的开启按键后,显示器才处于开启状态。同理只有按下关闭按键后显示器才处于关闭状态。否则显示器将一直处于初始状态,当需要对密码锁进行开锁时,按下键盘上的开锁按键后利用键盘上的数字键0-9输入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少个*.当密码输入完成时,按下确认键,如果输入的密码正确的话, LCD子显示“RIGHT",单片机其中P3。0引角会输出低电平,使三极管Q2导通,电磁铁吸合,电子密码锁被打开,如果密码不正确,LCD显示屏会显示“ERROR”,P3.0输出的是高电平,电子密码锁不能被打开。通过LCD显示屏,可以清楚的判断出锁所处的状态。其显示部分引脚接口如图4-7所示:
图4—7 显示电路原理图
4。8 报警部分
报警部分由蜂鸣器发声装置及外围电路组成,加电后不发声,当有键按下时,“嘀”声,每按一下,发声一次,密码正确时,不发声直接开锁,当密码输入错误时,单片机的P3.5引脚为低电平,三极管Q1导通轰鸣器发出噪鸣声报警。如图4-8所示:
图4-8 报警电路原理图
4。9开锁部分
开锁控制电路的功能是当输入正确的密码后将锁打开。系统使用单片机其中一引脚线发出信号,经三极管放大后,由继电器驱动电磁阀动作将锁打开。用户通过键盘任意设置密码,并储存在EEPROM中作为锁码指令。只有用户操作键盘时,单片机的电源端才能得到5V电源,否则.单片机处于节电工作方式。开锁步骤如下:首先按下键盘上的开锁按键,然后利用键盘上的数字键0-9输入密码,最后按下确认键。当用户输入一密码后,单片机自动识码,如果识码不符,则报警。只有当识码正确,单片机才能控制电子锁内的微型继电器吸台。当继电器吸台以后带动锁杆伸缩,这时,锁勾在弹簧的作用下弹起,完成本次开锁.开锁以后,单片机自动清除掉由用户输人的这个密码。如图4—9所示:
图4-9 开锁电路原理图
5 系统软件设计
本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。主要程序设计流程图如下所示:
初始化
键盘扫描
启动程序
键盘扫描
键功能程序
关闭程序
开始
结束
图5—1 主程序流程图
键值=‘0-9’?
键值=‘开锁’?
键值=‘清除’?
键值=‘设置’?
键值=‘确认’?
密码输入程序
设置程序
清除程序
开锁程序
确认程序
Y
Y
Y
Y
Y
N
N
N
N
N
键值=‘清零’?
清零程序
Y
N
返回
功能键程序
图5—2 键功能流程图
Y
N
N
Y
N
Y
初始化
按下设置键
输旧密码
确认程序
所输入旧密码正确?
输新密码
确认程序
输入次数加1
次数>3?
报警程序
确认程序
再次输新密码
两次新密码输入相同?
返回
设置成功
设置程序
图5—3 密码设置流程图
开锁成功
N
N
Y
Y
初始化
按开锁键
输入密码
确认程序
所输入密码正确?
输入次数加1
次数>3?
报警程序
返回
开锁程序
图5—4 开锁流程图
6 总结
随着期末的到来,各种课程设计都在有序进行中。经过两周的奋战,我的单片机课程设计终于完成了.在没有做课程设计以前觉得课程设计只是对这门课程所学知识的单纯总结,但是通过这次做课程设计发现自己的看法有点太片面。课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次课程设计使我明白了自己原来课堂所学知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低.通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质.在此要感谢老师的指导,感谢同学给我的帮助.在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向同学请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了实践的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。
课程设计组
2016年6月29日
于湖南理工学院
参考文献:
[1] 彭伟编著。单片机C语言程序设计实训100例.电子工业出版社
[2] 赵全利主编。单片机原理及应用教程。机械工业出版社。第3版
[3] 郭天祥编著。51单片机C语言教程。电子工业出版社
[4] 张文祥等编著。单片机系统设计与开发教程.电子工业出版社
[5] 康光华主编.电子技术基础。高等教育出版社.第五版
[6] 杨路明主编。C语言程序设计教程.北京邮电大学出版社。第2版
附录一
程序清单:
#include〈reg51。h>
#include〈string.h〉
#include〈intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define LCDIO P2
#define delay4us() _nop_();_nop_();_nop_();_nop_();
uchar buffer[6]={0};
sbit sda=P3^7;
sbit scl=P3^6;
sbit beep=P3^5;
sbit rs=P0^4;
sbit rd=P0^3;
sbit lcden=P0^2;
sbit led=P3^0;
bit flag=0,a=0,b=0,d=0,aa;
unsigned int n=0;
unsigned char frq,j=0;
uchar DSY_BUFFER[16]=” ”;
uchar DSY_BUFFER1[16]=” ”;
uchar Userpassword[6]={0};
uchar code table2[]=”123456";
uchar code table[]=”Your Password。。。”;
void delayms(uint z) //
展开阅读全文