📄 jzd12864j-02.asm
字号:
;深圳金泽迪液显科技有限公司的12864串并口兼容字库模块
;www.jzdlcd.cn 咨询0755 25452337
;Controller:ST7920 MCU:AT89C52 12.0MHz
;字模取模方式:横向取模
;文件名:JZD12864J-02.asm
;LCM 接口:1:GND 2:VCC 3:V0 4.RS 5:RW 6:E 7--14:DB0-DB7 15:PSB 16:NC 17:RST 18:Vout
RS EQU P3.3
RW EQU P3.4
E EQU P3.5
PSB EQU P3.0
RST EQU P3.6
COM EQU 20H
DAT EQU 21H
X EQU 30H
Y EQU 31H
Z EQU 32H
SC EQU 33H
W EQU 34H
ORG 0000H
MOV SP,#60H
LJMP DISP
ORG 0040H
DISP: CLR PSB
LCALL DELAY
SETB PSB
LCALL DELAY
MOV COM,#30H ;功能设置
ACALL WRI ;写指令
LCALL DELAY ;延迟
MOV COM,#0CH ;显示开/关控制
ACALL WRI ;写指令
LCALL DELAY ;延迟
MOV COM,#01H ;清屏
ACALL WRI ;写指令
LCALL DELAY ;延迟
MOV COM,#06H ;输入方式设置
ACALL WRI ;写指令
AGAIN:
MOV COM,#01H ;清屏
ACALL WRI ;写指令
LCALL DEF_CHAR
MOV COM,#80H
LCALL WRI
MOV R3,#10
MOV COM,#01H ;清屏
LCALL WRI ;写指令
MOV COM,#80H
LCALL WRI
MOV R3,#10
TEST11:MOV DPTR,#CGRAM1 ;CGRAM TEST ;隔行
LCALL WRITE_CGRAM
DJNZ R3,TEST11
MOV COM,#90H
LCALL WRI
MOV R3,#10
TEST12:
MOV DPTR,#CGRAM1
LCALL WRITE_CGRAM
DJNZ R3,TEST12
MOV COM,#88H
LCALL WRI
MOV R3,#10
TEST13:
MOV DPTR,#CGRAM1
LCALL WRITE_CGRAM
DJNZ R3,TEST13
MOV COM,#98H
LCALL WRI
MOV R3,#10
TEST14:
MOV DPTR,#CGRAM1
LCALL WRITE_CGRAM
DJNZ R3,TEST14
LCALL DELAY1
JNB P3.7,$
;******************************************************************************
MOV COM,#01H ;清屏
ACALL WRI ;写指令
;******************************************************************************
MOV COM,#80H ;隔列
LCALL WRI
MOV R3,#10
TEST21:MOV DPTR,#CGRAM2
LCALL WRITE_CGRAM
DJNZ R3,TEST21
MOV COM,#90H
LCALL WRI
MOV R3,#10
TEST22:MOV DPTR,#CGRAM2
LCALL WRITE_CGRAM
DJNZ R3,TEST22
MOV COM,#88H
LCALL WRI
MOV R3,#10
TEST23:MOV DPTR,#CGRAM2
LCALL WRITE_CGRAM
DJNZ R3,TEST23
MOV COM,#98H
LCALL WRI
MOV R3,#10
TEST24:MOV DPTR,#CGRAM2
LCALL WRITE_CGRAM
DJNZ R3,TEST24
LCALL DELAY1
JNB P3.7,$
;******************************************************************************
MOV COM,#80H ;全黑
LCALL WRI
MOV R3,#10
TEST31:MOV DPTR,#CGRAM3
LCALL WRITE_CGRAM
DJNZ R3,TEST31
MOV COM,#90H
LCALL WRI
MOV R3,#10
TEST32:MOV DPTR,#CGRAM3
LCALL WRITE_CGRAM
DJNZ R3,TEST32
MOV COM,#88H
LCALL WRI
MOV R3,#10
TEST33:MOV DPTR,#CGRAM3
LCALL WRITE_CGRAM
DJNZ R3,TEST33
MOV COM,#98H
LCALL WRI
MOV R3,#10
TEST34:MOV DPTR,#CGRAM3
LCALL WRITE_CGRAM
DJNZ R3,TEST34
LCALL DELAY1
JNB P3.7,$
;****************************************************************** ;全白
MOV COM,#01H ;清屏
LCALL WRI ;写指令
LCALL DELAY1
JNB P3.7,$
;******************************************************************;雪花
MOV COM,#80H
LCALL WRI
MOV R3,#10
TEST41:MOV DPTR,#CGRAM4
LCALL WRITE_CGRAM
DJNZ R3,TEST41
MOV COM,#90H
LCALL WRI
MOV R3,#10
TEST42:MOV DPTR,#CGRAM4
LCALL WRITE_CGRAM
DJNZ R3,TEST42
MOV COM,#88H
LCALL WRI
MOV R3,#10
TEST43:MOV DPTR,#CGRAM4
LCALL WRITE_CGRAM
DJNZ R3,TEST43
MOV COM,#98H
LCALL WRI
MOV R3,#10
TEST44:MOV DPTR,#CGRAM4
LCALL WRITE_CGRAM
DJNZ R3,TEST44
LCALL DELAY1
JNB P3.7,$
;******************************************************************;显示月
NEXT1: MOV R4,#10 ;递增16次
MOV COM,#80H ;设置DDRAM的地址/第一行的起始地址
ACALL WRI
DEMO10: MOV A,#0D4H
MOV DAT,A
LCALL WRD ;写显示数据
MOV A,#0C2H
MOV DAT,A
LCALL WRD ;写显示数据
DJNZ R4,DEMO10 ;循环24次,不够16次跳到DEMO1继续执行
MOV R4,#010
MOV COM,#090H ;设置DDRAM的地址/第二行的起始地址
ACALL WRI
DEMO20: MOV A,#0D4H
MOV DAT,A
LCALL WRD ;写显示数据
MOV A,#0C2H
MOV DAT,A
LCALL WRD ;写显示数据
DJNZ R4,DEMO20 ;循环24次,不够24次跳到DEMO4继续执行
MOV R4,#010
MOV COM,#88H ;设置DDRAM的地址/第二行的起始地址
ACALL WRI
DEMO30: MOV A,#0D4H
MOV DAT,A
LCALL WRD ;写显示数据
MOV A,#0C2H
MOV DAT,A
LCALL WRD ;写显示数据
DJNZ R4,DEMO30 ;循环24次,不够24次跳到DEMO4继续执行
MOV R4,#010
MOV COM,#098H ;设置DDRAM的地址/第二行的起始地址
ACALL WRI
DEMO40: MOV A,#0D4H
MOV DAT,A
LCALL WRD ;写显示数据
MOV A,#0C2H
MOV DAT,A
LCALL WRD ;写显示数据
DJNZ R4,DEMO40 ;循环24次,不够24次跳到DEMO4继续执行
LCALL DELAY1
JNB P3.7,$
MOV COM,#01H ;清屏
ACALL WRI ;写指令
MOV R4,#8
MOV R5,#32
MOV X,#80H
MOV Y,#80H
MOV DPTR,#PIC ;PIC
;LCALL CLEAR_GRAPHIC
WRGDRAM2:
MOV COM,#34H ;关闭绘图显示功能
LCALL WRI
LCALL GDRAMADD ;分别写入纵坐标、横坐标 Y,X
MOV COM,#30H ;打开ST7920基本指令
LCALL WRI
WRGDRAM21: ;连送两次数据:D15-D8,D7-D0
MOV A,#00
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRD
INC DPTR
MOV A,#00
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRD
INC DPTR
INC X ;X轴光标递增 1
DJNZ R4,WRGDRAM2 ;一直送8次,即8*16=128 bits
MOV R4,#8 ;显示完第一行,即8*16=128 bits,置光标回第二行的首地址
MOV X,#80H
INC Y ;Y变为第二行的坐标值
LCALL GDRAMADD
DJNZ R5,WRGDRAM2 ;一共送32行,即显示完上半屏:128*32
MOV COM,#36H ;打开绘图显示功能,写入GDRAM
LCALL WRI
MOV R4,#8 ;显示下半屏:128*32,其他一样,但X的初值为:88H
MOV R5,#32 ;其它一样
MOV X,#88H
MOV Y,#80H
WRGDRAM22:
MOV COM,#34H
LCALL WRI
LCALL GDRAMADD
MOV COM,#30H
LCALL WRI
WRGDRAM23:
MOV A,#00
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRD
INC DPTR
MOV A,#00
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRD
INC DPTR
INC X
DJNZ R4,WRGDRAM22
MOV R4,#8
MOV X,#88H
INC Y
LCALL GDRAMADD
DJNZ R5,WRGDRAM22
MOV COM,#36H
LCALL WRI
LCALL DELAY1
JNB P3.7,$
LCALL DELAY
MOV COM,#30H ;功能设置
ACALL WRI ;写指令
LCALL DELAY ;延迟39uS
MOV COM,#0CH ;显示开/关控制
ACALL WRI ;写指令
LCALL DELAY ;延迟39uS
MOV COM,#01H ;清屏
ACALL WRI ;写指令
LCALL DELAY ;延迟39uS
MOV COM,#06H ;输入方式设置
ACALL WRI ;写指令
LJMP AGAIN
CLEAR_GRAPHIC:
MOV R4,#16
MOV R5,#32
MOV Y, #80H
MOV X, #80H
CLR_GRAPHIC1:
MOV COM, #34H
LCALL WRI
LCALL GDRAMADD
CLR_GRAPHIC2:
MOV COM, #30H
LCALL WRI
MOV DAT,#00H
LCALL WRD
MOV DAT,#00H
LCALL WRD
INC X
DJNZ R4,CLR_GRAPHIC1
MOV X, #80H
INC Y
LCALL GDRAMADD
DJNZ R5,CLR_GRAPHIC1
MOV COM, #36H
LCALL WRI
RET
DEF_CHAR: ;WRITE TO CGRAM
MOV COM,#01000000B ;SET CGRAM ADDRESS
LCALL WRI
MOV R3,#8
DEF1:MOV DAT,#000H
LCALL WRD
LCALL WRD
MOV DAT,#0FFH
LCALL WRD
LCALL WRD
DJNZ R3,DEF1
MOV R3,#8
DEF2:MOV DAT,#0AAH
LCALL WRD
LCALL WRD
MOV DAT,#0AAH
LCALL WRD
LCALL WRD
DJNZ R3,DEF2
MOV R3,#8
DEF3:MOV DAT,#0FFH
LCALL WRD
LCALL WRD
MOV DAT,#0FFH
LCALL WRD
LCALL WRD
DJNZ R3,DEF3
MOV R3,#8
DEF4:MOV DAT,#0AAH
LCALL WRD
LCALL WRD
MOV DAT,#055H
LCALL WRD
LCALL WRD
DJNZ R3,DEF4
MOV R3,#8
RET
WRITE_CGRAM: ;CGRAM TESTING
CLR A
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRD
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRD
RET
WRI: PUSH ACC
CLR RS
SETB RW
WRI1: MOV P1,#0FFH
SETB E
MOV A,P1
CLR E
JB ACC.7,WRI1
CLR RW
MOV P1,COM
SETB E
CLR E
POP ACC
RET
WRD: PUSH ACC
CLR RS
SETB RW
WRD1: MOV P1,#0FFH
SETB E
MOV A,P1
CLR E
JB ACC.7,WRD1
SETB RS
CLR RW
MOV P1,DAT
SETB E
CLR E
POP ACC
RET
GDRAMADD:
MOV COM,Y
LCALL WRI
MOV COM,X
LCALL WRI
RET
SCROLL:
MOV COM,SC
LCALL WRI
RET
DELAY: MOV R7,#0FFH ;06D
DELAY4: MOV R6,#00FH ;07D
LOOP2: DJNZ R6,LOOP2
DJNZ R7,DELAY4
RET
DELAY1: MOV R4,#08
DELAY11:MOV R7,#0FFH ;06D
DELAY41:MOV R6,#0FFH ;07D
DJNZ R6,$
DJNZ R7,DELAY41
DJNZ R4,DELAY11
RET
XX: MOV R5,#0FFH
XX1: MOV R6,#0FFH
XX2: DJNZ R6,XX2
DJNZ R5,XX1
RET
CGRAM1: DB 000H,000H ;这里是自造字符地址表
CGRAM2: DB 000H,002H
CGRAM3: DB 000H,004H
CGRAM4: DB 000H,006H
PIC:;用户自行填写代码
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -