找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3530|回复: 4
收起左侧

单片机密码锁proteus仿真和汇编语言源代码 数码管显示

[复制链接]
ID:197359 发表于 2017-5-6 16:01 | 显示全部楼层 |阅读模式
最近用51单片机做了一个汇编语言的密码锁仿真,是用8位数码管显示的,希望可以帮到大家

密码锁的51单片机proteus仿真原理图:
0.png
0.png

单片机汇编语言源程序:
  1.         LED_BIT_1 EQU 30H
  2.         LED_BIT_2 EQU 31H
  3.         LED_BIT_3 EQU 32H
  4.         LED_BIT_4 EQU 33H
  5.         LED_BIT_5 EQU 34H
  6.         LED_BIT_6 EQU 35H
  7.         LED_BIT_7 EQU 36H
  8.         LED_BIT_8 EQU 37H
  9. WORD_1 EQU 38H
  10. WORD_2 EQU 39H
  11. WORD_3 EQU 3AH
  12. WORD_4 EQU 3BH
  13. WORD_5 EQU 3CH
  14. WORD_6 EQU 3DH
  15. KEY_1 EQU 3EH
  16. KEY_2 EQU 3FH
  17. KEY_3 EQU 40H
  18. KEY_4 EQU 41H
  19. KEY_5 EQU 42H
  20. KEY_6 EQU 43H
  21. CNT_A EQU 44H
  22. CNT_B EQU 45H
  23. KEY_CNT EQU 46H
  24. LINE EQU 47H
  25. ROW EQU 48H
  26. VAL EQU 49H
  27. ORG 00H
  28. SJMP START
  29. ORG 0BH
  30. LJMP INT_T0
  31. START: MOV CNT_A,#00H
  32.             MOV CNT_B,#00H
  33.             MOV KEY_CNT,#00H
  34.             MOV LINE,#00H
  35.             MOV ROW,#00H
  36.             MOV VAL,#00H
  37.             SETB P1.0
  38.             MOV LED_BIT_1,#00H
  39.             MOV LED_BIT_2,#00H
  40.             MOV LED_BIT_3,#00H
  41.             MOV LED_BIT_4,#00H
  42.             MOV LED_BIT_5,#00H
  43.             MOV LED_BIT_6,#00H
  44.             MOV LED_BIT_7,#79H
  45.             MOV LED_BIT_8,#73H
  46.             MOV KEY_1,#00H
  47.             MOV KEY_2,#00H
  48.             MOV KEY_3,#00H
  49.             MOV KEY_4,#00H
  50.             MOV KEY_5,#00H
  51.             MOV KEY_6,#00H
  52.             MOV WORD_1,#6
  53.             MOV WORD_2,#5
  54.             MOV WORD_3,#4
  55.             MOV WORD_4,#3
  56.             MOV WORD_5,#2
  57.             MOV WORD_6,#1
  58.             MOV TMOD,#01H
  59.             MOV TH0,#(65536-700)/256
  60.             MOV TL0,#(65536-700)/256
  61.             MOV IE,#82H
  62. A0:       LCALL DISP


  63. LSCAN: MOV P3,#0F0H
  64. L1:          JNB P3.0,L2
  65.              LCALL DLY_S
  66.              JNB P3.0,L2
  67.              MOV LINE,#00H
  68.              LJMP RSCAN
  69. L2:        JNB P3.1,L3
  70.              LCALL DLY_S
  71.              JNB P3.1,L3
  72.              MOV LINE,#01H
  73.              LJMP RSCAN
  74. L3:        JNB P3.2,L4
  75.              LCALL DLY_S
  76.              JNB P3.2,L4
  77.              MOV LINE,#02H
  78.              LJMP RSCAN
  79. L4:        JNB P3.3,A0
  80.              LCALL DLY_S
  81.              JNB P3.3,A0
  82.              MOV LINE,#03H

  83.                
  84.                 RSCAN: MOV P3,#0FH
  85.                 C1:         JNB P3.4,C2
  86.                              MOV ROW,#00H
  87.                              LJMP CALCU
  88.                 C2:        JNB P3.5,C3
  89.                              MOV ROW,#01H
  90.                              LJMP CALCU
  91.                 C3:        JNB P3.6,C1
  92.                              MOV ROW,#02H
  93.                 CALCU: MOV A,LINE
  94.                              MOV B,#03H
  95.                              MUL AB
  96.                              ADD A,ROW
  97.                              MOV VAL,A
  98.                 CJNE A,#0AH,J1
  99.                      MOV R1,KEY_CNT
  100.                 CJNE R1,#00H,J2
  101.                 LCALL ALARM_1
  102.                 LJMP START



  103. J2:          DEC KEY_CNT

  104.       LCALL SHIFTL2
  105.    





  106. W00: LCALL DISP
  107.            MOV A,P3
  108.            CJNE A,#0FH,W01
  109.            LJMP A0
  110. W01:   MOV A,P3
  111.            CJNE A,#0F0H,W02
  112.            LJMP A0
  113. W02:   SJMP W00
  114. J1:       MOV A,VAL
  115.            CJNE A,#0BH,J3
  116.            MOV R1,KEY_CNT
  117.            CJNE R1,#06H,J4
  118.            MOV A,WORD_1
  119.            CJNE A,3EH,J5
  120.            MOV A,WORD_2
  121.            CJNE A,3FH,J5
  122.            MOV A,WORD_3
  123.            CJNE A,40H,J5
  124.            MOV A,WORD_4
  125.            CJNE A,41H,J5
  126.            MOV A,WORD_5
  127.            CJNE A,42H,J5
  128.            MOV A,WORD_6
  129.            CJNE A,43H,J5
  130.            CLR P1.0
  131.            LCALL DLY_L
  132.            LJMP FINI
  133. J5:       LCALL ALARM_2
  134.            LJMP START
  135. J4:       LCALL ALARM_1
  136.            LJMP START
  137. J3:       INC KEY_CNT
  138.            MOV A,KEY_CNT
  139.            CJNE A,#07H,K1
  140.            LCALL ALARM_1
  141. W10:   LCALL DISP
  142.            MOV A,P3
  143.            CJNE A,#0FH,W11
  144.            LJMP START
  145. W11:   MOV A,P3
  146.            CJNE A,#0F0H,W12
  147.            LJMP START
  148. W12:   SJMP W10
  149.            LJMP START
  150.            LJMP START
  151. K1:      LCALL SHIFTL
  152. W20:   LCALL DISP
  153.            MOV A,P3
  154.            CJNE A,#0FH,W21
  155.            LJMP A0
  156. W21:   MOV A,P3
  157.            CJNE A,#0F0H,W22
  158.            LJMP A0
  159. W22:   SJMP W20
  160.            LJMP A0
  161. ALARM_1:SETB TR0
  162.                  JB TR0,$
  163.                  RET
  164. ALARM_2: SETB TR0
  165.          JB TR0,$
  166.          LCALL DLY_L
  167.   RET

  168. INT_T0:CPL P1.7
  169. MOV TH0,#100
  170. MOV TL0,#253
  171. INC CNT_A
  172. MOV R1,CNT_A
  173. CJNE R1,#30,RETUNE
  174. MOV CNT_A,#00H
  175. INC CNT_B
  176. MOV R1,CNT_B
  177. CJNE R1,#20,RETUNE
  178. MOV CNT_A,#00H
  179. MOV CNT_B,#00H
  180. CLR TR0
  181. RETUNE:RETI


  182. SHIFTL: MOV LED_BIT_6,LED_BIT_5
  183.         MOV LED_BIT_5,LED_BIT_4
  184.         MOV LED_BIT_4,LED_BIT_3
  185.                 MOV LED_BIT_3,LED_BIT_2
  186.         MOV LED_BIT_2,LED_BIT_1
  187.         MOV LED_BIT_1,#40H
  188.         MOV KEY_6,KEY_5
  189.         MOV KEY_5,KEY_4
  190.         MOV KEY_4,KEY_3
  191.         MOV KEY_3,KEY_2
  192.         MOV KEY_2,KEY_1
  193.         MOV KEY_1,VAL
  194. RET




  195.         SHIFTL2:

  196.                 MOV LED_BIT_1,LED_BIT_2
  197.                 MOV LED_BIT_2,LED_BIT_3
  198.                 MOV LED_BIT_3,LED_BIT_4
  199.                 MOV LED_BIT_4,LED_BIT_5
  200.                 MOV LED_BIT_5,LED_BIT_6
  201.                 MOV LED_BIT_6,#00H
  202.                 MOV KEY_1,KEY_2
  203.                 MOV KEY_2,KEY_3
  204.                 MOV KEY_3,KEY_4
  205.                 MOV KEY_4,KEY_5
  206.                 MOV KEY_5,KEY_6
  207.                 MOV KEY_6,#00H

  208.         RET


  209. DISP:CLR P2.7
  210.      MOV P0,LED_BIT_8
  211.      LCALL DLY_S
  212.      SETB P2.7
  213.      CLR P2.6
  214.      MOV P0,LED_BIT_7
  215.      LCALL DLY_S
  216.      SETB P2.6
  217.      CLR P2.5
  218.      MOV P0,LED_BIT_6
  219.      LCALL DLY_S
  220.      SETB P2.5
  221.      CLR P2.4
  222.      MOV P0,LED_BIT_5
  223.      LCALL DLY_S
  224.      SETB P2.4
  225.      CLR P2.3
  226.      MOV P0,LED_BIT_4
  227.      LCALL DLY_S
  228.      SETB P2.3
  229.      CLR P2.2
  230.      MOV P0,LED_BIT_3
  231.      LCALL DLY_S
  232.      SETB P2.2
  233.      CLR P2.1
  234.      MOV P0,LED_BIT_2
  235.      LCALL DLY_S
  236.      SETB P2.1
  237.      CLR P2.0
  238.      MOV P0,LED_BIT_1
  239.      LCALL DLY_S
  240.      SETB P2.0
  241.      RET
  242.         DLY_S:MOV R6,#10
  243.         D1:MOV R7,#250
  244.         DJNZ R7,$
  245.         DJNZ R6,D1


  246. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料下载:
