找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2404|回复: 2
收起左侧

PIC单片机proteus仿真数码管乱码

[复制链接]
ID:833718 发表于 2020-12-26 16:12 | 显示全部楼层 |阅读模式
本帖最后由 yuri141 于 2020-12-26 16:38 编辑

我在进行一个秒表功能电路的仿真时,发现他的数码管不能正常显示数字,乱码,各位大佬帮帮忙指点一下啊!!!谢谢
附上我的仿真文件和汇编语言文件
51hei截图_20201226160953.png
  1. INCLUDE "C:\Program Files (x86)\Microchip\MPASM Suite\p16f877.inc"
  2. ;----------------------------------------------------
  3. S0 EQU 20H
  4. S1 EQU 21H
  5. S2 EQU 22H;
  6. S3 EQU 23H;
  7. SREG EQU 24H;
  8. LEDF EQU 25H;
  9. XW_TEMP EQU 26H;
  10. XHOSTS EQU 27H;
  11. DEYH EQU 28H;
  12. DEYL EQU 29H;
  13. HOSTF EQU 30H;
  14. JIANR EQU 31H;
  15. TEMP EQU 32H;
  16. ORG 0000H;
  17. NOP
  18. GOTO MAIN;
  19. ORG 0004H;
  20. GOTO CLKINT
  21. ORG 0010H
  22. ;---------------------------------------------------
  23. CONVERT;不带小数点的共阳极数码表
  24.         ADDWF        PCL,1;
  25.         RETLW        0XC0;0
  26.         RETLW   0XF9;1
  27.         RETLW   0XA4;2
  28.         RETLW   0XB0;3
  29.         RETLW   0X99;4
  30.         RETLW   0X92;5
  31.         RETLW   0X82;6
  32.         RETLW   0XD8;7
  33.         RETLW   0X80
  34.         RETLW   0X90
  35.         RETLW   0XBF
  36.         RETLW   0XFF
  37.         RETURN
  38. CONVERT2;带小数点的共阳极码表
  39.         ADDWF   PCL,1
  40.         RETLW        0X40;
  41.         RETLW   0X79
  42.         RETLW   0X24
  43.         RETLW   0X30
  44.         RETLW   0X19
  45.         RETLW   0X12
  46.         RETLW   0X02
  47.         RETLW   0X78
  48.         RETLW   0X00
  49.         RETLW   0X10
  50.         RETURN
  51. ;--------------------SPI发送显示子模块--------------------
  52. TRANSMIT        
  53.         CLRF        PORTA
  54.         MOVWF        SSPBUF
  55. WAIT
  56.         BANKSEL        PIR1
  57.         BTFSS        PIR1,SSPIF
  58.         GOTO        WAIT
  59.         BCF            PIR1,SSPIF
  60.         RETURN
  61. ;---------------------显示子程序模块--------------------
  62. DISPLAY        MOVLW        0X01
  63.                 MOVWF        LEDF
  64. XIAND        BTFSC        S2,0
  65.                 GOTO        ZXC
  66.                 MOVLW        0X0B
  67.                 GOTO        VBN
  68. ZXC                MOVLW        0X0A
  69. VBN                CALL        CONVERT
  70.                 INCF        LEDF
  71.                 MOVF        LEDF,W
  72.                 SUBLW        0X05
  73.                 BTFSS        STATUS,Z
  74.                 GOTO        XIAND       ;显示动画
  75.                 MOVLW        0X01
  76.                 MOVWF        LEDF
  77.                 MOVLW        0XA0
  78.                 MOVWF        FSR
  79. AGAINXIAN        MOVF        LEDF,W
  80.                 SUBLW        0X02
  81.                 BTFSS        STATUS,Z
  82.                 GOTO        XIANB
  83.                 MOVF        INDF,W
  84.                 CALL        CONVERT2
  85.                 GOTO        TRAN
  86. XIANB        MOVF        INDF,W
  87.                 CALL        CONVERT
  88. TRAN        CALL        TRANSMIT
  89.                 INCF        FSR
  90.                 INCF        LEDF
  91.                 MOVF        LEDF,W
  92.                 SUBLW        0X05
  93.                 BTFSS   STATUS,Z
  94.                 GOTO        AGAINXIAN
  95.                 BSF                PORTA,5
  96.                 RETURN
  97. ;-----------------S0计数溢出处理-------------------
  98. CS0        CLRF        S0
  99.         INCF        S1
  100.         RETURN
  101. ;-----------------S1计数溢出处理-------------------
  102. CS1        CLRF        S1
  103.         INCF        S2
  104.         RETURN
  105. ;-----------------S2计数溢出处理-------------------
  106. CS2        CLRF        S2
  107.         INCF        S3
  108.         RETURN
  109. ;-----------------S3计数溢出处理-------------------
  110. CS3        CLRF        S3
  111.         RETURN
  112. ;-----------------时钟中断服务程序--------------------
  113. CLKINT        MOVWF        XW_TEMP
  114.         SWAPF        STATUS,W
  115.         MOVWF        XHOSTS
  116.         MOVF        FSR,W
  117.         MOVWF        HOSTF
  118.         MOVLW        0X07
  119.         MOVWF        TMR0
  120.         BCF                INTCON,T0IF
  121.         INCF        SREG
  122.         MOVF        SREG,W
  123.         SUBLW        0X05
  124.         BTFSS        STATUS,Z
  125.         GOTO        TIFAN
  126.         CLRF        SREG
  127.         INCF        S0
  128.         MOVF        S0,W
  129.         SUBLW        0X0A
  130.         BTFSC   STATUS,Z
  131.         CALL        CS0
  132.         MOVF        S1,W
  133.         SUBLW        0X0A
  134.         BTFSC        STATUS,Z
  135.         CALL        CS1
  136.         MOVF        S2,W
  137.         SUBLW        0X0A
  138.         BTFSC        STATUS,Z
  139.         CALL        CS2
  140.         MOVF        S3,W
  141.         SUBLW        0X0A
  142.         BTFSC        STATUS,Z
  143.         CALL        CS3
  144. TIFAN        MOVF        HOSTF,W       ;一下为中断现场回复
  145.         MOVWF        FSR
  146.         SWAPF        XHOSTS,W
  147.         MOVWF        STATUS
  148.         SWAPF        XW_TEMP,1
  149.         SWAPF        XW_TEMP,W
  150.         RETFIE
  151. ;--------------------------TMRO初始化--------------------
  152. CLKINSUB
  153.         BANKSEL                OPTION_REG
  154.         BCF                        OPTION_REG,T0CS
  155.         BCF                        OPTION_REG,PSA
  156.         BCF                        OPTION_REG,PS2
  157.         BSF                        OPTION_REG,PS1
  158.         BCF                        OPTION_REG,PS0
  159.         
  160.         BANKSEL                INTCON
  161.         BCF                        INTCON,T0IF
  162.         BCF                        INTCON,GIE
  163.         BSF                        INTCON,T0IE
  164.         RETURN
  165. ;------------------------系统初始化子程序----------------
  166.         MAINSUB
  167.                 BANKSEL        TRISA
  168.                 BCF                TRISA,5
  169.                 BCF                TRISB,1
  170.                 BCF                TRISB,2
  171.                 BSF                TRISB,4
  172.                 BSF                TRISB,5
  173.                 BCF                TRISC,5
  174.                 BCF                TRISC,3
  175.                 BCF                INTCON,GIE
  176.                 MOVLW        0XC0
  177.                 MOVWF        SSPSTAT
  178.                 BANKSEL        SSPCON
  179.                 MOVLW        0X30
  180.                 MOVWF        SSPCON
  181.                
  182.                 BCF                STATUS,IRP
  183.                 MOVLW        0X01
  184.                 MOVF        TEMP
  185.                 MOVLW        0X00
  186.                 MOVWF        JIANR
  187.                 RETURN
  188. ;-------------------键盘扫描子程序--------------------
  189. KEYSCAN        CLRF        PORTB
  190.         NOP
  191.         NOP
  192.         MOVF                PORTB,W
  193.         ANDLW                0X30
  194.         SUBLW                0X30
  195.         RETURN
  196. ;--------------------键盘去抖子程序(8ms)-----------------
  197. KEYDELAY
  198.         MOVLW        0X80
  199.         MOVWF        DEYH
  200. AGAIN2        MOVLW        0XFF
  201.         MOVWF        DEYL
  202. AGAIN1        DECFSZ        DEYL,1
  203.         GOTO        AGAIN1
  204.         DECFSZ        DEYH,1
  205.         GOTO        AGAIN2
  206.         RETURN
  207. ;-----------------------------键盘服务子程序----------------
  208. KEYSERVE        MOVLW        0X00
  209.                 MOVWF        JIANR
  210.                 MOVLW        0XFD
  211.                 MOVWF        PORTB
  212.                 BTFSS        PORTB,4
  213.                 GOTO        S10
  214.                 BTFSS        PORTB,5
  215.                 GOTO        S9
  216.                 MOVLW        0XFB
  217.                 MOVWF        PORTB
  218.                 BTFSS        PORTB,4
  219.                 GOTO        S12
  220.                 BTFSS        PORTB,5
  221.                 GOTO        S11
  222.                 GOTO        TUICHU
  223.         S10        MOVLW        0X02
  224.                 MOVWF        JIANR
  225.                 GOTO        TUICHU
  226.         S9        MOVLW        0X01
  227.                 MOVWF        JIANR
  228.                 GOTO        TUICHU
  229.         S12        MOVLW        0X04
  230.                 MOVWF        JIANR
  231.                 GOTO        TUICHU
  232.         S11        MOVLW        0X03
  233.                 MOVWF        JIANR
  234.         TUICHU        RETURN
  235. ;---------------------------显示缓冲区处理子程序-----------------
  236. XIANHUAN        MOVLW        0XA0
  237.                         MOVWF        FSR
  238.                         MOVF        S3,W
  239.                         MOVWF        INDF
  240.                         INCF        FSR
  241.                         MOVF        S2,W
  242.                         MOVWF        INDF
  243.                         INCF        FSR
  244.                         MOVF        S1,W
  245.                         MOVWF        INDF
  246.                         INCF        FSR
  247.                         MOVF        S0,W
  248.                         MOVWF        INDF
  249.                         RETURN
  250. ;-------------------------------------------------------------
  251. MAIN        NOP
  252.         CALL        MAINSUB
  253.         CALL        CLKINSUB
  254. ;-----------------------------------------------------------
  255. DENJIAN
  256.         BANKSEL        S0
  257.         CLRF        S0
  258.         CLRF        S1
  259.         CLRF        S2
  260.         CLRF        S3
  261.         CLRF        SREG
  262.         CLRF        LEDF
  263.         CALL        XIANHUAN
  264.         CALL        DISPLAY
  265. DENAN        BCF        INTCON,GIE
  266.         CALL        KEYSCAN
  267.         BTFSS        STATUS,Z
  268.         GOTO        XIAODOU1
  269.         GOTO        DENAN
  270. XIAODOU1        CALL        KEYDELAY
  271.         CALL        KEYSCAN
  272.         BTFSC        STATUS,Z
  273.         GOTO        DENAN
  274.         CALL        KEYSERVE
  275.         MOVF        JIANR,W
  276.         SUBLW        0X01
  277.         BTFSS        STATUS,Z
  278.         GOTO        DENAN
  279.         BANKSEL        S0
  280.         CLRF        S0
  281.         CLRF        S1
  282.         CLRF        S2
  283.         CLRF        S3
  284.         CLRF        SREG
  285. WAITS        CALL        KEYSCAN
  286.         BTFSS        STATUS,Z
  287.         GOTO        WAITS
  288. ABC        MOVLW        0X06
  289.         MOVWF        TMR0
  290.         BSF                INTCON,GIE
  291. HERE        CALL        XIANHUAN
  292.         CALL        DISPLAY
  293.         CALL        KEYSCAN
  294.         BTFSS        STATUS,Z
  295.         GOTO        XIAODOU
  296.         GOTO        HERE
  297. XIAODOU        CALL        DISPLAY
  298.         CALL        DISPLAY
  299.         CALL        DISPLAY
  300.         CALL        DISPLAY
  301.         CALL        DISPLAY
  302.         CALL        DISPLAY
  303.         CALL        DISPLAY
  304.         CALL        DISPLAY
  305.         CALL        DISPLAY
  306.         CALL        KEYSCAN
  307.         BTFSC        STATUS,Z
  308.         GOTO        HERE
  309.         CALL        KEYSERVE
  310.         MOVF        JIANR,W
  311.         SUBLW        0X03
  312.         BTFSS        STATUS,Z
  313.         GOTO        HERE
  314.         BCF                INTCON,GIE
  315.         CALL        DISPLAY
  316. WAITR        CALL        KEYSCAN
  317.                 BTFSS        STATUS,Z
  318.                 GOTO        WAITR
  319. DENDAI        CALL        KEYSCAN
  320.         BTFSC        STATUS,Z
  321.         GOTO        DENDAI
  322.         CALL        KEYDELAY
  323.         CALL        KEYSCAN
  324.         BTFSC        STATUS,Z
  325.         GOTO        DENDAI
  326.         CALL        KEYSERVE
  327.         MOVF        JIANR,W
  328.         SUBLW        0X03
  329.         BTFSC        STATUS,Z
  330.         GOTO        WAIT19
  331.         MOVF        JIANR,W
  332.         SUBLW        0X03
  333.         BTFSC        STATUS,Z
  334.         GOTO        DENJIAN
  335.         GOTO        DENDAI
  336. WAIT19        CALL        KEYSCAN
  337.         BTFSS        STATUS,Z
  338.         GOTO        WAIT19
  339.         GOTO        ABC
  340.         END
复制代码



51hei截图_20201226160953.png
51hei截图_20201226160953.png
回复

使用道具 举报

ID:844772 发表于 2020-12-26 23:21 | 显示全部楼层
你数码管用的是共阴的。要么把 CONVERT这句里的共阳极数码表改成共阴的表;或者你把数码管改成共阳的。
回复

使用道具 举报

ID:401564 发表于 2020-12-28 09:02 | 显示全部楼层
很久没有接触PIC了,都看不懂代码了,就给你几个建议吧
RB是有内部上拉电阻的不需要上拉
你四个按键就用四个IO,直接用检测低电平就可以,好像没有必要用2*2扫描的方式
带小数点的不需要另外建一个表格的,用相同的表格,显示的时候点亮小数点就可以了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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