单片机课程设计密码锁

上传人:沈*** 文档编号:44426314 上传时间:2021-12-05 格式:DOC 页数:27 大小:429.50KB
收藏 版权申诉 举报 下载
单片机课程设计密码锁_第1页
第1页 / 共27页
单片机课程设计密码锁_第2页
第2页 / 共27页
单片机课程设计密码锁_第3页
第3页 / 共27页
资源描述:

《单片机课程设计密码锁》由会员分享,可在线阅读,更多相关《单片机课程设计密码锁(27页珍藏版)》请在装配图网上搜索。

1、1 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务与要求设计一个具有特定功能的密码锁。该密码锁上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。该密码锁具有系统原始密码888888,用户可以在原始密码输入正确后,即开锁后才可以设定并存储用户密码,当按修改密码键时,显示英文“CODE”,输入的新密码显示具体按下的数字和字母0-9或A-F。密码锁锁定时,密码输入应处于保密显示状态,显示“-”,密码输入正确时应显示密码输入正确提示信息主人的英文“HOST”,且指示灯亮,否则,显示密码输入错误提示信息:错误的英文字母“FAULT”,当输入错误3次时,蜂鸣器报警,显示小偷的英文

2、“THIEF”,且指示灯亮。1.2 设计课题总体方案介绍及工作原理说明此密码锁主要由单片机芯片AT89S52、4X4矩阵键盘、8位数码管显示电路和复位电路构成,设计课题的系统框图如图 1.1 所示: 图 1.1系统框图实现密码锁功能的软件程序存放在AT89S52的ROM中。2 设计课题硬件系统的设计2.1 设计课题硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块(1)单片机最小系统模块:AT89S52单片机芯片;复位电路;晶振电路。本模块AT89S52系统控制核心,单片机系统复位由按键电平复位电路完成,通过按键S1来控制,单

3、片机通过芯片引脚XTAL1、 XTAL2,外并接石英晶体振荡器和两只电容。这样就为能为单片机提供频率为12MHz的晶振。(2)4X4矩阵键盘模块:四条列线接P1.7-P1.4;四行线接P1.3-P1.0(3)显示模块:本次设计显示为8位,采用两个四位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路。数码管用8个PNP三极管驱动。 (4)电源模块:直接由PC的USB接口提供。2.2 各功能模块详细介绍2.2.1 AT89S52介绍(1) 具有8KB可改写的Flash 内部程序存储器,可写/擦1000次;(2) 256字节内部RAM;(3) 32根可编程I/O口;(4)3个16位定时器

4、/计数器。 (5) 8个中断源;(6) 低功耗空闲和掉电方式。它的价格便宜,功能强大,能耗低。很大程度上减少总电路的复杂性,提高了所设计系统的稳定性。2.2.2 时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。本次课程设计我们用的是12MHz的晶振与电容并联形成一个稳定的自激振荡器。电路图如图2.2所示 。图 2.1 时钟电路2.2.3 键盘电路本次设计采用4X4矩阵式键盘嵌在在单片机P1口上,矩阵式键盘电路图2-3:图 2.2 键盘电路2.2.4 复位电路复位电路采用按键复

5、位方式,当按下复位键时,单片机复位,恢复初始状态,各寄存器清零。当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,使用频率为12MHz的晶振,则复位信号持续时间应超过2us才能完成复位操作。复位电路如下图2.4所示。图 2.3 复位电路2.2.5 数码管驱动电路与显示电路本次课程设计我们采用的是共阳极的数码管,用三极管与电阻来做驱动。电路图如下图2.5所示。图2.4 数码管驱动及显示电路图2.3 设计课题电路原理图、PCB 图、元器件布局图电路原

6、理图、PCB 图、元器件布局图、元件清单见附录。3 设计课题软件系统的设计3.1 设计课题使用单片机资源的情况选择设计课题使用单片机资源的情况如下:P0口输出数码管段选信号,P2口输出数码管位选信号;40H-45H作为初始密码888888存储单元,60H-65H作为输入密码存储区;50H-55H为查表变址缓存单元,数码管显示内容做成表格供查询;堆栈栈底设置在30H。3.2 设计课题软件系统各模块功能简要介绍本程序通过以下各子模块程序实现:主程序、数码管显示子程序、定时1ms程序、定时10ms子程序、。主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制,包括键扫

