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
-
路过,回帖拿分来了
一周热门 更多>