密码门锁
MCS—51单片机课程设计
用单片机模拟密码门锁
班级:    交通C023
  乔兴月
  026944
指导老师:朱怀忠
                                                  郑爽个人资料个人资料
一、课程设计目的
提出了一种能防止多次试探密码的基于单片机的密码门锁模拟设计方案,给出了该单片机密码锁的软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、汇编语言源程序及详细注释等内容。 
    进行课程设计是加强实践,提高动手能力的重要环节,是将所学理论知识与实际联系起来的桥梁和纽带。
    通过课程设计,掌握单片机开发的过程,为将来的实际工作打下一定基础。
二、课程设计内容
1、课程设计的题目及简介
题目:用单片机模拟密码门锁
简介:我们都有自己的住所,为了保证自己的隐私和财产不受侵害,各家各户都装有防盗门,但是个头硕大的钥匙却困扰着住户。经常有人因为不到钥匙进不了家,一种新的锁的产生解决了这个问题。密码门锁-只需要轻松的按键就可打开房门,且不容易泄露密码。
2、设计说明
(1) 用单片机模拟密码门锁原理
密码门锁工作过程比较简单,用户只有输入了正确的密码,才开锁,当三次输入错误以后,则延时一段时间才允许再次输入。
(2) 单片机主板系统原理图及说明
1. 于实际条件的限制,我们只是从试验板上模拟这个过程,可以利用红绿灯的亮灭来模拟门的开关状态,用键盘来输入密码,用定时中断来延时。
2.可以用某个特定键来进行密码输入完成后的确认,检测到这个键则进行密码比较并改变锁的状态。
3)主要技术问题的描述:
  本题内容比较简单,主要技术点有如下几个:
1.主程序不断检测键盘按键并记录到缓冲区,当确认键被按下后进行密码比较。
2. 用一个存储单元存储错误次数,当到达错误次数以后,则启动定时中断,并设置某个标志位使主程序不记录下面的按键,定时停止以后再纪录。
大一学年总结
3. 由于考虑到模拟的失真性,我将密码设定成一位,便于模拟。如有更高的要求可以再在主程序上添加子程序
33课程设计的程序设计
1)硬件连线图
本程序设计主要的是MCS-51学习机上的键盘,在本程序中连线不复杂,只用到2根输出线
所以恕不能给出。
2 )程序流程图:
   
    Y
    N
    N
           
    Y
3)程序设计:
参考源程序 
org 0000h
start: mov sp,#60h
        mov dptr,#0ff20h
        mov a,#03h
        movx @dptr,a
        mov 70h,#00h
mov r1,#03h
key1: acall ks1      键盘扫描子程序
      jnz lk1
  n1: acall dir
      ajmp key1
  lk1: acall dir
      acall dir
      acall ks1
      jnz lk2
      acall dir
      ajmp key1
  lk2: mov r2,#0feh
      mov r4,#0
  lk4: mov dptr,#0ff21h
      mov a,r2
      movx @dptr,a
      inc dptr
      inc dptr
      movx a,@dptr
      jb acc.0,lone
      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
      mov r3,#01h
qq消息提示音  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,#1h,set1    设定密码区
ljmp next2
set1: dec r1
cjne r1,#0,y2
clr p1.7              3次错误亮
lcall dlr
setb p1.7              延时完毕时灭
ljmp y2                重新开始输入密码再见2020你好2021作文
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
三、课程设计总结
  程序设计的不足:虽然这个程序执行的很好,而且可以设定密码值,满足了创新要求。但是密码的位数少,不利于投入到实际应用中,延时的时间也不很长。
  解决办法:添加子程序使密码的位数增多,修改延时子程序,延长延时时间。通过这两项改进,可以增强本设计的实用性。
总结:通过短短一周的课程实习,我不仅增加了很多关于MCS-51的知识,更重要把所学的知识用于实践,在实践中感受知识,掌握知识。掌握了一种由8031单片机模拟密码门锁的程序设计
更多的了解了单片机的键盘,中断,比较转移,延时、控制码等知识。
四、参考文献
MCS-51带龙字成语系列单片机实用接口技术》
北京航空航天大学出版社19938月  李华 编著

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。