WAIT1: MOVX A,@DPTR ;/* 读状态字 */
JB ACC.7,WAIT1 ;/*判忙标志BF,如BF=1 忙,等待*/
MOV DPTR,#CWADR1 ;/*写指令字口地址*/
MOV A,COMM ;/*取指令代码*/
MOVX @DPTR,A ;/*写指令代码*/
RET
(2)左半屏写数据子程序
WR_DATA1:MOV DPTR,#CRADR1 ;/*读状态字口地址*/
WAIT11: MOVX A,@DPTR ;/* 读状态字 */
JB ACC.7,WAIT11 ;/*判忙标志BF,如BF=1 忙,等待*/
MOV DPTR,#DWADR1 ;/*写数据字口地址*/
MOV A,DATA ;/*取数据/
MOVX @DPTR,A ;/*写数据*/
RET
(3)右半屏写指令子程序WR_CMD2 和右半屏写数据子程序WR_DATA2 的编制同左半屏子程序相同,只是对应口地址不同。
8X16 字符显示子程序:MGLS12864 液晶显示屏由二片HD61202 控制,LCD 显示中应尽量避免一个字符一半在左半屏显示,另一半在右半屏显示的情况。设列地址寄存器为COLUMN,页地址寄存器为PAGE,要显示的字符代码寄存器为ASCIICODE,W78E58 内RAM28H-RAM37H 共16 个字节存放8×16 的点阵数据,生成的8×16 点阵库文件存放在单片机W78E58 存储器中的首地址定义为ASCII_DOT816。
DISP_ASCII816: MOV DPTR,#ASCII_DOT816 ;8×16 点阵库首地址
MOV A,ASCIICODE ;显示字符代码ASCIICODE
MOV B,#16 ;每个字符点阵占16 个字节
MUL AB ;计算显示字符在字库的首地址
ADD A,DPL
MOV DPL,A
MOV A,DPH
ADDC A,B
MOV DPH,A
;MOV R0,#28H ;将点阵数据放到RAM28H-RAM37H
MOV R2,#00H
LP_MOVDOT16: MOV A,R2
MOVC A,@A+DPTR