电子密码锁实验报告.docx

上传人:b****6 文档编号:6328238 上传时间:2023-01-05 格式:DOCX 页数:19 大小:109.35KB
下载 相关 举报
电子密码锁实验报告.docx_第1页
第1页 / 共19页
电子密码锁实验报告.docx_第2页
第2页 / 共19页
电子密码锁实验报告.docx_第3页
第3页 / 共19页
电子密码锁实验报告.docx_第4页
第4页 / 共19页
电子密码锁实验报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

电子密码锁实验报告.docx

《电子密码锁实验报告.docx》由会员分享,可在线阅读,更多相关《电子密码锁实验报告.docx(19页珍藏版)》请在冰豆网上搜索。

电子密码锁实验报告.docx

电子密码锁实验报告

1方案设计说明

1.1采用以单片机为核心的控制方案

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

利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,能实现基本的密码锁功能。

设计思路如下:

输入密码用矩形键盘,包括数字键和功能键。

LED数码管显示输入密码,用74JS247驱动数码管发光显示数码,用74LS138控制各位显示器分时进行显示。

用发光二极管代替开锁的电路,发光表示开锁。

输入密码错误次数超过3次,系统报警。

打开电源后,显示器显示“000000”,设原始密码为“123456”,只要输入此密码便了开门。

这样可预防停电后再来电时无密码可用。

按“C”键,清除显示器为“000000”。

欲重新设定密码,先输入密码再按“*”。

输入密码,再按“*”键。

若密码与设定密码相同,则开门。

否则显示器清为“000000”。

1.2主要元器件介绍

1.2.1主控芯片AT89C51

AT89C51是一种低功耗,高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

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

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

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

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

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

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

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[6]。

芯片引脚如图1.1所示。

图1.1AT89C51芯片引脚图

1.AT89C51性能简介

AT89C51具有如下特点:

40个引脚,4K字节可编程FLASH片内程序存储器,128×8位随即存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断源,两个16位可编程定时计数器,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路[7]。

2.AT89C51引脚功能说明

Vcc:

电源电压

GND:

P0口:

P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。

在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。

在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P3口:

P3口是一组带有内部上拉电阻的8位双向I/O口。

P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。

作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表1.2。

表1.2P3口的第二功能

端口功能

第二功能

端口引脚

第二功能

R*D(P3.0)

串行输入口

T0(P3.4)

定时/计数器0外部输入

T*D(P3.1)

串行输出口

T1(P3.5)

定时/计数器1外部输入

INT0(P3.2)

外中断0

WR(P3.6)

外部数据存储器写选通

INT1(P3.3)

外中断1

RD(P3.7)

外部数据存储器读选通

RST:

复位输入。

当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。

WDT溢出将使该引脚输出高电平,设置SFRAU*R的DISRTO位(地址8EH)可打开或关闭该功能。

DISRTO位缺省为RESET输出高电平打开状态[9]。

EA/Vpp:

外部访问允许。

欲使CPU公访问外部程序存储器(地址0000H-FFFFH),EA端必须保持低电平(接地)。

需注意的是:

如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。

Flash存储器编程时,该引脚加上+12V的编程电压Vpp[11]。

*TAL1:

振荡器反相放大器及内部时钟发生器的输入端。

*TAL2:

振荡器反相放大器的输出端。

3.AT89C51芯片内部结构

特殊功能寄存器:

特殊功能寄存器的片内空间分存如下图3-2所示。

这些地址并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。

而写这些地址单元将不能得到预期的结果。

中断寄存器:

各中断允许控制位于IE寄存器,5个中断源的中断优先级控制位于IP寄存器[12]。

图1.3为AU*R辅助寄存器。

图1.3AU*R辅助寄存器

双时钟指针寄存器:

为方便地访问内部和外部数据存储器,提供了两个16位数据指针寄存储器:

PD0位于SFR区块中的地址82H、83H和DP1位于地址84H、85H,当SFR中的位DPS=0时选择DP0,而DPS=1时选择DP1。

在使用前初始化DPS。

图1.4为双时钟指针寄存器。

图1.4双时钟指针寄存器

电源空闲标志:

电源空闲标志(POF)在特殊功能寄存储器SFR中PCON的第4位(PCON.4),电源打开时POF置“1”,它可由软件设置睡眠状态并不为复位所影响。

1.3晶体振荡器

晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。

以声卡为例,要实现对模拟信号44.1kHz或48kHz的采样,频率发生器就必须提供一个44.1kHz或48kHz的时钟频率。

