能显示2行字符,每行16个字符,共32个字符.
| 1602字符型液晶的引脚说明 |
| 引脚编号 |
符号 |
引脚说明 |
| 1 |
VSS |
电源地 |
| 2 |
VDD |
电源正 |
| 3 |
VL |
液晶显示偏压信号 |
| 4 |
RS |
数据/命令选择端 |
| 5 |
R/W |
读/写选择端 |
| 6 |
E |
使能信号 |
| 7 |
D0 |
数据0 |
| 8 |
D1 |
数据1 |
| 9 |
D2 |
数据2 |
| 10 |
D3 |
数据3 |
| 11 |
D4 |
数据4 |
| 12 |
D5 |
数据5 |
| 13 |
D6 |
数据6 |
| 14 |
D7 |
数据7 |
| 15 |
BLA |
背光源正极 |
| 16 |
BLK |
背光源负极 |
;连线图:

; D0---P0.0
; D1---P0.1
; D2---P0.2
; D3---P0.3
; D4---P0.4
; D5---P0.5
; D6---P0.6
; D7---P0.7
; RS---P2.5
; R/W--P2.6
; E----P2.7
; VL---接10K可调电阻到GND
;系统晶振为11.0592
RS BIT P2.5
RW BIT P2.6
E BIT P2.7
DPORT EQU P0
XPOS EQU R1 ;列方向地址指针
YPOS EQU R2 ;行方向地址指针
CUR EQU R3 ;设定光标参数
NoDisp EQU 0 ;无显示
NoCur EQU 1 ;有显示无光标
CurNoFlash EQU 2 ;有光标但不闪烁
CurFlash EQU 3 ;有光标且闪烁
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:
MOV A,CUR
JZ S_1 ;参数为0,转关显示
DEC A
JZ S_2 ;参数为1,转开显示,但无光标
DEC A
JZ S_3 ;参数为2,转开显示且有光标,无闪烁
DEC A
JZ S_4 ;参数为3,转开显示,光标闪烁
JMP S_RET ;否则返回
S_1:
MOV A,#00001000B ;关显示
CALL LCDWC
JMP S_RET
S_2:
MOV A,#00001100B ;开显示但无光标
CALL LCDWC
JMP S_RET
S_3:
MOV A,#00001110B ;开显示有光标但不闪烁
CALL LCDWC
JMP S_RET
S_4:
MOV A,#00001111B ;开显示有光标且闪烁
CALL LCDWC
S_RET:
RET
;清屏命令
ClrLcd:
MOV A,#01H
CALL LCDWC
RET
;在指定的行与列显示指珲的字符,xpos,行,ypos,列 A,待显示字符
WriteChar:
CALL LCDPOS
CALL LCDWD
RET
;系统资源 一个堆栈
WaitIdle: ;正常读写操作之前必须检测LCD控制器状态
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
;系统资源 a
LcdWd: ;写字符子程序
CALL WAITIDLE
SETB RS
CLR RW
MOV DPORT,A ;以A为数据传递
SETB E
NOP
CLR E
RET
;系统资源 a
LcdWc: ;送控制字子程序(检测忙信号)
CALL WaitIdle
LcdWcn: ;送控制字子程序(不检测忙信号)
CLR RS
CLR RW
MOV DPORT,A
SETB E
NOP
CLR E
RET
;系统资源:一个堆栈
LCDPOS: ;设置第(XPOS,YPOS)个字符的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 ;(第一行)X: 第0----15个字符
MOV A,XPOS ; DDRAM: 0----0FH
JMP LPS_LAX
LPS_LAY:
MOV A,XPOS ;(第二行)X: 第0----15个字符
ADD A,#40H ;DDRAM: 40----4FH
LPS_LAX:
ORL A,#80H ;设置DDRAM地址
CALL LCDWC
POP ACC
RET
;系统资源 a
RSTLCD:
MOV R6,#15 ;如果使用12M或以下晶振,此数值不必改,如用24M晶振,须用30
CALL DELAY ;延时15毫秒
MOV A,#38H
CALL LCDWCN
MOV R6,#5 ;延时5毫秒,如晶振频率高于12M,加大该值
CALL DELAY
CALL LCDWCN
MOV R6,#5 ;延时5毫秒,如晶振频率高于12M,加大该值
CALL DELAY
CALL LCDWCN
MOV A,#38H ;显示模式设置
CALL LCDWC
MOV A,#08H ;显示关闭
CALL LCDWC
MOV A,#01H ;显示清屏
CALL LCDWC
MOV A,#06H ;显示光标移动位置
CALL LCDWC
MOV A,#0CH ;显示开及光标设置
CALL LCDWC
RET
;系统资源:r4,r5,r6
DELAY:
D_1: MOV R5,#25 ;延时子程序(1MS)
D_2: MOV R4,#20
DJNZ R4,$
DJNZ R5,D_2
DJNZ R6,D_1 ;R6用作参数传递
RET
END |