找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1764|回复: 5
收起左侧

单片机74hc164驱动数码管显示 数字,“7”没法显示。0-9可以,咋回事

[复制链接]
ID:797217 发表于 2020-7-4 15:59 | 显示全部楼层 |阅读模式
        ORG 0H               ;程序从程序存储器的0单元开始存放
        AJMP MAIN            ;跳转到主程序
        ORG 20H              ;主程序从程序存储器的30H单元开始存放
MAIN:   MOV 30H,#0           ;给30H单元赋初始值0
LOOP:   INC 30H              ;30H单元内的数加1
        MOV R1,30H           ;将30H单元内的数赋值给R1,以便应用 CJNE Rn,#DATA,REL语言判断并跳转
        CJNE R1,#10,NEXT     ;若30H内的数不是10则跳转到调用显示
        MOV 30H,#0           ;若30H内的数是10,则清零     
NEXT:  ACALL DISPLAY        ;调用显示子程序
       ACALL        L2025
           SJMP LOOP            ;跳转到加1部分,循环
DISPLAY:MOV        R2,        #8  
            MOV R0,#30H          ;将显示数据的存放首单元赋值给R0,以便调用循环将数值赋值给A
            MOV DPTR,#TABLE        ;将显示码的首地址赋值给DPTR
DISLOP: MOV A,@R0            ;将以R0内的数30H内的数值赋值给A
              MOVC A,@A+DPTR       ;查表语句,将显示码赋值给A
DP2:               RLC A               ;带进位标志的左移操作
                MOV P1.0,C                 ;串行输出一位段码数据
                CLR P1.1             ;
                SETB P1.1            ;来个上升沿以产生移位时钟, 每次来这个脉冲,移位寄存器上的数往后面移动一位,原来A=1,
               DJNZ R2,DP2                                   
                           RET
                ;子程序返回
L2025:  MOV     R6,#28H                ; 延时子程序
L2027:  MOV     R7,#0F9H
L2029:  DJNZ    R7,$
        DJNZ    R6,L2027
        DJNZ    R5,L2025
        RET     
TABLE:
DB 40H,79H,24H,30H,19H, 12H,02H,78H,00H,10H   

     END                  ;程序结束


回复

使用道具 举报

ID:96682 发表于 2020-7-5 00:04 来自手机 | 显示全部楼层
没见着电路图,如果数字变化能显示正常,只是极个别数字错误就是相应的段码有错
回复

使用道具 举报

ID:797441 发表于 2020-7-5 08:27 | 显示全部楼层
可能你的7对应的段码出现错误,或者你的延迟时间太小
回复

使用道具 举报

ID:627251 发表于 2020-7-5 20:34 | 显示全部楼层
替换大法试试!
回复

使用道具 举报

ID:592807 发表于 2020-7-6 08:36 | 显示全部楼层
汇编语言,没法解读,找高手去吧,
另外0-9都能显示不能显示7,是因为7>9还是7<0.
回复

使用道具 举报

ID:608600 发表于 2020-7-7 12:00 | 显示全部楼层

汇编语言我也不是很懂,推荐去专门的平台
另外显示不了7这个问题很有可能是电脑出错
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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