基于单片机设计的电子密码锁设计.docx

上传人:b****6 文档编号:8116182 上传时间:2023-01-28 格式:DOCX 页数:34 大小:550.20KB
下载 相关 举报
基于单片机设计的电子密码锁设计.docx_第1页
第1页 / 共34页
基于单片机设计的电子密码锁设计.docx_第2页
第2页 / 共34页
基于单片机设计的电子密码锁设计.docx_第3页
第3页 / 共34页
基于单片机设计的电子密码锁设计.docx_第4页
第4页 / 共34页
基于单片机设计的电子密码锁设计.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

基于单片机设计的电子密码锁设计.docx

《基于单片机设计的电子密码锁设计.docx》由会员分享,可在线阅读,更多相关《基于单片机设计的电子密码锁设计.docx(34页珍藏版)》请在冰豆网上搜索。

基于单片机设计的电子密码锁设计.docx

基于单片机设计的电子密码锁设计

摘要:

随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子密码锁由于其保密性高,灵活性好,安全系数高,受到了广大用户的亲呢。

本设计拟由单片机51系统、矩阵键盘、LED显示和报警系统组成。

系统能完成开锁、超时报警、超次锁定、修改用户密码基本的密码锁的功能。

同时,也兼顾到产品的使用率,因而本系统成本低廉,功能实用。

目录

一、设计要求…………………………………………………………………………………….4

二、方案论证与比较…………………………………………………………………………….4

1、整体方案论证…………………………………………………………………………………………………4

2、模块论证与比较………………………………………………………………………………………………5

2.1显示模块……………………………………………………………………………………………………5

2.2报警模块……………………………………………………………………………………………………5

2.3键盘输入模块………………………………………………………………………………………………6

三、设计思路…………………………………………………………………………………….7

1、分模块设计思路………………………………………………………………………………………………7

1.1主硬件电路…………………………………………………………………………………………………7

1.2显示电路……………………………………………………………………………………………………7

1.3键盘输入电路………………………………………………………………………………………………7

2、整体设计思路…………………………………………………………………………………………………8

2.1总体设计电路图……………………………………………………………………………………………8

2.2电路元件……………………………………………………………………………………………………8

2.3芯片介绍……………………………………………………………………………………………………9

2.3.1AT89S52芯片………………………………………………………………………………………….9

2.3.2LM386芯片……………………………………………………………………………………………9

2.3.2.1LM386内部电路…………………………………………………………………………………9

2.3.2.2LM386的引脚图……………………………………………………………………………………10

四、程序设计…………………………………………………………………………………………………11

1、软件实现功能………………………………………………………………………………………………11

1.14×4行列式键盘识别技术……………………………………………………………………………11

1.28位数码显示……………………………………………………………………………………………11

2、程序流程图…………………………………………………………………………………………………11

2.1、主程序流程图……………………………………………………………………………………………11

2.2、中断子程序流程图………………………………………………………………………………………12

3、程序…………………………………………………………………………………………………………12

五、调试………………………………………………………………………………………………………12

六、总结………………………………………………………………………………………………………13

七、致谢………………………………………………………………………………………………………13

八、参考文献……………………………………………………………………………………13

一、设计要求

1、具有密码输入功能,密码最多为6位;

2、设置退格键,以便删除输入错误的密码;

3、在输入的密码时数码管上只显示P,并根据输入位数依次横移;

4、设置确认键,当确认键按下后,判断输入密码是否正确;

5、当输入密码正确时,点亮发光二极管;当输入密码不正确时,发光二极管不亮并且蜂鸣器报警,系统应锁定键盘3s

二、方案论证与比较

1、整体方案论证[2]

方案一:

采用以74LS112双JK触发器构成的数字逻辑电路控制。

原理图如2-1所示:

图2-1数字密码锁电路方案

采用数字密码锁电路的好处就是设计简单。

用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的次数超过3次(一般情况下,用户不会超过3次,若用户觉得不便,还可以修改)电路将报警,若电路连续报警三次,电路将锁定键盘3秒,防止他人的非法操作。

电路主要为密码锁电路,密码锁电路包含:

键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。

方案二:

采用一种是用以AT89S51为核心的单片机控制方案。

利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。

其原理如图2-2所示。

 

89S51

单片机

矩阵

键盘

控制

输入错误锁定键盘

延时报警控制电路

 

 

指示电路

LED显示电路

图2-2单片机控制方案

通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。

2、模块论证与比较