如果需要对这两种音频同时支持的话,声卡就需要有两颗晶振。

但是现在的娱乐级声卡为了降低成本,通常都采用SCR将输出的采样频率固定在48kHz,但是SRC会对音质带来损害,而且现在的娱乐级声卡都没有很好地解决这个问题。

现在应用最广泛的是石英晶体振荡器。

1.4电源的选择

密码锁主控制部分电源需要用5V直流电源供电,其电路如图1.5所示,把频率为50Hz、有效值为220V的单相交流电压转换为幅值稳定的5V直流电压。

其主要原理是把单相交流电经过电源变压器、整流电路、滤波电路、稳压电路转换成稳定的直流电压[15]。

由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的作用显现出来起到降压作用。

降压后还是交流电压,所以需要整流电路把交流电压转换成直流电压。

由于经整流电路整流后的电压含有较大的交流分量,会影响到负载电路的正常工作。

需通过低通滤波电路滤波,使输出电压平滑。

稳压电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而获得稳定性足够高的直流电压。

本电路使用集成稳压芯片7805解决了电源稳压问题。

图1.5电源输入电路原理图

2系统硬件设计说明

2.1设计原理

本设计主要由单片机、矩阵键盘、LED显示电路和密码存储等部分组成。

其中矩阵键盘用于输入数字密码和进行各种功能的实现。

由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警。

本系统共有两部分构成,即硬件部分与软件部分。

其中硬件部分由键盘输入部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,软件部分对应的由主程序、初始化程序、键盘扫描程序、LED显示程序、密码设置程序等组成。

其原理框图如图2.1所示。

 

图2.1电子密码锁原理框图

2.2电路总体构成

在确定了选用什么型号的单片机后,就要确定在外围电路,其外围电路包括键盘输入部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,根据实际情况键盘输入部分选择4*4矩阵键盘,显示部分选择LED显示电路。

其线路

图2.2电路线路图

2.3复位部位电路

单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从0000H取指令[16]。

系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。

为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。

图2.3所示RC复位电路可以实现上述基本功能。

图2.3复位电路线路图

2.4晶振部分电路

AT89S51引脚*TAL1和*TAL2与晶体振荡器及电容C2、C1按图2.4所示方式连接。

晶振、电容C1/C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,*围在0~33MHz之间,电容C1、C2取值*围在20~30pF之间。

根据实际情况,本设计中采用12MHZ作为系统的外部晶振[17]。

电容取值为30pF。

图2.4为晶振电路图。

图2.4晶振电路线路图

2.5键盘电路设计

使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法[18]。

其原理如2.5。

图2.5矩阵键盘线路图

每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。

在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。

当确认有按键按下后,下一步就要识别哪一个按键按下。

对键的识别通常有两种方法:

一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。

对照表2.6所示的4×4键盘,说明线反转个工作原理。

首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。

方法是:

向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。

如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。

判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。

方法是:

依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。

判断哪个键被按下:

将P1.0~P1.3都置低,检测P1.4~P1.7是否有低的,若有,则证明有键按下,记下低的端口。

然后,将P1.4~P1.7置低,检测P1.0~P1.3是否有低的端口,如有,则证明端口与上次的一个为地的端口交叉位置的键被按下。

键盘16个键布局如表2.7,0~9,ON,OFF,LOCK,*,C,*。

其中ON为开启键盘键,按下此键后键盘开启;OFF为关闭键盘键,按下此键后键盘关闭;0~9为数字键,进行密码输入以及更改密码时的输入键;*键用来设置密码,当锁被打开后,此键方可有效工作,按下此键后,可以设置新密码;C为清除键,当输入密码按键错误时可以按此键后退并清除当前字符;*键作为确定键,开锁时,按下此键后进行密码比对,设置密码时,按下此键确定所输入的数字。

表2.6键盘布局

1

2

3

ON

4

5

6

OFF

7

8

9

LOCK

*

0

C

*

具体的功能设计如表2.7:

表2.7按键功能

按键

键名

功能说明

0-9键

数字键

输入密码

*键

重设密码键

设定新密码

*键

确定键

比较密码

C键

清除键

使显示器清零

ON键

开锁键

键盘开启

OFF键

闭锁键

键盘关闭

LOCK键

上锁键

系统上锁

2.6LED显示电路

本系统设计的显示电路是为了给使用者以提示而设置的。

本系统的显示采用串行显示的方式,只使用单片机的一个串行口,利用74LS247驱动数码管发光显示数码和74LS138控制位选信号,就可以完成单片机的显示功能[18]。

