燕山大学单片机课程设计密码锁Word下载.docx

上传人:b****8 文档编号:22656741 上传时间:2023-02-05 格式:DOCX 页数:26 大小:177.64KB
下载 相关 举报
燕山大学单片机课程设计密码锁Word下载.docx_第1页
第1页 / 共26页
燕山大学单片机课程设计密码锁Word下载.docx_第2页
第2页 / 共26页
燕山大学单片机课程设计密码锁Word下载.docx_第3页
第3页 / 共26页
燕山大学单片机课程设计密码锁Word下载.docx_第4页
第4页 / 共26页
燕山大学单片机课程设计密码锁Word下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

燕山大学单片机课程设计密码锁Word下载.docx

《燕山大学单片机课程设计密码锁Word下载.docx》由会员分享,可在线阅读,更多相关《燕山大学单片机课程设计密码锁Word下载.docx(26页珍藏版)》请在冰豆网上搜索。

燕山大学单片机课程设计密码锁Word下载.docx

密码,系统声光报警。

电子密码锁的设计主要由三部分组成:

4矩阵键盘接口电路、密码锁

的控制电路、输出八段显示电路。

另外系统还有LED提示灯等。

密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:

(1)密码输入功能:

按下一个数字键,一个数字就显示在右边的数码管上,同时将先前输入的所有数字向左移动一位。

(2)密码清除功能:

当按下清除键时,清除前面输入的所有值,并清除所有显示

(3)密码更改功能:

将输入的值作为新的密码。

(4)开锁功能:

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

主要的设计实施过程:

首先,选用8051单片机,以及其他电子元器件。

第二步,设计硬件电路。

第三步,编写单片机语言实现功能。

第四部,分别进行软件和硬件的调试。

最后,联合软、硬件调试整个系统,完成本次课程设计。

关键词:

4矩阵键盘;

8051单片机;

密码锁;

密码二次确认

2.1设计总结构图

第三章系统硬件设计

此次课程设计基于单片机控制的电子密码锁,接到课题后,根据老师布置的任务和相关要求,结合主要设计条件,我设计了如下方案,其总体方案设计如下:

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

系统能完成开锁、超时报警功能。

3.1矩阵键盘接口电路:

此次课程设计采用4*4矩阵键盘,与P1口相连,采用扫描法。

设有0——9十个数字密码,一个修改密码键,一个清除键和一个确认键。

开机显示,等待密码输入,输入6个密码,按确认键后,密码比较。

矩阵式键盘的识别方法:

确定矩阵式键盘上何键被按下介绍一种“行扫描法”。

行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。

判断键盘中有无键按下:

(1)先将行线p1.7-p1.4置0111,然后检测列线的状态。

如果p1.3-p1.0为0111,则k0被按下;

如果p1.3-p1.0为1011,则k1被按下;

如果p1.3-p1.0为1101,则k2被按下;

如果p1.3-p1.0为1110,则k3被按下;

(2)将行线p1.7-p1.4置1011,然后检测列线的状态,方法同

(1);

(3)将行线p1.7-p1.4置1101,然后检测列线的状态,方法同

(1);

(4)将行线p1.7-p1.4置1110,然后检测列线的状态,方法同

(1).

3.2LED显示:

此次课程设计6密码6显示器,按键后即显示,动态显示。

根据按键次数,第一位显示器显示第一次按的密码,第二位显示器显示第二次按的密码,第三位显示器显示第三次按的密码,依此第六位显示器显示第六次按的密码,按键完成后按确认键后,密码对则执行相关动作,不同则显示器清零,等待重新输入。

LED数码显示字形(段)码表如下:

显示字形

字形码(共阳极)

字形码(共阴极)

C0H

3FH

1

F9H

06H

2

A4H

5BH

3

B0H

4FH

4

99H

66H

5

92H

6DH

6

82H

7DH

7

F8H

07H

8

80H

7FH

9

90H

6FH

A

88H

77H

B

83H

7CH

C

C6H

39H

D

A1H

5EH

E

86H

79H

F

8EH

71H

3.3报警系统:

此次课程设计,当按键三次错误后,系统报警,报警装置由一扬声器实现,从P1.2口输出脉冲,使扬声器鸣报警。

第四章系统软件设计

4.1软件设计思路

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

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

密码的的设定在此程序中密码是固定40H~45H中,假设预定密码为“”六位。

在正常状态时,可以进行重新设置密码、上锁等操作。

重新设置密码时,首先验证原始密码,如相同则可进行密码更改,然后将新密码保存至AT24C01中。

按键按其功能分为两种,其中一种为功能键另一种为数字键。

输入密码后,直到所有密码输入完毕按下确认功能键之后,才完成密码输入过程。

进入密码的判断比较处理状态并给出相应的处理过程。

4.2键盘扫描子程序设计

键盘扫描流程如图

键盘扫描子程序如下:

L2:

MOVR3,#0F7H

MOVR1,#00H

L3:

MOVA,R3

MOVP1,A

MOVA,P1

MOVR4,A

SETBC

MOVR5,#04H

L4:

RLCA

JNCKEYIN

INCR1

DJNZR5,L4

CALLDISP

SETBC

RRC

MOVR3,A

JCL3

JMPL2

4.3LED显示子程序

LED显示子程序流程图如下

图4-3

LED显示子程序如下:

DISP:

MOVR0,#45H

DISP1:

MOVA,@R0

ADDA,350H

MOVP0,A

CALLDELY

DECR0

MOVA@R0

ADDA,#40H

MOVA,@R0

ADDA,#30H

CALLDELAY

DECRO

ADDA,@10H

MOVP0,A

CALLDELAY

DECR0

ADDA,#00H

RET

4.4密码修改比较和报警程序

密码比较流程图如下

图4-4

密码修改与比较程序

SET0:

MOVR1,#65H

MOVR0,#35H

MOVR2,#06H

E1:

MOVA,@R1

MOV@R0,A

DECR1

DJNZR2,E1

lcalldelay

E2:

LJMPSTART

COMP:

C1:

XRLA,@R0

JNZC3

DJNZR2,C1

setbP1.0

clrp1.0

MOVR2,#200

C2:

MOVR6,#248

DJNZR6,$

DJNZR2,C2

ljmpSTART

C3:

setbP1.1

clrp1.1

INCR5

MOVA,R5

MOVR5,A

CJNER5,#03H,C4

setbP1.2

clrp1.2

lcallS

C4:

lJMPSTART

end

第五章系统总设计图

系统总图

第6章设计程序

OUTBITequ08002h

OUTSEGequ08004h

INequ08001h

LEDBufequ60h

MOVR7,#10H

MOVR6,#06H

MOVR1,#35H

L1:

MOVA,R7

MOVDPTR,#LEDMAP

MOVCA,@A+DPTR

MOV@R1,A

INCR7

DJNZR6,L1

ljmpREADY

LEDMAP:

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db7fh,6fh,77h,7ch,39h,5eh,79h,71h

db06h,5bh,4fh,66h,6dh,7dh

Delay:

movr7,#0

DelayLoop:

djnzr7,DelayLoop

djnzr6,DelayLoop

Ret

DisplayLED:

movr0,#LEDBuf

movr1,#6

movr2,#01h

Loop:

movdptr,#OUTBIT

mova,#0

movx@dptr,a

mova,@r0

movdptr,#OUTSEG

mova,r2

movr6,#1

callDelay

rla

movr2,a

incr0

djnzr1,Loop

ret

TestKey:

movdptr,#IN

movxa,@dptr

cpla

anla,#0fh

KeyTable:

db16h,15h,14h,0ffh

db13h,12h,11h,10h

db0dh,0ch,0bh,0ah

db0eh,03h,06h,09h

db0fh,02h,05h,08h

db00h,01h,04h,07h

GetKey:

movP2,dph

movr0,#Low(IN)

movr1,#b

movr2,#6

KLoop:

mova,r1

rra

movr1,a

movxa,@r0

jnzGoon1

djnzr2,KLoop

movr2,#0ffh

sjmpExit

Goon1:

deca

movr1,#4

LoopC:

rrca

jcExit

incr2

djnzr1,LoopC

Exit:

mova,r2

movdptr,#KeyTable

movca,@a+dptr

movr2,a

mova,r2

XRLA,#0eH

jzCOMPARE

MOVA,r2

XRLA,#0cH

jzCLEAN

XRLA,#0aH

jzSET1

XRLA,#0fH

jzSET2

WaitRelease:

clra

movr6,#10

callTestKey

jnzWaitRelease

READY:

anlp1,#00H

s:

MOVR5,#00H

ABC:

CLRPSW.5

START:

MOVR4,#06H

MOVR0,#60H

CLEAR:

MOV@R0,#00H

INCR0

DJNZR4,CLEAR

movsp,#40h

movLEDBuf+0,#3fh

movLEDBuf+1,#3fh

movLEDBuf+2,#3fh

movLEDBuf+3,#3fh

movLEDBuf+4,#3fh

movLEDBuf+5,#3fh

MLoop:

callDisplayLED

jzMLoop

callGetKey

movdptr,#LEDMap

XCHA,60H

XCHA,61H

XCHA,62H

XCHA,63H

XCHA,64H

XCHA,65H

ljmpMLoop

CLEAN:

COMPARE:

LJMPCOMP

SET1:

MOVA,PSW

ANLA,#20H

JZSTART

MOVR0,#6FH

SETBP1.3

LJMPSTART

SET2:

MOVR2,#06H

MOVR1,#60H

MOVR0,#6AH

S1:

MOVA,@R1

JNZS3

DJNZR2,S1

MOVR1,#30H

S2:

DJNZR2,S2

CLRP1.3

SETBP1.0

MOVR6,#250

LCALLDELAY

CLRP1.0

S3:

JNZC2

SETBPSW.5

CJNER5,#03H,C3

End

第七章系统调试

电子密码锁主要由矩阵键盘,LED数码显示器,提示灯,报警电路和单片机程序组成。

调试部分主要是数码显示和程序细节的调试。

数码管调试主要是看其能否完整显示6位数字。

不可以显示只能重新换过。

程序的调试是比较复杂的部分,它又可以分为比较部分和键盘部分。

首先在输入程序时,应该先输入键盘部分,然后单独运行键盘程序看键盘输入时数码管能否显示出与键盘输入的数字相对应的数字。

然后以键盘程序为主程序,把比较部分的程序作为子程序输入。

那是由于键盘程序中我们所输入的数字存在60H-65H显示缓存中只能在键盘程序中被调用,如果把键盘程序作为子程序,那我们在比较部分中要调用显示缓存中的数据便不可行。

密码放在30H-35H,当输入六个数时,程序把数据与密码进行比较,当输入与密码完全匹配时,输入正确,密码锁打开,否则显示红灯,连续三次错误时,蜂鸣器报警。

第八章心得体会

时间过得真快,转眼间,一周的单片机课程设计就结束了。

这是我的第一次课程设计,接到课题后,开始几天我主要看书,跑图书馆,上网查资料。

在图书馆找到了类似的资料,我就开始看程序,然后自己试着去改,但是很不幸在Keil中编译时有一处错误,可是我花了一天多的时间查资料和问同学也没找出哪里出错了。

于是我就另外找其他有关的程序,终于在星期天找到了,接着我边看书边看程序,目的是把程序看懂,然后自己再尝试着去改,经过一天左右的时间,程序差不多看懂了,电路图也画出来了,程序编译也没问题,于是我就把程序下到硬件里面,可是就是不显示,主要是按键不起作用。

我又重新看程序,反复的改,到晚上的时候还是没搞好,就再看书,请教同学,大概又花了两天时间,在同学的提醒下,我终于发现了问题。

主要是按键接的总线没有设定相对应的引脚。

当天晚上,我就改了,终于问题解决了,仿真也成功了!

.当时真的很高兴,毕竟我花了这么多的时间,终于有用了。

然而在生成PCB图时,我又遇到了问题,就是有些元件没封装(如按键),不知道怎么加进去,我又再网上查资料,终于找到怎么加进去的方法,我自己试着弄了一下,成功了,当时真的很兴奋,这样一来,我的课程设计就差不多好了。

我在整个设计过程中懂得了许多东西,当遇到解决不了的问题,跟同伴一起商量、合作,向掌握的好的同学请教,或许能收到事半功倍的效果。

不管学什么,一定要打好基础,并将其学好、学精,但空有知识也不一定就能说明什么,还得能为己所用;

还有更重要的是培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,使自己充分体会到了在设计过程中的成功喜悦。

做课程设计不只是对我们知识的考察,也是对学习态度的测验。

经过这段时间的课程设计后,我感觉我学到了不少东西,特别是一些课外的知识,这样的课程设计很有意义,我觉得我们要多做一些这样的课程设计。

唯一的遗憾就是没有亲自动手把实物图做出来。

希望今后能多有这样的课程设计。

参考文献

[1]周润景张丽娜丁莉.基于PROTEUS的电路及单片机设计与仿真(第二版).北京航天航空大学出版社2009.12

[2]李朝清.单片机原理及接口技术(第三版).北京航天航空大学出版社.2006.12

[3]周兴华.手把手教你学单片机.北京航天航空大学出版社.2006.12

[4]张文利.微机原理及单片机接口技术.中国科学技术大学出版社2007.7

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

当前位置:首页 > 医药卫生 > 药学

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

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