找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1911|回复: 5
打印 上一主题 下一主题
收起左侧

小白求救!为啥在proteus上无法仿真出单片机密码锁结果,谢谢!

[复制链接]
跳转到指定楼层
楼主
150黑币
项目:电子密码锁
可以设置6位密码,密码通过键盘输入,若密码正确,则开锁。要求密码可以由用户自己设定,锁打开后可以修改密码。修改之前必须再次输入密码,输入新密码的时候确认两次。如果密码输入错误,报警。

我按照教材上做的proteus仿真如图:(详情见附件中的图片)

但是仿真开始后电子显示屏并没有显示数字,按按键后也没有反应,不知道是啥问题。程序和仿真图都是按照教材画的,教材是《单片机实践教程》(孙明)。谢谢!

程序和仿真也放在附件里了。比较着急,求解答,谢谢。

单片机程序如下:(其实好多内容都是重复的)
  1. ;八位数码管的段码
  2. LED_BIT_1 EQU 30H
  3. LED_BIT_2 EQU 31H
  4. LED_BIT_3 EQU 32H
  5. LED_BIT_4 EQU 33H
  6. LED_BIT_5 EQU 34H
  7. LED_BIT_6 EQU 35H
  8. LED_BIT_7 EQU 36H
  9. LED_BIT_8 EQU 37H

  10. ;初始的6位密码
  11. WORD_1 EQU 38H
  12. WORD_2 EQU 39H
  13. WORD_3 EQU 3AH
  14. WORD_4 EQU 3BH
  15. WORD_5 EQU 3CH
  16. WORD_6 EQU 3DH

  17. ;输入的6位密码
  18. KEY_1 EQU 3EH
  19. KEY_2 EQU 3FH
  20. KEY_3 EQU 40H
  21. KEY_4 EQU 41H
  22. KEY_5 EQU 42H
  23. KEY_6 EQU 43H

  24. ;***************************************
  25. CNT_A EQU 44H
  26. CNT_B EQU 45H
  27. KEY_CNT EQU 46H
  28. LINE EQU 47H
  29. ROW EQU 48H
  30. VAL EQU 49H
  31. ;***************************************

  32. ;初始化程序,包括数据存储空间初始化,设置初始密码
  33.                 ORG 00H
  34.                 SJMP START
  35.                 ORG 0BH
  36.                 LJMP INT_T0
  37. START:        MOV CNT_A,#00H
  38.                 MOV CNT_B,#00H
  39.                 MOV KEY_CNT,#00H
  40.                 MOV LINE,#00H
  41.                 MOV ROW,#00H
  42.                 MOV VAL,#00H
  43.                 SETB P1.0
  44.                 MOV LED_BIT_1,#00H
  45.                 MOV LED_BIT_2,#00H
  46.                 MOV LED_BIT_3,#00H
  47.                 MOV LED_BIT_4,#00H
  48.                 MOV LED_BIT_5,#00H
  49.                 MOV LED_BIT_6,#00H
  50.                 MOV LED_BIT_7,#79H
  51.                 MOV LED_BIT_8,#73H

  52.                 MOV KEY_1,#00H
  53.                 MOV KEY_2,#00H
  54.                 MOV KEY_3,#00H
  55.                 MOV KEY_4,#00H
  56.                 MOV KEY_5,#00H
  57.                 MOV KEY_6,#00H

  58.                 MOV WORD_1,#6
  59.                 MOV WORD_2,#5
  60.                 MOV WORD_3,#4
  61.                 MOV WORD_4,#3
  62.                 MOV WORD_5,#2
  63.                 MOV WORD_6,#1

  64.                 MOV TMOD,#01H
  65.                 MOV TH0,#(65536-700)/256
  66.                 MOV TL0,#(65536-700) MOD 256
  67.                 MOV IE,#82H

  68. A0:                LCALL DISP

  69. ;****************************************
  70. LSCAN:        MOV P3,#0F0H
  71. L1:                JNB P3.0,L2
  72.                 LCALL DLY_S
  73.                 JNB P3.0,L2
  74.                 MOV LINE,#00H
  75.                 LJMP RSCAN
  76. L2:                JNB P3.1,L3
  77.                 LCALL DLY_S
  78.                 JNB P3.1,L3
  79.                 MOV LINE,#01H
  80.                 LJMP RSCAN
  81. L3:                JNB P3.2,L4
  82.                 LCALL DLY_S
  83.                 JNB P3.2,L4
  84.                 MOV LINE,#02H
  85.                 LJMP RSCAN
  86. L4:                JNB P3.3,A0
  87.                 LCALL DLY_S
  88.                 JNB P3.3,A0
  89.                 MOV LINE,#03H

  90. RSCAN:        MOV P3,#0FH
  91. C1:                JNB P3.4,C2
  92.                 MOV ROW,#00H
  93.                 LJMP CALCU
  94. C2:                JNB P3.5,C3
  95.                 MOV ROW,#01H
  96.                 LJMP CALCU
  97. C3:                JNB P3.6,C1
  98.                 MOV ROW,#02H

  99. CALCU:        MOV A,LINE
  100.                 MOV B,#03H
  101.                 MUL AB
  102.                 ADD A,ROW
  103.                 MOV VAL,A

  104. ;******************************************
  105. ;以下为按键处理程序,对不同的按键做出响应
  106.                 CJNE A,#0AH,J1
  107.                 MOV R1,KEY_CNT
  108.                 CJNE R1,#00H,J2
  109.                 LCALL ALARM_1

  110.                 LJMP START
  111. J2:                LCALL SHIFTR
  112.                 DEC KEY_CNT

  113. W00:        LCALL DISP                        ;等待按键抬起
  114.                 MOV A,P3
  115.                 CJNE A,#0FH,W01
  116.                 LJMP A0
  117. W01:        MOV A,P3
  118.                 CJNE A,#0F0H,W02
  119.                 LJMP A0
  120. W02:        SJMP W00

  121. J1:                MOV A,VAL
  122.                 CJNE A,#0BH,J3                ;判断是否为ENTER按键
  123.                 MOV R1,KEY_CNT
  124.                 CJNE R1,#06H,J4

  125.                 MOV A,WORD_1
  126.                 CJNE A,3EH,J5
  127.                 MOV A,WORD_2
  128.                 CJNE A,3FH,J5
  129.                 MOV A,WORD_3
  130.                 CJNE A,40H,J5
  131.                 MOV A,WORD_4
  132.                 CJNE A,41H,J5
  133.                 MOV A,WORD_5
  134.                 CJNE A,42H,J5
  135.                 MOV A,WORD_6
  136.                 CJNE A,43H,J5

  137.                 CLR P1.0
  138.                 LCALL DLY_L
  139.                 LJMP FINI

  140. J5:                LCALL ALARM_2
  141.                 LJMP START

  142. J4:                LCALL ALARM_1
  143.                 LJMP START

  144. J3:                INC KEY_CNT                        ;按下数字键
  145.                 MOV A,KEY_CNT
  146.                 CJNE A,#07H,K1
  147.                 LCALL ALARM_1

  148. W10:        LCALL DISP                        ;等待按键抬起
  149.                 MOV A,P3
  150.                 CJNE A,#0FH,W11
  151.                 LCALL START
  152. W11:        MOV A,P3
  153.                 CJNE A,#0F0H,W12
  154.                 LCALL START
  155. W12:        SJMP W10
  156.                 LJMP START

  157.                 LJMP START
  158. K1:                LCALL SHIFTL

  159. W20:        LCALL DISP
  160.                 MOV A,P3
  161.                 CJNE A,#0FH,W21
  162.                 LJMP A0
  163. W21:        MOV A,P3
  164.                 CJNE A,#0F0H,W22
  165.                 LJMP A0
  166. W22:        SJMP W20
  167.                 LJMP A0

  168. ALARM_1:SETB TR0
  169.                 JB TR0,$
  170.                 RET
  171. ALARM_2:SETB TR0
  172.                 JB TR0,$
  173.                 LCALL DLY_L
  174.                 RET

  175. ;*******************************************
  176. ;定时器中断服务程序,用于声音报警
  177. INT_T0:
  178.                 CPL P1.7
  179.                 MOV TH0,#(65536-700)/256
  180.                 MOV TL0,#(65536-700) MOD 256
  181.                 INC CNT_A
  182.                 MOV R1,CNT_A
  183.                 CJNE R1,#30,RETUNE
  184.                 MOV CNT_A,#00H
  185.                 INC CNT_B
  186.                 MOV R1,CNT_B
  187.                 CJNE R1,#20,RETUNE
  188.                 MOV CNT_A,#00H
  189.                 MOV CNT_B,#00H
  190.                 CLR TR0
  191. RETUNE: RETI

  192. ;*******************************************
  193. ;段码,输入密码左移子程序
  194. SHIFTL:        MOV LED_BIT_6,LED_BIT_5
  195.                 MOV LED_BIT_5,LED_BIT_4
  196.                 MOV LED_BIT_4,LED_BIT_3
  197.                 MOV LED_BIT_3,LED_BIT_2
  198.                 MOV LED_BIT_2,LED_BIT_1
  199.                 MOV LED_BIT_1,#40H
  200.                 MOV KEY_6,KEY_5
  201.                 MOV KEY_5,KEY_4
  202.                 MOV KEY_4,KEY_3
  203.                 MOV KEY_3,KEY_2
  204.                 MOV KEY_2,KEY_1
  205.                 MOV KEY_1,VAL
  206.                 RET

  207. ;*******************************************
  208. ;段码,输入密码右移子程序
  209. SHIFTR:        MOV LED_BIT_1,LED_BIT_2
  210.                 MOV LED_BIT_2,LED_BIT_3
  211.                 MOV LED_BIT_3,LED_BIT_4
  212.                 MOV LED_BIT_4,LED_BIT_5
  213.                 MOV LED_BIT_5,LED_BIT_6
  214.                 MOV LED_BIT_6,#00H
  215.                 MOV KEY_1,KEY_2
  216.                 MOV KEY_2,KEY_3
  217.                 MOV KEY_3,KEY_4
  218.                 MOV KEY_4,KEY_5
  219.                 MOV KEY_5,KEY_6
  220.                 MOV KEY_6,#00H
  221.                 RET

  222. ;*******************************************
  223. ;以下为数码显示子程序
  224. DISP:        CLR P2.7
  225.                 MOV P0,LED_BIT_8
  226.                 LCALL DLY_S
  227.                 SETB P2.7
  228.                
  229.                 CLR P2.6
  230.                 MOV P0,LED_BIT_7
  231.                 LCALL DLY_S
  232.                 SETB P2.6

  233.                 CLR P2.5
  234.                 MOV P0,LED_BIT_6
  235.                 LCALL DLY_S
  236.                 SETB P2.5

  237.                 CLR P2.4
  238.                 MOV P0,LED_BIT_5
  239.                 LCALL DLY_S
  240.                 SETB P2.4

  241.                 CLR P2.3
  242.                 MOV P0,LED_BIT_4
  243.                 LCALL DLY_S
  244.                 SETB P2.3

  245.                 CLR P2.2
  246.                 MOV P0,LED_BIT_3
  247.                 LCALL DLY_S
  248.                 SETB P2.2

  249.                 CLR P2.1
  250.                 MOV P0,LED_BIT_2
  251.                 LCALL DLY_S
  252.                 SETB P2.1

  253.                 CLR P2.0
  254.                 MOV P0,LED_BIT_1
  255.                 LCALL DLY_S
  256.                 SETB P2.0

  257.                 RET

  258. ;*******************************************
  259. DLY_S:        MOV R6,#10
  260. D1:                MOV R7,#250
  261.                 DJNZ R7,$
  262.                 DJNZ R6,D1
  263.                 RET

  264. DLY_L:        MOV R5,#100
  265. D2:                MOV R6,#100
  266. D3:                MOV R7,#248
  267.                 DJNZ R7,$
  268.                 DJNZ R6,D3
  269.                 DJNZ R5,D2
  270.                 RET
  271. FINI:        NOP
  272.                 END
复制代码



程序.zip

56.19 KB, 下载次数: 7

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:584814 发表于 2019-12-23 15:50 | 只看该作者
A、B口接反了罢
回复

使用道具 举报

板凳
ID:584814 发表于 2019-12-23 16:04 | 只看该作者
http://www.51hei.com/bbs/dpj-80590-1.html
单片机通过74LS245驱动数码管显示 Proteus仿真原理图和源代码
这个是现成的,只要加个输入和修改密码就可以。话说汇编太高大上看不懂
回复

使用道具 举报

地板
ID:584814 发表于 2019-12-24 12:21 | 只看该作者
忍不住又看了一下,感觉AT89C51又不是STC的芯片,不画晶振什么的可以正常工作么 ?
回复

使用道具 举报

5#
ID:149389 发表于 2019-12-24 14:38 | 只看该作者
数码管选用错误!
数码管位选,低电平有效,所有要使用共阴极数码管7SEG-MPX8-CC-BLUE
CA 共阳极 Common Anode
CC 共阴极 Common Cathode


回复

使用道具 举报

6#
ID:627214 发表于 2019-12-28 09:49 | 只看该作者
用汇编的都是大佬
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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