2.1显示模块[9]

方案一:

显示模块由10个发光二极管组成。

选择10个发光二极管分别代表0-9的数字,并按一定顺序排列,当程序运行时,键盘模块输入相应值时,对应的发光二极管接通,发光,即显示所代表的数字。

具体电路图省略。

方案二:

显示模块由LED液晶显示屏及其驱动电路组成。

选择1602液晶显示屏,其16个管脚对应89S51的管脚,连接方便,且只需程序控制液晶显示。

方案三:

显示模块由LED动态数码管及其驱动电路组成。

选择2个四位数码管,2个四位数码管的片选端分别接89S51的8个端口,另外16个管脚统一接在89S51的8个端口,具体如图所示:

图2-3动态数码管显示

通过比较以上三种方案,第一种方案相对比较简单,但显示效果不算最好,第二种方案显示简单明了,但成本较高,第三种方案显示相对简单,价格便宜,因而选择第三种显示方式,即由四位动态数码管组成显示模块。

2.2报警模块

方案一:

报警模块由蜂鸣器驱动电路和8255组成。

选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要100mA驱动电流。

蜂鸣器电路如图4所示。

当8255的PB0口输出为高电平时,蜂鸣器产生蜂鸣音,8255输出为低电平时,蜂鸣器不发声。

图2-4蜂鸣器电路

方案二:

报警模块由LM386音频放大器及驱动电路组成。

选择芯片LM386及其他电阻、电容器件组成LM386音频放大模块,具体电路如图所示。

发生信号从3脚输入,5脚输出,当信号为高电平时,蜂鸣器发出声音,相反,则不发出声音。

图2-5音频放大电路

通过比较以上两种方案,方案一虽然电路简单,操作方便,但稳定性不高,而方案二虽然电路元件偏多,但性能稳定,且电压输入没有限制,可电池输入也可电源输入。

总体比较,选择方案二,即采用LM386音频放大器及驱动电路构成设计的报警模块。

2.3键盘输入模块

方案一:

键盘输入模块由独立式按键输入构成。

选择16个按键及89S51的2个输入端(共16位)构成输入模块,具体电路如图所示。

16个按键分别对应89S51的2个输入端,按键按下,低电平触发。

图2-6独立式键盘输入

方案二:

键盘输入模块由行列式按键输入构成。

选择16个按键及89S51的一个输入端(共8位)构成键盘输入模块,具体电路如图所示。

由软件编程实现行列扫描,进而显示数字。

图2-7行列式键盘输入

通过比较以上两种方案,方案一简单明了,容易控制,但所需端正口偏多,适用于少按键的电路,方案二所需端口不多,硬件上可以实现,但需要软件支持。

总体比较,选择方案二,即使用行列式键盘输入来实现该设计的输入模块。

三、设计思路

1、分模块设计思路

1.1主硬件电路

本系统采用AT89S52作为主控芯片,AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

具体电路图如图3-1所示:

图3-1主硬件电路

1.2显示电路

本密码锁控制系统采用2个四位的共阴数码管分别接入AT89S52的I/O端口,共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。

当某一字段的阳极为低电平时,相应字段就不亮。

具体电路图如图3-2所示:

图3-2显示电路

1.3键盘输入电路

该系统采用行列式键盘输入方式,在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键),因此与系统实际情况相结合,我们选择最优方案。

具体电路图如力3-3所示:

图3-3键盘电路

1.4音频放大电路

该系统采用以LM386为核心的音频放大电路,LM386是为低电压应用设计的音频功率放大器。

增益在内部设定到20可使外部元件数少,在引脚1和8之间连接电阻和电容可使增益超过200。

该集成电路适用于调幅-调频无线电放大器、便携式磁带重放设备、内部通信电路、电视音频系统、线性驱动器、超声波驱动器和功率变换电路。

具体电路图如图2-5所示:

2、整体设计思路

2.1总体设计电路图

图3-4总体电路

2.2电路元件

芯片:

AT89S51(一片)LM386N1(一片)

LED(四位显示)(二片)晶振管电容(12MHz)

电容:

30pF(二个)0.1uF(一个)0.047uF(一个)

电解电容:

10uF(二个)47uF(一个)

电阻:

220(一个)10K(3个)470(一个)10(一个)

按键:

17个(二脚)

喇叭:

一个

发光二极管:

二个

插糟:

40脚插糟(三个)

8脚插线:

4个2脚插线:

2个

