电子密码锁.docx
- 文档编号:28795264
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:29
- 大小:144KB
电子密码锁.docx
《电子密码锁.docx》由会员分享,可在线阅读,更多相关《电子密码锁.docx(29页珍藏版)》请在冰豆网上搜索。
电子密码锁
单片机原理与应用技术
课程设计报告
题目基于单片机的电子密码锁
专业班级:
姓 名:
时间:
指导教师:
2012年4月18日
基于单片机控制的电子密码锁任务书
1.设计目的与要求
设计出一个用于控制开锁的密码锁。
准确地理解有关要求,独立完成系统设计,要求所设计的电路具有以下功能:
(1)锁定状态时系统用3位数码管显示OFF,用3为数码管显示成功开锁次数;成功开锁时用3位数码管显示888,用3位数码管显示成功开锁次数。
(2)通过一个4×4的矩阵式键盘可以任意设置用户密码,同时系统掉电后能自动记忆和存储密码在系统中。
(3)密码的输入时间超过12秒或连续3次输入失败,声音报警同时锁定系统,不让再次输入密码。
此时只有用管理员密码方能对系统解锁。
(4)扩展功能:
可增加遥控控制功能。
2.设计内容
(1)画出电路原理图,正确使用逻辑关系;
(2)确定元器件及元件参数;
(3)进行电路模拟仿真;
(4)SCH文件生成与打印输出;
3.编写设计报告
写出设计的全过程,附上有关资料和图纸,有心得体会。
4.答辩
在规定时间内,完成叙述并回答问题。
目录
1引言……………………………………………………………………………1
2总体设计方案…………………………………………………………………1
2.1设计思路及框图……………………………………………………………1
3设计组成及原理分析…………………………………………………………2
3.1矩阵键盘电路………………………………………………………………2
3.2复位电路……………………………………………………………………2
3.3开锁电路……………………………………………………………………3
3.4报警电路……………………………………………………………………3
3.5指示电路……………………………………………………………………4
3.6显示电路……………………………………………………………………4
3.7掉电存储电路………………………………………………………………5
4程序设计………………………………………………………………………6
4.1主程序设计…………………………………………………………………6
4.2键盘扫描及识别子程序……………………………………………………6
4.3显示子程序…………………………………………………………………6
4.4掉电存储程序………………………………………………………………6
5总结与体会……………………………………………………………………8
参考文献…………………………………………………………………………8
附录1电子密码锁整体电路图………………………………………………9
附录2电子密码锁程序………………………………………………………10
基于单片机的电子密码锁
电气092班周金磊
摘要:
本设计由单片机AT89S51芯片、AT24C02芯片、4×4矩阵键盘、LED显示、开锁驱动机构和报警电路组成。
该电路能完成开锁、开锁提示、修改用户密码、输入错误密码电路自锁、报警、管理员密码解锁、掉电存储、等密码锁的基本功能。
在此系统中巧妙的运用了4×4矩阵键盘与P1口的联接,实现了密码锁按键输入,然后以74LS164作为锁存驱动芯片、LED数码管作为显示器件构成显示电路。
利用一块掉电存储可记忆芯片AT24C02完成掉电密码记忆功能。
各级驱动及指示均由1K电阻与发光二极管组成。
在软件部分,根据电子密码锁所要实现的基本功能编制汇编程序,从而优化,使得程序更加简洁,系统速度更加迅速。
本系统成本低廉,功能实用且易于扩展。
关键词:
AT89S51;电子密码锁;自锁;报警;AT24C02;掉电存储;4×4矩阵键盘;LED显示;
1引言
随着世界的日新月异,电子工业也飞速发展,单片机技术已经深入到了人们生活的各个层面,各种各样的电子产品也正如雨后春笋般地向着高精尖技术发展。
在安全技术防范领域,出于安全、方面等的需要,许多电子密码锁已相继问世。
例如磁卡锁、声控锁、指纹识别、眼角膜识别等。
但这类产品的特点是真对特定有效卡、指纹或声音有效,只能适用于保密要求高且仅供个别人使用的箱房间等而且容易丢失等;传统的机械锁由于其构造的简单,安全性已难以保障,在一些程度上限制了这些产品的普及和使用。
为此本文介绍一种由AT89S51为核心的单片机设计编程实现的控制电路,具有按键指示、输入密码提示、控制开锁、自锁、报警、掉电存储等功能,具有保密强、灵活性高,适用范围广等特点,使密码锁无论在技术上还是在性能上都大大提高一步。
2总体设计方案
2.1设计思路
本系统采用AT89S51作为本设计的核心元件。
开锁驱动电路
74LS164驱动电路
AT89S51是一种高兴能CMOS8位单片机,片内含4Kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度,非易失存储技术生产,兼容标准8051指今系统及引脚。
它集Flash程序存储器即可在线编程也可用传统方法进行编程及通用8位微处理器于单片机芯片中。
在此电路中,为了减少I/O接口的数目,利用AT89S51的一个全双工串行通信口(RXD、TXD)实现数据的串行发送,采用4×4矩阵键盘、数码管显示,利用电阻与发光二极管的串联来带替电磁锁的驱动电路及电磁锁(红色发光二极管为电磁锁)。
3.设计原理分析
3.1矩阵键盘电路
键盘可以分为独立连接式和行列式(矩阵式)两类。
根据设计要求,本电路设计采用4×4行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目。
矩阵式键盘又叫行列式键盘。
用I/O口线组成行列结构,按键设置在行列的交叉点上。
本电路采用4条行线和4条列线,即可组成具有4×4个按键的键盘。
其电路图如下图2所示。
判别键盘中有无按键按下,由单片机I/O口向键盘送(输出)全扫描字,然后读入(输入)列线状态来判断。
方法是:
向行线输出全扫描字00H,把全部行线置为低电平,然后将列线的电平状态读入累加器A中。
如果有键按下,总会有一根列线电平拉至低电平,从而使列输入不全为1。
键盘中哪一个键按下,是由行线逐行置低电平后,检查列输入状态实现的,其方法是:
依次给行线送低电平,然后查所有列线状态,如果全为1,则所按下的键不在此行,如果不全为1,则所按下的键必在此行,而且是在与零电平列线相交的交点上的那个键。
图24×4矩阵键盘连接图
其工作原理为:
将P1.0口置低电平,即第0行变为低电平,其余置高电平时输出编码为1110,然后读取列的电平,判别第0行是否有键按下,在第0行上若有一按键按下,则相应的列被拉到低电平,则表示第0行和此列相交的位置上有按键按下,若没有任一列线为低电平,则说明0行上无键按下,其余按键方法同上。
3.2复位电路
本设计主要采用AT89S51单片机来实现其要求功能的,外围电路有复位电路和时钟电路组成,它是整个电路的核心部分。
通过编写的程序可以达到所需要的要求。
AT89S51芯片内部有一个高增益反相放大器,用于构成振荡器。
反相放大器的输入端为XTAL1,输出端为XTAL2,两端跨接石英晶体振荡器及两个电容就可以构成稳定的自激振荡器。
电容可稳定频率并对振荡频率有微调作用。
复位是单片机的初始化操作。
其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序,除了进入系统的正常初始化之外,当由于程序运行出错或者操作错误使系统处于死锁状态时,为了摆脱困境,也需要按复位键重新启动,因此,复位是单片机必不可少的组成部分。
图3复位电路
本设计采用手动复位和上电自动复位组合。
其复位电路图如上图3所示。
上电复位是在加电瞬间电容通过充电来实现的。
在通电瞬间,电容C通过电阻R充电,RST端出现正脉冲用以复位。
只要电源的上升时间不超过1ms,就可以实现自动上电复位;手动复位是通过接通一按钮开关,从而达到手动复位的目的。
3.3开锁电路
当用户输入的密码正确时,由单片机发出开锁信号,驱动电磁锁吸合,从而达到开锁的目的。
在此电路中,主要采用了一个电阻与发光二极管的串联来带替电磁锁。
从P2.7口输出低电平从而点亮发光二极管,实现开锁。
3.4报警电路
当密码锁的输入时间超过12秒或者连续3次输入失败和有无键按下时,需要由报警来提示。
本设计的报警电路由一个电阻与发光二极管的串联组成。
P2.4口接报警电路。
当密码锁电路需要发出报警信号时,P2.4口输出低电平0,点亮发光二极管。
当密码锁没有报警信号时,P2.4口输出高电平1。
发光二极管保持原来状态。
图4报警与开锁电路
3.5指示电路
该电路共分为三个部分,上电指示、开锁成功指示,报警指示。
且每一部分都由一个电阻与
一支发光二极管串联组成。
各指示电路信号分别来自单片机的P2.1口,P2.2口,P2.3口。
当系统上电时,从单片机的P2.1口发出低电平信号,点亮红色发光二极管。
开锁成功指示电路及报警指示电路同上电指示电路。
其电路图如图5所示。
图5指示电路
3.6显示电路设计
利用89S51系列单片机内部的串行口RXD(P3.0)和TXD(P3.1)为一个全双工串行通信口,其数据由RXD端串行输出或输入;而同步移位时钟由TXD端串行输出,在同步脉冲的作用下,实现由串行到并行的数据通信。
本电路采用串行静态显示方式。
利用串行口加外围芯片74LS164就可以组成一个或多个并行输入/输出口,用于串-并转换。
74LS164是8位串入并出移位寄存器,A,B为串行输入端,QA~QH为串行输出端,CLK为串行时钟输入端,CLR为串行输出清零端。
在满足条件时数据就传送到74LS164并寄存,管脚将自动置成相应的电平。
将前一个74LS164的QH端连接到下一个74LS164的QA端,再将CLK端连接到一起并接到TXD,则送数据时,前后数据就会依次从上一下片子传到下一个片子。
这里硬件设计上只需要扩展6个并行输出显示口,因此TXD的驱能力不容置疑,按上述直接相连就可以,不需要在TXD与CLK之间作驱动处理。
图6显示电路
LED采用共阳型数码管显示,加低电平点亮各数码管。
因此外围不需要接限流电阻。
74LS164直接与数码管相应管脚连接就可以了。
3.7掉电存储
掉电存储采用AT24C02来实现。
掉电存储单元的作用是在电源断开的时候,存储当前设定的密码值。
AT24C02是ATMEL公司生产的2KB电可擦除存储芯片,遵循I2C总线协议与单片机通讯,采用8脚的DIP封装,使用方便。
其电路如图7所示:
图7掉电存储电路
图中上拉电阻选用5.1K,其作用是减少AT24C02的静态功耗,由于AT24C02的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。
每当成功修改一次密码,系统就自动调用存储程序,将新密码保存在芯片内;当系统需要进行密码识别时,通过程序读取存储器中的密码值存入缓冲区,与所输入密码进行比较,完成密码锁的开锁控制。
4.程序设计
4.1主程序模块
主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示等等。
主程序的流程图如图8所示。
4.2键盘扫描及识别子程序
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,则将行计数器加1,并将行扫描字左移一位,这样使第一行为低电平,其他为高电平;然后依次逐行扫描,直到行计数器的值大于或等于4时,表明一次行扫描结束。
在此过程中若检测到某一列为低电平,则将列值保存;然后再进行列值判断,得到列的位置,存入列计数器转入键位置码的译码程序。
一旦有按键按下,便转向相应的子程序处理,处理结束再返回。
4.3显示子程序
由于是分屏显示数据,所以就要用到6个显示子程序,分别是:
关闭状态显示子程序、开锁状态显示子程序、密码输入及修改状态显示子程序、密码输入错误后的提示子程序。
密码在规定的范围内输入错误次数超过3次后的锁定状态显示子程序。
进入管理员模式显示子程序。
当电子密码锁位于关闭状态时,数码管显示OFF000,前三位显示关闭状态,后三位显示操作次数。
开锁成功后显示888000,同样前三位显示开锁成功888,后三位显示操作次数。
密码输错时显示000000。
当密码输入次数超过三次后,锁定键盘。
在这个状态,只有进入管理员模式,输入管理员密码时才能解除锁定。
此时显示AAAAAA。
若需更改用户密码,点击设定后,显示——————.锁定状态时显示333333。
4.4掉电存储程序
当比较密码的时候,需要读AT24C02程序,将存储在芯片内的数据读到RAM中,然后和输入的密码相比较。
当修改密码的时候,需要把输入的密码保存到AT24C02中,用于保存。
图8主程序流程图
5总结与体会
通过三周的设计实习,我发现了自身的不足之处。
专业知识的匮乏,专业软件的陌生及对硬件电路的片面了解都成为了我设计该电路的障碍。
在这次实习中,我翻阅书本,查找电路,多方请教,每周都按计划进行着,一刻都不放松。
硬件电路的设计成功把我带入了下一阶段——制板。
但在制板过程中,我又百洞露出,电路板上突显出许多虚焊处。
这一失误导致了我下阶段调试程序的失败。
最后,在老师与同学的帮助下,我跨越了多种障碍。
终究成功完成了我的课题——电子密码锁。
参考文献
[1]李朝青.单片机原理及接口技术(第三版)[M].北京:
北京航空航天大学出版社,2006.12
[2]彭为.单片机典型系统设计实例精讲[R].北京:
电子工业出版社,2006.5
[3]公茂法.单片机人机接口实例集[M].北京:
北京航空航天大学出版社,1998.2
[4]康华光.电子技术基础数字部分(第五版)[M].北京:
高等教育出版社,2006.1
[5]彭介华.电子技术课程设计指导[M].北京:
高等教育出版社,2004.2
[6]窦振中.单片机外围器件实用手册存储器分册.北京:
北京航空航天大学出版社,2004.3
附录一
电子密码锁整体电路图
附录二
;*********************
;******IIC程序********
;*********************
SDABITP2.5;IIC的数据端
SCLBITP2.6;IIC的时钟端
KVEQU7FH;键值存储区
SVEQU7EH;行扫描字暂存
IICSVEQU7DH;IIC存储单元首址
DTSVEQU77H;数据存储单元首址
KEYNUMEQU70H;按键次数存储位
SLAEQU6FH;IIC器件的寻址字节
NUMEQU6EH;DTSV修整控制字节
SUBAEQU6DH;存放器件子地址
JDQBITP2.2
BUZZERBITP2.4;蜂鸣器位
ORG0000H
SJMPMAIN
ORG0030H
MAIN:
;********初始化及调显示*************
MOVR2,#20
MOVR1,#7FH
CLRR:
CLRA
MOV@R1,A
DECR1
DJNZR2,CLRR;初始化各存储单元
MOVR3,#6
MOVR1,#DTSV
DECR1
CCLR00:
MOV@R1,#15
DECR1
DJNZR3,CCLR00;DTSV初值附为15
MOVSUBA,#00H;器件子地址存入SUBA
STALP:
MOVR2,#6
SCAN:
MOVA,#78H
MOVSBUF,A
JNBTI,$
CLRTI
DJNZR2,SCAN;调显示
;*******键扫主程序**********
KEY:
MOVP1,#0F0H;令所有行为低电平
MOVR7,#0FFH;设置计数常数
DJNZR7,$;延时
MOVA,P1;读取P1口列值
CJNEA,#0F0H,EKEY
SJMPKEY;无键按下返回
EKEY:
LCALLD20MS
CJNEA,#0F0H,EKEY1
SJMPKEY;无键按下返回
EKEY1:
clrBUZZER
SKEY:
MOVA,#0;下面进行行扫描
MOVR4,A
MOVR5,A;行,列计数器清零
MOVR3,#0FEH;R3为行扫描字暂存
SKEY1:
MOVA,R3
MOVSV,R3;行扫描字送SV暂存
MOVP1,A;扫描字送P1口
NOP
NOP
NOP
NOP
NOP;稳定P1口输出
MOVA,P1;读列值
CJNEA,SV,SKEY3;有键按下跳转
INCR4
SETBC;准备将行扫描左移一位
MOVA,R3
RLCA
MOVR3,A
MOVA,R4
CJNEA,#4,SKEY1
SJMPKEY
SKEY3:
JNBACC.4,SKEY5
JNBACC.5,SKEY6
JNBACC.6,SKEY7
JNBACC.7,SKEY8
SJMPKEY
SKEY5:
MOVA,#0
MOVR2,A
AJMPDKEY
SKEY6:
MOVA,#1
MOVR2,A
AJMPDKEY
SKEY7:
MOVA,#2
MOVR2,A
AJMPDKEY
SKEY8:
MOVA,#3
MOVR2,A
DKEY:
MOVA,R4
LCALLDECODE
;********调整键值************
DECODE:
MOVA,R4
MOVB,#4
MULAB
ADDA,R2;R2为列值
RET
RESV:
MOVDPTR,#TAB;数字表头始址送DPTR
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
RET
;********判断功能键************
CJNEA,#15,ENT;是否是修改IIC键
LCALLDKEY1;关提示音
MOVA,KEYNUM;按键次数标志位送A
CJNEA,#0,WRBB
AJMPSTALP
WRBB:
MOVSLA,#0A0H;送总线寻址字节
MOVDTSV,#20H
MOVR3,KEYNUM
INCKEYNUM
LCALLWRBYTE
MOVKEYNUM,R3
MOVR6,#0A0H
DL0:
MOVR7,#0FAH
DL1:
NOP
NOP
DJNZR7,DL1
DJNZR6,DL0
INT:
MOVR1,#DTSV
DECR1
MOVR2,#6
INT11:
MOV@R1,#15
DECR1
DJNZR2,INT11;DTSV初值附为15
MOVKEYNUM,#0;清按键次数标志位
MOVNUM,#0;清DTSV修整位
MOVR2,#6
MOVR0,#DTSV
DECR0
SCAN1:
MOVDPTR,#TAB
MOVA,@R0
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
DECR0
DJNZR2,SCAN1;调显示
AJMPKEY
ENT:
CJNEA,#14,RESV1
LCALLDKEY1
MOVA,KEYNUM;按键次数标志位送A
CJNEA,#0,RDIIC
AJMPSTALP
RDIIC:
MOVDTSV,#20H
MOVSLA,#0A0H
MOVR3,KEYNUM
MOVKEYNUM,#01H
LCALLWRBYTE;读取IIC中数据
MOVSLA,#0A1H
MOVKEYNUM,R3
LCALLRDBYTE
MOVKEYNUM,R3;按键次数送R3
MOVR3,#6
MOVR0,#IICSV;IIC存储首址
MOVR1,#DTSV;输入数据存储首址
DECR1
COMP:
MOVA,@R0
MOVSLA,@R1;SLA中暂存数据地址
CJNEA,SLA,INT
DECR0
DECR1
DJNZR3,COMP
SETBJDQ
CLRP0.4
LCALLD1M
CLRJDQ
SETBP0.4
AJMPINT
RESV1:
INCKEYNUM;按键次数存储位加1
MOVR3,A
LCALLRESV
MOVA,NUM
MOVR0,#DTSV
DECR0
ADDA,R0
MOVR0,A
MOVA,R3
MOV@R0,A
MOVA,NUM
DECA
MOVNUM,A
LCALLDKEY1
AJMPKEY
DKEY1:
MOVA,#0F0H
MOVP1,A
NOP
NOP
NOP
MOVA,P1
CJNEA,#0F0H,DKEY1
setbBUZZER;判断键是否弹起
RET
;*********IIC子程序*******************
;**********读存数据程序****************
RDBYTE:
PUSHPSW;保护现场
RDBYTE1:
MOVPSW,#18H;改用第三组工作寄存器
MOVA,SLA;读入读控制字
LCALLSTA;发送起始条件
LCALLWRB;发送读控制字节
LCALLCACK;检查应答位
JBF0,RDBYTE1;无应答,重发
MOVR1,#IICSV;子地址送A
GO:
LCALLRDB;读一个字节
MOV@R1,A
DJNZKEYNUM,ACK
LCALLMNACK;已读完字节,发ACK非
LCALLSTOP;数据发送完毕,停止
POPPSW;恢复现场
RET
ACK:
LCALLMACK;发ACK
DECR1
SJMPGO;继续接收
;***********WRB发送子程序***************
WRB:
MOVR7,#8;位计数器初值
WLP:
RLCA;欲发送位送C
JCWR1;此位为1,转至WR1
CLRSDA;此位为零,发送0
SETBSCL;时钟脉冲变为高电平
NOP
NOP
NOP
NOP
NOP;延时4微妙
CLRSCL;时钟脉冲变为低电平
DJNZR7,WLP;未发送完8位,转至WLP
RET
WR1:
SETBSDA;此位为1,发送1
SETBSCL;时钟脉冲变为高电平
NOP
NOP
NOP
NOP
NOP;延时4微妙
CLRSCL;时钟脉冲变为低电平
DJNZR7,WLP;未发送完8位,转至WLP
RET
;********一字节数据发送***************
WRBYTE:
PUSHPSW;保护现场
WRBYTE1:
MOVPSW,#18H;改用第三组工作寄存器
WRB1:
LCALLSTA;发送起始条件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 密码锁