单片机密码锁毕业设计文档格式.docx

上传人:b****5 文档编号:18125087 上传时间:2022-12-13 格式:DOCX 页数:23 大小:105.60KB
下载 相关 举报
单片机密码锁毕业设计文档格式.docx_第1页
第1页 / 共23页
单片机密码锁毕业设计文档格式.docx_第2页
第2页 / 共23页
单片机密码锁毕业设计文档格式.docx_第3页
第3页 / 共23页
单片机密码锁毕业设计文档格式.docx_第4页
第4页 / 共23页
单片机密码锁毕业设计文档格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

单片机密码锁毕业设计文档格式.docx

《单片机密码锁毕业设计文档格式.docx》由会员分享,可在线阅读,更多相关《单片机密码锁毕业设计文档格式.docx(23页珍藏版)》请在冰豆网上搜索。

单片机密码锁毕业设计文档格式.docx

2.开锁过程

按数字键输入密码,密码在显示器上从右到左依次显示,4位密码输入正确后按下“开锁”甲,密码锁被打开并清除电路中所存储的密码,显示器也被清零。

当输入密码有误时,可按“上锁”键清除所输入的数字,内部存的秘密不会丢失,再重新输入正确的密码按“开锁”键即可。

注:

当输入错误的密码超过3次后,电路会发出报警信号。

图1-2键盘显示平面图

为防止大家忘记密码,本电路还设计了一个万用密码,无论以前的密码是什么,只要输入万用密码按“开锁”键即可开锁并清除原有密码。

1.3关键辞

MCS-51,AT24C02,矩阵键盘,UPS电路,AT24C02掉电存储,串口显示电路,报警控制

电路等

二、硬件电路的设计

2.1MIC-51的简介

设计本课题时构思了一种是用以MIC-51为核心的单片机控制方案。

MCS-51单片机是美国INTE公司于1980年推出的产品,典型产品有8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在,MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、89C51等)

89S51相对于89C51增加的新功能包括:

--新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低!

--ISP在线编程功能,在改写单片机存储器内的程序时不用把芯片从工作环境中剥离。

--最高工作频率为33MHz,就是说S51具有更高工作频率,从而具有了更快的计算速度。

--具有双工UART串行通道。

--内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。

--双数据指示器。

--电源关闭标识。

--全新的加密算法,程序的保密性加强,这样就可以有效的保护知识产权不被侵犯。

--兼容性方面:

向下完全兼容51全部字系列产品。

比如8051、89C51等等早期MCS-51兼容产品。

在89S51上一样可以照常运行,这就是所谓的向下兼容。

89S51就是在这样的背景下取代89C51的,所以本设计也选用了89S51

2.2单片机控制方框图

采用AT89S51为核心的单片机控制方案。

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

其原理如图2-2所示。

89s51

单片机

矩阵

键盘

控制

输入错误锁定键盘

延时报警控制电路

串口显示电路

图2-2单片机控制方案

2.3开锁机构

通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。

其原理如图2-3所示。

图2-3密码锁开锁机构示意图

当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。

其实际电路如图2-4所示。

电路由驱动和开锁两级组成。

由D5、R1、T10组成驱动电路,其中T10可以选择普通的小功率三极管如9014、9018都可以满足要求。

D5是开锁指示灯;

由D6、C24、T11组成开锁。

其中D6、C24是为了消除电磁锁可能产生的反向高电压以及可能产生的电磁干扰。

T11可选用中功率的三极管如8050,电磁锁的选用要视情况而定,但是吸合力要足够且有一定的余量。

注:

在设计中,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;

灭,表示没有开锁。

图2-4密码锁开锁机构电路图

2.4按键电路设计

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

其原理如图2-5所示。

图2-5行列式键盘原理电路图

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

M个按键的键盘。

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

方法是:

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

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

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

依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;

如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。

按键的操作面板如图2-6所示。

共计数字键10个,功能键2个。

图2-6按键操作面板示意图

10个数字键用来输入密码,另外2个功能键分别是:

开锁和上锁。

上锁和开锁的过程在1-2中已经详细介绍,在此不再说。

面板上还有一个蜂鸣器,其中一个功能是用来指示操作的按键是否在成功的按下;

另外一个功能是当用户输入密码错误的次数超过了3次,鸣笛以示报警。

2.5显示电路设计

本系统设计的显示电路为了节约单片机的接口资源而采用串行显示的方式,只使用单片机的两个串行口,就可以完成单片机的显示功能,显示电路的电路原理图如图2-7所示。

电路设定:

当程序检测在5分钟内没有按键操作的时候,就关闭显示。

这个功能使用程序来实现的,一旦没有按键动作就启动一个定时器,检测在5分钟内没有按键动作的时候,启动一个程序,关闭显示,这样可以达到节省电能的目的。

