?? 液晶顯示驅(qū)動(dòng).asm
字號(hào):
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;字符型液晶顯示器一般均采用HD44780及兼容芯片作為控制器,因此其接口方式基本是標(biāo)準(zhǔn)的。
;為便于使用,編寫了驅(qū)動(dòng)程序軟件包
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITESTRING:
MOV A,@R0
JZ WS_RET
CALL WRITECHAR
MOV A,XPOS
CJNE A,#15,WS_1 ;如果XPOS中的值未到15(可顯示的最多位)
JMP WS_RET
WS_1:
INC R0
INC XPOS
JMP WRITESTRING
WS_RET:
RET
SETCUR: ;光標(biāo)設(shè)置命令
MOV A,CUR
JZ S_1 ;參數(shù)為0,轉(zhuǎn)關(guān)顯示
DEC A
JZ S_2 ;參數(shù)為1,轉(zhuǎn)開顯示,但無光標(biāo)
DEC A
JZ S_3 ;參數(shù)為2,轉(zhuǎn)開顯示且有光標(biāo),無閃爍
DEC A
JZ S_4 ;參數(shù)為3,轉(zhuǎn)開顯示,光標(biāo)閃爍
JMP S_RET ;否則返回
S_1:
MOV A,#00001000B ;關(guān)顯示
CALL LCDWC
JMP S_RET
S_2:
MOV A,#00001100B ;開顯示但無光標(biāo)
CALL LCDWC
JMP S_RET
S_3:
MOV A,#00001110B ;開顯示有光標(biāo)但不閃爍
CALL LCDWC
JMP S_RET
S_4:
MOV A ,#00001111B ;開顯示有光標(biāo)且閃爍
CALL LCDWC
JMP S_RET
S_RET:
RET
CLRLCD: ;清屏命令
MOV A,#01H
CALL LCDWC
RET
;在制指定的行與列顯示的字符,xpos——行,ypos——列 A中放待顯示字符
WRITECHAR:
CALL LCDPOS
CALL LCDWD
RET
WAITIDLE: ;檢測(cè)LCD控制器狀態(tài)
PUSH ACC
MOV DPORT,#0FFH
CLR RS
SETB RW
SETB E
NOP
W_1:
MOV A,DPORT
ANL A,#80H
JZ W_2
JMP W_1
W_2:
CLR E
POP ACC
RET
LCDWD: ;寫字符子程序
CALL WAITIDLE
SETB RS
CLR RW
MOV DPORT,A ;以A為數(shù)據(jù)傳遞
SETB E
NOP
CLR E
RET
LCDWC: ;送控制字子程序(檢測(cè)忙信號(hào))
CALL WAITIDLE
LCDWCN: ;送控制字子程序(不檢測(cè)忙信號(hào))
CLR RS
CLR RW
MOV DPORT,A
SETB E
NOP
CLR E
RET
LCDPOS: ;設(shè)置第(XPOS,YPOS)個(gè)字符的DDRAM地址
PUSH ACC
MOV A,XPOS
ANL A,#0FH ;X位置范圍(0~15)
MOV XPOS,A
MOV A,YPOS
ANL A,#01H ;Y位置范圍(0~1)
MOV YPOS,A
CJNE A,#00,LPS_LAY ;(第1行)X:第0~15個(gè)字符
MOV A,XPOS ;DDRAM:0~0FH
JMP LSP_LAX
LPS_LAY:
MOV A,XPOS ;(第二行)X:第0~15個(gè)字符
ADD A,#40H ;DDRAM:40~4FH
LPS_LAX:
ORL A,#80H ;設(shè)置DDRAM地址
CALL LCDWC
POP ACC
RET
RSTLCD:
MOV R6,#15
CALL DELAY ;延時(shí)15ms
MOV A,#38H
CALL LCDWCN
MOV R6,#5 ;延時(shí)5ms
CALL DELAY
CALL LCDWCN
MOV R6,#5 ;延時(shí)5ms
CALL DELAY
CALL LCDWCN
MOV A ,#38H ;顯示模式設(shè)置
CALL LCDWC
MOV A,#08H ;顯示關(guān)閉
CALL LCDWC
MOV A,#01H ;顯示清屏
CALL LCDWC
MOV A,#06H ;顯示光標(biāo)移動(dòng)位置
CALL LCDWC
MOV A,#0CH ;顯示開及光標(biāo)設(shè)設(shè)置
CALL LCDWC
RET
;以下是延時(shí)1ms的延時(shí)程序,用于液晶顯示。該段延時(shí)時(shí)間不要求精確,這里以12MHz晶振
;為例來設(shè)計(jì),可用于低于12MHz晶振的場(chǎng)合。如果晶振頻率高于12MHz,適當(dāng)修改
DELAY:
D1:MOV R5,#25 ;如果12MHz以上晶振,將這個(gè)數(shù)值改為50
D2:MOV R4,#20
DJNZ R4,$
DJNZ R5,D2
DJNZ R6,D1 ;R6用作參數(shù)傳遞
RET
;該通用軟件包可以設(shè)置在程序存儲(chǔ)器的任何空間
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -