基于51单片机的电子密码锁
设计项目智能密码锁
姓名江祖辉
小组成员江祖辉金伟强罗上专
学号 B07340211
指导老师罗剑波
2009——2010学年第2学期
2010年7月8日
浙江理工大学本科课程设计任务书
专业:测控技术与仪器班级: 07测控(2)
课程设计名称智能密码锁
通过设计一个智能密码锁,掌握设计、调试单片机应用系统的方法。主要任
务与
任务涉及的知识点包括汇编(C51) 程序语言、MCS-51 单片机I/O 应用、中断
目标
与定时器应用、人机接口应用技术等。
要求设计的智能密码锁完成以下功能:
(1) 设置4位密码, 密码通过键盘输入,输入时数码管同时显示。若密码正确, 则主要内容与基本
锁(继电器模拟)打开。要求
(2) 密码可由用户修改设定。
(3) 现场报警功能。密码输入错误3次, 则报警。报警由蜂鸣器发出报警声实现。
计划进度与安排:
布置任务,分析任务; (1天)
方案设计,相关知识学习;(1天)
硬件原理图设计;(2天)
软件设计;(3天)
软硬件调试;(5天)
撰写设计报告;(1天)
答辩。(1天)
实习地点 : 15-202
指导教师系意见系主任签名: 签名
年月日年月日摘要:本设计由单片机8051芯片、LED显示、蜂鸣电路和报警电路组成。该电路能完成开锁、开锁提示、修改用户密码、电路自锁、管理员解锁、掉电存储、错误密码报警等密码锁的基本功能。在此系统中巧妙的运用了开关与P1口的联接,实现了密码锁按键输入,然后由LED数码管作为显示器件构成显示电路。在软件部分,根据电子密码锁所要实现的基本功能编制汇编程序,从而优化,使得程序更加简洁,系统速度更加迅速。本系统成本低廉,功能实用且易于扩展。
关键词:80c51;开关;电子密码锁;LED显示;修改密码
目录一、密码锁简介(P4)
二、设计基本步骤与方案(P4)
三、程序设计(P8)
四、软件的调试过程与调试方法(P8)
五、设计者的心得体会(P9)
六、参考文献,格式为作者、文献名、出版单位、出版时间(P9)
附录(P10)
一、密码锁简介
1.1电子密码控制的发展趋势
由于电子器件所限,以前开发的电子密码控制系统,其种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,后来便是基于EDA来实现的,其电路结构复杂,电子元件繁多,也有使用早先的20引脚的2051系列单片机来实现的,但密码简单,易破解。随着电子元件的进一步发展,电子密码控制系统也出现了很多的种类,功能日益强大,使用更加方便,安全保密性更强,由以前的单密码输入发展到现在的,密码加感应元件,实现了更为真正的电子加密,用户只有密码或电子钥匙中的一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提高出现了越来越多的电子密码控制系统。
由于数字、字符、图形图像、人体生物特征和时间等要素均可成为电子信息,组合使用这些信息能够使电子防盗密码控制获得更高的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗密码控制系统。组合使用信息也能够使电子防盗密码控制系统获得无穷扩展的可能。可以看出组合使用电子信息是电子密码控制系统今后发展的趋势。
1.2本设计所要实现的目标
本设计采用单片机为主控芯片,结合外围电路,组成电子密码控制系统,用户想要打开锁,必先通过提供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。密码可以由用户自己修改设定,锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。
二、设计基本步骤与方案
2.1可用方案:
方案一:采用数字电路控制
用以74LS112双JK触发器构成的数字逻辑电路作为密码控制系统的核心控
制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过10秒(一般情况下,用户不会超过10秒,若用户觉得不便,还可以修改)电路将报警20秒,若电路连续报警三次,电路将锁定键盘2分钟,防止他人的非法操作。采用数字电路设计方案时设计虽然简单,但控制的准确性和灵活性差。故不采用。
方案二:采用以单片机为核心的控制方案
由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比。一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些还有一些最基本的,基于以上因素本设计选用单片机AT89C51作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码控制功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接LCD1602显示器用于显示作用。当用户需要开锁时,先按键盘开锁键之后按键盘的数字键0,9、A—F输入密码。密码输完后按下确认键,如果密码输入正确则开锁,不正确显示密码错误重新输入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后输入原来的密码,只有当输入的原密码正确后才能设置新密码。新密码输入无误后按确认键使新密码将得到存储,密码修改成功。
方案三:基于达爱思实验平台的设计
达爱思实验平台已经内部连好线了,我们只需要阅读实验仪器操作手册黄皮书,就能了解当中原理,FFDDH时为选片LED显示的地址,FFDCH为要显示内容的
代码的地址,其他还有很多线都是内连好的,这里就不一一诉说了。通过比较以上三方案,可以看出方案三的控制灵活,简单易操作,容易实现,符合实验要求且准确性好,根据现实生活的需要此次设计采用此方案 2.2 设计思路本系统采用AT89S51作为本设计的核心元件。
显示输入密码
输入错误报警开关电路 80C51
正确开继电器
单片机修改密码
解除报警
AT80C51是集CPU RAM ROM定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。 2.3.设计原理分析
2.3.1控制设计
运用开关进行对输入密码、修改密码的解除锁定的控制,k7是确认键,k8是密码修改键,k9是管理员取消报警键。
2.3.2开锁电路
当用户输入的密码正确时,由单片机发出开锁信号,使继电器打开进行开锁,
从P3.3口输出低电平从而是继电器打开,实现开锁。 2.3.3报警电路
S1VCC当密码锁的连续3次输入失
败,需要由蜂鸣器报警来提示。
本设计的报警电路由p3.5与蜂鸣T3P2.1R98550器相连。当密码锁电路需要发出
报警信号时,P3.5口输出低电平4.7K0,蜂鸣器报警。当密码锁没有报
警信号时,P3.5口输出高电平1。
2.3.4指示电路
P3.0、p3.1、p3.2、p3.4分别都与LED灯相连。每一部分都由一个电阻与一支发光二极管串联组成。当可以进行密码输入时时,从单片机的P3.0口发出低电平信号,点亮红色发光二极管。P3.1为询问是否修改密码,需要修改时拨动k8,
p3.2为修改密码指示灯p3.4为密码错误指示灯。
2.3.5显示电路设计
利用达爱思试验台的上的六个LED数码显示元件可以显示所需结果,FFDDH时为选片地址,FFDCH为要显示内容的代码。
三、程序设计
3.1 主程序模块
主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示等等。 3.2开关控制程序
K1~K6(与P1.0~P1.5相连)为输入密码的开关
K7(与P1.6相连)为输入密码确认开关
K8(与P3.2相连)为修改密码开关
K9(与P1.7相连)为管理员取消报警开关
3.3显示程序
LED1(与P3.0相连)为密码输入提示
LED2(与P3.1相连)为密码输入正确时看是否修改密码
LED3(与P3.2.相连)为修改密码提示灯
LED4、LED5(与P3.3相连)为继电器的两个状态指示,LED4亮时为继电器开密码正确,LED5为继电器关
LED6(与P3.24相连)为密码输入错误指示
蜂鸣器(与P3.5相连)为密码输入三次错误的提示。
3.4流程图
见附录三
四、软件的调试过程与调试方法
在程序中输入一个电脑本身中已有的清零程序、八段数码管显示程序和键盘扫描显示实验进行验证操作,根据实验步骤连线运行,程序均可运行成功,证明各个模块电路工作正常。
系统软件调试:软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误。软件的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;其次逐步将各子程序连接起来总调,最后将调试好的程序固化在存储器中。系统硬软件联调:当系统硬件和软件分别调试完成后,在实验平台上进行系统硬软件联调。
其他:课程设计进行的过程中,LED的输出显示始终是一个最重要也是最棘手的环节,因为对于单片机内部地址单元的加减运算,赋值,调用等,通过汇编语言是能够相对轻松地实现,但碰到LED输出显示问题就来了。首先单片机内部是八位二进制数,而我们要看到的是10进制数,虽然LED的显示数字有对应的二进制码表,可LED管是动态输出,每次输出一位数字,后移位下一根管输出,这中间就要考虑到每位数字显示多久,循环显示的时间延迟量值多少才能够使LED发光稳定,采用的方法就是试。同时在修改时间显示的问题上,也出现了重大的问题。
五、总结与体会
通过两周的实习,我发现了自身的不足之处。专业知识的匮乏,专业软件的陌生及对硬件电路的片面了解都成为了我设计该电路的障碍。在这次实习中,我研习书本,查找电路,多方请教。每周都按计划进行着。一刻都不放松。硬件电路的设计成功把我带入了下一阶段,调试软件程序。软件程序的调试还是比较难的,经常容易把代码写错的,中间也经历了些迷茫,走了些弯路,后来经过老师与同学的协
助下终于调好了。最后,将软件与硬件进行整合,终究成功完成了我的课题——智能密码锁。
参考文献
[1] 李朝青. 单片机原理及接口技术[M].北京:北京航空航天出版社,2004.9
[2] 彭为. 单片机典型系统设计实例精讲.北京:电子工业出版社,2006.5 [3] 公茂法. 单片机人机接口实例集[M].北京:北京航空航天大学出版社,1998.2 [4] 康华光. 电子技术基础数字部分[M].北京:高等教育出版社,2004.1 [5] 彭介华. 电子技术课程设计指导[M].北京:高等教育出版社,2004.2
附录
附录一:总原理图
附录二:程序
ORG 0000H CJNE A,7BH,ONCE
SJMP MAIN MOV A,73H
ORG 000BH CJNE A,7CH,ONCE
MOV TH0,R1 MOV A,74H
MOV TL0,R0 CJNE A,7DH,ONCE
CPL P3.5 MOV A,75H
CJNE A,7EH,ONCE RETI
CPL P3.1 ; ORG 0040H
提示是否修改密码子程序,若是则改 MAIN: MOV SP,#53H ;均是
变P3.2电平低电平有效
MOV R3,#3 SETB P1.6 ;密码确认键
TP: ACALL DELAY1 SETB P1.7 ;管理员取消报警
SETB P3.0 ;提示密码输入灯 DJNZ R3,TP ; 延
SETB P3.1 密码正确要修改拨k8 迟3秒左右
SETB P3.2 ;与k8连修改指示灯
SETB P3.3 ;与继电器相连 SETB P3.1
SETB P3.4 ;密码错误 JB
SETB P3.5 ;三次错误蜂鸣器响 P3.2 ,ABC ;P3.2 低电平亮则修改密MOV R6,#0FFH 码
MOV R4,#06H TW: ACALL INPUT ;修
MOV R0,#70H 改密码子程序
MOV A ,#01H JB P1.6,TW
PASSWORD: MOV @R0,A MOV 70H,79H
INC R0 MOV 71H,7AH
DJNZ R4,PASSWORD MOV 72H,7BH
MOV 50H,#3 MOV 73H,7CH
MOV 40H,#3 MOV 74H,7DH
LP: CPL P3.0 MOV 75H,7EH
MOV R7, #10 ;提示密码 ABC: CPL P3.3 ;输入密码输入正确 SJMP $ TT: SETB P3.0 ONCE: CPL P3.4 ;错误输入
ACALL INPUT 警告
JB P1.6,TT MOV R2,#3
ACALL DELAY1 TY: ACALL DELAY1
ACALL DELAY1 DJNZ R2,TY
ACALL DELAY1 MOV R2,#3
BBB: MOV A,70H SETB P3.4
CJNE A,79H,ONCE MOV R1,#3
MOV A,71H TU: ACALL DELAY1
CJNE A,7AH,ONCE DJNZ R1,TU
MOV A,72H MOV R1,#3 ;延迟3
秒 db 0feh,84h,04h,0feh,25h,04h
DJNZ 50H,LP db 0feh,25h,02h,0feh,84h,02h
MAIN1: MOV TMOD,#01H db
MOV IE,#82H 0feh,0c0h,04h,0feh,84h,02h
MOV DPTR,#TAB db 0feh,98h,02h,0feh,84h,02h loop10: JB P1.7,LOOP12 db 0feh,57h,08h,00h,00h,04h
b 0ffh,0ffh LJMP MAIN d
LOOP12: clr a
INPUT: MOV 7EH,#00H movc a,@a+dptr
mov r1,a MOV 7DH,#00H
inc dptr MOV 7CH,#00H
clr a MOV 7BH,#00H
movc a,@a+dptr MOV 7AH,#00H
mov r0,a MOV 79H,#00H ;缓冲区初
orl a,r1 值
jz next0 MOV P1,#0FFH
mov a,r0 MOV A ,P1
anl a,r1 MOV R0,#79H
cjne a,#0ffh,next FF: JB ACC.0, LOOP
SJMP MAIN1 INC @R0
next: mov th0,r1 INC R0
mov tl0,r0 SJMP AB1
setb tr0 LOOP: INC R0
sjmp next1 AB1: JB ACC.1, LOOP1 next0: clr tr0 INC R0
next1: clr a SJMP AB2
inc dptr LOOP1: INC @R0
movc a,@a+dptr INC R0
mov r2,a AB2: JB ACC.6, LOOP2 loop11: acall d200c INC R0
djnz r2,loop11 SJMP AB3
inc dptr LOOP2: INC @R0
ajmp loop10 INC R0
d200c: mov r3,#81h AB3: JB ACC.3, LOOP3 d200b: mov a,#0ffh INC R0 d200a: dec a SJMP AB4
jnz d200a LOOP3: INC @R0
dec r3 INC R0
cjne r3,#00h,d200b AB4: JB ACC.4, LOOP4
ret INC R0
SJMP $ SJMP AB5 tab: db 0feh,25h,04h,0feh,25h,02h LOOP4: INC @R0 db 0feh,25h,02h,0fdh,80h,04h INC R0
db 0feh,84h,02h,0feh,84h,02h AB5: JB ACC.5, LOOP5
LS0: DB
CALL DIS 0C0H,0F9H,0A4H,0B0H,99H,92H
LOOP5: INC @R0 DB
82H,0F8H,80H,90H,88H,83H,0C6H
LO18: CALL DIS 显示 DB
DJNZ R6,LO18 0A1H,86H,8EH,0FFH,0CH,89H,7FH,0
MOV R6,#0FFH ;采样值BFH
送显示缓冲区 RET ;循;-------------------------------------- 环 END
DIS: PUSH DPH
PUSH DPL
SETB RS1
MOV R0,#79H
MOV R2,#20H
MOV R3,#00H
MOV DPTR,#LS0
LS2: MOV A,@R0
MOVC A,@A+DPTR
MOV R1,#0DCH
MOVX @R1,A
MOV A,R2
INC R1
MOVX @R1,A
LS1: DJNZ R3,LS1
CLR C
RRC A
MOV R2,A
INC R0
JNZ LS2
POP DPL
POP DPH
RET
DELAY1:
MOV R4,#5
LP1: MOV R5,#200 LP2: MOV R6,#125 LP3: NOP NOP
DJNZ R6,LP3
DJNZ R5,LP2
DJNZ R4,LP1
RET
;-------------------------------------
附录三软件流程图
开始
初始化
等待密码输入提示
输入密码
N Y 密码正确
修改密码 N Y N
Y 次数超过3次
输入密码管理员取消报警开继电器
结束