找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

51单片机红外遥控控制数码管,为是么数码管不亮

查看数: 2176 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-6-9 17:01

正文摘要:

有大神帮帮我吗,好几天了,不知道哪里出问题了

回复

ID:928089 发表于 2021-6-10 17:34
                DQ EQU P3.3

                ADDR0 EQU P1.0
                ADDR1 EQU P1.1
                ADDR2 EQU P1.2
                ADDR3 EQU P1.3
                ENLED EQU P1.4

                ORG 000H
                LJMP MAIN

                ORG 000BH
                LJMP ZD

    MAIN:
                MOV TH0,#0FEH
                MOV TL0,#0FEH
                MOV TMOD,#01H
                SETB ET0
                SETB TR0
                SETB EA
                CLR ENLED
                CLR ADDR0
                CLR ADDR1
                CLR ADDR2
                SETB ADDR3

                SJMP $

     ZD:
                CLR EA
                MOV R3,#10
     SB:        LCALL YS1  ;延时9000微妙

                DJNZ R3,SB

                JB DQ,EXIT




;---------------以上对检测9000微妙的初始低电平
                JNB DQ,$

                LCALL YS2   ;延时4.74毫秒避开4.5毫秒结果码

                MOV R1,#40H    ;设定起始RAM区
                MOV R2,#4      ;四组八位数据
      PP:       MOV R3,#8

      JJJ:      JNB DQ,$       ;等待地址码第一个高电平信号

                LCALL YS1    ;延时882微妙去判断此时的信号高低电平状态

                MOV C,DQ
                JNC UU

                LCALL YS3    ;延时1000微妙

      UU:       MOV A,@R1      ;将R1的地址给它
                RRC A          ;将C转到最低位
                MOV @R1,A      ;再将A存到r1中

                DJNZ R3,JJJ    ;循环接受地址码的高8位

                INC R1
                DJNZ R2,PP     ;接受完16位地址码和8位数据吗和8位数据反码

;---------------以上将16位地址码和8位数据吗和8位数据反码存放在1AH,1BH,1CH,1DH

                MOV A,42H
                CPL A
                XRL A,43H      ;将两数据作比较

                JNZ EXIT       ;不相同则丢弃退出解码

                MOV DPTR,#TABLE
                MOV A,43H
                ANL A,#0FH     ;求与取其低四位

                MOVC A,@A+DPTR
                MOV 44H,A      ;将查表得到的数字存到1EH中
                MOV A,43H
                SWAP A         ;高四位与低四位交换
                ANL A,#0FH     ;求与取其高四位
                MOVC A,@A+DPTR
                MOV 45H,A      ;将查表到的数据放在1FH中

;---------------以上将接受到的数据码与数据反码经过查表后存放在1EH和1FH中

                MOV R7,#20H
      DISP:
                MOV P0,45H     ;将数据送到数码管中
                CLR P2.1
                LCALL YS2
                SETB P2.1
                MOV P0,44H
                CLR P2.2
                LCALL YS2
                SETB P2.2

                CLR P1.6
                LCALL YS2
                SETB P1.6
                DJNZ R7,DISP


      EXIT:     SETB EA
                RETI           ;退出解码程序

                               ;延时882微秒
       YS1:       MOV R4,#03H
DL0:
    MOV R5,#91H
    DJNZ R5,$
    DJNZ R4,DL0
    RET
       YS2:
                               ;延时4740微秒
          MOV R6,#03H
DL1:
    MOV R4,#08H
DL2:
    MOV R5,#61H
    DJNZ R5,$
    DJNZ R4,DL2
    DJNZ R6,DL1
    RET
       YS3:
                             ;延时1000微秒
         MOV R4,#01H
DL3:
    MOV R6,#8EH
DL4:
    MOV R5,#02H
    DJNZ R5,$
    DJNZ R6,DL4
    DJNZ R4,DL3
    RET

       TABLE: DB  0C0h,0F9h,0A4h,0B0h,99h,92h
              DB  82h,0F8h,80h,90h,88h,83h,0C6h,0A1h,86h,8Eh


它现在亮了但是不是按每个按键他都能亮,而且它显示的数字也不对,大佬帮帮忙吧
ID:933672 发表于 2021-6-9 22:45
如果不亮,很有可能是数码管共阴共阳弄错了
ID:844772 发表于 2021-6-9 21:48
是不是接线错了,你的数码管怎么接的啊?按程序你应该接P0,且是个共阳的管子。
ID:825883 发表于 2021-6-9 21:44
分段排故,你用的应该是开发板,先让红外接收器接收到信号以后让P1口某个灯亮,然后判断后再让另一个灯亮,看问题是出现在前面还是后面。如果出现在后面,就不对红外接收器收到的数据判断,直接让LED显示某个数字。   
ID:88256 发表于 2021-6-9 18:33
是完全不亮吗?程序这样截屏还不如直接复制贴出来好方便阅读,电路图也一起贴出来

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

Powered by 单片机教程网

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