7、功能,密码输入与修改功能,密码校对功能,报警功能等。数码管显示子程序:主要是用于对于密码锁不同状态显示不同内容,例如,当待锁状态显示P.当开锁状态显示HOST,当报警状态显示THIEF等。定时1ms子程序:用于数码管显示延时。定时10ms子程序:用于键扫去抖动。3.3 程序设计思路与流程图本密码锁设计采用4X4矩阵式键盘来输入数字密码0-9和字母密码A-F,将输入的密码存入60H-65H,与40H-45H单元的原始密码比较,相等则开锁,不等则显示错误,当3次输入错误就报警。同时仅开锁状态下用户才可以修改密码。软件系统流程图:3.1 主程序流程图 图 3.2 显示子程序流程图程序见附录4 设计仿

8、真结果及误差分析4.1 设计课题的设计结论及使用说明本设计为基于单片机的密码锁的设计。设计成功实现了以下功能:(1)本设计用4X4矩阵式键盘输入密码,完成了密码可以为数字0-9和字母A-F组合的要求,并在输入密码时做到了保密处理,即每输入一位密码显示“-”符号。(2)仅在开锁状态下才能密码修改,为了使用户更容易记忆密码,采用实际密码显示,不再保密。(3)2个四位一体的共阳数码管做为显示器,它能在锁关显示P.;在锁开时显示开锁者主人的身分,即显示英文HOST;在输入错误后提示错误信息,即显示英文FAULT;在3次输入错误后显示小偷的英文THIEF。(4)3次输入错误后将进入报警死循环,指示灯全亮

9、,此时4X4键盘任何按键失去作用,即小偷不能关闭警报。这样的结果与设计要求完全相符,本设计成功完成了设计任务。本密码锁使用简单,只要稍加注意F,E,D,3按键的双重功能。4.2 设计课题的仿真结果在 Proteus 中的模拟仿真,系统仿真结果如图4.1-图4.8所示。 实现功能:本设计可调整运行两种工作状态:学号显示状态、密码锁运行状态、。(1)学号显示状态为老师附加要求,复位键即可进入学号显示状态,在此状态下,按KS1键可以进入密码锁功能。(2)密码锁状态,在此状态下,密码锁有锁闭,锁开,修改密码,密码错误以及报警四种工作状态图4.1学号显示状态仿真图4.2密码锁锁定状态显示图4.3输入密码

10、保密状态仿真图4.4密码锁开运行状态仿真图4.5修改密码运行状态仿真图4.6修改密码明码运行状态仿真图4.7密码输入错误运行状态仿真图4.8密码锁报警运行状态仿真由仿真效果可以说密码锁设计成功,仿真成功后就可以着手实物的制作。经实物测试,运行结果与仿真结果一致,甚至效果更逼真。4.3设计课题的误差分析与调整该密码锁运行结果虽然与仿真结果一致,但运行过程存在很多问题,首先,4X4键盘的灵敏度有待商榷,有时个别键按下时输入2或多个相同密码,增加了密码输入错误次数。此外,本密码锁虽然符合设计要求,但与实用生活中密码锁的性能相比有很大差距。比如在密码输入错误时不能后退,即不能擦除已知错误密码,只能让本

11、次输入走向错误的结果。再如密码的修改只是一次性输入确认,这将很大程度上造成重新设定的密码不是用户想要的密码。另外密码锁进入死循环后,任何键不起作用,这将防止小偷再套密码,但同时也使在外的主人打不开锁。由此可见,问题还是很多的,但这些问题都可以解决,比如可以增加退回子程序功能,将错误输入的密码纠正,使本次输入密码正确;另外可以在修改密码时采用2次输入相比较的方法以确保修改的密码为用户想要修改的密码,最后一个问题的解决可以不让程序进入死循环,但仍然一直报警,但小偷将有再套密码的机会。5 课程设计体会及教学建议5.1 设计体会(1)设计过程最深刻的体会是认识了好多的软件,像Protel99,Prot