2.3芯片介绍

2.3.1AT89S52芯片[1]

(1)AT89S52芯片介绍

AT89s512一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

外形及引脚排列如图所示:

(2)AT89S52硬件资源分配

P0.0-0.7、P2.0-2.7连接数码管P3.0-3.7连接按键

P1.7连接音频放大电路的输入端P1.0连接指示电路的输入端

2.3.2LM386芯片

(1)LM386芯片介绍

LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。

LM386内部电路原理图如图所示。

与通用型集成运放相类似,它是一个三级放大电路。

第一级为差分放大电路,T1和T3、T2和T4分别构成复合管,作为差分放大电路的放大管;T5和T6组成镜像电流源作为T1和T2的有源负载;T3和T4信号从管的基极输入,从T2管的集电极输出,为双端输入单端输出差分电路。

使用镜像电流源作为差分放大电路有源负载,可使单端输出电路的增益近似等于双端输出电容的增益。

第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数。

第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。

二极管D1和D2为输出级提供合适的偏置电压,可以消除交越失真。

引脚2为反相输入端,引脚3为同相输入端。

电路由单电源供电,故为OTL电路。

输出端(引脚5)应外接输出电容后再接负载。

电阻R7从输出端连接到T2的发射极,形成反馈通路,并与R5和R6构成反馈网络,从而引入了深度电压串联负反馈,使整个电路具有稳定的电压增益。

LM386的外形和引脚的排列如图所示。

引脚2为反相输入端,3为同相输入端;引脚5为输出端;引脚6和4分别为电源和地;引脚1和8为电压增益设定端;使用时在引脚7和地之间接旁路电容,通常取10μF。

(2)LM386芯片I/O口资源分配:

LM386的2、4端接地

LM386的1、7、8端悬空

LM386的5、6端接音频放大电路的输出电路

LM386的3端音频放大电路输入端与AT89S52的P1.7端

四、程序设计

1、软件实现功能

1.14×4行列式键盘识别技术

4×4行列式键盘的按键功能分布图如图4.1所示:

4

1

8

5

2

9

6

3

 

DEL

EN

 

0

7

 

1.28位数码显示

初始化时,显示“P”,接着输入最大6位数的密码,当密码输入完后,按下确认键,进行密码比较,然后给出相应的信息。

在输入密码过程中,显示器只显示“8.”。

当数字输入超过6个时,给出报警信息。

在密码输入过程中,若输入错误,可以利用“DEL”键删除刚才输入的错误的数字。

2、程序流程图[7]

该程序编程主要有几大块编程,一为主程序的编写,二为键盘扫描的程序编写,三为一中断子程序以实现所设计所要求的功能。

具体流程图如下:

2.1、键盘扫描程序流程图

 

2.2、中断子程序流程图

 

2.3、主程序流程图

 

3、程序

见附录

五、调试

1、硬件调试

1.1排除逻辑故障

  这类故障往往由于设计和加工制板过程中工艺性错误所造成的。

主要包括错线、开路、短路。

排除的方法是首先将加工的印制板认真对照原理图,看两者是否一致。

具体方法是利用数字万用表的短路测试功能,进行排错。

1.2排除元器件失效

  造成这类错误的原因有两个:

一个是元器件买来时就已坏了;另一个是由于安装错误,造成器件烧坏。

因此我提前检查元器件与设计要求的型号、规格和安装是否一致。

在保证安装无误后,用替换方法排除错误。

1.3排除电源故障 

  在通电前,检查电源电压的幅值和极性,否则很容易造成集成块损坏。

加电后检查各插件上引脚的电位,一般先检查VCC与GND之间电位,若在5V~4.8V之间属正常。

若有高压,联机仿真器调试时,将会损坏仿真器等,有时会使应用系统中的集成块发热损坏。

综上,在进行一系列的硬件检查后,我改正了一些自己电路虚焊、电路焊错等错误,初步认定已没有其他错误。

2、软件仿真[3]

利用PROTEUS软件对系统程序进行仿真调试,判别在硬件无错的情况下,软件的运行情况。

在熟悉运用PROTEUS软件的前提下,我对本系统的程序进行了仿真,发现在硬件理想状况下,该系统是可以运行的。

3、整机调试

功能

第一次

第二次

第三次

显示模块

成功

成功

成功

键盘功能

失败

失败

成功

音频模块

失败

失败

失败

总体功能

六、结论

通过本次设计我对芯片更加加深了了解,知道原理后再了解芯片的引脚就很好使用,在制作电路的过程中,对原理图的设计、原理图常用功能、元件库的编辑等,进行了更加深入的认识。

尤其对印制电路板(PCB板)的设计,单、双面板的制作认识更为深刻,能更好、更熟练的使用Protel99制作原理图和PCB板。

通过焊接和调试,使我的动手能力也有很大的提高。

本电子密码锁的原理是:

以AT89S52芯片为核心,结合键盘电路、显示电路、音频放大电路构成了一个电子密码锁。

其原理为以AT89S52控制各个模块的运行,把他们结合在一起。

在本次设计中,通过对设计任务的分析理解、元器件的选用及其性能分析、电子密码锁的原理及设计图进行定稿、各单元电路的分析与测试。

并在原理图的基础上用万能板生成整个成品,在电路板上安装元件并焊接元件,最后对所完成的电子密码锁的实物进行调试,直到达到预设的效果。

对通过此次设计提高了我分析与解决问题的能力。

本次设计的电子密综合了所学知识的理论与基础,通过本次对电子密码锁的设计,将所学的知识运用到实际生活去了。

从而知道自己对知识的掌握情况。

经这次设计,让专业知识与实践结合,让专业知识得到了更好的消化和更牢固的掌握。

在设计的过程中,遇到了很多的各种问题,这不失是一种好的现象,因为在设计时出现的问题越多,最后电子密码锁的成功率就越大。

常说在问题中进步,在失败中成长,亦是如此。

经过这次的毕业设计,让书本上的理论知识能够真正地融合到实践中去。

实践的过程让我更好的理解了书本上的知识,也弥补了在书本上没有而存在的知识。

对我以后的工作以及人生道路作了一个很好的铺垫。

附录:

#include

unsignedcharps[]={1,2,3,4,5};

unsignedcharcodedispbit[]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f};

unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,

0x77,0x7c,0x39,0x5e,0x79,0x71,

0x00,0x40,0x73,0xff};

unsignedchardispbuf[8]={18,16,16,16,16,16,16,16};

unsignedchardispcount;

unsignedcharflashcount;

unsignedchartemp;

unsignedcharkey;

unsignedcharkeycount;

unsignedcharpslen=5;

unsignedchargetps[6];

bitkeyoverflag;

biterrorflag;

bitrightflag;

unsignedintsecond3;

unsignedintaa,bb;

unsignedintcc;

bitokflag;

bitalarmflag;

bithibitflag;

unsignedcharoka,okb;

voidmain(void)

{

unsignedchari,j;

TMOD=0x01;

TH0=(65536-500)/256;

TL0=(65536-500)%256;

TR0=1;

ET0=1;

EA=1;

while

(1)

{

P3=0xff;

P3_4=0;

temp=P3;

temp=temp&0x0f;

if(temp!

=0x0f)

{

for(i=10;i>0;i--)

for(j=248;j>0;j--);

temp=P3;

temp=temp&0x0f;

if(temp!

=0x0f)

{

temp=P3;

temp=temp&0x0f;

switch(temp)

{

case0x0e:

key=7;

break;

case0x0d:

key=8;

break;

case0x0b:

key=9;

break;

case0x07:

key=10;

break;

}

temp=P3;

P1_1=~P1_1;

if((key>=0)&&(key<10))

{

if(keycount<6)

{

getps[keycount]=key;

dispbuf[keycount+2]=19;

}

keycount++;

if(keycount==6)

{

keycount=6;

}

elseif(keycount>6)

{

keycount=6;

keyoverflag=1;//keyoverflow

}

}

elseif(key==12)//deletekey

{

if(keycount>0)

{

keycount--;

getps[keycount]=0;

dispbuf[keycount+2]=16;

}

else

{

keyoverflag=1;

}

}

elseif(key==15)//enterkey

{

if(keycount!

=pslen)

{

errorflag=1;

rightflag=0;

second3=0;

}

else

{

for(i=0;i

{

if(getps[i]!

=ps[i])

{

i=keycount;

errorflag=1;

rightflag=0;

second3=0;

gotoa;

}

}

errorflag=0;

rightflag=1;

a:

i=keycount;

}

}

temp=temp&0x0f;

while(temp!

=0x0f)

{

temp=P3;

temp=temp&0x0f;

}

keyoverflag=0;

}

}

P3=0xff;

P3_5=0;

temp=P3;

temp=tem

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 兵器核科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1