电子密码锁实验报告Word文档格式.docx
- 文档编号:19337563
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:19
- 大小:109.35KB
电子密码锁实验报告Word文档格式.docx
《电子密码锁实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《电子密码锁实验报告Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
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
*
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
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、作品操作说明书
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
RRCA
MOVR3,A
JCL3
JMPL2
KEYIN:
MOVA,R1
*RLA,*0BH
JZ*3
*RLA,*0FH
JZ*4
MOVR7,*10
D1:
MOVR6,*24
DJNZR6,$
DJNZR7,D1
D2:
*RLA,R4
JZD2
MOVR7,A
*RLA,*0AH
JZSET0
JZSTART
*RLA,*0CH
JZL2
*RLA,*0DH
*CHA,40H
*CHA,41H
*CHA,42H
*CHA,43H
*CHA,44H
*CHA,45H
*3:
JMPDISP2
*4:
JMPP
DISP:
MOVR0,*40H
DISP1:
MOVA,R0
ADDA,*50H
MOVP0,A
MOVP2,*80H
CALLDELAY
MOVP2,*00H
ADDA,*40H
MOVP2,*40H
ADDA,*30H
MOVP2,*20H
ADDA,*20H
MOVP2,*10H
ADDA,*10H
MOVP2,*08H
ADDA,*00H
MOVP2,*04H
RET
SET0:
MOVR2,*06H
MOVR1,*30H
E1:
*CHA,R1
DJNZR2,E1
E2:
JMPSTART
P:
MOV50H,*250
P1:
ACALLDELAY
DJNZ50H,P1
MOVR1,*45H
MOVR0,*35H
C1:
M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 密码锁 实验 报告