单片机三位密码锁.docx
- 文档编号:23750910
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:16
- 大小:64.76KB
单片机三位密码锁.docx
《单片机三位密码锁.docx》由会员分享,可在线阅读,更多相关《单片机三位密码锁.docx(16页珍藏版)》请在冰豆网上搜索。
单片机三位密码锁
一、设计任务及要求……………………………………….1
二、设计内容及步骤……………………………………….1
1、方案设计说明………………………………........2
2、硬件电路的设计…………………………………3
3、使用说明……………………………………..4
4、软件设计…………………………………………5
5、程序流程图………………………………………6
6、源程序…………………………………………....7
三、制作调试……………………………………………….12
四、设计心得………………………………………………13
五、参考文献:
………………………………………………….14
单片机课程设计报告
一、设计任务及要求
设计、制作一采样用单片机的“电子密码锁”,用一个发光管指示灯代表锁,灯亮表示开锁,灯灭表示关锁,通过按键操作控制“锁”的开关,要求操作简便,安全性能好。
同时,为降低成本,限定操作按键用普通微动开关,数量不超过5个,显示器件用发光二极管指示灯,数量不超过3个(不包括开锁那个)。
二、设计内容及步骤
1、方案设计说明:
我所设计的密码锁就是把密码设为3位密码。
每位密码的取值X围为可以设为0-9,设置初始密码为2(K3),3(K4),1(K2)。
只有按顺序依次按下K3,K4,K2才能开锁。
它具有开锁,修改密码,报警等功能。
这个密码锁虽然只设置了三位密码,但可以根据这个思路扩展为更多的密码位数。
总的用了四个开关和三个发光二极管,三个开关时密码键,一个开关时修改密码键。
一个指示灯用来指示锁的开或不开。
一个指示灯输入的密码正确与否。
一个指示灯用来指示买密码错误,报警。
每输入一位正确密码则相应的发光二极管亮,密码全正确则开锁那个指示灯亮,代表开锁,若键入的密码不正确,则相应的指示灯闪烁,开锁指示灯熄灭,相当于报警。
这时按按键无效。
若用户想修改密码,在输入正确密码开锁后,按下修改密码键,并出现相应的指示灯闪烁,即可键入新的密码,在重新输入新密码开锁,开锁情况和前面一样。
2.硬件电路的设计:
本课程设计只需采用单片机的最小系统即可,单片机的最小系统就是,电源(20角VSS,40角VCC),复位电路(9角RST/VPD),时钟电路(18、19角XTAL),EA。
在硬件电路设计中,我选用P1口作为按键输入口,P0口作为输出口,接指示灯,由于P0口没有上拉电阻,所以还要接限流电阻。
按键K1作为修改密码的按键,K2,K3,K4作为密码键,发光二极管D1作为开锁指示灯,D2作为每输入一位正确密码的指示灯,
D3作为输入错误密码的指示灯。
材料清单:
整的原理图:
3.使用说明:
当接通电源,指示灯D1闪一下,说明可以输入密码,如果每输入一位密码正确,则指示灯D2闪一下,如果错误则指示灯D3闪三下,模拟报警,并且返回重新输入密码。
如果三位密码都正确则指示灯D2连续闪三下,D1指示灯一直亮。
输入正确密码开锁后,如果想要修改密码,按下K1键,指示灯D2会闪两下,说明可以修改密码了。
每输入一位新密码指示灯D2会闪一下。
当三位新密码输入完之后,指示灯D2会连续闪两下,并且指示灯D3会闪一下,代表可以输入新密码开锁。
开锁过程同前面一样。
4.软件设计
首先把初始密码存放在30H,31H,32H。
设置P1.1口代表1,P1.2代表2,P1.3代表3。
当按下那个键就代表按下相应的密码。
把0FBH存放在30H,把0F7H存放在31H,把0FDH存放在32H。
然后依次按下密码键,在与初始密码比较,相同就代表输入的密码正确,不同就说明密码错误,并都做相应的指示。
当按下P1.0口即可以修改密码,然后把新密码依次存放在40H,41H,42H单元里。
然后再输入与新密码比较,正确开锁,错误报警。
把P0.0口设置为开锁指示,P0.1为按键指示。
P0.2为报警指示。
只有依次按顺序按下P1.2,P1.3,P1.1按键。
才能开锁。
否则就报警。
、
程序流程图:
开始
初始化
键盘扫描
判断是否有键按下
设置新密码
NO
判断是什么键按下
设置键
比较密码
错误
正确
调用报警子程序
开锁
源程序:
……….存初始密码………….
ORG0000H
MOVSP,#60H
MOV30H,#0FBH
MOV31H,#0F7H
MOV32H,#0FDH
CLRP0.0;D1亮一下
ACALLD50mS
SETBP0.0
…………..判断第一位密码…………
MOVR0,#30H
L1:
MOVP1,#0FFH;判断是否有按键按下
MOVA,P1
CJNEA,#0FFH,L2
AJMPL1
L2:
ACALLDEL10mS
CJNEA,#0FFH,L3
AJMPL1
L3:
ACALLDEL10mS
CLRC
SUBBA,R0
INCR0
CJNEA,#00H,BP;比较第一位密码是否正确
CLRP0.1
ACALLD50mS
SETBP0.1
…………….比较第二位密码…………….
L5:
MOVP1,#0FFH
MOVA,P1
CJNEA,#0FFH,L6
AJMPL5
L6:
ACALLDEL10mS
CJNEA,#0FFH,L7
AJMPL5
L7:
ACALLDEL10mS
CLRC
SUBBA,R0
INCR0
CJNEA,#00H,BP
CLRP0.1
ACALLD50mS
SETBP0.1
.................比较第三位密码………………..
L8:
MOVP1,#0FFH
MOVA,P1
CJNEA,#0FFH,L9
AJMPL8
L9:
ACALLDEL10mS
CJNEA,#0FFH,L10
AJMPL8
L10:
ACALLDEL10mS
CLRC
SUBBA,R0
CJNEA,#00H,BP
AJMPL4
…………..模拟报警……….
BP:
CLRP0.2;D3闪三下
ACALLD50mS
SETBP0.2
ACALLD50mS
CLRP0.2
ACALLD50mS
SETBP0.2
ACALLD50mS
CLRP0.2
ACALLD50mS
SETBP0.2
SETBP0.0
AJMPL0
………密码正确开锁………….
L4:
CLRP0.1;D2指示灯亮三下,D1一直亮
ACALLD50mS
SETBP0.1
ACALLD50mS
CLRP0.1
ACALLD50mS
SETBP0.1
ACALLD50mS
CLRP0.1
ACALLD50mS
SETBP0.1
CLRP0.0;开锁
………确认是否修改密码………..
K0:
P1.0,$;判断按键K1是否按下,
ACALLDEL10mS
P1.0,K0
JNBP1.0,$
SETBP0.1;按下D2指示灯闪两下
ACALLD50mS
CLRP0.1
ACALLD50mS
CLRP0.1
ACALLD50mS
SETBP0.1;以修改密码
………修改新密码第一位……….
G1:
MOVP1,#0FFH;D2只是灯闪一下
MOVA,P1
CJNEA,#0FFH,G2
AJMPG1
G2:
ACALLDEL10mS
CJNEA,#0FFH,G3
AJMPG1
G3:
MOV40H,A
INCR1
CLRP0.1
ACALLD50mS
SETBP0.1
………修改新密码第二位……….
G4:
MOVP1,#0FFH;D2只是灯闪一下
MOVA,P1
CJNEA,#0FFH,G5
AJMPG4
G5:
ACALLDEL10mS
CJNEA,#0FFH,G6
AJMPG4
G6:
MOV41H,A
CLRP0.1
ACALLD50mS
SETBP0.1
…………修改新密码第三位………..
G7:
MOVP1,#0FFH
MOVA,P1;D2只是灯闪一下
CJNEA,#0FFH,G8
AJMPG7
G8:
ACALLDEL10mS
CJNEA,#0FFH,G9
AJMPG7
G9:
MOV42H,A
CLRP0.1;D2闪两下,新密码修改完
ACALLD50mS
SETBP0.1
ACALLD50mS
CLRP0.1
ACALLD50mS
SETBP0.1
ACALLD50mS
…………输入新密码开锁…………
H0:
CLRP0.2;D3指示灯闪一下,可以输入新密码开锁
ACALLD50mS
SETBP0.2
MOVR1,#40H
H1:
MOVP1,#0FFH;输入第一位新密码
MOVA,P1
CJNEA,#0FFH,H2
AJMPH1
H2:
CALLDEL10mS
CJNEA,#0FFH,H3
AJMPH1
H3:
CLRC
SUBBA,R1
INCR1
CJNEA,#00H,HP
CLRP0.1
ACALLD50mS
SETBP0.1
H5:
MOVP1,#0FFH;输入第二位新密码
MOVA,P1
CJNEA,#0FFH,H6
AJMPH5
H6:
ACALLDEL10mS
CJNEA,#0FFH,H7
AJMPH5
H7:
CLRC
SUBBA,R1
INCR1
CJNEA,#00H,HP
CLRP0.1
ACALLD50mS
SETBP0.1
H8:
MOVP1,#0FFH;输入第三位新密码
MOVA,P1
CJNEA,#0FFH,H9
AJMPH8
H9:
ACALLDEL10mS
CJNEA,#0FFH,H10
AJMPH8
H10:
CLRC
SUBBA,R1
CJNEA,#00H,HP
AJMPH4
HP:
CLRP0.2;输入密码错误D3指示灯闪三下
ACALLD50mS
SETBP0.2
ACALLD50mS
CLRP0.2
ACALLD50mS
SETBP0.2
ACALLD50mS
CLRP0.2
ACALLD50mS
SETBP0.2
SETBP0.0;D1指示灯熄灭,报警
AJMPH0
H4:
CLRP0.1;密码都正确,D2指示灯闪三下,
ACALLD50mS
SETBP0.1
ACALLD50mS
CLRP0.1
ACALLD50mS
SETBP0.1
ACALLD50mS
CLRP0.1
ACALLD50mS
SETBP0.1;D1一直亮,代表开锁
AJMPK0
...........延时0.5S……..
D50mS:
MOVR2,#50
D0:
ACALLDEL10mS
DJNZR2,D0
RET
………延时10Ms………..
DEL10mS:
MOVR6,#20
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
END
三、制作调试
1、调试程序:
编写程序之后,编译改错,改正确之后,生成16进制文件,把它调到proteus软件中进行仿真。
若有问题,就根据其现象更改程序直到仿真成功,再烧写程序。
2、程序烧写:
写好程序,并通过仿真就可以把程序烧进的单片机8051芯片里,用Sasy51p软件进行程序烧写。
3、调试电路:
烧好程序后,把芯片放到实际的电路中进行调试,如果没有要求的结果。
检测硬件两个方面,重复调试及检测的过程,直到调试成功
四、设计心得
经过两周的时间我们的密码锁课程设计结束了。
在设计的过程中遇到很多问题,对于我来说最困难的就是修改程序的过程,当我把程序写好后,在电脑上调试程序的过程中出现了很多的问题,错误一个一个得修改完了,但仿真又出不来我想要的结果,有得返回来再修改调试程序,这样一步一步的修改,最后出来啦。
这个过程我大概用了两天的时间。
接下来就是焊电路,虽然电路图简单,但很容易会出错,我的程序烧在芯片里,一上电灯全亮的。
有得检查电路板。
在整个设计和制作过程中我觉得我学到了许多东西,特别是调试程序的过程,我发现了很多问题,也解决了很多问题。
亲身体会到了整个过程。
有些问题是不能一下就发现的,有些问题在修改中不知不觉就发现了。
还有就是绘制程序的系统框图,这个是很重要的,当绘制好框图在写程序,条理非常清晰。
这次的课程设计培养了我独立思考问题和设计的能力,还有就是与别人讨论,当遇到某一个问题,想不出来时,在和同学或老师讨论时,他们的提示会给我很大的帮助,有些问题就这样解决了。
所以我觉得遇到问题时,与别人讨论会更快的解决。
这次是第一次用单片机来做课程设计,从这次的设计中使我认识到了自己的单片机学得不好。
这次设计的密码锁,虽然不是很好,功能也不是很多,只是基本实现了一个密码锁的功能。
但我从中学到了平时没学到的东西。
五、参考文献:
《单片机原理及接口技术》机械工业
《MCS-51单片机接口及应用实验和训练指导》机械工业
网络资料
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 三位 密码锁