显示电路的电路原理图如图2.8所示。

用P0.0—P0.3接74LS247的A,B,C,D四端口,74LS247的输出口接LED的七段显示。

图2.8LED显示电路

用74LS247可以控制输出什么字型。

74LS247的逻辑功能表如表2.9:

表2.974LS247的逻辑功能表

十进制数

输入

输出

字型

A3

A2

A1

A0

QA

QB

QC

QD

QE

QF

QG

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

1

1

0

0

1

1

1

1

1

2

0

0

1

0

0

0

1

0

0

1

0

2

3

0

0

1

1

0

0

0

0

1

1

0

3

4

0

1

0

0

1

0

0

1

1

0

0

4

5

0

1

0

1

0

1

0

1

1

0

0

5

6

0

1

1

0

0

1

0

0

0

0

0

6

7

0

1

1

1

0

0

0

1

1

1

1

7

8

1

0

0

0

0

0

0

0

0

0

0

8

9

1

0

0

1

0

0

0

0

1

0

0

9

2.7开锁电路

在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。

电路图如3.1所示。

当P2.0口输出低电平时,二极管发光,表示开锁。

图3.1开锁电路线路图

2.8报警电路

报警模块由红色发光二极管和单片机组成。

当AT89C51的P2.1口输出为低电平时,发光二极管发出红光。

图3.2报警电路线路图

3系统软件设计

3.1软件设计思路

电子密码锁工作的主要过程是LED数码管提示开始输入密码,通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,做出开锁或报警处理。

当输入密码连续输入错误3次时,系统报警。

密码的设定,在此程序中密码是固定40H~45H中,假设预设的密码为"123456"共6位密码。

主要程序设计流程图图3.3所示。

 

图3.3主程序流程图

3.2各子程序设计

3.2.1键盘扫描子程序

键盘扫描流程图如图

图3.2.1键盘扫描流程图

3.2.2LED显示子程序

LED显示流程图如图3.2.2

 

送p0口输出

图3.2.2LED显示流

3.2.3密码比较和报警程序

密码比较和报警流程图如3.2.3

图3.2.3密码比较和报警流程

4、制作调试说明

4.1建立工程文件

点击“Project->NewProject…”菜单,出现一个对话框,要求给将要建立的工程起一个名字,在编辑框中输入e*am1,不需要扩展名。

点击“保存”按钮,出现第二个对话框,如图4.1所示。

图4.1选择目标CPU

这个对话框要求选择目标CPU(即你所用芯片的型号),Keil支持的CPU很多,选择Atmel公司的89C51芯片。

点击ATMEL前面的“+”号,展开该层,点击其中的89C51,然后再点击“确定”按钮,回到主界面。

4.1源文件的建立

使用菜单“File->New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编缉窗口,在该窗口中输入汇编语言源程序。

4.2工程的详细设置

工程建立好以后,还要对工程进行进一步的设置,以满足要求。

首先点击左边Project窗口的Target1,然后使用菜单“Project->Optionfortarget‘target1’”即出现对工程设置的对话框,这个对话框共有8个页面。

设置对话框中的Target页面,如图4.1所示。

图4.1对目标进行设置

设置对话框中的Output页面,如图4.2所示。

图4.2对输出进行控制

此时,在工程窗口的文件页中,出现了“Target1”,前面有“+”号,点击“+”号展开,可以看到下一层的“SourceGroup1”,这时的工程还是一个空的工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“SourceGroup1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,如图4.3所示。

图4.3加入文件

选中其中的“AddfiletoGroup”SourceGroup1”,出现一个对话框,要求寻找源文件,点击对话框中“文件类型”后的下拉列表,找到并选中“AsmSourceFile(*.a51,*.asm),找到e*am1.asm文件了。

双击e*am1.asm文件,将文件加入项目。

4.3编译、连接

选择菜单Project->Buildtarget,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择RebuildAlltargetfiles将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,而Translate….项则仅对该文件进行编译,不进行连接。

以上操作也可以通过工具栏按钮直接进行。

图4.4是有关编译、设置的工具栏按钮,从左到右分别是:

编译、编译连接、全部重建、停止编译和对工程进行设置。

图4.4有关编译、连接、项目设置的工具条

编译过程中的信息将出现在输出窗口中的Build页中,如果源程序中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到如图4.5所示的结果,提示获得了名为e*am1.he*的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其它相关的文件,可被用于Keil的仿真与调试,这时可以进入下一步调试的工作。

