(一)常見12864液晶的控制器種類
(1)ST7920類 這種控制器帶中文字庫,該控制器的液晶還支持畫圖方式,支持68時序8位和4位并口以及串口。
(2)KS0108類 這種控制器指令簡單,不帶字庫。支持68時序8位并口。
(3)T6963C類 這種控制器功能強大,帶西文字庫。有文本和圖形兩種顯示方式。有文本和圖形兩個圖層,并且支持兩個圖層的疊加顯示。支持80時序8位并口。
(4)COG類 常見的控制器有S6B0724和ST7565,這兩個控制器指令兼容。支持68時序8位并口,80時序8位并口和串口。COG類液晶的特點是結構輕便,成本低。
下面以KS0108控制器為例,講解這種液晶顯示模塊的用法。
(二)以KS0108為控制器的液晶顯示模塊結構圖
1、外形圖(正反面)

2、內部結構框圖

注:KS108B及兼容芯片,IC2控制模塊的左半屏,IC1控制模塊的右半屏,IC3為行驅動器,IC1IC2 為列驅動器。
(三)12864液晶顯示模塊技術參數和接口

(四)12864液晶顯示模塊的操作指令
1、指令表

2、 基本操作時序:
(1)讀狀態:輸入:RS=L,R/W=H,CS1 或CS2=H,E=H輸出:D0~D7=狀態字
(2)寫指令:輸入:RS=L,R/W=L,D0~D7=指令碼,CS1或CS2=H,E=高脈沖輸出:無
(3)讀數據:輸入:RS=H,R/W=H,CS1 或CS2=H,E=H輸出:D0~D7=數據
(4)寫數據:輸入:RS=H,R/W=L,D0~D7=數據,CS1或CS2=H,E=高脈沖輸出:無
3、指令說明


(四)與51單片機的連接

(五)測試程序
ORG 0000H
AJMPKS
ORG 0003H
RETI
ORG 000BH
LJMP 0C00H
RETI
ORG 001BH
RETI
ORG 0023H
; AJMPS ;接收數據轉S
RSPIN EQU 80h
RWPIN EQU 81h
EPIN EQU 82h
CS1PIN EQU 83h
CS2PIN EQU 84h
XPOS EQU 1AH ;列方向地址指針(用于LCDPOS子程序)
YPOS EQU 1BH ;行方向地址指針(用于LCDPOS子程序)
KS: LACALL MAIN;顯示漢字
LCALL QXS3;清顯示
LCALL SBQ;畫正弦波
AJMP KS
MAIN: MOVYPOS,#0
MOV XPOS,#0
LCALL LCDRESET ;初始化顯示器
MOV A,#55H
ACALL LCDFILL ;劃線
MOVDPTR,#PL;0900H ;顯示戶名:頻率
MOV R7,#32
LCALL PAC_PA
MOVDPTR,#MH;09E0H ;輸出空格
MOV R7,#32
LCALL PAC_PA
MOV R0,#30H
MOV R2,#2
LCALLXSBH1 ;顯示2e~2fH中的數字
MOV DPTR,#KG ;輸出一個空格占一個漢字的寬度16*16
MOV R7,#16
LCALL PAC_PA
MOV DPTR,#KG ;輸出一個空格
MOV R7,#16
LCALL PAC_PA
MOVXPOS,#0 ;在第二行顯示戶號:
MOV YPOS,#2
MOVDPTR,#XP;09A0H 芯片
MOV R7,#32;48
LCALL PAC_PA;call putchardot
MOV DPTR,#MH ;輸出冒號
MOV R7,#32
LCALL PAC_PA
MOVR0,#32H ;22H-2DH存12個數據,2EH,2FH存頻率
MOV R2,#2
CALLXSBH1 ;顯示30~33H中的數字
MOV DPTR,#KG ;輸出一個空格
MOV R7,#16
LCALL call PAC_PA
MOV DPTR,#KG ;輸出一個空格
MOV R7,#16
LCALL PAC_PA
MOV DPTR,#SJ;0940H ;顯示數據:
MOV R7,#32;48
LCALL PAC_PA
MOV DPTR,#MH;09E0H
MOV R7,#32
LCALL PAC_PA
MOVXPOS,#64 ;在第四行顯示數據
MOV YPOS,#4
MOVR0,#34H ;22H-2DH存12個數據,2EH,2FH存頻率
MOV R2,#10
LCALLXSBH1 ;顯示30~33H中的數字
MOV DPTR,#KG ;輸出一個空格
MOV R7,#16
LCALL PAC_PA
MOV DPTR,#KG ;輸出一個空格
MOV R7,#16
LCALL PAC_PA
RET
XSBH:
MOVR0,#30H ;表號在30-36H中
MOV R2,#5 ;;;;
XSBH1: MOVDPTR,#0800H
MOVA,@R0 ;表號是0-9的數字,點陣數是16
ANL A,#0F0H
SWAP A
MOVB,#16 ;根據表號乘以16就是該數字的點陣存儲區首址DPTR
MUL AB
MOV DPL,A
MOV A,B
ADD A,DPH
MOV DPH,A
MOV R7,#8
LCALL PAC_PA
XSBH2: MOV DPTR,#0800H
MOVA,@R0 ;表號是0-9的數字,點陣數是16
ANL A,#0FH
MOVB,#16 ;根據表號乘以16就是該數字的點陣存儲區首址DPTR
MUL AB
MOV DPL,A
MOV A,B
ADD A,DPH
MOV DPH,A
MOV R7,#8
LCALL PAC_PA
INC R0
DJNZ R2,XSBH1
RET
SBQ: MOV DPTR,#SINE ;128*64液晶畫線子程序
sbq2: MOV R0,#22H
MOV B,1FH
MOV A,#127
DIV AB
MOV R5,A;#64;127;255
MOVXPOS,#0
SBQ3: MOVR3,#0
MOVR2,1FH;#2;1;2;4;8 ;R2數值決定水平拉伸,與R5配合
SBQ1: CLR A
MOVC A, @A DPTR
MOV @R0,A
MOVB,#4;20H;32 ;輸出線段,255/4=63,采集的數據壓縮4倍
DIV AB
PUSHDPH ;查表得到Y(X)值
PUSH DPL
MOV DPTR,#CB
MOVC A, @A DPTR
POP DPL
POP DPH
INC DPTR
INC R0
ORL A,R3
MOV R3,A
DJNZ R2, SBQ1
MOV R2,1FH
SBQ0: DEC R0
DJNZ R2,SBQ0
MOVA,@R0 ;得到Y坐標
MOVB,#32 ;256/32=8,采集的數據壓縮8倍
DIV AB
MOV YPOS,A
MOV A,R3 ;取Y(X)值
CALL LCDWRITE ;定位并寫數據
CALL CUSORNEXT ;X=X 1
DJNZ R5,SBQ3
RET
QXS3: MOV R6,#8 QXS2: MOV YPOS,#0 QXS1: MOVA,#0H ;清顯示,把最后一行清除
MOV R7,A
PB1: MOV XPOS,#0
PA1: MOV A,R7
CALL LCDWRITE ;定位并寫數據
CALL CUSORNEXT
MOV A,XPOS
JNZ PA1 ;XPOS<128則循環(128列)CUSORNEXT子程序當x=128時x=0,y=y 1
DJNZ R6,QXS1
RET
PUTCHARDOT: ;寫顯示
MOV R7,#64
PAC_PA:
CLR A
MOVC A,@ADPTR
CALL LCDWRITE
INC YPOS
INC DPTR
CLR A
MOVC A,@ADPTR
CALL LCDWRITE
DEC YPOS
INC DPTR
CALL CUSORNEXT
MOV A,XPOS
JNZ PAC_LAX
INC YPOS
PAC_LAX:
DJNZ R7,PAC_PA
RET
LCDFILL: ;LCD整屏顯示A的內容
MOV R7,A
MOV YPOS,#0
LFL_PB:MOV XPOS,#0
LFL_PA:MOV A,R7
CALL LCDWRITE ;定位并寫數據
CALL CUSORNEXT
MOV A,XPOS
JNZ LFL_PA ;XPOS<128則循環(128列)
MOV A,YPOS
JNZ LFL_PB ;YPOS<8則循環(8頁)
RET
LCDWRITE: ;定位并寫數據子程序
CALL LCDPOS ;內部寫數指針定位
CALL LCDWD ;寫數據
RET
CUSORNEXT:
ANL YPOS,#7
INC XPOS
MOV A,XPOS
JNB ACC.7,CNT_LAX
MOV XPOS,#0
INC YPOS
MOV A,YPOS
ANL A,#0F8H
JZ CNT_LAX
MOV YPOS,#0
CNT_LAX:
RET
LCDPOS: ;內部寫數指針定位子程序
PUSH ACC
MOV A,XPOS
JB ACC.6,LPS_LAY
MOV A,YPOS ;XPOS列方向小于64則對CS1操作
ANL A,#07H
ADD A,#0B8H
CALL LCDWC1 ;設頁碼
MOV A,XPOS
ANL A,#3FH
ORL A,#40H
CALL LCDWC1 ;設列碼
JMP LPS_LAX
LPS_LAY:MOV A,YPOS ;XPOS列方向大于等于64則對CS2操作
ANL A,#07H
ADD A,#0B8H
CALL LCDWC2 ;設頁碼
MOV A,XPOS
ANL A,#3FH
ORL A,#40H
CALL LCDWC2 ;設列碼
LPS_LAX:POP ACC
RET
LCDWD: ;送數據子程序
MOV B,A
MOV A,XPOS
JB ACC.6,LWD_LAY
MOV A,B ;XPOS列方向小于64則對CS1操作
CALL LCDWD1
JMP LWD_LAX
LWD_LAY:MOV A,B ;XPOS列方向大于等于64則對CS2操作
CALL LCDWD2
LWD_LAX:
RET
LCDRESET: ;LCD控制器復位
MOV A,#3FH ;打開LCD顯示
CALL LCDWC1
CALL LCDWC2
MOV A,#0C0H ;設顯示起始行
CALL LCDWC1
CALL LCDWC2
RET
LCDWC1: ;送片1控制字子程序
CALL WAITIDLE1
MOV P1,A
CLR RSPIN ;RS=0 RW=0 CS1=1 E=高脈沖
CLR RWPIN
SETB CS1PIN
SETB EPIN
NOP
CLR EPIN
CLR CS1PIN
RET
LCDWC2: ;送片2控制字子程序
CALL WAITIDLE2
MOV P1,A
CLR RSPIN ;RS=0 RW=0 CS2=1 E=高脈沖
CLR RWPIN
SETB CS2PIN
SETB EPIN
NOP
CLR EPIN
CLR CS2PIN
RET
LCDWD1: ;片1寫數據子程序
CALL WAITIDLE1
MOV P1,A
SETB RSPIN ;RS=1 RW=0 CS1=1 E=高脈沖
CLR RWPIN
SETB CS1PIN
SETB EPIN
NOP
CLR EPIN
CLR CS1PIN
RET
LCDWD2: ;片2寫數據子程序
CALL WAITIDLE2
MOV P1,A
SETB RSPIN ;RS=1 RW=0 CS2=1 E=高脈沖
CLR RWPIN
SETB CS2PIN
SETB EPIN
NOP
CLR EPIN
CLR CS2PIN
RET
WAITIDLE1:
MOV P1,#0FFH
CLR RSPIN ;RS=0 RW=1 CS1=1 E=高電平
SETB RWPIN
SETB CS1PIN
SETB EPIN
WT1_PA: NOP
JB P1.7,WT1_PA
CLR EPIN
CLR CS1PIN
RET
WAITIDLE2:
CLR RSPIN ;RS=0 RW=1 CS2=1 E=高電平
SETB RWPIN
SETB CS2PIN
SETB EPIN
WT2_PA: NOP
JB P1.7,WT2_PA
CLR EPIN
CLR CS2PIN
RET
LCDRD1: ;片1讀數據子程序
CALL WAITIDLE1
MOV P1,#0FFH
SETB RSPIN ;RS=1 RW=1 CS1=1 E=高電平
SETB RWPIN
SETB CS1PIN
SETB EPIN
MOV A,P1
CLR EPIN
CLR CS1PIN
RET
LCDRD2: ;片2讀數據子程序
CALL WAITIDLE2
MOV P1,#0FFH
SETB RSPIN ;RS=1 RW=1 CS1=2 E=高電平
SETB RWPIN
SETB CS2PIN
SETB EPIN
MOV A,P1
CLR EPIN
CLR CS2PIN
RET
HZKDOT:
ORG 0800H
;(0)
DB0F0H,03H,0F8H,07H,0CH,0CH,0C4H,08H,0CH,0CH,0F8H,07H,0F0H,03H,00H,00H
;(1)
DB00H,00H,10H,08H,18H,08H,0FCH,0FH,0FCH,0FH,00H,08H,00H,08H,00H,00H
;(2)
DB08H,0EH,0CH,0FH,84H,09H,0C4H,08H,64H,08H,3CH,0CH,18H,0CH,00H,00H
;(3)
SZ3:DB08H,04H,0CH,0CH,44H,08H,44H,08H,44H,08H,0FCH,0FH,0B8H,07H,00H,00H
;(4)
sz4:DB0C0H,00H,0E0H,00H,0B0H,00H,98H,08H,0FCH,0FH,0FCH,0FH,80H,08H,00H,00H
;(5)
sz5:DB7CH,04H,7CH,0CH,44H,08H,44H,08H,44H,08H,0C4H,0FH,84H,07H,00H,00H
;(6)
DB0F0H,07H,0F8H,0FH,4CH,08H,44H,08H,44H,08H,0C0H,0FH,80H,07H,00H,00H
;(7)
DB0CH,00H,0CH,00H,04H,0FH,84H,0FH,0C4H,00H,7CH,00H,3CH,00H,00H,00H
;(8)
DB0B8H,07H,0FCH,0FH,44H,08H,44H,08H,44H,08H,0FCH,0FH,0B8H,07H,00H,00H
;(9)
DB38H,00H,7CH,08H,44H,08H,44H,08H,44H,0CH,0FCH,07H,0F8H,03H,00H,00H
;(A)
DB0E0H,0FH,0F0H,0FH,98H,00H,8CH,00H,98H,00H,0F0H,0FH,0E0H,0FH,00H,00H
;(B)
DB04H,08H,0FCH,0FH,0FCH,0FH,44H,08H,44H,08H,0FCH,0FH,0B8H,07H,00H,00H
;(C)
DB0F0H,03H,0F8H,07H,0CH,0CH,04H,08H,04H,08H,0CH,0CH,18H,06H,00H,00H
;(D)
DB04H,08H,0FCH,0FH,0FCH,0FH,04H,08H,0CH,0CH,0F8H,07H,0F0H,03H,00H,00H
;(E)
DB04H,08H,0FCH,0FH,0FCH,0FH,44H,08H,0E4H,08H,0CH,0CH,1CH,0EH,00H,00H
;(F)
DB04H,08H,0FCH,0FH,0FCH,0FH,44H,08H,0E4H,00H,0CH,00H,1CH,00H,00H,00H
XP:;(芯)
DB04H,08H,04H,07H,04H,00H,04H,3FH,1FH,40H,04H,40H,44H,40H,84H,40H,04H,43H,04H,40H,1FH,40H,04H,40H,04H,70H,06H,01H,04H,0EH,00H,00H
;(片)
DB00H,80H,00H,40H,0FEH,3FH,20H,01H,20H,01H,20H,01H,20H,01H,20H,01H,3FH,01H,20H,0FFH,20H,00H,20H,00H,20H,00H,30H,00H,20H,00H,00H,00H
ce:;(測)
DB10H,04H,22H,04H,6CH,0FEH,00H,01H,80H,40H,0FCH,27H,04H,10H,0F4H,0FH,04H,10H,0FEH,67H,04H,00H,0F8H,47H,00H,80H,0FEH,7FH,00H,00H,00H,00H
SJ:;(數據)
DB10H,02H,92H,82H,54H,4EH,30H,33H,0FFH,22H,50H,52H,94H,8EH,32H,40H
DB0D8H,23H,17H,14H,10H,08H,10H,16H,0F0H,61H,18H,0C0H,10H,40H,00H,00H
DB10H,02H,10H,42H,10H,81H,0FFH,7FH,90H,40H,50H,38H,0FEH,07H,92H,0FCH,92H,44H,92H,44H,0F2H,47H,92H,44H,92H,44H,0DFH,0FEH,82H,04H,00H,00H
PL:;(頻)
DB40H,08H,7CH,87H,40H,40H,0FFH,2FH,48H,10H,6CH,0FH,4AH,80H,0F2H,8FH,12H,40H,1AH,20H,0D6H,1FH,12H,20H,12H,40H,0FBH,0CFH,12H,00H,00H,00H
;(率)
DB00H,08H,14H,09H,0A4H,08H,44H,08H,04H,09H,24H,09H,0B5H,09H,6EH,0FFH,24H,09H,94H,09H,04H,0BH,44H,08H,0A6H,08H,14H,0DH,00H,08H,00H,00H
MH:;(:)
DB00H,00H,00H,00H,00H,00H,00H,00H,80H,31H,0C0H,7BH,0C0H,7BH,80H,31H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
KG:;( )
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
FS:;(0A20H)(發)(8008)
DB 00H,40H,10H,20H,18H,90H,16H,88H,10H,46H,90H,41H,0F0H,23H,9FH,14H,90H,08H,90H,14H,92H,22H,94H,21H,10H,40H,18H,0C0H,10H,40H,00H,00H
;(0A40H)(送)(8009)
DB 40H,00H,42H,40H,44H,20H,0CCH,1FH,80H,20H,88H,40H,89H,0A0H,8AH,90H,8CH,8CH,0F8H,83H,8CH,88H,8AH,90H,89H,0B0H,0C8H,0C0H,80H,40H,00H,00H
JIE:;(0A60H)(接)(800a)
DB 10H,02H,10H,42H,10H,81H,0FFH,7FH,90H,02H,54H,02H,44H,82H,54H,8AH,0E5H,57H,46H,22H,64H,32H,54H,4EH,46H,0C2H,44H,03H,00H,02H,00H,00H
;(0A80H)(收)(800b)
DB 00H,00H,0F8H,0FH,00H,04H,00H,02H,0FFH,0FFH,00H,80H,80H,80H,60H,40H,0DFH,21H,10H,16H,10H,08H,10H,16H,0F0H,61H,18H,0C0H,10H,40H,00H,00H
SINE:
DB 07FH 085H 08BH 092H 098H 09EH 0A4H 0AAH 0B0H 0B6H 0BBH0C1H 0C6H 0CBH 0D0H 0D5H
DB 0D9H 0DDH 0E2H 0E5H 0E9H 0ECH 0EFH 0F2H 0F5H 0F7H 0F9H0FBH 0FCH 0FDH 0FEH 0FEH
DB 0FEH 0FEH 0FEH 0FDH 0FCH 0FBH 0F9H 0F7H 0F5H 0F2H 0EFH0ECH 0E9H 0E5H 0E2H 0DDH
DB 0D9H 0D5H 0D0H 0CBH 0C6H 0C1H 0BBH 0B6H 0B0H 0AAH 0A4H09EH 098H 092H 08BH 085H
DB 07FH 079H 073H 06CH 066H 060H 05AH 054H 04EH 048H 043H03DH 038H 033H 02EH 029H
DB 025H 021H 01CH 019H 015H 012H 00FH 00CH 009H 007H 005H003H 002H 001H 000H 000H
DB 000H 000H 000H 001H 002H 003H 005H 007H 009H 00CH 00FH012H 015H 019H 01CH 021H
DB 025H 029H 02EH 033H 038H 03DH 043H 048H 04EH 054H 05AH060H 066H 06CH 073H 079H
END
|