当前位置:文档之家› 基于单片机电子密码锁毕业论文

基于单片机电子密码锁毕业论文

摘要

本次设计使用 ATMEL公司的 AT89C51 实现一基于单片机的电子密码锁的设计,其主要具有如下功能:

(1)密码通过键盘输入,若密码正确,则将锁打开。

(2)报警、锁定键盘功能。密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过 3 次,蜂鸣器报警并且锁定键盘。

电子密码锁的设计主要由三部分组成:4×4 矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有 LED 提示灯,报警蜂鸣器等。

密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:(1)密码输入功能:按下一个数字键,一个“-”就显示在最右边的数码管上,同时将先前输入的所有“-”向左移动一位。

(2)密码清除功能:当按下清除键时,清除前面输入的所有值,并清除所有显示。

(3)开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。

主要的设计实施过程:首先,选用 ATMEL公司的单片机 AT89C51,以及选购其他电子元器件。第二步,使用 DXP 2004设计硬件电路原理图,并设计 PCB图完成人工布线(后因 PCB 板损坏决定采用万能板焊接的方法)。第三步,使用 Keil uVision3 软件编写单片机的 C 语言程序、仿真、软件调试。第四部,使用 PROTEUS 软件进行模拟软、硬件调试。最后,联合软、硬件调试电路板,完成本次毕业设计。

关键词:4×4矩阵键盘;AT89C51;密码锁;密码二次确认

目录

摘要 (1)

目录 (2)

第一章概述 (1)

第二章系统总体方案设计 (2)

第三章硬件电路设计 (5)

3.1 键盘电路设计 (5)

3.2LED显示电路 (6)

3.3 开锁电路 (8)

3.4报警电路 (9)

第四章软件设计 (11)

4.1软件设计思路 (11)

4.2 各子程序设计 (11)

第五章系统调试 (17)

第六章心得体会 (18)

第七章参考文献 (19)

附录 (20)

源程序清单 (20)

硬件原理图…………………………………………………………….错误!未定义书签。

第1章概述

随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。

本文所涉及的是市场占有率最高的是MCS—51系列,因为世界上很多知名的IC生产厂家都生产51兼容的芯片。到目前为止,MCS—51单片机已有数百个品种,还在不断推出功能更强的新产品。

本设计是基于单片机的密码锁设计方案,根据要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容。

第2章系统总体方案设计

方案一:采用数字电路控制。其原理方框图如图1-1所示。

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

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

电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS 电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。

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

方案二:采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图1-2所示。

图2-2单片机控制方案

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

本方案采用一种是用以89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。

初步设计思路如下:

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

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

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

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

打开电源后,显示器显示“000000”,设原始密码为“123456”,只要输入此密码便了开门。这样可预防停电后再来电时无密码可用。

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

欲重新设定密码,先输入密码在案“*”。

输入密码,再按“D”键。若密码与设定密码相同,则开门。否则显示器清为“000000”。

软件的设计主要包括键盘键值的读取,LED显示程序,密码比较程序和报警程序。

第3章硬件电路设计

3.1 键盘电路设计

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

图3.1 矩阵键盘

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

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

当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。

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

首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。

判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。

具体的功能设计如表3.1:

表3.1 按键功能

3.2LED显示电路

本系统设计的显示电路是为了给使用者以提示而设置的。本系统的显示采用串行显示的方式,只使用单片机的一个串行口,利用74LS247驱动数码管发光显示数码和74LS138控制位选信号,就可以完成单片机的显示

功能,显示电路的电路原理图如图3.2所示。

用P0.0—P0.3接74LS247的A,B,C,D四端口,74LS247的输出口接LED的七段显示;而P0.4—P0.6接74LS138的A,B,C三个输入口,74LS138的输出口接LED的位显示。通过软件实现数字和位控制。

图3.2 LED显示电路

用74LS247可以控制输出什么字型。74LS247的逻辑功能表如表3.2:

表3.2 74LS247的逻辑功能表

表3.3 74LS138逻辑功能表

3.3 开锁电路

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

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

图3.3 开锁电路

3.4报警电路

图3.4报警电路

报警模块由蜂鸣器和单片机组成。选择一只压电式蜂鸣器,压电式蜂

鸣器工作时约需要100mA驱动电流。蜂鸣器电路如图3.4所示。当89C51的P2.1口输出为低电平时,蜂鸣器产生蜂鸣音,89C51输出为高电平时,蜂鸣器不发声。

第四章软件设计

4.1软件设计思路

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

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

由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。

4.2 各子程序设计

1 键盘扫描子程序

键盘扫描流程图如图4.2.1

图4.2.1 键盘扫描流程图键盘扫描子程序如下:

L2: MOV R3,#0F7H

MOV R1,#00H

L3: MOV A,R3

MOV P1,A

MOV A,P1

MOV R4,A

SETB C

MOV R5,#04H

L4: RLC A

JNC KEYIN

INC R1

DJNZ R5,L4

CALL DISP

MOV A,R3

SETB C

RRC A

MOV R3,A

JC L3

JMP L2

2 LED显示子程序

LED显示流程图如图4.2.2

图4.2.2 LED显示流程图

LED显示子程序如下:DISP:MOV R0,#45H DISP1: MOV A,@R0

ADD A,#50H MOV P0,A

CALL DELAY DEC R0

MOV A,@R0

ADD A,#40H MOV P0,A

CALL DELAY DEC R0

MOV A,@R0

ADD A,#30H MOV P0,A

CALL DELAY DEC R0

MOV A,@R0

ADD A,#20H MOV P0,A

CALL DELAY DEC R0

MOV A,@R0

ADD A,#10H

MOV P0,A

CALL DELAY

DEC R0

MOV A,@R0

ADD A,#00H

MOV P0,A

CALL DELAY

RET

3 密码比较和报警程序

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

图4.2.3 密码比较和报警流程

密码比较和报警程序:COMP: MOV R1,#45H

MOV R0,#35H

MOV R2,#06H

C1: MOV A,@R1

XRL A,@R0

JNZ C3

DEC R1

DEC R0

DJNZ R2,C1

CLR P2.0

MOV R2,#200

C2: MOV R6,#248

DJNZ R6,$

DJNZ R2,C2

C3: INC R5

MOV A,R5

MOV R5,A

CJNE R5 ,#03H,C4 CLR P2.1

MOV R5,#00H

C4: JMP START

第5章系统调试

本次调试采用Protues软件仿真。首先设计电子密码锁的源程序,源程序经过汇编后,生成的目标文件经过仿真调试。

依次按下1,2,3,4,5,6后,LED显示如图5.1

图5.1 LED显示

按下确定键后,二极管亮,表示密码正确开门。如图5.2

图5.2 密码正确开门

相关主题
相关文档 最新文档