12、eus以及Keil。真是让人头疼。都是从零开始,所以学起来吃力。(2)有意思的还是硬件设计,就是做电路板,像什么打孔,腐蚀,焊接都干得津津有味,当千心万苦把数码管弄亮了,感觉很高兴。(3)选题课题时觉得对密码锁有兴趣,但发现很难,好多人都放弃去改课题了,但我兴趣使然,还是一条代码一条代码的敲,花了3多天时间才敲出来。付出总有收获,不要放弃才好。5.2 教学建议 个人觉得大学这么久,所有老师上课让我觉得课堂有内容的就两个,一个是高一的高数老师,听她课不要费太多心力,耳濡目染。我觉得吴老师也属于润物细无声那种,只要人去了,听了课,考试挂科是很难的。 不喜欢上单片机实验课,那几乎不是在上课,希望学校

13、能够给单片机实验添点硬件项目,不要老是在敲代码做仿真。食物能激发人的兴趣,实物也能。参考文献1 李广弟等.单片机基础M.北京:北京航空航天大学出版社,2007.62马忠梅等.单片机的C语言应用程序设计M.北京:北京航空航天大学出版社,2006.11.3 曹巧媛.单片机原理及应用M.北京:电子工业出版社,1997.7.附录附录A 电路原理图附录B PCB图附录 C 元件布局图附录 D 元件清单序号名称、大小数量1电阻2001个2电阻47024个3电阻1K3个4电阻4.7K1个5电容22F1个6电容33pF2个74x4矩阵式键盘1个8AT89S521个9单排插40个10四位一体共阳极数码管2个11

14、LED9个12PNP9个13四脚按钮9个14六脚开关1个15USB电源接口1个16下载口1个17晶振12MHz1个附录E 程序设计课题:密码锁设计者:周锋 ORG 0000H AJMP MAIN ORG 0050HMAIN: MOV SP,#30H XHXS: MOV R1,#0FEH ;学号显示程序 MOV A,R1 RR A MOV R1,A MOV P2,A MOV DPTR,#BS MOV R0,#00H MOV A,R0 MOVC A,A+DPTR MOV P0,A ZOOP:LCALL DELAY2 MOV A,R1 RR A MOV P2,A MOV R1,A INC R0 MO

15、V A,R0 MOVC A,A+DPTR MOV P0,A CJNE R0,#07H,ZOOP LCALL DELAY2 JNB P1.0,KS1;由KS1按键转入密码锁程序LJMP XHXSKS1:JB P1.0,LOCK SJMP KS1 LOCK: MOV 40H,#08H ; 密码锁程序 MOV 41H,#08H ;初始密码888888 MOV 42H,#08H MOV 43H,#08H MOV 44H,#08H MOV 45H,#08H FW:MOV 50H,#12H ;密码锁锁定状态,显示字符P. MOV 51H,#10H MOV 52H,#10H MOV 53H,#10H MOV

16、 54H,#10H MOV 55H,#10H MOV 4FH,#00H MOV R3,#00H MOV R6,#01H LOOP1:MOV A,#0FH ;判4X4键盘是否有键按下,即键扫程序 MOV P1,A MOV A,P1 CJNE A,#0FH,FHLCALL DISPLAY LJMP LOOP1 FH:LCALL DELAY1 ;有键按下则延迟10ms去抖动在判有无键按下 MOV A,#0FH MOV P1,A MOV A,P1 CJNE A,#0FH,KEY LCALL DISPLAY LJMP LOOP1 KEY:MOV A,#7FH ;判断具体哪个按键 MOV P1,A JNB

17、 P1.3,KD1 JNB P1.2,KC1 JNB P1.1,KB1 JNB P1.0,KA1 RR A MOV P1,A JNB P1.3,KE1 JNB P1.2,K31 JNB P1.1,K61 JNB P1.0,K91 RR A MOV P1,A JNB P1.3,K01 JNB P1.2,K21 JNB P1.1,K51 JNB P1.0,K81 RR A MOV P1,A JNB P1.3,KF1 JNB P1.2,K11 JNB P1.1,K41 JNB P1.0,K71 KD1:JB P1.3,KD ;判断是否键起 LJMP KD1 KC1:JB P1.2,KC LJMP K

18、C1 KB1:JB P1.1,KB LJMP KB1 KA1:JB P1.0,KA LJMP KA1 KE1:JB P1.3,KE LJMP KE1 K31:JB P1.2,K3 LJMP K31 K61:JB P1.1,K6 LJMP K61 K91:JB P1.0,K9 LJMP K91 K01:JB P1.3,K0 LJMP K01 K21:JB P1.2,K2 LJMP K21 K51:JB P1.1,K5 LJMP K51 K81:JB P1.0,K8 LJMP K81 KF1:JB P1.3,KF LJMP KF1 K11:JB P1.2,K1 LJMP K11 K41:JB P1

19、.1,K4 LJMP K41 K71:JB P1.0,K7 LJMP K71 KA:MOV R4,#0AH;键起后将键值,即输入的1位密码保存在R4 LJMP CHANGE KB:MOV R4,#0BH LJMP CHANGE KC:MOV R4,#0CH LJMP CHANGE KD:MOV R4,#0DH LJMP CHANGE KE:MOV R4,#0EH LJMP CHANGE K0:MOV R4,#00H LJMP CHANGE K1:MOV R4,#01H LJMP CHANGE K2:MOV R4,#02H LJMP CHANGE K3:MOV R4,#03H LJMP CHAN

20、GE K4:MOV R4,#04H LJMP CHANGE K5:MOV R4,#05H LJMP CHANGE K6:MOV R4,#06H LJMP CHANGE K7:MOV R4,#07H LJMP CHANGE K8:MOV R4,#08H LJMP CHANGE K9:MOV R4,#09H LJMP CHANGE KF:MOV R4,#0FH LJMP CHANGECHANGE: CJNE R6,#01H ,LOOP28 ;判别输入的键值是作为输入密码还是作为修改密码 INC R3 ;输入密码 MOV A,R3 ADD A,#4FH MOV R1,A MOV A,#11H MOV

21、 R1,A MOV A,R3 ADD A,#5FH MOV R0,A MOV A,R4 MOV R0,A ;判别是否已输入6位密码 CJNE R3,#06H,LOOP29 MOV R3,#00H LJMP COMP ;输入6位密码,转入密码校对子程序 LOOP29:LJMP LOOP1 LOOP28:INC R3 ;修改密码 MOV A,R3 ADD A,#4FH MOV R1,A MOV A,R4 MOV R1,A MOV A,R3 ADD A,#3FH MOV R0,A MOV A,R4 MOV R0,A CJNE R3,#06H,LOOP31 ;判别是否已修改6位密码 LOOP42:MO

22、V A,#0EFH ;修改完6位密码后按F键确认修改密码,关闭指示灯,并回归到锁定状态,显示字符P. MOV P1,A MOV A,P1 JNB P1.3,LOOP40 LCALL DISPLAY LJMP LOOP42 LOOP40:MOV A,#0EFH MOV P1,A JB P1.3,LOOP41 LCALL DISPLAY LJMP LOOP40 LOOP41:MOV P3,#11111111B MOV R3,#00H MOV 50H,#12H MOV 51H,#16MOV 52H,#16MOV 53H,#16MOV 54H,#16MOV 55H,#16 MOV R6,#01H LJ

23、MP LOOP1 LOOP31:LJMP LOOP1; 没有修改完6位密码,继续扫描键盘修改密码COMP: MOV A,#0EFH ;密码校对子程序,按下F确认键开始校对 MOV P1,A MOV A,P1 JNB P1.3,LOOP23 LCALL DISPLAY LJMP COMP LOOP23:MOV A,#0EFH MOV P1,A JB P1.3,LOOP24 LJMP LOOP23 LOOP24:MOV A,60H CJNE A,40H,FAULT;密码错误则转错误子程序 MOV A,61H CJNE A,41H,FAULT MOV A,62H CJNE A,42H,FAULT M

24、OV A,63H CJNE A,43H,FAULT MOV A,64H CJNE A,44H,FAULT MOV A,65H CJNE A,45H,FAULT MOV P3,#00000010B ;密码正确则指示灯亮,数码管显示“主人”的英文HOST,开锁MOV 50H,#24 MOV 51H,#25MOV 52H,#26MOV 53H,#27 MOV 54H,#16MOV 55H,#16 MOV R3,#00HLOOP25:LCALL DISPLAY MOV A,#0BFH ;密码正确后判别是复位还是修改密码 MOV P1,A JNB P1.2,LOOP26 JNB P1.3,LOOP70

25、LJMP LOOP25LOOP26:JB P1.2,LOOP30 LJMP LOOP26LOOP70:JB P1.3,LOOP60 LJMP LOOP70LOOP60:LJMP FW1 ; E按键按下,复位,关指示灯,显示P.LOOP30: MOV R6,#00H;3键按下进入修改密码功能,数码管显示“密码”英文code MOV 50H,#12 MOV 51H,#25MOV 52H,#13MOV 53H,#14 LOOP52:LCALL DISPLAY MOV A,#0EFH;按下F确认键开始修改密码,并清空数码管 ,进入键扫程序 MOV P1,A JNB P1.3,LOOP50 LJMP L

26、OOP52LOOP50: JB P1.3,LOOP51 LJMP LOOP50 LOOP51:MOV 50H,#16 MOV 51H,#16MOV 52H,#16MOV 53H,#16 LJMP LOOP1FAULT: INC 4FH ;错误次数加1 MOV A,4FHCJNE A,#03H,C1 ;判别输入密码错误次数LJMP ALARM ; 满3次转报警子程序 C1:MOV 50H,#15 ;不满3次,数码管显示“错误”英文faultMOV 51H,#10MOV 52H,#28MOV 53H,#29MOV 54H,#30MOV 55H,#16MOV R3,#00H LOOP53:LCALL

27、 DISPLAY MOV A,#07FH;按D键重新输入密码,并清空数码管 MOV P1,A MOV A,P1 JNB P1.3,LOOP54 LJMP LOOP53 LOOP54:MOV A,#07FH MOV P1,A JB P1.3,LOOP56 LJMP LOOP54 LOOP56:MOV 50H,#16 MOV 51H,#16MOV 52H,#16MOV 53H,#16 MOV 54H,#16MOV 55H,#16LJMP LOOP1 FW1:MOV P3,#11111111B LJMP FWALARM: MOV 50H,#19 ;报警子程序,进入死循环,任何按键将不起作用MOV 5

28、1H,#20 ;数码管显示“小偷”的英文thief,指示灯全亮MOV 52H,#21MOV 53H,#22MOV 54H,#23MOV 55H,#16 MOV A,#00H MOV P3,ALOOP21:LCALL DISPLAY LJMP LOOP21DELAY1: MOV IE,#00H ;延时10ms子程序 MOV TMOD,#01H MOV TH0,#0D8H MOV TL0,#0F0H SETB TR0 LOOP10:JBC TF0,LOOP11 SJMP LOOP10 LOOP11:RETDELAY2: MOV IE,#00H ;延时1ms子程序 MOV TMOD,#01H MOV

29、 TH0,#0FCH MOV TL0,#18H SETB TR0 ZOOP1:JBC TF0,ZOOP2 AJMP ZOOP1 ZOOP2:RETDISPLAY:MOV DPTR,#TAB ;数码管显示子程序 DI1: MOV R1,#4FH MOV R2,#0FEH MOV R5,#06H DI0: INC R1 MOV A,R2 RR A MOV R2,A MOV P2,A MOV A,R1 MOVC A,A+DPTR MOV P0,A LCALL DELAY2 DJNZ R5,DI0 RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH DB 0BFH,0CH,0F8H,89H,0F9H,86H,8EH DB 89H,0C0H,92H,0CEH,0C1H,0C7H,0CEH DB 79H,0A2H,0E3H,22H,0CFHBS: DB 0A1H,0C0H,90H,0C0H,0B0H,0BFH,99H,0B0H END附录F 实物图27

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!