3个595控制8X8点阵,感觉都没错了还是达不到效果

2019-07-15 18:49发布

3个595控制8X8点阵,一个595接公共端,另两个595级联控制双 {MOD},红。绿,下面附有电路图
程序带有一定解释
                   SC1  BIT P1.2        //hang
                   CLK1 BIT P1.1
                   SEN1 BIT P1.0
                   SC2  BIT P2.2 //lie
                   CLK2 BIT P2.1
                   SEN2 BIT P2.0                  
                  
                   ORG 0000H
                   AJMP START
                   NOP

                   ORG 0030H
MAIN:      MOV R0,#00H
           MOV R1,#08H
                   MOV R2,#80H        ;第一行地址
           MOV R3,#08H        ;移八次
                   MOV R4,#00H       
                   MOV R5,#00H
START:     LCALL LIE         ;调列
                   LCALL HANG         ;调行
                   LCALL DIS          ;调显示
                   DJNZ R1,CL          ;处理程序                   
                   MOV R1,#08H
                   MOV R0,#00H
                   MOV R2,#80H
                   AJMP START
CL:                   MOV A,R2
                   RR A                          //第一行一列送完送第2行2列
                   MOV R2,A
                   INC R0       
                   AJMP START

LIE:           MOV 30H,R2          //把第一列的数值送个30
               CLR C
LIE1:           MOV R4,30H           //把送来的列地址,通过八次以为移入锁存器中
           MOV A,R4
                   RLC A
                   MOV R4,A
                   MOV SEN2,C
                   CLR CLK2
                   NOP
                   SETB CLK2
                   DJNZ R3,LIE1
                   MOV R4,#00H
                   MOV R3,#10H           //双 {MOD}点阵,移位行时得移2字节16位(一个移给红 {MOD}595,一个移给绿 {MOD}595)
                   RET

HANG:      CLR C
           MOV DPTR,#TAB
           MOV A,@R0                   //把行显示给R5
                   MOVC A,@A+DPTR  
                   MOV R5,A
HANG1:           MOV A,R5
           RLC A
                   MOV R5,A
                   MOV SEN1,C
                   CLR CLK1
                   NOP
                   SETB CLK1
                   CJNE R3,#08H,HANG2        //判断可移完八次,没用转回移完第一字节
                   INC R0                                //以为,Inc R0,移第二字节,
HANG2:           DJNZ R3,HANG1
                   MOV R5,#00H
                   MOV R3,#08H                  
                   RET

DIS:       CLR SC2
                   NOP
           SETB SC2
                   CLR SC1                           //开锁存,输出行列数据
                   NOP
                   SETB SC1
                   LCALL DEL
                   RET

DEL:       MOV R7,#10
DEL1:           MOV R6,#100
                   DJNZ R6,$
                   DJNZ R7,DEL1
                   RET
                    
TAB:  DB  00H,00H,00H,6CH,00H,92H,00H,82H,00H,44H,00H,28H,00H,10H


                  END

QQ截图20140812102534.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。