电子密码锁控制电路设计毕业设计.docx
- 文档编号:24445630
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:49
- 大小:597.39KB
电子密码锁控制电路设计毕业设计.docx
《电子密码锁控制电路设计毕业设计.docx》由会员分享,可在线阅读,更多相关《电子密码锁控制电路设计毕业设计.docx(49页珍藏版)》请在冰豆网上搜索。
电子密码锁控制电路设计毕业设计
电子密码锁控制电路设计
学生:
XXX指导教师:
XXX
内容摘要:
本设计阐述通过Proteus软件成功仿真的电子密码锁的实现过程,选用AY89C52为核心的系统来实现按键输入、开锁和密码识别。
采用具备I2C总线接口的E2PROM芯片来完成密码的存储,通过1602A液晶显示器提示程序运行状态和使用步骤,利用蜂鸣器模拟报警,发光二极管模拟锁的开关。
该系统用C语言编写程序,与汇编语言相比具有更好的移植性和可读性,便于修改和增减功能。
关键词:
Proteus密码锁AT89C52C语言
Designofelectroniccodelockcircuitsystem
Abstract:
ThepaperintroducestheimplementationoftheelectroniccodelockwhichwassuccessfullysimulatedbyProteus.ItusesAT89C52single-chipmicrocomputertoachievekeyinput,theunlockingandidentificationofthecode.ItadoptsI2CbusbasedE2PROMchiptocompletethecode'sstorage,usingLCD1602Atoprompttheprogram'srunningstateandworkingprocedures,adoptingbuzzertoimitatethealarmandLEDtoimitatetheswitch.ItisconvenienttomodifyandaddfuncticcconbyusingClanguageprogram,whichismoretransplantableandreliablecomparedtoassemblylanguage.
Keywords:
ProteuscodelockAT89C52Clanguage
电子密码锁控制电路设计
前言
现在社会大家都很注重安全,安全问题也成为大家关心的问题之一。
从古自今大家就发明了锁来保护自己的财产安全。
人们对锁要求甚高,即要求可靠地防盗,又要使用方便。
传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。
随着单片机的问世,出现了电子密码锁,其保密性高,使用灵活性好,安全系数高,故受到广大用户的青睐。
电子密码锁通常使用ARM和AT89C52控制,单片机相对ARM实现较为简单,功能较为完善,因此使用单片机控制较多。
用单片机控制的密码锁常使用汇编语言编写程序,数码管做显示器。
但本设计使用移植性及可读性强的C语言编写;同时采用显示清楚、功率消耗小而且寿命长的1602A液晶显示器。
从经济实用的角度出发,采用AT89C52单片机设计出一种具有密码设置、报警等功能的电子密码锁。
1总体方案设计
1.1方案论证与比较
方案一:
以AT89C52为电子密码锁系统核心,使用4*4矩阵键盘作为数据输入方式,驱动1602A显示器提示程序运行过程和开锁的步骤,利用AT24C02芯片实现掉电存储。
图1.1-1为AT89C52控制密码锁的系统原理框图。
图1.1-1AT89C52控制密码锁的系统原理框图
方案二:
以74LS112双JK触发器构成的数字逻辑电路控制方案,如图1.1-2。
图1.1-2数字逻辑控制方案电子密码锁原理框图
1.2方案选择
由于利用单片机灵活的编程设计和强大的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还可以增添掉电存储、声光提示等功能,故选用方案一。
2单元模块设计
2.1硬件支持
使用的元器件有:
核心芯片AT89C52、存储芯片AT24C02、液晶显示1602A、4×4矩阵键盘、报警蜂鸣器、发光二极管和三极管。
2.2功能单元模块设计
2.2.1开锁机构
通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。
当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。
本次设计中,基于节省成本考虑,用发光二极管代替电磁锁,信息通过LCD显示,并利用蜂鸣器和二极管声光指示。
其中,绿发光二极管亮,表示开锁;否则,表示密码输入错误并开启报警电路。
如图2.2.1-1所示,为密码锁开锁电路原理图。
图2.2.1-1密码锁开锁电路原理图
2.2.2矩阵键盘设计电路
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要M条行线和N条列线,即可组成具有M×N个按键的键盘。
由于本设计中要求使用16个按键输入,为减少键盘与单片机接口时所占用的I/O线的数目,故使用矩阵键盘。
本设计中,矩阵键盘行线和单片机P1.0-P1.3相连,列线与AT89C52P1.4-P1.7相连。
如图2.2.2-1所示,为矩阵键盘设计电路图。
图2.2.2-1矩阵键盘设计电路图
键盘扫描采用行扫描法,即依次置行线中的每一行为低电平,其余均为高电平,扫描列线电平状态,为低电平即表示该键按下。
2.2.3声音提示电路设计
声音提示电路采用小蜂鸣器提示。
蜂鸣器能够根据脉冲信号,以及信号的频率发出各种不同的声音,这样可以根据系统要求在密码出入正确和密码输入错误时发出不同的声音提示,已达到报警的要求。
如图2.2.3-1所示,为蜂鸣器电路。
图2.2.3-1蜂鸣器电路图
2.2.4显示模块设计
本设计中,显示电路采用1602A液晶显示器显示。
如下所示,图2.2.4-1为1602A液晶显示器的接口示意图,表2.2.4-1为液晶显示器接口说明。
图2.2.4-1液晶显示器借口示意图
表2.2.4-1接口说明
管脚序
名称
电平
功能描述
1
VSS
0V
接地
2
VCC
5.0V
电源输入
3
V0
—
LCD驱动电压输入
4
RS
H/L
寄存器选择:
RS=H,选择数据寄存器;
RS=L,选择指令寄存器
5
R/W
H/L
读写信号线:
R/W=H,读操作;R/W=L,写操作
6
E
H,H→L
使能信号
7
DB0
H/L
数据线
8
DB1
H/L
数据线
9
DB2
H/L
数据线
10
DB3
H/L
数据线
11
DB4
H/L
数据线
12
DB5
H/L
数据线
13
DB6
H/L
数据线
14
DB7
H/L
数据线
15
BLA
5.0V
背光电源正极
16
BLK
0V
背光电源负极
本设计中液晶串口一共用到11根导线与单片机相连,具体连接情况如表2.2.4-2显示模块与MCU连接说明所示。
表2.2.4-2显示模块与MCU连接说明
序号
1602A液晶显示器引脚
STC89C52单片机引脚
1
RS引脚
P2.5(A13)
2
R/W引脚
P2.6(A14)
3
E引脚
P2.7(A15)
4
D0引脚
P0.0(AD0)
5
D1引脚
P0.1(AD1)
6
D2引脚
P0.2(AD2)
7
D3引脚
P0.3(AD3)
8
D4引脚
P0.4(AD4)
9
D5引脚
P0.5(AD5)
10
D6引脚
P0.6(AD6)
11
D7引脚
P0.7(AD7)
2.2.5AT24C02掉电存储单元的设计
本设计中掉电存储单元采用AT24C02外部存储器,其作用是在系统电源断开的时候,存储当前设定的密码数据。
AT24C02是一个2K位串行CMOSE2PROM,内部含有256个8位字节,含一个16字节页写缓冲器,具有写保护功能。
其采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。
如下所示,图2.2.5-1为AT24C02管脚示意图,表2.2.5-1为AT24C02管脚说明。
图2.2.5-1AT24C02管脚示意图
表2.2.5-1AT24C02管脚说明
管脚名称
功能
管脚名称
功能
A0A1A2
器件地址选择
SDA
串行数据/地址
SCL
串行时钟信号
WP
写保护
VCC
1.8V-6.0V工作电压
VSS
接地
本设计中,AT24C02的SCL和SDA引脚接上拉电阻后与单片机的P3.4(T0)和P3.5(T1)脚相连,其电路图如图2.2.5-2所示。
图2.2.5-2AT24C02掉电存储单元设计图
3程序设计与系统仿真
3.1模块介绍
与硬件电路相关联,本系统软件包括主程序模块、密码比较判断模块、键盘扫描模块、修改密码模块、1602A液晶显示模块等。
系统程序流程如图3.1-1所示。
图3.1-1系统程序流程图
3.1.1主程序模块
主程序主要用于定义全局变量,给全局变量赋初值,初始化EPROM,启动定时器以及从AT24C02中读取密码,为整个程序提供数据;检测按键;调用显示等功能。
3.1.2密码比较判断模块
该模块的功能是将键盘输入的密码利用if语句与设定的密码进行逐个比较,若密码完全正确则开锁;若不正确,则开启报警电路,复位后重新输入密码。
其密码输入和比较判决流程图如图3.1.2-1所示。
图3.1.2-1密码输入和比较判决流程图
3.1.3键盘扫描模块
键盘使用矩阵式键盘,由行和列组成,CPU对所有键盘进行监视,从而实现逐列扫描键盘确定被按键的具体位置、判断键盘上有无键按下、消除去抖动、判断闭合的键是否释放等功能。
如图3.1.3-1所示,为键盘扫描流程图。
图3.1.3-1键盘扫描流程图
3.1.4修改密码模块
在密码输入正确情况下,可以按下“重置密码”对密码进行重新设置,每设定一位就将密码送给AT24C02存储起来,当设置6位密码完毕后,系统将自动跳到程序开始,调用新设置的密码。
图3.1.4-1为修改密码流程图。
图3.1.4-1修改密码流程图
3.2Proteus仿真电路
图3.2-1电子密码锁仿真图
4系统功能
本设计中系统可实现功能如下:
●通过切换,对输入的4位密码进行显示或隐藏;
●通过发光二极管和蜂鸣器,对解密正确或者错误进行声光报警;
●4位密码修改;
●在密码遗失情况下,通过初始密码进行密码再设置;
●采用AT24C02外部存储器,完成断电密码保护功能;
●具有1-9次的解锁次数任意设定功能;
●模拟密码箱随机产生密码,并进行解码。
5结束语
从基本方案的制定,到硬件电路的选择,再到电路的焊接,最后进行程序调试——在此期间我们遇到很多困难,但经过团队的不懈努力,终于击破了各个难点,达到的所需要的效果。
在这次设计中,我们深刻认识到自身的不足——缺少实战经验。
与此同时,也因为这次设计,我们得到一定的锻炼,体会到理论与实践相结合的重要意义。
由于本次设计时间有限,一些设想没有完全实现,比如说:
电子密码锁的网络通信扩展,人机界面智能化等。
期待以后有机会对以上设想进行进一步研究实践。
这次设计之所以能成功,必须要感谢那些帮助过我的人朋友同学,还有耐心教导过我的老师们。
感谢我们的系主任,他很关心我们这个系的学生的学习情况,努力为我们提供最好的教学环境,还有我们的XX老师,他细心的帮助我们检查毕业设计,教我们如何才能更好的完成设计。
是在你们的无私奉献下,我才能把这么多不懂的东西慢慢学会,并且把这次的设计做出来,谢谢你们。
附录1:
器件清单
器件名称
规格型号
编号
数量
单价(元)
总价(元)
备注
MCU
STC89C52
U1
1
7
7
外部存储器
AT24C02
U2
1
0.43
0.43
LCD
1602A
LCD1
1
20
20
发光二极管
3mm
D1
1
0.05
0.05
绿光
普亮
3mm
D2
1
0.05
0.05
红光
普亮
三极管
8550
Q1
1
0.2
0.2
晶振
12MHz
X1
1
0.5
0.5
电阻
4.7kΩ
4
0.02
0.08
10kΩ
2
0.02
0.04
10K排阻
RP1
1
0.5
0.5
电容
22P
C1C2
2
0.05
0.1
10μF
C3
1
0.05
0.5
IC座
8脚IC座
1
0.35
0.35
40脚IC座
1
0.3
0.3
单排插座
1
0.5
0.5
蜂鸣器
LS1
1
0.65
0.65
电池盒
5V电池盒
1
4
4
焊锡
2
1
2
导线
1
1
1
电路板
9×15cm万用板
1
1.5
1.5
附录2:
PCB图
附录3:
源程序
#include
#include
#include
#include
#defineLCM_DataP0
#defineucharunsignedchar
#defineuintunsignedint
#definew4
sbitkey=P2^0;
sbitalam=P2^1;
sbitopen_led=P2^2;
sbitlcd1602_rs=P2^5;
sbitlcd1602_rw=P2^6;
sbitlcd1602_en=P2^7;
sbitScl=P3^4;
sbitSda=P3^5;
sbitxianshi=P3^7;
bitoperation=0;
bitpass=0;
bitmmsd=0;
voidDelay5Ms(void)
{
unsignedintTempCyc=5552;
while(TempCyc--);
}
voidDelay400Ms(void)
{
unsignedcharTempCycA=5;
unsignedintTempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
}
}
bitReInputEn=0;
bits3_keydown=0;
bitkey_disable=0;
unsignedcharcountt0,second;
voidDelay5Ms(void);
staticunsignedchartmp2=80;
unsignedcharm,d,sjmbz=0;
unsignedcharcodea[]={0xFE,0xFD,0xFB,0xF7};
unsignedcharcodename[]={"TongXin08"};
unsignedcharcodeCorrect[]={"right"};unsignedcharcodeError[]={"wrong"};
unsignedcharcodesuijishu[]={"RandNumber:
"};
unsignedcharcodeset[]={"setting:
"};
unsignedcharcodesjp[]={"keypadlocked"};
unsignedcharcodestart_line[]={"password:
"};
unsignedcharcodecodepass[]={"success"};
unsignedcharcodeLockOpen[]={"open"};
unsignedcharcodeSetNew[]={"SetNewWord"};
unsignedcharcodeInput[]={"input:
"};
unsignedcharcodeResetOK[]={"ResetOK"};
unsignedcharcodeEr_try[]={"tryagain!
"};
unsignedcharcodeagain[]={"inputagain"};
unsignedcharcodeinitword[]={"chushihua"};
unsignedcharInputData[4];
unsignedcharCurrentPassword[4]={1,3,1,4};
unsignedcharTempPassword[4];
unsignedcharN=0;
unsignedcharcun[1];
unsignedcharC=3;
unsignedcharErrorCont;
unsignedcharCorrectCont;
unsignedcharReInputCont;
unsignedcharcodeinitpassword[4]={0,0,0,0};
voidmDelay(uintt)
{
uchari;
while(t--)
{
for(i=0;i<125;i++)
{;}
}
}
voidNop(void)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
voidStart(void)
{
Sda=1;
Scl=1;
Nop();
Sda=0;
Nop();
}
voidStop(void)
{
Sda=0;
Scl=1;
Nop();
Sda=1;
Nop();
}
voidAck(void)
{
Sda=0;
Nop();
Scl=1;
Nop();
Scl=0;
}
voidNoAck(void)
{
Sda=1;
Nop();
Scl=1;
Nop();
Scl=0;
}
voidSend(ucharData)
{
ucharBitCounter=8;
uchartemp;
do
{
temp=Data;
Scl=0;
Nop();
if((temp&0x80)==0x80)
Sda=1;
else
Sda=0;
Scl=1;
temp=Data<<1;
Data=temp;
BitCounter--;
}
while(BitCounter);
Scl=0;
}
ucharRead(void)
{
uchartemp=0;
uchartemp1=0;
ucharBitCounter=8;
Sda=1;
do{
Scl=0;
Nop();
Scl=1;
Nop();
if(Sda)
temp=temp|0x01;
else
temp=temp&0xfe;
if(BitCounter-1)
{
temp1=temp<<1;
temp=temp1;
}
BitCounter--;
}
while(BitCounter);
return(temp);
}
voidWrToROM(ucharData[],ucharAddress,ucharNum)
{
uchari;
uchar*PData;
PData=Data;
for(i=0;i { Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Send(*(PData+i)); Ack(); Stop(); mDelay(20); } } voidRdFromROM(ucharData[],ucharAddress,ucharNum) { uchari; uchar*PData; PData=Data; for(i=0;i { Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Start(); Send(0xa1); Ack(); *(PData+i)=Read(); Scl=0; NoAck(); Stop(); } } #defineyi0x80 #defineer0x80+0x40 voiddelay(uintxms) { uintx,y; for(x=xms;x>0;x--) for(y=110;y>0;y--); } write_1602com(ucharcom) { lcd1602_rs=0; lcd1602_rw=0; P0=com; delay (1); lcd1602_en=1; delay (1); lcd1602_en=0; } write_1602dat(uchardat) { lcd1602_rs=1; lcd1602_rw=0; P0=dat; delay (1); lcd1602_en=1; delay (1); lcd1602_en=0; } voidlcd_init(void) { write_1602com(0x38); write_1602com(0x0c); write_1602com(0x06); write_1602com(0x01); } unsignedcharcoding(unsignedcharm) { unsignedchark; switch(m) { case(0x18): k=1;break; case(0x28): k=2;break; case(0x48): k=3;break; case(0x88): k='A';break; case(0x14): k=4;break; case(0x24): k=5;break;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 密码锁 控制电路 设计 毕业设计