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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
阿信509
1楼-- · 2019-07-15 20:11
现在事什么效果呀?然后你想要达到什么效果呢
调皮的小五郎
2楼-- · 2019-07-16 00:38


路过,回帖拿分来了
落尘浅羽
3楼-- · 2019-07-16 06:13
阿信509 发表于 2014-8-12 19:16
现在事什么效果呀?然后你想要达到什么效果呢

不管DB也就是查表有没有内容都会全亮,想按查表的内容亮
落尘浅羽
4楼-- · 2019-07-16 08:59
阿信509 发表于 2014-8-12 19:16
现在事什么效果呀?然后你想要达到什么效果呢

目前只要线接上去程序烧进去就全亮,我感觉按照595的用法,还是双 {MOD}控制,写的没错
阿信509
5楼-- · 2019-07-16 12:22
 精彩回答 2  元偷偷看……
落尘浅羽
6楼-- · 2019-07-16 14:18
阿信509 发表于 2014-8-13 09:14
照你这个图来看,显示数据应该从U4进去共两个字节,行数据就是每次扫描一行,你的程序有问题,而且MAIN:好 ...

那里没注意到,多次修改后的程序你看看
附有图片
                   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 MAIN
                   NOP

                   ORG 0030H
MAIN:      CLR A
           MOV R0,#7FH
LOOP:           MOV @R0,A
                   DJNZ R0,LOOP
           MOV R0,#40H
           MOV R1,#48H
                   MOV R2,#80H        ;第一行地址
           MOV R3,#08H        ;移八次
                   MOV R4,#08H
                   MOV 40H,#00H       
                   MOV 41H,#01H
                   MOV 42H,#02H
                   MOV 43H,#03H
                   MOV 44H,#04H
                   MOV 45H,#05H
                   MOV 46H,#06H
                   MOV 47H,#07H
                   MOV 48H,#0AH
                   MOV 49H,#0AH
                   MOV 4AH,#0AH
                   MOV 4BH,#0AH
                   MOV 4CH,#0AH
                   MOV 4DH,#0AH
                   MOV 4EH,#0AH
                   MOV 4FH,#0AH
START:     LCALL LIE         ;调列
                   LCALL HANG         ;调行
                   LCALL DIS          ;调显示
                   DJNZ R4,START          ;处理程序                   
                   MOV R0,#40H
                   MOV R1,#48H
                   MOV R2,#80H
                   MOV R4,08H
                   AJMP START

LIE:           MOV A,R2          //把第一列的数值送给A
               CLR C          
LIE1:           RLC A                                            
                   CLR CLK2
                   MOV SEN2,C                   
                   NOP
                   SETB CLK2
                   DJNZ R3,LIE1          //把送来的列地址,通过八次以为移入锁存器中
                   MOV R3,#08H
                   MOV A,R2
                   RR A                          //第一行一列送完送第下行下列
                   MOV R2,A          
                   RET
HANG:      CLR C
           MOV DPTR,#TAB
           MOV A,@R0                   //把显示的行数据送个A
                   MOVC A,@A+DPTR  
HANG1:           RLC A                                     
                   CLR CLK1       
                   MOV SEN1,C          
                   NOP
                   SETB CLK1
                   DJNZ R3,HANG1   //通过八次左移,把红 {MOD}数据送入
                   MOV R3,#08H          
           CLR C
           MOV DPTR,#TAB
           MOV A,@R1                  
                   MOVC A,@A+DPTR  
HANG2:           RLC A                  
                   CLR CLK1
                   MOV SEN1,C
                   NOP
                   SETB CLK1
               DJNZ R3,HANG2
                   MOV R3,#08H
                   INC R0
                   INC R1                                                                           
                   RET

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

DEL:       MOV R7,#10
DEL1:           MOV R6,#50
                   DJNZ R6,$
                   DJNZ R7,DEL1
                   RET
                    
TAB:  DB  0EEH,0EFH,0C7H,0BBH,7CH,6CH,93H,0FFH,0FFH
                  END

QQ图片20140813135819.jpg

一周热门 更多>