从单片机串口输出的信号先送到左边的移位寄存器(74HC164),由于移位脉冲的作用,使数据向右移,达到显示的目的。

移位寄存器74HC164还兼作数码管的驱动,插头1(header1)接电源,插头2(header2)接数据和脉冲输出端。

电路中的三个整流管D1~D3的作用是降低数码管的工作电压,增加其使用寿命。

图2-7显示器原理图

2.6AT24C01掉电存储单元的设计

掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。

AT24C01是ATMEL公司的2KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。

其电路如图2-8所示。

2-8掉电存储电路原理图

图中R8、R10是上拉电阻,其作用是减少AT24C01的静态功耗,由于AT24C01的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。

每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;

当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。

2.7密码锁的电源电路设计

图2-7稳压模块7805电路

本着节省原料的原则,选择的是7805稳压模块做为本电路的电源,JP1接变压器的次级绕组,由于电路耗电很少,所以变压器选择普通小容量的10V的就可以,然后经四个二极管(D1-D4)整流,再经电解电容C滤波,得到较平稳的直流电,为了让电流更平稳更可靠,后面加入了整流模块7805,电路相当简单,1脚是电源的进线,2脚是公共端,3脚就是5V直流电的输出了,C2和C3是滤除高频率的杂波干扰的,本电路简单明了,应用比较广泛。

2.8设计总体电路图

图2-4总体电路图

三、程序设计

程序开始,伪指令设置程序中所用到寄存器和数据

ORG0000H

MTDDATA3FH

SLADATA3EH

NUMBYTDATA3DH

MRDDATA30H

AJMPMAIN

ORG0030H

MAIN:

MOVSP,#60H:

设置栈指针

接收数据寄存器清零

MOV40H,#00H

MOV41H,#00H

MOV42H,#00H

MOV43H,#00H

MOV44H,#00H

MOV45H,#00H

MOV46H,#00H

MOV47H,#00H

CLR20H:

功能键标志

CLR21H:

复位键标志

调读密码程序,读出的密码送到30H到33H

REDAMOVMTD,#00H

MOVSLA,#0A0H

MOVNUMBYT,#1

LCALLWRNBYT

MOVSLA,#0A1H

MOVNUMBYT,#07H

LCALLRDNBYT

显示P作为等待标志

CCD:

MOVA,#11111110B

MOVP1,A

MOVA,#0CH

MOVDPTR,#7FFFH

MOVX@DPTR,A

循环调用键扫描子程序

START:

NOP;

程序开始

LCALLCH_KEY;

检查键盘

AJMPSTART;

返回

CH_KEY:

LCALLKS;

检查有没有按键按下

JNZLK1

AJMPCH_KEY

LK1:

LCALLT12MS

ACALLKS

JNZLK2

RET

LK2:

NOP

LCALLSBIE;

按键识别子程序

MOVBUFF,A;

送缓冲区以识别是数字键还是功能键?

LCALLCH_KF;

判断按键功能。

JBFLAG1,KEY_FUN;

标志为1,则为功能键

数字按键输入并且存放到缓冲区内等待比较

KEY_DIG:

设一标志,辨别输入是否满

;

SETBTR0

INCTIMERS;

输入数字的位数

MOVA,TIMERS

CLRC

SUBBA,#01H

JNZPS_2

MOVPS1,BUFF;

依照顺序存放密码

AJMPNEXT

PS_2:

MOVA,TIMERS

SUBBA,#02H

JNZPS_3

MOVPS2,BUFF

PS_3:

SUBBA,#03H

JNZPS_4

MOVPS3,BUFF

PS_4:

SUBBA,#04

JNZPS_5

MOVPS4,BUFF

PS_5:

SUBBA,#05

JNZPS_6

MOVPS5,BUFF

PS_6:

SUBBA,#06H

JNZCH_KEY

MOVPS6,BUFF

NEXT:

LCALLXSC

MOVR7,TIMERS;

比较输入的次数。

CJNER7,#06H,FULL

FULL:

JCNEXT9

SETBBUF_FULL

MOVTIMERS,#06H

CLRL3

CLRP2.1

LCALLT100MSD

SETBP2.1

NEXT9:

CLRP2.1;

密码输入一位,鸣叫一声。

LCALLT100MSD;

延时100ms

SETBL3

功能按键比较并且跳转

KEY_FUN:

CLRFLAG1

MOVA,BUFF

SUBBA,#03H;

按键CL跳转

JNZEN_C

AJMPCL

EN_C:

CLRC

MOVA,BUFF;

按键EN跳转

SUBBA,#00H

JNZF1_C

AJMPEN

EXIT8:

NOP

LJMPCH_KEY

开门子程序

CL:

MOVBUFF,#00H;

消密码缓冲

MOVTIMERS,#00H

LCALLINITPS;

消除AT缓冲,加调电存储后一定要加上

LCALLXSC

LCALLBP

FU4:

LCALLT100MSD

FU3:

LCALLKILLXS;

关闭显示

FU1:

JBF_F1,NEXT_F1

CLRL1

SETBF_F1

NEXT_F1:

SETBL1

CLRF_F1

LCALLCH_STATE;

查看现在的状态以防误按

SETBTR1;

报警限制暂时不开

INCF_F1

FU2:

JBF_F2,NEXT_F2

CLRL2

SETBF_F2

NEXT_F2:

SETBL2

CLRF_F2

初始化显示缓冲区以及其他缓冲区

INITPS:

PUSHACC

PUSHPSW

MOVR7,#06H

MOVR1,#PS1

MOVA,#00H

INIT_PS:

MOV@R1,A

DECR1

DJNZR7,INIT_PS

POPPSW

POPACC

INITAT:

MOVR7,#06H

MOVR1,#AT1

INIT_AT:

DJNZR7,INIT_AT

MOVTIMERS,#00H;

密码输入的次数清零。

SBIE:

MOVR2,#0EFH;

识别按键子程序,数据送A保存,课本P146页。

MOVR4,#00H

LK4:

MOVA,R2

MOVP0,A

MOVA,P0

JBACC.0,LONE

AJMPLKP

LONE:

JBACC.1,LTWO

MOVA,#08H

LTWO:

JBACC.2,LTHR

MOVA,#10H

LTHR:

JBACC.3,NEXTT;

判断下一列

MOVA,#18H

LKP:

ADDA,R4

PUSHACC

LK3:

ACALLKS

JNZLK3

NEXTT:

INCR4

MOVA,R2

JNBACC.7,KND

RLA

MOVR2,A

AJMPLK4

KND:

AJMPCH_KEY

KS:

MOVP0,#0FH

CPLA

ANLA,#0FH

CH_KF:

判断是数字按键还是功能按键,为1表示功能键

CJNEA,#17H,KY

KY:

JCSET_CH;

假若是数字按键则标志置为0

SETBFLAG1;

假若是功能按键则标志置为1

AJMPCHKE_END

SET_CH:

JNZEN_CH

SETBFLAG1

AJMPCH_END

EN_CH:

MOVA,BUFF

JNZDIG

DIG:

CLRFLAG1

CH_END:

CHKE_END:

RET

T12MS:

MOVR7,#18H

TM1:

MOVR6,#0FFH

TM66:

DJNZR6,TM66

DJNZR7,TM1

检验密码正误

C_PSW:

PUSHPSW

PUSHACC

MOVR2,#06H

MOVR0,#PS1

C_P:

MOVA,@R0

SUBBA,@R1

JNZRETURN

DECR0

DJNZR2,C_P

SETBPSW_F

AJMPEXIT7

RETURN:

CLRPSW_F

EXIT7:

锁定,报警程序

LOCK_1M:

MOVR4,#3CH;

锁定1分钟

M1_LOOP:

LCALLSEC

DJNZR4,M1_LOOP

WARN2S:

MOVR5,#14H;

调用20次BP,报警2s

WARN:

LCALLBP

DJNZR5,WARN

BP:

CLRSPK;

报警程序

SETBSPK

显示子程序

DISPLAY:

MOVR4,#05H

DIS1:

MOVR0,#45H

MOVR5,#11011111B

LD6:

MOVA,R5

MOVA,@R0

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVDPTR,#7FFFH

LCALLDL1

MOVA,#0FFH

MOVA,R5

JNBACC.0,ID1

RRA

MOVR5,A

LIMPLD6

LD1:

DJNZR4,DIS1

TABLE:

DB0C0H,0F9H,0A4H,0B0H,99H

DB92H,82H,0F8H,80H,90H

DB0FFH

密码输入错误的提示

XSD:

MOVSBUF,#98H

JNBTI,$

CLRTI

MOVSBUF,#79H

MOVSBUF,#11H

MOVSBUF,#38H

24C01读写程序

AT_RADE:

MOVR0,#AT1;

CPU首地址

MOVR6,#06H;

8字节

MOVR5,#08H;

8位

MOVR7,#00H;

24C01首地址

LCALLREAD;

读数据

AT_WR:

MOVR0,#PS1;

CPURAM首地址

8BIT

MOVR7,#00H;

24C01RAM首地址

LCALLWRT;

先写进

延时子程序

DL1:

MOVR7,#03H

DL:

MOVR6,#0FFH

DL6:

DJNZR6,DL6

DJNZR7,DL

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

当前位置:首页 > 高等教育 > 艺术

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

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