📄 yjgd.asm
字号:
;显示为“电子科技大学电信科协-方绍湖”的滚动液晶程序。
COLUMN DATA 30H
PAGE1 DATA 31H
WORD DATA 32H
CODE1 DATA 33H
COUNT DATA 34H
COM DATA 35H
DAT DATA 36H
PAGE2 DATA 37H
RS BIT P3.3
RW BIT P3.4
E BIT P3.5
CS1 BIT P3.6
CS2 BIT P3.7
ORG 00H
AJMP MAIN
ORG 0050H
MAIN: MOV PAGE2,#0C0H ;写显示初始行
MOV COM,PAGE2
LCALL PR0
LCALL PR2
MAIN1: MOV PAGE1,#00H
MOV CODE1, #00H ;初始化子程序
MOV COLUMN ,#00H
; CLR P3.2
SETB P3.6
SETB P3.7
MOV COM,#3FH ;开液晶显示
LCALL PR0
LCALL PR2
LCALL CLEAR ; 清显示RAM为零
MOV PAGE1,#00H ;写入要显示的字符
MOV COLUMN,#00
MOV CODE1,#00
LCALL DISPLAY
MOV PAGE1,#00
MOV COLUMN,#22
MOV CODE1,#01H
LCALL DISPLAY
MOV PAGE1,#00H
MOV COLUMN,#44
MOV CODE1,#02
LCALL DISPLAY
MOV PAGE1,#00H
MOV COLUMN,#66
MOV CODE1,#03
LCALL DISPLAY
MOV PAGE1,#00H
MOV COLUMN,#88
MOV CODE1,#04
LCALL DISPLAY
MOV PAGE1,#00H
MOV COLUMN,#110
MOV CODE1,#05
LCALL DISPLAY
MOV PAGE1,#02H
MOV COLUMN,#00
MOV CODE1,#06
LCALL DISPLAY
MOV PAGE1,#02H
MOV COLUMN,#22
MOV CODE1,#07
LCALL DISPLAY
MOV PAGE1,#02H
MOV COLUMN,#44
MOV CODE1,#08
LCALL DISPLAY
MOV PAGE1,#02H
MOV COLUMN,#66
MOV CODE1,#09
LCALL DISPLAY
MOV PAGE1,#02H
MOV COLUMN,#88
MOV CODE1,#10
LCALL DISPLAY
MOV PAGE1,#02H
MOV COLUMN,#110
MOV CODE1,#11
LCALL DISPLAY
MOV PAGE1,#04H
MOV COLUMN,#00
MOV CODE1,#12
LCALL DISPLAY
MOV PAGE1,#04H
MOV COLUMN,#22
MOV CODE1,#13
LCALL DISPLAY
L2: MOV R5,#250
L1: MOV R6,#250 ;起始行每隔一小段时间不断改变,以实现滚动效果.
DJNZ R6,$
DJNZ R5,L1
INC PAGE2
MOV A,PAGE2
CJNE A,#0FFH,GDONG
MOV PAGE2,#0C0H
GDONG: MOV COM,PAGE2
LCALL PR0
LCALL PR2
LJMP L2
DISPLAY: MOV A,PAGE1 ;显示每个字符的子程序
MOV COUNT,#10H
MOV WORD,#00H
MOV DPTR, #00H
ANL A,#07H ;写页地址
ORL A,#0B8H
MOV COM,A
LCALL PR0
LCALL PR2
MOV DPTR,#TAB1 ;设定每个字符的起始地址
MOV A, CODE1
MOV B, #20H
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV A,COLUMN
CLR C
SUBB A,#40H ;未写满半屏则继续写左屏,写满则转右屏
JC LEFT_HALF ;写左屏
ORL A,#40H
MOV COLUMN,A ;写要显示的字符起始列地址
MOV COM,COLUMN
LCALL PR2
NEXT: MOV A,WORD ;调整查表地址(要送入的字节地址)
MOVC A,@A+DPTR ;查表
MOV DAT,A ;送数据
LCALL PR3
INC WORD ;写入的字节序数递增 (半个字符的字节数逐个写入 )
DJNZ COUNT,NEXT ;未送完半个字符的字节则继续
MOV COUNT,#10H
LJMP DOWN_PR ;送完半个字则送字符的下半个字(右屏)
LEFT_HALF: MOV A,COLUMN ;写要显示的字符起始列地址(左屏)
ORL A,#40H
MOV COM,A
LCALL PR0
NEXT1: MOV A,WORD ;调整查表地址(要送入的字节地址)
MOVC A,@A+DPTR ;查表
MOV DAT,A ;送数据
LCALL PR1
INC WORD ;写入的字节序数递增 (半个字符的字节数逐个写入 )
DJNZ COUNT,NEXT1 ;未送完半个字符的字节则继续
MOV COUNT,#10H
AJMP DOWN_PL ;送完半个字则送字符的下半个字(左屏)
DOWN_PR: INC PAGE1 ;送下半个字符子程序(右屏)
MOV A,PAGE1
ANL A,#07H
ORL A,#0B8H
MOV COM,A
LCALL PR2
MOV COM,COLUMN
LCALL PR2
NEXT3: MOV A,WORD
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR3
INC WORD
DJNZ COUNT,NEXT3
RET
DOWN_PL: INC PAGE1 ;送下半个字符子程序(左屏)
MOV A,PAGE1
ANL A,#07H
ORL A,#0B8H
MOV COM,A
LCALL PR0
MOV A,COLUMN
ORL A,#40H
MOV COM,A
LCALL PR0
NEXT2: MOV A,WORD
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR1
INC WORD
DJNZ COUNT,NEXT2
RET
TAB1:
;-- 文字: 电 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,0F8H,48H,48H,48H,48H,0FFH,48H,48H,48H,48H,0F8H,00H,00H,00H,
DB 00H,00H,0FH,04H,04H,04H,04H,3FH,44H,44H,44H,44H,4FH,40H,70H,00H,
;-- 文字: 子 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,02H,02H,02H,02H,02H,0E2H,12H,0AH,06H,02H,00H,80H,00H,00H,
DB 01H,01H,01H,01H,01H,41H,81H,7FH,01H,01H,01H,01H,01H,01H,01H,00H,
;-- 文字: 科 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 10H,12H,92H,72H,0FEH,51H,91H,00H,22H,0CCH,00H,00H,0FFH,00H,00H,00H,
DB 04H,02H,01H,00H,0FFH,00H,04H,04H,04H,02H,02H,02H,0FFH,01H,01H,00H,
;-- 文字: 技 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 08H,08H,88H,0FFH,48H,28H,00H,0C8H,48H,48H,7FH,48H,0C8H,48H,08H,00H,
DB 01H,41H,80H,7FH,00H,40H,40H,20H,13H,0CH,0CH,12H,21H,60H,20H,00H,
;-- 文字: 大 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 20H,20H,20H,20H,20H,20H,0A0H,7FH,0A0H,20H,20H,20H,20H,20H,20H,00H,
DB 00H,80H,40H,20H,10H,0CH,03H,00H,01H,06H,08H,30H,60H,0C0H,40H,00H,
;-- 文字: 学 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 40H,30H,10H,12H,5CH,54H,50H,51H,5EH,0D4H,50H,18H,57H,32H,10H,00H,
DB 00H,02H,02H,02H,02H,02H,42H,82H,7FH,02H,02H,02H,02H,02H,02H,00H,
;-- 文字: 电 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,0F8H,48H,48H,48H,48H,0FFH,48H,48H,48H,48H,0F8H,00H,00H,00H,
DB 00H,00H,0FH,04H,04H,04H,04H,3FH,44H,44H,44H,44H,4FH,40H,70H,00H,
;-- 文字: 信 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 80H,40H,30H,0FCH,07H,0AH,0A8H,0A8H,0A9H,0AEH,0AAH,0A8H,0A8H,08H,08H,00H,
DB 00H,00H,00H,7FH,00H,00H,7EH,22H,22H,22H,22H,22H,7EH,00H,00H,00H,
;-- 文字: 科 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 10H,12H,92H,72H,0FEH,51H,91H,00H,22H,0CCH,00H,00H,0FFH,00H,00H,00H,
DB 04H,02H,01H,00H,0FFH,00H,04H,04H,04H,02H,02H,02H,0FFH,01H,01H,00H,
;-- 文字: 协 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 10H,10H,0FFH,10H,10H,10H,0C8H,08H,08H,0FFH,08H,08H,0F8H,80H,00H,00H,
DB 00H,00H,7FH,00H,00H,43H,20H,18H,07H,00H,20H,40H,3FH,00H,03H,00H,
;-- 文字: - --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,01H,01H,01H,01H,01H,01H,01H,00H,00H,00H,00H,00H,00H,00H,00H,
;-- 文字: 方 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 08H,08H,08H,08H,08H,08H,0F9H,4AH,4CH,48H,48H,0C8H,08H,08H,08H,00H,
DB 40H,40H,20H,10H,0CH,03H,00H,00H,20H,40H,40H,3FH,00H,00H,00H,00H,
;-- 文字: 绍 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 20H,30H,0ACH,63H,10H,00H,80H,42H,32H,0EH,02H,42H,82H,7EH,00H,00H,
DB 22H,23H,22H,12H,12H,00H,00H,7FH,21H,21H,21H,21H,21H,7FH,00H,00H,
;-- 文字: 湖 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 10H,21H,86H,60H,90H,90H,0FFH,90H,90H,00H,0FEH,92H,92H,0FEH,00H,00H,
DB 04H,0FCH,03H,00H,1FH,10H,10H,90H,5FH,30H,0FH,40H,80H,7FH,00H,00H,
PR00: SETB RW ;写字令时序子程序
CLR RS
SETB E
MOV A ,P2
CLR E
JB ACC.7,PR00
CLR RW
MOV A,COM
MOV P2,A
SETB E
CLR E
RET
PR01: SETB RW ;写数据时序子程序
CLR RS
SETB E
MOV A,P2
CLR E
JB ACC.7,PR01
CLR RW
SETB RS
MOV A,DAT
MOV P2,A
SETB E
CLR E
RET
PR0: CLR CS1 ;写子令子程序(左)
LCALL PR00
SETB CS1
RET
PR1: CLR CS1 ;写数据子程序(左)
LCALL PR01
SETB CS1
RET
PR2: CLR CS2 ;写子令子程序(右)
LCALL PR00
SETB CS2
RET
PR3: CLR CS2 ;写数据子程序(右)
LCALL PR01
SETB CS2
RET
CLEAR: MOV R4,#00H ;清显示RAM子程序
CLEAR1: MOV A,R4
ANL A,#07H
ORL A,#0B8H
MOV COM,A
LCALL PR0
LCALL PR2
MOV COM,#40H
LCALL PR0
LCALL PR2
MOV R3,#40H
CLEAR2: MOV DAT,#00H
LCALL PR1
LCALL PR3
DJNZ R3,CLEAR2
INC R4
CJNE R4,#08H,CLEAR1
RET
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -