单片机 密码门锁的模拟 课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用单片机模拟密码门锁
学院:土木班级:交通021班设计人:赵会凯成绩:
1.总体设计:
1)所实现功能描述:密码门锁工作过程比较简单,用户只有输入了正确的密码,才开锁,当三次输入错误以后,则延时一段时间才允许再次输入。
2)设计方案的描述:
(1) 鉴于实际条件的限制,我们只是从试验板上模拟这个过程,可以利用红绿灯的亮灭来模拟门的开关状态,用键盘来输入密码,用定时中断来延时。
(2)可以用某个特定键来进行密码输入完成后的确认,检测到这个键则进行密码比较并改变锁的状态。
2.
1)实验设备:8051单片机及其机器设备等。
2)设计方案:这个实验是单片机模拟数字密码锁的功能,程序初试设定一个默认密码1,程序运行后,如果连续输入三次密码错误,那么亮红灯,表示输入有误。如果输入正确密码,则绿灯亮,表示门开。这个程序密码默认是一位的,如果应用到实际中,会比较容易被破结,安全上有不足。初始默认密码可以通过程序中的设置键号来改变。
3. 四、主要技术问题的描述:
本题内容比较简单,主要技术点有如下几个:
(1)主程序不断检测键盘按键并记录到缓冲区,当确认键被按下后进行密码比较。
(2)用一个存储单元存储错误次数,当到达错误次数以后,则启动定时中断,并设置某个标志位使主程序不记录下面的按键,定时停止以后再纪录。
4.方案的不足:该方案只适合比较简单的密码,一旦超过三位程序将无反应;另一方面,密码轻易被识破。
5.改进方案:将程序的密码设为多位以不易识破。设置忘了密码后,可以找回的程序。例如:设置密码提示问题或提示音,修改电路原理图更复杂些。
6.
N
7,实验程序:
org 0000h ;设定初始值start: mov sp,#60h ;设置堆栈指针初值mov dptr,#0ff20h
mov a,#03h
movx @dptr,a
mov 70h,#00h
mov r1,#03h
key1: acall ks1 ;调用ks1
jnz lk1
n1: acall dir
ajmp key1
lk1: acall dir
acall dir
acall ks1
jnz lk2
acall dir
ajmp key1 ;跳转到key1
lk2: mov r2,#0feh
mov r4,#0
lk4: mov dptr,#0ff21h
mov a,r2
movx @dptr,a
inc dptr ;数据指针+1
inc dptr
movx a,@dptr
jb acc.0,lone ;判断acc.0
mov a,#0
ajmp lkp
lone: jb acc.1,ltwo
mov a,#08h
ajmp lkp
ltwo: jb acc.2,lthr
mov a,#10h
ajmp lkp
lthr: jb acc.3,lfor
mov a,#18h
sjmp lkp
lfor: jb acc.4,next
mov 70h,#19h
ajmp key1
lkp: add a,r4
mov 70h,a
push acc ;压栈保存
lk3: acall dir
acall ks1
jnz lk3
pop acc
lcall y1
ret
next: inc r4
mov a, r2
jnb acc.7,knd
rl a ;左移
mov r2,a
ajmp lk4
knd: ajmp key1
ks1: mov dptr,#0ff21h
mov a,#0
movx @dptr,a
inc dptr
inc dptr
movx a,@dptr
cpl a ;取反
anl a,#1fh
ret
dir: mov r0,#70h
mov a,@r0
anl a,#0fh
mov 30h,a
mov a,@r0
swap a ;高低位交换
anl a,#0fh
mov 31h,a
mov r0,#30h ;把30h值赋给r0
mov r3,#01h
do1: mov a,r3
mov dptr,#0ff21h
movx @dptr,a
inc dptr
mov a,@r0
add a,#0dh
movc a,@a+pc ;查表
dir1: movx @dptr,a
acall dl1
mov a,r3
rl a
jb acc.2,ld1
mov r3,a
inc r0
ajmp do1
ld1: ret
dseh: db 0f8h,99h,80h,92h,90h,82h,88h,83h
db 0f9h,0c0h,0a4h,8eh,0b0h,86h,0c6h,0a1h,0ffh,0c0h
dl1: mov r7,#2 ;延时子程序
dl: mov r6,#0ffh
dl6: djnz r6,dl6
djnz r7,dl
ret
y1: cjne a,#8h,set1 ;设置初始密码
ljmp next2
set1: dec r1
cjne r1,#0,y2
clr p1.7
lcall dlr
setb p1.7
ljmp y2
ret
next2: clr p1.6
lcall dlr
ret
y2:ljmp key1
dlr: mov r7,#250 ;延时子程序
l2:mov r6,#124
l1:djnz r6,l1
djnz r7,l2
ret
end
8自评分:80
实验心得:虽说这些程序不完全是自己的,但里面倾注了我白分之八十的心血。这之中有同学们的汗水,更摸不去的是老师们的辛勤汗水,在此我要感谢老师们给我这次机会。以前都以为这些不太重要,。但现在知道了单片机的重要性,以后一定要深入学习它,使它用于我们的生活中。