以上所有的字模數(shù)據(jù)都存放在單片機(jī)W78E58的程序存儲器中,如用到的漢字、圖形較多,可選用較大容量的程序存儲器。通用子程序:通用子程序分左半屏、右半屏寫指令代碼子程序和寫顯示數(shù)據(jù)子程序。液晶顯示驅(qū)動器HD16202內(nèi)部有個忙標(biāo)志寄存器,當(dāng)BF=1時,表示內(nèi)部操作正在運(yùn)行,不能接受外部數(shù)據(jù)或指令。下面子程序中設(shè)指令代碼寄存器為COMM,數(shù)據(jù)寄存器為DATA。(COMMEQU20H/*指令寄存器*/DATAEQU21H/*數(shù)據(jù)寄存器*/)(1)左半屏寫指令子
以上所有的字模數(shù)據(jù)都存放在單片機(jī)
W78E58的程序存儲器中,如用到的漢字、圖形較多,可選用較大容量的程序存儲器。
通用子程序:通用子程序分左半屏、右半屏寫指令代碼子程序和寫顯示數(shù)據(jù)子程序。液晶顯示驅(qū)動器HD
16202 內(nèi)部有個忙標(biāo)志寄存器,當(dāng)BF=1 時,表示內(nèi)部操作正在運(yùn)行,不能接受外部數(shù)據(jù)或指令。下面子程序中設(shè)指令代碼寄存器為COMM,數(shù)據(jù)寄存器為DATA。
(COMM EQU 20H /*指令寄存器*/ DATA EQU 21H /*數(shù)據(jù)寄存器*/)
(1) 左半屏寫指令子程序
WR_CMD1:
MOVDPTR,#CRADR1 ;/*讀狀態(tài)字口地址*/
WAIT1: MOVX A,@DPTR ;/* 讀狀態(tài)字 */
JB ACC.7,WAIT1 ;/*判忙標(biāo)志BF,如BF=1 忙,等待*/
MOV DPTR,#CWADR1 ;/*寫指令字口地址*/
MOV A,COMM ;/*取指令代碼*/
MOVX @DPTR,A ;/*寫指令代碼*/
RET
(2)左半屏寫數(shù)據(jù)子程序
WR_DATA1:MOV DPTR,#CRADR1 ;/*讀狀態(tài)字口地址*/
WAIT11: MOVX A,@DPTR ;/* 讀狀態(tài)字 */
JB ACC.7,WAIT11 ;/*判忙標(biāo)志BF,如BF=1 忙,等待*/
MOV DPTR,#DWADR1 ;/*寫數(shù)據(jù)字口地址*/
MOV A,DATA ;/*取數(shù)據(jù)/
MOVX @DPTR,A ;/*寫數(shù)據(jù)*/
RET
(3)右半屏寫指令子程序WR_CMD2 和右半屏寫數(shù)據(jù)子程序WR_DATA2 的編制同左半屏子程序相同,只是對應(yīng)口地址不同。
8X16 字符顯示子程序:MGLS
12864 液晶顯示屏由二片HD61202 控制,
LCD顯示中應(yīng)盡量避免一個字符一半在左半屏顯示,另一半在右半屏顯示的情況。設(shè)列地址寄存器為COLUMN,頁地址寄存器為PAGE,要顯示的字符代碼寄存器為ASCIICODE,W78E58 內(nèi)RAM28H-RAM37H 共16 個字節(jié)存放8×16 的點(diǎn)陣數(shù)據(jù),生成的8×16 點(diǎn)陣庫文件存放在單片機(jī)W78E58 存儲器中的首地址定義為ASCII_DOT816。
DISP_ASCII816: MOV DPTR,#ASCII_DOT816 ;8×16 點(diǎn)陣庫首地址
MOV A,ASCIICODE ;顯示字符代碼ASCIICODE
MOV B,#16 ;每個字符點(diǎn)陣占16 個字節(jié)
MULAB ;計算顯示字符在字庫的首地址