整理单片机课程设计密码锁设计Word文件下载.docx
《整理单片机课程设计密码锁设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《整理单片机课程设计密码锁设计Word文件下载.docx(42页珍藏版)》请在冰豆网上搜索。
2.2密码锁电路原理图、PCB图、元器件布局分布图
电路原理图见附录A
PCB顶层图见附录B
PCB底层图见附录B
元器件布局图见附录C
2.3密码锁元器件清单
元器件清单见附录D
3密码锁软件系统的设计
3.1密码锁设计使用单片机资源的情况
原始密码存放在内部程序存储器中,78H-7FH单元做字形代码缓冲区,70H-77H单元做数据比较缓冲区,61H-66H作为新密码存放区,88H-8DH做密码缓冲区。
3.2密码锁设计软件系统各模块功能简介及流程图
密码锁软件的设计主要包括:
键盘扫描、密码显示、密码比较、密码修改、错误报警。
程序设计总流程图如图2所示:
图2程序设计总流程图
3.2.1键盘扫描程序:
本设计采用独立式键盘,共八个按键,程序开始时,先给P1口送高电平,有按键按下后,相应的P1口线会变为低电平,将P1口的电平取反,再送到20H中,20H为可位寻址区,通过查询20H的八位,即可得到是哪个按键按下,就可以转向每个按键所要执行的程序。
键盘扫描程序流程框图如图3所示:
图3键盘扫描程序流程图
3.2.2显示程序:
本设计采用数码管共阳极显示,位控由P0口输出,段控由P2口输出,程序开始后,先对程序初始化,选好寄存器以及查表显示的表地址,先将低位位控码送到P2口,然后通过查表得到段控码,并送到该位,这样依次查完八位,使八位数码管显示,以此循环。
显示程序流程图如图4所示:
图4显示程序流程图
3.2.3密码判断程序:
原密码存放在内部程序存储器中,程序开始后,上电后通过键盘输入六位密码来解锁,六位密码输入完后,会自动判断是否与原始密码相同,相同的话可以解锁,解锁后可以更改用户密码,若与原始密码不同,则出错报警,然后按复位键可以重新输入。
修改完用户密码后若再解锁,步骤与上述相同。
密码判断程序流程图如图5所示:
图5密码判断程序流程图
3.2.4错误报警程序
密码输入错误后,会进入自动错误报警,报警时数码管上会显示“ERROR”字样,蜂鸣器会响,与蜂鸣器连在一起的LED灯也会亮,从而实现错误报警。
错误报警程序流程图如图6所示:
图6密码修改程序流程图
3.3密码锁设计程序清单
程序清单见附录E
4设计结论、缺陷分析、仿真结果、心得体会、教学建议
4.1密码锁设计结论及使用说明
该密码锁基本实现了开锁,修改用户密码,错误报警等功能,具有一定的应用推广价值。
密码锁上电后,屏幕上会显示“P.”,通过键盘可以输入六位密码,保密显示“口”形;
密码输完后,密码正确则自动开锁,出现上“口”形,并可以任意输入1-7在数码管显示,若错误数码管会出现“ERROR”和蜂鸣器与LED灯间歇性鸣叫、闪烁报警,按复位键返回重输。
密码正确后按下第八个键出现六“_”,“口”形显示保密输入六位新密码,完成后按第八个键确认后又可回到输密码状态“P.”;
在修改密码后,如果出现密码输入错误,也会出现“ERROR”字样和蜂鸣器与LED的报警,但可按任意键返回到输密码状态重新输入密码状态;
现在可以摆脱复位键,可重复修改密码。
4.2密码锁设计的缺陷分析
本设计的密码锁不能进行掉电保护,即用户修改密码后不能进行密码保存,掉电后密码就变为原始密码,在实际应用中还须进行改进,例如在硬件电路中加入存储芯片24C02。
由于硬件电路的限制,按键过少,使有些功能缺失或复杂,在实际应用中可采用行列式键盘。
4.3密码锁的仿真结果
为了能让本次课程设计的准确性特用Protues仿真软件做了仿真如图7:
图7仿真图P点的显示
4.4心得体会
本次单片机课程设计安排在临近期末。
由于期末复习紧张,要在短时间内完成程序设计到硬件调试,我遇到很大的困难。
首先在程序设计上,基于强大的网络资源和图书资源我很快的确定了设计方案和总体设计思路——构建一个由数码管和独立按键以单片机为核心的电子密码锁。
但是,从软件设计完成到实现仿真却并不简单。
好在,前期在做单片机实验上积累了一定的程序设计和分析功底,经过反复调试和修改,到底还是实现了当初预定的功能。
通过这次实践课程,我不光学到了很多关于单片机应用的知识,同时也增长见识、开扩了专业方面的视野。
另外,我感觉课程设计与实验课这样的实践课程对理论知识的巩固,动手能力的增强,综合素质的提高有着理论课堂学习无法比拟的效果,是大学,尤其是应用型工科学院必不可少的学习单元。
4.5教学建议
经过为期半年的单片机学习,我们在王老师的指导下对单片机有了较系统的认识,有了一定了程序设计能力,掌握各个应用软件的使用。
但是,我也有个人的感受:
王老师在理论课上教学认真细致,实践课时习惯让同学们自我摸索,也许希望这样锻炼同学们独立解决问题的能力。
但是,我们更希望在实践课时有更多机会得到老师的点拨和指导,这样会令我们的学习效率更高,积极性更高。
那样,我相信我们的学习成绩将会更进一步,老师的教学效果将更突出。
结束语
作为本学期的单片机课程设计,由单片机为控制核心的密码锁从设计方案确定到原理图设计,到程序设计及软硬件结合调试,整个过程有苦有甜,但我收获了颇多,学到了许多课本上没有的东西,增强了自己的动手能力,还培养了自己查阅资料,自学的技能,总之,是获益匪浅的。
尤其在资料查阅和程序设计和调试上能力提高效果明显。
此次设计的密码锁虽然实现了其基本功能,但还有很多要改进的地方,比如掉电保护的实现,必须在原有的电路上增加模块(比如24C52芯片),但由于时间紧凑,资源有限未能完成。
在以后的学习中,我还应该继续努力去完善。
此次课程设计虽然接近尾声,但我对单片机的学习和研究将永远不会停止,我必将努力自我探索,不断自主学习,孜孜以求。
致谢
期末考试结束了,我的单片机课程设计也要完成了。
能够顺利完成密码锁的设计,当然要感谢王韧老师悉心教授单片机的理论知识以及在实验课程上的严格要求。
王老师在课程设计前期的单片机技术课的教授上认真细致,使我们夯实了理论知识基础;
在单片机实验课上,王老师严格要求,使我们强化了实践动手能力、能够熟练的运用各种应用软件。
并且,在我们遇到技术难题和设计瓶颈的时候适当的启发了我们。
另外,在程序设计和硬件调试上,我很大程度上获得了班上同学的帮助,尤其是上期暑假参加过单片机培训的三位同学使我顺利完成了程序的后期完善。
在设计结束之际,祝老师新年快乐,工作顺利,桃李满天下,祝同学们期末考试顺利,学有所成。
参考文献
[1]李广第,朱月秀,冷祖祁.单片机基础[M].北京:
北京航空航天大学出版社,2007.6
LiGuangfirst,ZhuYueXiu,LengZuQi.Singlechipmicrocomputerbased[M].Beijing:
Beijinguniversityofaeronautics&
astronauticspress,2007.6
[2]康华光.电子技术基础模拟部分(第五版)[M].北京:
高等教育出版社,2006
kanguhguano.Electronictechnologyfoundationsimulationpart(fifthedition)[M].Beijing:
highereducationpress,2006
[3]阎石,数字电子技术基础(第五版)[M].北京:
YanShi,digitalelectronictechnologyfoundation(fifthedition)[M].Beijing:
[4]邱光源.电路(第五版)[M].北京:
QiuGuangYuan.Circuit(fifthedition)[M].Beijing:
附录
附录A:
电路原理图
图A密码锁电路原理图
附录B:
PCB图
图B1电子密码锁PCB图顶层
图B2电子密码锁PCB图底层
附录C:
元器件分布图
图C电子密码锁元器件分布3D效果图
附录D:
元器件清单
表D电子密码锁元器件清单
附录E:
程序清单
项目名称:
密码锁
项目功能:
初始自动显示系统提示符“P.”,进入准备工作状态。
具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息并报警。
电路描述:
采用芯片AT89S52单片机,利用P1口与键盘相连,做输入口,P0口与显示器段控相连,输入段控码,P2口输入位控码,将P3.1口与蜂鸣器和二极管电路相连,产生错误报警。
编程作者:
喻鹏
完成时间:
2013年1月3日
备注:
78H~7FH单元做字形代码缓冲区,70H~77H单元做数据比较缓冲单元,MAIN为原始密码存放区,61H~66H作为新密码的存放区,88H~8DH为密码缓冲区。
密码锁程序清单:
ORG0000H
LJMPSTART
ORG0100H
START:
MOVSP,#30H
MOVR0,#70H
MOV6FH,#00H
MOVR1,#78H
MOV20H,#00H
CLR21H.1
MOVA,#00H
MOVDPTR,#MAIN
MOV78H,#0CH
MOV79H,#0FFH
MOV7AH,#0FFH
MOV7BH,#0FFH
MOV7CH,#0FFH
MOV7DH,#0FFH
MOV7EH,#0FFH
MOV7FH,#0FFH
LOOP:
LCALLDISP
LCALLKEYCL
JB20H.0,KEY11
JB20H.1,KEY12
JB20H.2,KEY13
JB20H.3,KEY14
JB20H.4,KEY15
JB20H.5,KEY16
JB20H.6,KEY17
JB20H.7,KEY18
CLRCY
DECR0
MOVR4,A
MOVCA,@A+DPTR;
SUBBA,@R0;
密码值与输入值的比较
INCR0
JZHERE;
相等则转移过去继续判断按键
SETB21H.1;
不等则将21H.1置1
HERE:
MOVA,R4;
CJNER1,#7EH,LOOP;
LJMPBIJIAO
//**判断是哪个按键,然后进行相应操作**//
KEY11:
MOV@R0,#01H
SJMPZZZ
KEY12:
MOV@R0,#02H
KEY13:
MOV@R0,#03H
KEY14:
MOV@R0,#04H
KEY15:
MOV@R0,#05H
SJMPZZZ
KEY16:
MOV@R0,#06H
KEY17:
MOV@R0,#07H
KEY18:
MOV@R0,#08H
ZZZ:
MOV@R1,#0A3H;
送显示字形,保密输出显示“口”形
INCR0;
将R0、R1、A加1
INCR1
INCA
MOV20H,#00H
LJMPLOOP;
返回再继续判断按键
//*********比较后对标志位进行判断***//
BIJIAO:
JB21H.1,ERROR;
标志位等于1则进入错误提醒设置
MOVR1,#7FH;
密码正确后显示缓冲段
MOV78H,#9DH;
上半'
口'
MOV79H,#0FFH;
'
灭'
MOV7AH,#0FFH;
MOV7BH,#0FFH;
MOV7CH,#0FFH;
MOV7DH,#0FFH;
MOV7EH,#0FFH;
MOV7FH,#0FFH;
‘灭’
BOOP1:
MOV20H,#00H
LCALLDISP
LCALLKEYCL
JB20H.0,KEY21
JB20H.1,KEY22
JB20H.2,KEY23
JB20H.3,KEY24
JB20H.4,KEY25
JB20H.5,KEY26
JB20H.6,KEY27
JB20H.7,KEY28;
第八个键按下,直接进入密码修改
CJNER1,#77H,BOOP1
MOVR1,#7FH
SJMPBOOP1
//错误提示则出现‘ERROR’字样,并伴有蜂鸣声和LED灯闪烁//
ERROR:
MOV79H,#88H;
‘R’
MOV7AH,#0C0H;
O'
MOV7BH,#88H;
R'
MOV7CH,#88H;
MOV7DH,#86H;
E'
MOV7EH,#0FFH;
MOV78H,#0FFH;
LOOP2:
MOVR5,#32H;
显示函数的循环次数
CLRP3.1;
蜂鸣器和P3.1对应的灯隔0.5响灭
LOOP1:
DJNZR5,LOOP1;
显示循环50次,约为0.4s
SETBP3.1;
取反P3.1口
LCALLDELAY400MS;
调延时0.4s
SJMPLOOP2;
按复位键返回重新输入
;
//***密码输入正确后,可以任意输入1~7中的数字**//
KEY21:
MOV@R1,#0F9H
DECR1
LJMPBOOP1
KEY22:
MOV@R1,#0A4H
DECR1
LJMPBOOP1
KEY23:
MOV@R1,#0B0H
LJMPBOOP1
KEY24:
MOV@R1,#99H
KEY25:
MOV@R1,#92H
KEY26:
MOV@R1,#82H
KEY27:
MOV@R1,#0F8H
//*****密码修改*******************//
KEY28:
MOV78H,#0F7H;
‘_’
MOV79H,#0F7H;
_'
MOV7AH,#0F7H;
MOV7BH,#0F7H;
MOV7CH,#0F7H;
MOV7DH,#0F7H;
MOVR0,#61H;
新密码存放区
MOVR1,#7DH;
显示代码缓冲区
KOOP1:
JB20H.0,KEY31
JB20H.1,KEY32
JB20H.2,KEY33
JB20H.3,KEY34
JB20H.4,KEY35
JB20H.5,KEY36
JB20H.6,KEY37
JB20H.7,KEY38
CJNER1,#7EH,KOOP1
MOVR1,#78H
SJMPKOOP1
KEY31:
MOV@R0,#01H
MOV@R1,#0A3H
SJMPPANDUAN
KEY32:
KEY33:
KEY34:
KEY35:
KEY36:
KEY37:
PANDUAN:
CJNER1,#77H,THE1
SJMPKOOP1
THE1:
SJMPKOOP1
KEY38:
CJNER1,#77H,THE;
确认密码修改成功(并判断是否满足密码要求)
SJMPTHE2
THE:
LJMPKEY28
//*********新密码执行*************//
THE2:
MOVR0,#61H;
数据比较缓冲段
MOVR1,#78H;
显示缓冲段
MOV20H,#00H
CLR21H.1
MOVDPTR,#0061H;
利用DPTR做间址寻址寄存器
MOV78H,#0CH;
‘P’
MOV79H,#0FFH;
MOV7AH,#0FFH;
MOV7BH,#0FFH;
MOV7CH,#0FFH;
MOV7DH,#0FFH;
MOV7EH,#0FFH;
MOV7FH,#0FFH;
TOOP:
JB20H.0,KEY41
JB20H.1,KEY42
JB20H.2,KEY43
JB20H.3,KEY44
JB20H.4,KEY45
JB20H.5,KEY46
JB20H.6,KEY47
JB20H.7,KEY48
CJNER1,#7EH,TOOP;
LJMPBIJIAO1
//*改密码后的密码输入时判断是哪个按键,然后进行相应操作*//
KEY41:
MOVA,#01H
SUBBA,@R0
SJMPKKK
KEY42:
MOVA,#02H
KEY43:
MOVA,#03H
KEY44:
MOVA,#04H
KEY45:
MOVA,#05H
KEY46:
MOVA,#06H
SUBBA,@R0
SJMPKKK
KEY47:
MOVA,#07H
KKK:
JZEY6
SETB21H.1
EY6:
送显示字形,保密输出显示“口”形
INCR0
INCR1
LJMP