单片机LED点阵显示程序。
DATAINEQUP0.0;行数据输入位SCLHEQUP0.1;行数据输入时钟,串行输入时钟SCLTEQUP0.2;行锁存时钟,并行输出时钟ABINEQUP0.4;列数据...
DATAIN EQU P0.0;行数据输入位
SCLH EQU P0.1;行数据输入时钟,串行输入时钟
SCLT EQU P0.2;行锁存时钟,并行输出时钟
ABIN EQU P0.4;列数据输入位
SCK EQU P0.5;列数据输出时钟,移位时钟
SJKJ EQU 30H;从30H为首地址后的32字节作为16*16点阵屏显示数据的存储
ORG 0500H
XING: DB 00H,80H,00H,80H,01H,40H,01H,40H
DB 02H,20H,7CH,1FH,20H,02H,10H,04H
DB 08H,08H,04H,10H,08H,88H,09H,48H
DB 16H,34H,18H,0CH,20H,02H,00H,00H
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV DPTR,#XING;把XING的数据送入DPTR中
MOV R0,#SJKJ;R0获得首地址
LCALL COPY
MOV R5,#2
LCALL DISPLAYS
SJMP MAIN
COPY: MOV R7,#32;一共有32个数据,要放32次
C1: CLR A;将A清零
MOVC A,@A+DPTR
MOV @R0,A;将累加器中的数据放如R0中的数为地址中作为内容
INC DPTR;数据存入到了DPTR中,要地址前进
INC R0
DJNZ R7,C1
RET
DISPLAY:
MOV P0,#0FFH
MOV R0,#SJKJ
CLR ABIN
MOV R7,#16
D1: CLR SCK
CLR SCLT
MOV B,@R0
INC R0
MOV A,@R0
CPL A
MOV R6,#8
D2: CLR SCLH
RRC A
MOV DATAIN,C
SETB SCLH
DJNZ R6,D2
MOV A,B
CPL A
MOV R6,#8
D3: CLR SCLH
RRC A
MOV DATAIN,C
SETB SCLH
DJNZ R6,D3
INC R0
SETB SCK
SETB SCLT
SETB ABIN
DJNZ R7,D1
MOV R7,#64
DJNZ R7,$
CLR SCK
SETB SCK
RET
DISPLAYS:
DS1: MOV R4,#0XFF
DS2: LCALL DISPLAY
DJNZ R4,DS2
DJNZ R5,DS1
RET
END
我先说明一下啊,这个程序是我自己编写了,是16*16LED点阵显示,他的行是用74HC164控制,列用74HC595控制,现在是什么问题呢!你注意看图中星星的下面有阴影,注意看能看出来,我自己找了找原因,怀疑“D3: CLR SCLH
RRC A
MOV DATAIN,C
SETB SCLH
DJNZ R6,D3
INC R0
SETB SCK
SETB SCLT
SETB ABIN
DJNZ R7,D1
MOV R7,#64
DJNZ R7,$”
这里面的“SETB SCK
SETB SCLT
SETB ABIN”
有关系,我把“SETB SCK
SETB SCLT”
调换位置后阴影在上面显示,可是我就是想不出来怎么不让他显示阴影,各位帮忙看一下。 展开
SCLH EQU P0.1;行数据输入时钟,串行输入时钟
SCLT EQU P0.2;行锁存时钟,并行输出时钟
ABIN EQU P0.4;列数据输入位
SCK EQU P0.5;列数据输出时钟,移位时钟
SJKJ EQU 30H;从30H为首地址后的32字节作为16*16点阵屏显示数据的存储
ORG 0500H
XING: DB 00H,80H,00H,80H,01H,40H,01H,40H
DB 02H,20H,7CH,1FH,20H,02H,10H,04H
DB 08H,08H,04H,10H,08H,88H,09H,48H
DB 16H,34H,18H,0CH,20H,02H,00H,00H
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV DPTR,#XING;把XING的数据送入DPTR中
MOV R0,#SJKJ;R0获得首地址
LCALL COPY
MOV R5,#2
LCALL DISPLAYS
SJMP MAIN
COPY: MOV R7,#32;一共有32个数据,要放32次
C1: CLR A;将A清零
MOVC A,@A+DPTR
MOV @R0,A;将累加器中的数据放如R0中的数为地址中作为内容
INC DPTR;数据存入到了DPTR中,要地址前进
INC R0
DJNZ R7,C1
RET
DISPLAY:
MOV P0,#0FFH
MOV R0,#SJKJ
CLR ABIN
MOV R7,#16
D1: CLR SCK
CLR SCLT
MOV B,@R0
INC R0
MOV A,@R0
CPL A
MOV R6,#8
D2: CLR SCLH
RRC A
MOV DATAIN,C
SETB SCLH
DJNZ R6,D2
MOV A,B
CPL A
MOV R6,#8
D3: CLR SCLH
RRC A
MOV DATAIN,C
SETB SCLH
DJNZ R6,D3
INC R0
SETB SCK
SETB SCLT
SETB ABIN
DJNZ R7,D1
MOV R7,#64
DJNZ R7,$
CLR SCK
SETB SCK
RET
DISPLAYS:
DS1: MOV R4,#0XFF
DS2: LCALL DISPLAY
DJNZ R4,DS2
DJNZ R5,DS1
RET
END
我先说明一下啊,这个程序是我自己编写了,是16*16LED点阵显示,他的行是用74HC164控制,列用74HC595控制,现在是什么问题呢!你注意看图中星星的下面有阴影,注意看能看出来,我自己找了找原因,怀疑“D3: CLR SCLH
RRC A
MOV DATAIN,C
SETB SCLH
DJNZ R6,D3
INC R0
SETB SCK
SETB SCLT
SETB ABIN
DJNZ R7,D1
MOV R7,#64
DJNZ R7,$”
这里面的“SETB SCK
SETB SCLT
SETB ABIN”
有关系,我把“SETB SCK
SETB SCLT”
调换位置后阴影在上面显示,可是我就是想不出来怎么不让他显示阴影,各位帮忙看一下。 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询