📄 12864.asm
字号:
;OCM12864模块测试程序
RS EQU P1.2 ;寄存器选择,H:写数据,L:写指令
RW EQU P1.3 ;读写信号线,H:读,L:写
E EQU P1.4 ;读写使能端
CS1 EQU P1.5 ;CS1=H,选择左半屏
CS2 EQU P1.6 ;CS2=H,选择右半屏
RESET EQU P1.7 ;复位,低有效
DB0_7 EQU P0
DISP_X EQU 30H
DISP_Y EQU 31H
DISP_Z EQU 32H
LONG EQU 33H
WIDE EQU 34H
DATA1_WR EQU 35H
DATA2_WR EQU 36H
COUNTER1 EQU 37H
COUNTER2 EQU 38H
COUNTER3 EQU 39H
;**********************************************
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: MOV SP,#5FH
CLR RESET ;复位
NOP
NOP
NOP
SETB RESET
MOV DISP_Z,#0C0H ;置0起始行
;****************4行32字显示*********************
;先显示左半屏第一,左半屏第二行, 左半屏第三行,左半屏第四行;
;再显示右半屏第一,右半屏第二行, 右半屏第三行,右半屏第四行;
LGS1: SETB CS1 ;左半屏显示
CLR CS2 ;右半屏不显示
MOV DISP_X,#0B8H ;置页地址为0页
MOV DISP_Y,#40H ;置列地址为0列
MOV LONG,#40H ;长64点阵
MOV WIDE,#02H ;宽2行,16点阵
MOV DPTR,#HZ11 ;查表
LCALL CHN_DISP ;调显示子程序,显示第一行左半
MOV DISP_X,#0BAH ;置页地址为2页
MOV DPTR,#HZ21 ;查表
LCALL CHN_DISP ;调显示子程序,显示第二行左半
MOV DISP_X,#0BCH ;置页地址为4页
MOV DPTR,#HZ31 ;查表
LCALL CHN_DISP ;调显示子程序,显示第三行左半
MOV DISP_X,#0BEH ;置页地址为6页
MOV DPTR,#HZ41 ;查表
LCALL CHN_DISP ;调显示子程序,显示第四行左半
CLR CS1 ;左半屏不显示
SETB CS2 ;右半屏显示
MOV DISP_X,#0B8H ;置页地址为0页
MOV DISP_Y,#40H ;置列地址为0列
MOV LONG,#40H ;长64点阵
MOV WIDE,#02H ;宽2行,16点阵
MOV DPTR,#HZ12 ;查表
LCALL CHN_DISP ;调显示子程序,显示第一行右半
MOV DISP_X,#0BAH ;置页地址为2页
MOV DPTR,#HZ22 ;查表
LCALL CHN_DISP ;调显示子程序,显示第二行右半
MOV DISP_X,#0BCH ;置页地址为4页
MOV DPTR,#HZ32 ;查表
LCALL CHN_DISP ;调显示子程序,显示第三行右半
MOV DISP_X,#0BEH ;置页地址为6页
MOV DPTR,#HZ42 ;查表
LCALL CHN_DISP ;调显示子程序,显示第四行右半
LCALL DELAY1 ;2S延时
;----------------------------------------------
;显示整幅图片,先显示左半屏第0页64列,再显示右半屏第0页64列
;循环显示完8页
LGS2: MOV DPTR,#PIC1 ;查表
LCALL PHO_DISP ;调图片显示程序
LCALL DELAY1
;----------------------------------------------
;----------------------------------------------
;显示整幅图片,先显示左半屏第0页64列,再显示右半屏第0页64列
;循环显示完8页
LGS3: MOV DPTR,#PIC2 ;查表
LCALL PHO_DISP ;调图片显示程序
LCALL DELAY1
;----------------------------------------------
;显示整幅图片,先显示左半屏第0页64列,再显示右半屏第0页64列
;循环显示完8页
LGS4: MOV DPTR,#PIC0 ;查表
LCALL PHO_DISP ;调图片显示程序
LCALL DELAY1
;----------------------------------------------
;显示整幅图片,先显示左半屏第0页64列,再显示右半屏第0页64列
;循环显示完8页
LGS5: MOV DPTR,#COCK ;查表
LCALL PHO_DISP ;调图片显示程序
LCALL DELAY1
;----------------------------------------------
;显示整幅图片,先显示左半屏第0页64列,再显示右半屏第0页64列
;循环显示完8页
LGS7: MOV DPTR,#CAR ;查表
LCALL PHO_DISP ;调图片显示程序
LCALL DELAY1
;----------------------------------------------
;显示整幅图片,先显示左半屏第0页64列,再显示右半屏第0页64列
;循环显示完8页
LGS8: MOV DPTR,#PIC3 ;查表
LCALL PHO_DISP ;调图片显示程序
LCALL DELAY1
;----------------------------------------------
;----------------------------------------------
LJMP LGS1
;**********************************************
WRLATTICE: MOV COUNTER1,#08H ;写点阵,共8页
MOV DISP_X,#0B8H ;置页地址为0页
MOV DISP_Z,#0C0H ;置0起始行
MOV DISP_Y,#40H ;置列地址为0列
LCALL DISP ;调开显示
LATTICE1: LCALL WR_ZB ;调确定显示位置
MOV COUNTER2,#20H ;写点阵,共32列
LATTICE2: MOV A,DATA1_WR ;送数据
LCALL WR_DATA ;调写数据子程序,列自动加1
MOV A,DATA2_WR ;送数据
LCALL WR_DATA ;调写数据子程序,写下一列
DJNZ COUNTER2,LATTICE2 ;循环写列
INC DISP_X ;显示下一行
DJNZ COUNTER1,LATTICE1 ;循环写页
RET
;----------------------------------------------
PHO_DISP: MOV COUNTER1,#08H ;显示高度8页
MOV DISP_X,#0B8H ;置页地址为0页
MOV DISP_Z,#0C0H ;置0起始行
MOV DISP_Y,#40H ;置列地址为0列
PHO_DISP1: SETB CS1 ;左半屏显示
CLR CS2 ;右半屏不显示
LCALL DISP ;调开显示
LCALL WR_ZB ;调确定显示位置
MOV COUNTER2,#40H ;显示宽度64点距
PHO_DISP11: CLR A
MOVC A,@A+DPTR
LCALL WR_DATA
INC DPTR
DJNZ COUNTER2,PHO_DISP11 ;显示64列
PHO_DISP2: CLR CS1 ;左半屏不显示
SETB CS2 ;右半屏显示
LCALL DISP ;调开显示
LCALL WR_ZB ;调确定显示位置
MOV COUNTER2,#40H ;显示宽度64点距
PHO_DISP21: CLR A
MOVC A,@A+DPTR
LCALL WR_DATA
INC DPTR
DJNZ COUNTER2,PHO_DISP21 ;显示64列
INC DISP_X ;显示下一页
DJNZ COUNTER1,PHO_DISP1 ;显示8页
RET
;----------------------------------------------
CHN_DISP: LCALL DISP ;显示LONGxWIDE大小的图形
MOV COUNTER1,WIDE
CHN_DISP1: LCALL WR_ZB
MOV COUNTER2,LONG
CHN_DISP2: CLR A
MOVC A,@A+DPTR
LCALL WR_DATA
INC DPTR
DJNZ COUNTER2,CHN_DISP2 ;显示长度
INC DISP_X ;显示下一页
DJNZ COUNTER1,CHN_DISP1 ;显示宽度
RET
;----------------------------------------------
WR_ZB: MOV A,DISP_X ;确定显示位置
LCALL WR_INT
MOV A,DISP_Z
LCALL WR_INT
MOV A,DISP_Y
LCALL WR_INT
RET
;----------------------------------------------
DISP: MOV A,#3EH ;关显示
LCALL WR_INT ;调写入命令子程序
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -