一、KM12864A模块的硬件结构
1、KM12864A由两片带控制器的列驱动电路KS0108和一片行驱动电路KS0107组成主要的硬件电路。另外还可以附加负压发生电路、分压电路。显示方面由一片128*64点的液晶片组成。
2、两片KS0108将显示区分为左右半屏,整个屏从上到下64行分为8页,每页8行,页地址范围为:B8H-BFH。列地址范围为:40H-7FH。数据为纵向读写,即每页的第一行对应D0....第八行对应D7.
3、控制器KS0108的指令相当简单,总共7条指令:显示开关设定(3EH/3FH),显示起始行设定(C0H-FFH),页地址设定(B8H-BFH),列地址设定(40H-7FH),状态读取,写数据,读数据。
二、KM12864A接口定义及其与MCS51单片机接口
三、驱动程序
1、初始化
RW bit P3.1 ;读写选通通道
E bit P3.0 ;使能
RS bit P3.3 ;数据/指令选择通道
CS1 bit P3.4 ;选通
CS2 bit P3.5 ;右半屏选通
CHARC bit 40H ;数据代码
PAGE1 bit 41H ;页地址
COL bit 42H;列地址
LINE bit 43H ;显示起始行
INT: ;模块初始化
MOV A,#0C0H ;显示起始行为第一行
LCALL W_COM1
LCALL W_COM2
MOV A,#03FH ;开显示
LCALL W_COM1
LCALL W_COM2
RET
2、读状态
R_BUSY: ;同时读取两个片KS0108的状态
MOV A,#0FFH
MOV P1,A
NOP
NOP
BUSY:
SETB CS1
SETB CS2
SETB RW
CLR RS
SETB E
MOV A,P1
CLR E
JB ACC.7,BUSY
RET
3、写指令
W_COM1: ;写左半屏
LCALL R_BUSY
SETB CS1;右半屏
CLR CS2
CLR RW
CLR RS
MOV P1,A
SETB E
CLR E
RET
W_COM2: ;写右半屏
LCALL R_BUSY
SETB CS2
CLR CS1
CLR RW
CLR RS
MOV P1,A
SETB E
CLR E
RET
4、写数据
W_D1: ;写左半屏
LCALL R_BUSY
SETB CS1
CLR CS2
CLR RW
SETB RS
MOV P1,A
SETB E
CLR E
RET
W_D2: ;写右半屏
LCALL R_BUSY
SETB CS2
CLR CS1
CLR RW
SETB RS
MOV P1,A
SETB E
CLR E
RET
5、在左半屏写16*16中文
CHINAL:
MOV A,CHARC ;CHAR CODE IN CHAR_TABLE
MOV DPTR,#TABLE1
MOV B,#032
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV R5,#32
MOV A,PAGE1
LCALL W_COM1
MOV A,COL
LCALL W_COM1
CHL1:
MOV A,#00H
MOVC A,@A+DPTR
CPL A
LCALL W_D1
INC DPTR
DEC R5
CJNE R5,#16,CHL1
INC PAGE1
MOV A,PAGE1
LCALL WCOM1
MOV A,COL
LCALL W_COM1
CHL2:
MOV A,#00H
MOVC A,@A+DPTR
CPL A
LCALL W_D1
INC DPTR
DJNZ R5,CHL2
RET
6、在左半屏写8*8英文(ASCII码)
C8x8R:
MOV A,CHARC
MOV DPTR,#TABLE
MOV B,#08H
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV A,PAGE1
LCALL W_COM1
MOV A,COL
LCALL W_COM1
MOV R5,#08H
RR1:
MOV A,#00H
MOVC A,@A+DPTR
CPL A
LCALL WD2
INC DPTR
DJNZ R5,RR1
RET