图4.5正确编译、连接之后的结果

4.4调试过程中出现的问题:

1.当三次输入错误密码不能报警,后来在老师的帮助下在密码比较的地方加上一段延时程序解决。

2由于试验箱上的数码管是共阳极的,所以将原来用74LS138芯片用软件实现了。

5、作品操作说明书

打开电源后,显示器显示“000000”,设原始密码为“123456”,只要输入此密码便了开门。

这样可预防停电后再来电时无密码可用。

按“C”键,清除显示器为“000000”。

欲重新设定密码,先输入密码再按“*”。

输入密码,再按“*”键。

若密码与设定密码相同,则开门。

否则显示器清为“000000”。

6、小结

以上为电子密码锁的设计,它经过多次修改和整理,可以满足设计的基本要求。

输入密码时,如三次输入错误,则进行报警,输入正确时,电子锁打开。

电子锁打开时可以进行修改密码,输入错误时可以清除该密码等功能。

但因为我的水平有限,此电路中也存在一定的问题。

譬如说电路修改后的密码不能断电,一旦断电,就是初始密码。

在此次课程设计中老师提供了许多帮助,非常感谢老师!

附录

源程序清单:

numequ4fh

ORG0000H

movsp,*60h

movnum,*0

MOVR5,*00H

MOVR7,*00H

DJNZR7,$

MOVR7,*10H

MOVR6,*06H

MOVR1,*35H

L1:

MOVA,R7

MOVDPTR,*TABLE

MOVCA,A+DPTR

MOVR1,A

DECR1

INCR7

DJNZR6,L1

START:

;ORLP2,*0FFH

MOVR4,*06H

MOVR0,*40H

CLEAR:

MOVR0,*00H

INCR0

DJNZR4,CLEAR

L2:

MOVR3,*0F7H

MOVR1,*00H

L3:

MOVA,R3

MOVP1,A

MOVA,P1

MOVR4,A

SETBC

MOVR5,*04H

L4:

RLCA

JNCKEYIN

INCR1

DJNZR5,L4

CALLDISP

MOVA,R3

SETBC

RRCA

MOVR3,A

JCL3

JMPL2

KEYIN:

MOVA,R1

*RLA,*0BH

JZ*3

MOVA,R1

*RLA,*0FH

JZ*4

MOVR7,*10

D1:

MOVR6,*24

DJNZR6,$

DJNZR7,D1

D2:

MOVA,P1

*RLA,R4

JZD2

MOVA,R1

MOVDPTR,*TABLE

MOVCA,A+DPTR

MOVR7,A

*RLA,*0AH

JZSET0

MOVA,R7

*RLA,*0BH

JZSTART

MOVA,R7

*RLA,*0CH

JZL2

MOVA,R7

*RLA,*0DH

JZL2

MOVA,R7

*CHA,40H

*CHA,41H

*CHA,42H

*CHA,43H

*CHA,44H

*CHA,45H

CALLDISP

JMPL2

*3:

JMPDISP2

*4:

JMPP

DISP:

MOVR0,*40H

DISP1:

MOVA,R0

;ADDA,*50H

MOVP0,A

MOVP2,*80H

CALLDELAY

MOVP2,*00H

INCR0

MOVA,R0

ADDA,*40H

MOVP0,A

MOVP2,*40H

CALLDELAY

MOVP2,*00H

INCR0

MOVA,R0

ADDA,*30H

MOVP0,A

MOVP2,*20H

CALLDELAY

MOVP2,*00H

INCR0

MOVA,R0

ADDA,*20H

MOVP0,A

MOVP2,*10H

CALLDELAY

MOVP2,*00H

INCR0

MOVA,R0

ADDA,*10H

MOVP0,A

MOVP2,*08H

CALLDELAY

MOVP2,*00H

INCR0

MOVA,R0

ADDA,*00H

MOVP0,A

MOVP2,*04H

CALLDELAY

MOVP2,*00H

RET

SET0:

MOVR2,*06H

MOVR0,*40H

MOVR1,*30H

E1:

MOVA,R0

*CHA,R1

INCR0

INCR1

DJNZR2,E1

CALLDELAY

E2:

JMPSTART

P:

MOV50H,*250

P1:

ACALLDELAY

ACALLDELAY

ACALLDELAY

ACALLDELAY

ACALLDELAY

DJNZ50H,P1

MOVR1,*45H

MOVR0,*35H

MOVR2,*06H

C1:

M

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

当前位置:首页 > 外语学习 > 其它语言学习

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

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