單片機是怎樣在液晶上顯示字符的?
王中波 2010/4/29
(接上頁) 的狀態(tài)字中的各位含意如表2。
表2
位 狀態(tài) 1 0
STA0:指令讀寫狀態(tài) 準備好 忙
STA1:數(shù)據(jù)讀寫狀態(tài) 準備好 忙
STA2:數(shù)據(jù)自動讀狀態(tài) 準備好 忙
STA3:數(shù)據(jù)自動寫狀態(tài) 準備好 忙
STA4:未用
STA5:控制器運行檢測可能性 可能 不能
STA6:屏讀/拷貝出錯狀態(tài) 出錯 正確
STA7:閃爍狀態(tài)檢測 正常顯示 關(guān)顯示
3.程序舉例(僅供參考)
(1)清顯示RAM子程序
MOV R2,#00H
MOV R3,#00H
MOV R4,#24H ;設(shè)地址指針
CALL PR1
MOV R4,#0B0H ;自動寫指令
CALL PR12
MOV R2,#1FH ;共8K
PR31:
3
MOV R3,#0FFH
PR32:
CALL PR03
CLR A
CALL PR14
DJNZ R3,PR32
DJNZ R2,PR31
MOV R4,#0B2H ;自動寫結(jié)束
CALL PR12
RET
(2)檢測狀態(tài):
PR01: ;判LCD 忙否?
MOVDPTR,#4001H ;LCD指令口地址
MOVX A,@DPTR
JNB ACC.0,PR01
JNB ACC.1,PR01
RET
PR03: ;判LCD 自動寫標志
MOVDPTR,#4001H
MOVX A,@DPTR
JNB ACC.3,PR03
RET
(3)寫數(shù)據(jù)或指令程序
PR1: ;雙字節(jié)參數(shù)指令入口
CALL PR01
MOVA,R2
CALL PR14
PR11: ;單字節(jié)參數(shù)指令入口
CALL PR01
MOVA,R3
CALL PR14
PR12: ;無字節(jié)參數(shù)指令入口
CALL PR01
MOVA,R4
JMP PR15
PR14: ;寫數(shù)據(jù)入口:
MOV DPTR,#4000H ;LCD數(shù)據(jù)口地址
PR15:
MOVX @DPTR,A
RET
(4)顯示漢字子程序:
DIS_HZ:
4
MOVA,R6 ;(R6):LCD上開始顯示的行數(shù)
MOVB,A
MOVA,#10H ;每個漢字占16行*8列像素
MULAB ;根據(jù)R6,R7 找顯示RAM地址
MOV R2,A
MOV A,B
MOV R3,A
MOV A,R2
CLR C
ADDA,R7 ;(R7):LCD上開始顯示的列數(shù)
MOV R2,A
MOV A,R3
MOV R3,A
ADDC A,#08H ;設(shè)0800H為圖形區(qū)首址
MOV R7,#00H
HZ_1:
MOV R4,#24H ;顯示RAM區(qū)地址指針設(shè)置命令
MOV A,R3
MOV R6,A
CALL PR1
MOV DPL,32H ;(32H)要顯示的漢字的首地址低字節(jié)
MOV DPH,33H ;(33H)要顯示的漢字的首地址高字節(jié)
MOV A,R7
MOVC A,@A+DPTR
MOV R3,A
MOV R4,#0C0H ;寫一字節(jié)
CALL PR11
MOV A,R6
MOV R3,A
INC R7
MOV A,R2
ADD A,#01H
MOV R2,A
MOV A,R3
ADDC A,#00H
MOV R3,A
MOV R4,#24H
MOV A,R3
MOV R6,A
CALL PR1
MOV DPL,32H
MOV DPH,33H
MOV A,(未完,下一頁)
|