密码锁.zip (65.55 KB, 下载次数: 70)
回复

使用道具 举报

ID:197359 发表于 2017-5-6 16:02 | 显示全部楼层
以下8个字节存放8位数码管的段码 1.        LED_BIT_1 EQU 30H 2.        LED_BIT_2 EQU 31H 3.        LED_BIT_3 EQU 32H 4.        LED_BIT_4 EQU 33H 5.        LED_BIT_5 EQU 34H 6.        LED_BIT_6 EQU 35H 7.        LED_BIT_7 EQU 36H 8.        LED_BIT_8 EQU 37H 存放初始密码 9.        WORD_1 EQU 38H 10.        WORD_2 EQU 39H 11.        WORD_3 EQU 3AH 12.        WORD_4 EQU 3BH 13.        WORD_5 EQU 3CH 14.        WORD_6 EQU 3DH 存放用户输入的6位密码 15.        KEY_1 EQU 3EH 16.        KEY_2 EQU 3FH 17.        KEY_3 EQU 40H 18.        KEY_4 EQU 41H 19.        KEY_5 EQU 42H 20.        KEY_6 EQU 43H ***** 21.        CNT_A EQU 44H 22.        CNT_B EQU 45H 23.        KEY_CNT EQU 46H  已输出的密码位数 24.        LINE EQU 47H      按键行号 25.        ROW EQU 48H      按键列号 26.        VAL EQU 49H       键值 ***** 27.        ORG 00H 28.        SJMP START 29.        ORG 0BH 30.        LJMP INT_T0 31.        START: MOV CNT_A,#00H 32.               MOV CNT_B,#00H 33.               MOV KEY_CNT,#00H 34.               MOV LINE,#00H 35.               MOV ROW,#00H 36.                    MOV VAL,#00H 37.                    SETB P1.0 38.                    MOV LED_BIT_1,#00H 39.                    MOV LED_BIT_2,#00H 40.                    MOV LED_BIT_3,#00H 41.                    MOV LED_BIT_4,#00H 42.                    MOV LED_BIT_5,#00H 43.                    MOV LED_BIT_6,#00H 44.                    MOV LED_BIT_7,#79H 45.                    MOV LED_BIT_8,#73H 46.                    MOV KEY_1,#00H 47.                    MOV KEY_2,#00H 48.                    MOV KEY_3,#00H 49.                    MOV KEY_4,#00H 50.                    MOV KEY_5,#00H 51.                    MOV KEY_6,#00H 52.                    MOV WORD_1,#6 53.                    MOV WORD_2,#5 54.                    MOV WORD_3,#4 55.                    MOV WORD_4,#3 56.                    MOV WORD_5,#2 57.                    MOV WORD_6,#1 58.                    MOV TMOD,#01H 59.                    MOV TH0,#(65536-700)/256 60.                    MOV TL0,#(65536-700)/256 61.                    MOV IE,#82H 62.        A0:       LCALL DISP 63.        LSCAN: MOV P3,#0F0H 64.        L1:        JNB P3.0,L2 65.                     LCALL DLY_S 66.                     JNB P3.0,L2 67.                     MOV LINE,#00H 68.                     LJMP RSCAN 69.        L2:        JNB P3.1,L3 70.                     LCALL DLY_S 71.                     JNB P3.1,L3 72.                     MOV LINE,#01H 73.                     LJMP RSCAN 74.        L3:        JNB P3.2,L4 75.                     LCALL DLY_S 76.                     JNB P3.2,L4 77.                     MOV LINE,#02H 78.                     LJMP RSCAN 79.        L4:        JNB P3.3,A0 80.                     LCALL DLY_S 81.                     JNB P3.3,A0 82.                     MOV LINE,#03H 83.        RSCAN: MOV P3,#0FH 84.        C1:        JNB P3.4,C2 85.                     MOV ROW,#00H 86.                     LJMP CALCU 87.        C2:        JNB P3.5,C3 88.                     MOV ROW,#01H 89.                     LJMP CALCU 90.        C3:        JNB P3.6,C1 91.                     MOV ROW,#02H 92.        CALCU: MOV A,LINE 93.                     MOV B,#03H 94.                     MUL AB 95.                     ADD A,ROW 96.                     MOV VAL,A 97.        CJNE A,#0AH,J1 98.        MOV R1,KEY_CNT 99.        CJNE R1,#00H,J2 100.        LCALL ALARM_1 101.        LJMP START 102.        J2: LCALL SHIFTL 103.             DEC KEY_CNT 104.        W00: LCALL DISP 105.                   MOV A,P3 106.                   CJNE A,#0FH,W01 107.                   LJMP A0 108.        W01:   MOV A,P3 109.                   CJNE A,#0F0H,W02 110.                   LJMP A0 111.        W02:   SJMP W00 112.        J1:       MOV A,VAL 113.                   CJNE A,#0BH,J3  判断是否为ENTER键 114.                   MOV R1,KEY_CNT 115.                   CJNE R1,#06H,J4 116.                   MOV A,WORD_1  比较密码 117.                   CJNE A,3EH,J5 118.                   MOV A,WORD_2 119.                   CJNE A,3FH,J5 120.                   MOV A,WORD_3 121.                   CJNE A,40H,J5 122.                   MOV A,WORD_4 123.                   CJNE A,41H,J5 124.                   MOV A,WORD_5 125.                   CJNE A,42H,J5 126.                   MOV A,WORD_6 127.                   CJNE A,43H,J5 128.                   CLR P1.0 129.                   LCALL DLY_L 130.                   LJMP FINI 131.        J5:       LCALL ALARM_2 132.                   LJMP START 133.        J4:       LCALL ALARM_1 134.                   LJMP START 135.        J3:       INC KEY_CNT 136.                   MOV A,KEY_CNT 137.                   CJNE A,#07H,K1 138.                   LCALL ALARM_1 139.        W10:   LCALL DISP 140.                   MOV A,P3 141.                   CJNE A,#0FH,W11 142.                   LJMP START 143.        W11:   MOV A,P3 144.                   CJNE A,#0F0H,W12 145.                   LJMP START 146.        W12:   SJMP W10 147.                   LJMP START 148.                   LJMP START 149.        K1:      LCALL SHIFTL 150.        W20:   LCALL DISP 151.                   MOV A,P3 152.                   CJNE A,#0FH,W21 153.                   LJMP A0 154.        W21:   MOV A,P3 155.                   CJNE A,#0F0H,W22 156.                   LJMP A0 157.        W22:   SJMP W20 158.                   LJMP A0 159.        ALARM_1; SETB TR0 160.                         JB TR0,$ 161.                         LCALL DLY_L 162.                         RET 163.        INT_T0:CPL P1.7 164.        MOV TH0,#100 165.        MOV TL0,#253 166.        INC CNT_A 167.        MOV R1,CNT_A 168.        CJNE R1,#30,RETUNE 169.        MOV CNT_A,#00H 170.        INC CNT_B 171.        MOV R1,CNT_B 172.        CJNE R1,#20,RETUNE 173.        MOV CNT_A,#00H 174.        MOV CNT_B,#00H 175.        CLR TR0 176.        RETUNE:RETI 177.        SHIFTL: MOV LED_BIT_6,LED_BIT_5 178.                MOV LED_BIT_5,LED_BIT_4 179.                MOV LED_BIT_4,LED_BIT_3 180.                MOV LED_BIT_2,LED_BIT_1 181.                MOV LED_BIT_1,#40H 182.                MOV KEY_6,KEY_5 183.                MOV KEY_5,KEY_4 184.                MOV KEY_4,KEY_3 185.                MOV KEY_3,KEY_2 186.                MOV KEY_2,KEY_1 187.                MOV KEY_1,VAL 188.        RET 189.        SHIFTL: MOV LED_BIT_1,LED_BIT_2 190.                MOV LED_BIT_2,LED_BIT_3 191.                MOV LED_BIT_3,LED_BIT_4 192.                MOV LED_BIT_4,LED_BIT_5 193.                MOV LED_BIT_5,LED_BIT_6 194.                MOV LED_BIT_6,#00H 195.                MOV KEY_1,KEY_2 196.                MOV KEY_2,KEY_3 197.                MOV KEY_3,KEY_4 198.                MOV KEY_4,KEY_5 199.                MOV KEY_5,KEY_6 200.                MOV KEY_6,#00H 201.        RET 202.        DISP:CLR P2.7 203.             MOV P0,LED_BIT_8 204.             LCALL DLY_S 205.             SETB P2.7 206.             CLR P2.6 207.             MOV P0,LED_BIT_7 208.             LCALL DLY_S 209.             SETB P2.6 210.             CLR P2.5 211.             MOV P0,LED_BIT_6 212.             LCALL DLY_S 213.             SETB P2.5 214.             CLR P2.4 215.             MOV P0,LED_BIT_5 216.             LCALL DLY_S 217.             SETB P2.4 218.             CLR P2.3 219.             MOV P0,LED_BIT_4 220.             LCALL DLY_S 221.             SETB P2.3 222.             CLR P2.2 223.             MOV P0,LED_BIT_3 224.             LCALL DLY_S 225.             SETB P2.2 226.             CLR P2.1 227.             MOV P0,LED_BIT_2 228.             LCALL DLY_S 229.             SETB P2.1 230.             CLR P2.0 231.             MOV P0,LED_BIT_1 232.             LCALL DLY_S 233.             SETB P2.0 234.             RET 235.        DLY_S:MOV R6,#10 236.        D1:MOV R7,#250 237.        DJNZ R7,$ 238.        DJNZ R6,D1 239.        RET 240.        DLY_L:MOV R5,#100 241.        D2:MOV R6,#100 242.        D3:MOV R7,#248 243.        DJNE R7,$ 244.        DJNE R6,D3 245.        DJNE R5,D2 246.        RET 247.        FINI:NOP 248.        END
回复

使用道具 举报

ID:106195 发表于 2017-9-1 18:39 | 显示全部楼层
感谢分享,支持一下。
回复

使用道具 举报

ID:102963 发表于 2020-12-25 12:53 | 显示全部楼层
落叶dwed 发表于 2017-5-6 16:02
以下8个字节存放8位数码管的段码 1.        LED_BIT_1 EQU 30H 2.        LED_BIT_2 EQU 31H 3.        LED_BIT_3 EQU 32H 4.        LED ...

这个也太乱了,乱到没法看!
回复

使用道具 举报

ID:1004296 发表于 2022-2-8 00:10 来自手机 | 显示全部楼层
请问这是几位密码呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表