16x16.asm
来自「最简单的16x16的显示屏,有原理图和实际硬件调试后通过的全部代码!一起交流,共」· 汇编 代码 · 共 154 行
ASM
154 行
SCLK_595 EQU P1.2 ;时钟
SDATA_595 EQU P1.1 ;数据
RCK_595 EQU P1.0 ;锁存
H1 BIT 00H
ORG 00H
LJMP START1
ORG 0030H
START1: MOV DPTR,#TAB
START: MOV P0,#0FFH
MOV P2,#0FFH
MOV R1,#0 ;表变址
MOV R2,#8 ;数据移位控制变量
MOV R3,#0 ;行控制数
MOV R4,#0 ;控制字的个数
MOV R5,#255 ;一个字显示次数
MOV R6,#0FEH
SETB H1
WRITE: MOV A,R1
MOVC A,@A+DPTR
MOV 2AH,A //2AH送数据
LCALL WR_595 //送一位数据
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV 2AH,A
LCALL WR_595
LCALL OUT_595 //输出锁存
LCALL OUT_8550 //行输出
MOV P0,#0FFH
MOV P2,#0FFH
INC R1
CJNE R1,#32,WRITE //一屏字幕显示完
MOV R1,#0
LJMP START1
;---------------------------------------------------------------
;行输出子程序
;---------------------------------------------------------------
OUT_8550: MOV DPTR,#TTAB
JB H1,P0KSC
P2KSC: MOV A,R3
P2KSC1: MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
INC R3
CJNE R3,#8,LOOP
MOV R3,#0
SETB H1
RET
P0KSC: MOV A,R3
P0KSC1: MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
INC R3
CJNE R3,#8,LOOP
MOV R3,#0
CLR H1
LOOP: RET
/* JB H1,P0KSC //H1=1 P0口 H1=0 P2口
P2KSC: MOV A,R6
P2KSC1: INC R3
MOV P2,A
LCALL DELAY
RL A
MOV R6,A
CJNE R3,#9,LOOP
SETB H1
MOV R6,#0FEH
MOV R3,#00H
MOV P2,#0FFH
RET
P0KSC: MOV A,R6 //#0FEH
P0KSC1: INC R3
MOV P0,A
LCALL DELAY
RL A
MOV R6,A
CJNE R3,#8,LOOP
CLR H1
MOV R6,#0FEH
MOV R3,#00H
MOV P0,#0FFH
LOOP: RET */
;---------------------------------------------------------------
;输出锁存器输出数据子程序
;---------------------------------------------------------------
OUT_595:
CLR RCK_595
NOP
SETB RCK_595 ;上升沿将数据送到输出锁存器
NOP
CLR RCK_595
RET
;--------------------------------------------------------------
;移位寄存器接收数据子程序
;--------------------------------------------------------------
WR_595:
MOV R2,#08H
MOV A,2AH
cpl a
WR_LOOP:
RLC A
MOV SDATA_595,C
SETB SCLK_595 ;上升沿发生移位
NOP
CLR SCLK_595
NOP
DJNZ R2,WR_LOOP
MOV R2,#8
RET
;--------------------------------------------------------------
;延时子程序
;--------------------------------------------------------------
DELAY:
MOV 43H,#14H ; every LED(2ms)
DL2: MOV 44H,#14H
DL1:
DJNZ 44H,DL1
DJNZ 43H,DL2
RET
TTAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
TAB:
;大 CB4F3
DB 080H,000H,080H,000H,080H,000H,080H,000H
DB 080H,000H,0FFH,07FH,080H,000H,040H,001H
DB 040H,001H,040H,002H,020H,002H,020H,004H
DB 010H,008H,008H,018H,004H,070H,002H,020H
;家 CBCD2
DB 040H,000H,080H,000H,0FCH,07FH,002H,020H
DB 0FAH,017H,080H,000H,040H,000H,0F0H,004H
DB 04EH,00DH,020H,003H,098H,003H,066H,00DH
DB 018H,071H,006H,021H,0A0H,000H,040H,000H
;好 CBAC3
DB 008H,000H,088H,03FH,008H,010H,008H,008H
DB 03FH,004H,024H,004H,024H,004H,0E4H,07FH
DB 022H,004H,026H,004H,018H,004H,010H,004H
DB 028H,004H,064H,004H,022H,005H,001H,002H
;! CA3A1
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 008H,000H,008H,000H,008H,000H,008H,000H
DB 008H,000H,008H,000H,008H,000H,008H,000H
DB 008H,000H,000H,000H,008H,000H,000H,000H
; 黑屏
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?