四位电子密码锁.docx
- 文档编号:9517205
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:22
- 大小:42.51KB
四位电子密码锁.docx
《四位电子密码锁.docx》由会员分享,可在线阅读,更多相关《四位电子密码锁.docx(22页珍藏版)》请在冰豆网上搜索。
四位电子密码锁
GUILINUNIVERSITYOFELECTRONICTECHNOLOGY
专业工程设计说明书
题目:
4位电子密码锁设计
院(系):
电子工程与自动化学院
专业:
测控技术与仪器(卓越)
学生姓名:
蔡伟航
学号:
1200820206
指导教师:
黄源
2015年1月16日
摘要
锁是置于可启闭的器物上,用以关住某个确定的空间范围或某种器具的,必须以钥匙或暗码打开的扣件。
锁具发展到现在已有若十年的历史了,人们对它的结构、机理也研究得很透彻。
随着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。
当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。
本设计由主控芯片51单片机,单片机时钟电路,矩阵键盘,数码管的动态显示,报警电路和开锁电路组成。
单片负责控制整个系统的执行过程。
关键词:
AT89S51、时钟电路、矩阵键盘、数码管的动态显示、报警电路,开锁电路
引言1
1课程设计题目1
2系统设计2
2.1总的系统设计结构图2
2.2系统硬件设计2
3AT89S52最小系统设计3
3.1时钟电路设计3
3.2复位电路设计4
4键盘及显示报警电路的硬件设计5
4.1矩阵键盘电路设计5
4.2显示电路硬件设计5
4.3继电器驱动电路及报警电路设计6
4.3.1继电器简介6
4.3.2固态继电器驱动电路设计7
4.3.3报警提示电路7
5系统软件设计8
5.1主程序模块9
5.2密码比较判断模块9
5.3键盘扫描模块9
5.4修改密码模块10
5.5数码管液晶显示模块11
6总体调试11
7总结12
参考文献13
附录14
引言
通过本次课设的理解与掌握:
1、熟悉掌握单片机的结构及工作原理,锻炼独立设计、制作和调试单片机应用系统的软硬件开发的过程和方法。
2、通过MCS-51单片机应用系统的设计与编程应用,将理论知识和实际应用结合起来,加深对电子电路、电子元器件、印刷电路板等方面的知识,提高在软件编程、排错调试、焊接技术、相关设备的使用技能。
掌握单片机的接口及外围设备的特性,使用和控制方法。
为以后设计和实现单片机应用系统打下良好的基础。
3、通过密码锁的设计将所学知识融会贯通,锻炼独立设计、制作和调试单片机应用系统的能力,领会单片机应用系统的软件、硬件调试方法和习题研制开发过程,为进一
步的动手实践活动打下一定的基础。
1课程设计题目
2、4位电子密码锁设计
任务要求:
1、掌握单片机最小系统的设计方法;
2、掌握数码管动态扫描原理与实现方法;
3、掌握矩阵键盘的工作原理和使用方法;
4、利用矩阵键盘实现4位密码的输入;
5、利用4位数码管显示工作状态,如待机,开锁,关锁,修改密码,输入密码,密码
是否正确等状态信息;
6、输入密码为数字0〜9,具有确定输入及密码修改功能;连续三次密码输入错误将锁定10秒并报警。
2系统设计
2.2系统硬件设计
本次课程设计的密码锁电路主要由四个模块组成:
键盘输入模块、数据处理模块、数码管显示控制模块,继电器驱动模块和蜂鸣器报警模块。
通过单片机送给开锁执行机构,电路驱动继电器吸合,从而达到开锁的目的。
如图1-2所示,为密码锁开锁电路原理图当用户输入的密码正确时,单片机便输出开门信号,送到继电器驱动电路,然后驱动继电器常开触点闭合,达到开门的目的。
本次设计中,继电器选用固态继电器,信息通过数码管显示,并利用蜂鸣器和发光二极管声光指示。
其中,绿发光二极管亮,蜂鸣器响一声表示开锁;否则,密码输入三次错误,则开启报警装置。
3AT89S52最小系统设计
单片机最小系统包括CPU、时钟电路和复位电路等三部分。
下面则分别介绍这三部分的选取。
3.1时钟电路设计
时钟电路用丁产生单片机工作时所必需的时钟控制信号,常用的时钟电路有内部时
钟方式和外部时钟方式。
内部时钟方式电路外接两个电容和一个晶振,根据振荡频率要求的不同选用不同阻值的电容和晶振。
时钟电路中的晶振震荡频率范围通常是
1.2MHz〜12MHz,AT89S52常选择6MHz或12MHz的石英晶体,为消除开锁驱动电路误差,得到准确的波特率,本设计选择震荡频率为11.0592MHz的石英晶,时钟电路如图3-1所示。
3.2复位电路设计
复位是单片机的初始化操作,只需在单片机的复位引脚加上大丁2个机器周期的高
电平就可使单片机复位,当程序运行出错或操作进入死循环状态可通过复位重新启动程序。
MCS-51的复位是由外部的复位电路来实现的,AT89S52&不例外,复位电路通常采
用上电自动复位和按钮复位两种方式,为方便复位操作,本文采用按键电平■复位,电路如图5所示。
其中C取10uF,R2取1KQ,复位电路如图3-2所示。
RST以/VIPSENALEfi
P3.0/F
P3.1/1
P3.2/I
P33/T
P3.4/1
P3.5/7
4键盘及显示报警电路的硬件设计
4.1矩阵键盘电路设计
键盘是系统中的手动控制部分,所以键盘的设计就显得尤为的重要。
每一条水平(行线)与垂直线(列线)的交义处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要M条行线和N条列线,即可组成具有修N个按键的键盘。
由丁本设计中要求使用16个按键输入,为减少键盘与单片机接口时所占用的I/O线的数目,故使用
矩阵键盘。
本设计中,矩阵键盘列线和单片机P2.0-P2.3相连,行线与单片机P2.4-P2.7相连。
键盘扫描采用行扫描法,即依次置行线中的每一行为低电平,其余均为高电平,
扫描列线电平状态,为低电平即表示该键按下。
键盘电路硬件连接图如图4-1所示。
4.2显示电路硬件设计
显示是系统的输出部分,用丁观察当前的输入状态。
显示电路采用三极管对位码进行驱动。
LED数码管有共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,就叫共阳的,相反的,就叫共阴的,那么应用时这个脚就分别的接VCCJ日GND再把多个这样的8字装在一起就成了多位的数码管了。
显示方式有静态显示和动态显示两种显示方式。
静态显示时,数据是分开送到每一位LED上的;而动态显示则是数据是送到每一个LED上,再根据位选线来确定是哪一位LED被显示。
静态显示亮度很高,但口线占用较多;动态显示占用口线数目较
少,适合用在显示位数较多的场合,但显示位数的增多,将占用大量的CPU寸问。
本次
设计选用动态显示。
如图4-2所示。
图4—2
4.3继电器驱动电路及报警电路设计
4.3.1继电器简介
固态继电器(SolidStateRelay,缩写SSR,是由微电子电路,分立电子器件,电力电子功率器件组成的无触点开关。
用隔离器件实现了控制端与负载端的隔离。
固态继电器的输入端用微小的控制信号,达到直接驱动大电流负载。
固态继电器有三部分组成:
输入电路,隔离(耦合)和输出电路。
按输入电压的不同类别,输入电路可分为直流输入电路,交流输入电路和交直流输入电路三种。
有些输入控制电路还具有与TTL/CMOSS
容,正负逻辑控制和反相等功能。
固态继电器的输入与输出电路的隔离和耦合方式有光电耦合和变压器耦合两种。
固态继电器的输出电路也可分为直流输出电路,交流输出电路和交直流输出电路等形式。
交流输出时,通常使用两个可控硅或一个双向可控硅,直流输出时可使用双极性器件或功率场效应管。
1、固态继电器的优点
(1)高寿命,
高可靠:
固态继电器没有机械零部件,有固体器件完成触点功能,由丁没有运动的零部件,因此能在高冲击,振动的环境下工作,由丁组成固态继电器的元器件的固有特性,决定了固态继电器的寿命长,可靠性高。
(2)灵敏度高,控制功率小,电磁兼容性
好:
固态继电器的输入电压范围较宽,驱动功率低,可与大多数逻辑集成电路兼容不需加缓冲器或驱动器。
(3)快速转换:
固态继电器因为采用固体器件,所以切换速度可从几毫秒至
9几微妙。
(4)电磁干扰小:
固态继电器没有输入“线圈”,没有触点燃弧和回跳,因而减少了电磁干扰。
大多数交流输出固态继电器是一个零电压开关,在零电压处导通,
零电流处关断,减少了电流波形的突然中断,从而减少了开关瞬态效应。
2、固态继
电器的缺点
(1)导通后的管压降大,可控硅或双相控硅的正向降压可达1~2V,大功
率晶体管的饱和压降也在1~2V之间,一般功率场效应管的导通电阻也较机械触点的接触电阻大。
(2)半导体器件关断后仍可有数微安至数毫安的漏电流,因此不能实现
理想的电隔离。
(3)由丁管压降大,导通后的功耗和发热量也大,大功率固态继电
器的体积远远大丁同容量的电磁继电器,成本也较高。
(4)电子元器件的温度特性
和电子线路的抗干扰能力较差,耐辐射能力也较差,如不采取有效措施,则工作可靠性低。
(5)固态继电器对过载有较大的敏感性,必须用快速熔断器或RC阻尼电路对其
进行过载保护。
固态继电器的负载与环境温度明显有关,温度升高,负载能力将迅速下降。
(6)主要不足是存在通态压降(需相应散热措施),有断态漏电流,交直流不能通用,触点组数少,另外过电流、过电压及电压上升率、电流上升率等指标差。
4.3.2固态继电器驱动电路设计
当用户输入的密码正确时,单片机便输出开门信号,送到继电器驱动电路,然后驱动继电器常开触点闭合,绿发光二极管亮,表示开锁;否则,红发光二极管亮,表示未开锁。
硬件设计图如下。
14
4.3.3报警提示电路
报警提示电路采用小蜂鸣器提示。
蜂鸣器能够根据脉冲信号,以及信号的频率发出各种不同的声音,这样可以根据系统要求在密码出入正确和密码输入错误时发出不同的声音提示,已达到报警的要求。
蜂鸣器电路,如图4-4。
5系统软件设计
在系统设计中,除了硬件设计之外,软件设计也是很重要的,它是系统工作的指挥者,因此系统软件设计时要遵循结构合理、操作性能好、具有一定的保护措施、兼容性好的设计原则来开发设计。
密码锁系统软件设计主要包括主程序模块、密码比较判断模块、键盘扫描模块、修改密码模块、数码管显示模块等及按键检测模块。
系统程序流程图5-1
5.1主程序模块
主程序主要用丁定义全局变量,给全局变量赋初值,启动定时器,为整个程序提供数据;检测按键;调用显示等功能。
5.2密码比较判断模块
该模块的功能是将键盘输入的密码利用if语句与设定的密码进行逐个比较,若密码完全正确则开锁;若不正确三次,则开启报警电路,可重新输入密码。
其密码输入和比较判决流程图如下图5-2.
5.3键盘扫描模块
键盘使用矩阵式键盘,由行和列组成,CPLM所有键盘进行监视,从而实现逐列扫
描键盘确定被按键的具体位置、判断键盘上有无键按下、消除去抖动、判断闭合的键是否释放等功能。
如图5-3所示,为键盘扫描流程图.
图5-3
5.4修改密码模块
在密码输入正确情况下,可以按下“重置密码”对密码进行重新设置,每设定一位
就将密码存储起来,当设置4位密码完毕后,系统将自动跳到程序开始,调用新设置的
密码。
图5-4为修改密码流程图
5.5数码管液晶显示模块
在显示之前,我们编好了段选表0—9,通过查表来显示,由丁本次设计采用动态显示,所以先送段选给每一位,然后给相应的数码管送位选,延时1MS再给下一位送段
选,送位选,延时1MS以此类推,让4位数码管显示不同的数字,利用人的视觉暂留,使我们看到4位数码管的动态显示效果。
显示子程序流程图如图5-5所示。
6总体调试
在本次软件调试中,我们使用的是STC_ISP_V481C5仰片机下载工具和Keil
uVision2软件,KeiluVision2是美国KeilSoftware公司出品的51系列兼容单片机C语舌软件开发系统,使用接近丁传统c语舌的语法来开发,与汇编相比,C语言'在功能
上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工
作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近丁汇编的工作效率。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用keilc51来开发您的单片机应
用程序。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51
生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
IntogrationIDEforMicrocontroller
ThisprogramitprelectedfayU.SandinternalionaIcopyrightlaws
7总结
经过三周的紧张设计,终丁顺利完成了设计任务。
本次课程设计主要是针对密码锁系统做了详细介绍,以AT89S5&核心,并通过调试运行可以实现数码管显示器显示密码输入的相关信息,通过10位数字按键(0~9)设置4位数字(0~9)密码,实现3个功能按键,利用继电器模拟电子门锁作出是否开门以及报警等反应。
通过课程设计让我对单片机系统有了较详细的了解,而且触及到与其相关的很多新知识,而且随着电子技术的发展简易数字电压表也会越来越完善,作为大学生的我们应该跟上时代的步伐,时刻关注形势变化,不断充实更新自己的知识。
在设计中既应用到了基础知识,也用到了专业知识,它是对三年来所学知识的综合考察。
最重要的是我通过亲自设计,亲自绘制原理图,印制电路板以及系统调试培养了我的耐心和细心,这对我以后的工作和学习有很大的帮助。
最后,在完成本次课程设计的过程中,还得到众多朋友的关心支持和帮助,非常感谢黄源老师的悉心指导,体会到老师治学的严谨,也让电子密码锁的功能更加完善。
参考文献
【1】黄滔基丁AT89C51单片机的电子密码锁设计电子科技报
活华大学出版社(第
【2】朱定华戴颖颖李川香单片微机原理、汇编与'c51接口技术
一版)
【3】郭天祥51单片机C语言教程电子工业出版社
附录
程序
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitbaojing=P3A0;
sbitkaisuo=P3A1;
ucharcodetable[]=(
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voiddelayms(uintxms)
(
uinti,j;
for(i=xms;i>0;i--)//i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}
voiddisplay(uint*A)
(
P0=table[A[0]];//显示函数只送段选数据
P1=0xfe;
delayms
(1);
P0=table[A[1]];//显示函数只送段选数据
P1=0xfd;
delayms
(1);
P0=table[A[2]];//显示函数只送段选数据
P1=0xfb;
delayms
(1);
P0=table[A[3]];//显示函数只送段选数据
P1=0xf7;
delayms
(1);
}
matrixkeyscan(uint*A,uintkey)(
uchartemp;
P2=0xfe;
temp=P2;
temp=temp&0xf0;
if(temp!
=0xf0)
(
delayms(10);
temp=P2;
temp=temp&0xf0;
if(temp!
=0xf0)
(
temp=P2;
switch(temp)
(
case0xee:
key=0;
break;
case0xde:
key=1;
break;
case0xbe:
key=2;
break;
case0x7e:
key=3;
break;
}
while(temp!
=0xf0)
(
temp=P2;
temp=temp&0xf0;
}
}
}
display(A);
P2=0xfd;
temp=P2;
temp=temp&0xf0;
if(temp!
=0xf0)
(
delayms(10);
temp=P2;
temp=temp&0xf0;
if(temp!
=0xf0)
(
temp=P2;
switch(temp)
(
case0xed:
key=4;
break;
case0xdd:
key=5;
break;
case0xbd:
key=6;
break;
case0x7d:
key=7;
break;
}
while(temp!
=0xf0)
(
temp=P2;
temp=temp&0xf0;
}
}
}
display(A);
P2=0xfb;
temp=P2;
temp=temp&0xf0;
if(temp!
=0xf0)
(
delayms(10);
temp=P2;
temp=temp&0xf0;
if(temp!
=0xf0)
(
temp=P2;
switch(temp)
(
case0xeb:
key=8;
break;
case0xdb:
key=9;break;
case0xbb:
key=10;break;
case0x7b:
key=11;break;
}
while(temp!
=0xf0)
(
temp=P2;
temp=temp&0xf0;
}
}
}display(A);P2=0xf7;temp=P2;temp=temp&0xf0;if(temp!
=0xf0)(
delayms(10);
temp=P2;
temp=temp&0xf0;
if(temp!
=0xf0)
(
temp=P2;
switch(temp)
(
case0xe7:
key=12;break;
case0xd7:
key=13;break;
case0xb7:
key=14;break;
case0x77:
key=15;break;
}
while(temp!
=0xf0)
(
temp=P2;
temp=temp&0xf0;
}
}
}
display(A);
returnkey;
}
voidmain()
(
uintD[]={1,3,5,8};
uintA[]={10,10,10,10,10};
uinti=0,cishu=3;
uintkey=-1;
kaisuo=1;
baojing=0;
while
(1)
{
key=matrixkeyscan(A,key);
if(key==10)
{
A[0]=10;
A[1]=10;
A[2]=10;
A[3]=10;
key=-1;
while
(1)
{
key=matrixkeyscan(A,key);
if(key>=0&&key<=9)
{
A[i]=key;
key=-1;
i++;
}if(i>=4)break;
}
i=0;
if(A[0]==D[0]&&A[1]==D[1]&&A[2]==D[2]&&A[3]==D[3])
(
baojing=1;
delayms(50);
baojing=0;
kaisuo=0;
//A[0]=10;
//A[1]=10;
//A[2]=10;
//A[3]=10;
}
if(A[0]!
=D[0]||A[1]!
=D[1]||A[2]!
=D[2]||A[3]!
=D[3])
(
cishu--;
A[0]=10;
A[1]=10;
A[2]=10;
A[3]=10;
}
if(cishu==0)
(
baojing=1;
delayms(10000);
baojing=0;
cishu=3;
}
}
if(key==11)
(
key=-1;
while
(1)
(
key=matrixkeyscan(A,key);
if(key>=0&&key<=9)
(
A[i]=key;
key=-1;
i++;
}
if(i>=4)break;
}i=0;
if(A[0]==D[0]&&A[1]==D[1]&&A[2]==D[2]&&A[3]==D[3])
(
A[0]=10;
A[1]=10;
A[2]=10;
A[3]=10;
while
(1)
(
key=matrixkeyscan(A,key);if(key>=0&&key<=9)(
D[i]=key;
A[i]=D[i];key=-1;i++;
}if(i>=4)break;
}
i=0;
}
elsebaojing=1;
}
if(key==12)
(
kaisuo=1;
key=-1;
A[0]=10;
A[1]=10;
A[2]=10;
A[3]=10;
}
}
}
电■路图:
〈〈专业工程设计》元器件清单示例
课题名称:
四位电子密码锁设计空
序号
名称及规格
型号
数量
单价
备注
1
单片机
AT89S51
1
带底座
2
A/D转换器
ADC0809
1
带底座
3
绿色LED灯
2
4
红色局晃共阴4位数码管
7-SEG-MPX4-CA-BLUE
1
5
PNP三极管
10K
6
6
排阻1K*8
1
7
1*40圆针插座
2
8
电阻1K
9
9
电容30pF
1
10
电容10uF
2
11
晶振12MHz
1
12
红色LED灯
2
13
四脚按键开关
17
14
自锁开关
1
15
蜂鸣器
1
16
继电器
1
17
合计
注意:
限额40元/人,公共物品(焊锡、砂纸、钻头、转印纸、10cm*15cm®面铜板等)
不需列在表中,由实验室统一购买发放。
指导老师签名:
=
日期:
=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 密码锁
![提示](https://static.bdocx.com/images/bang_tan.gif)