Pin Diagram: Symbol Level Function
Pin Diagram: Symbol Level Function
8051 or compatible microcontroller. Here we have used 128x64 pixels graphic display module with
KS0108B display driver. It has the internal display RAM for storing the display data transferred from a
8 bit micro controller and generates the dot matrix Liquid crystal driving signals corresponding to
stored data.
Pin Diagram
Symbol Level Function
E H,H->L Enable Signal.Read data when E is high,Write data at the falling Edge of E
CS1 H select the right half of display the CS1 bit is set
CS2 H select the left half of display the CS2 bit is set
The 128x64 graphic lcd is divided into two 64X64 pixel display area.Each driver KS0108B controls a 64
column by 64 row pixel array. The 64 pixel row arrays are further grouped into 8 pages.Each page is 8
bits or 1 Byte tall. When you write a 8-bit data this "8 bit tall" area is filled up according to coloumn
address. The LSB bit of the data byte is at the top and the MSB bit is at the bottom.
LCD Addressing
The first top most Page address is 0x0b8 and the lowermost page is 0x0c0. Likewise the left most
Whenever you write data into the display RAM, the column address alone is incremented automatically
by one. And when the increment happens after the last column (0x080) it rolls over and overwrites on
Circuit diagram
At89C51 (8051) microcontroller is used to drive KS0108B 128x64 graphic LCD.Port 0 is connected to
the data bus of graphic lcd.Port 1 is used as control bus.Reset pin of graphic LCD is connected to
Vcc.CS1 and CS2 pins are used to control display half select.
Power supply
LCD Initialization
1.Send the display off command 3eh
3.If required you can use 11xx xxxx instruction to set the display line start
microcontroller
org 00h
ajmp MAIN
ORG 30H
MAIN:
mov sp, #60h ; Define stack start point
mov p0, #00h ; clear port0
mov p1, #00h ; clear port1
CALL CLEAR_DISPLAY ;CLEAR DISPLAY AND INITIALISE DISPLAY
call lcd_left ;SELECT LEFT HALF OF DISPLAY
mov dptr,#message1
call lcd_string ;DISPLAY STRING ON LCD
CALL LCD_RIGHT ;SELECT RIGHT HALF OF DISPLAY
MOV DPTR,#MESSAGE2
CALL LCD_STRING
stop: ajmp stop
;===============================================================================
;KS0108B 128X64 PIXEL GRAPHIC LCD INITIALIZATION
;===============================================================================
LCD_Init:
mov a, #3eh ; Display off
call COMMAND
;===============================================================================
;CLEAR ALL PIXELS OF 128X64 GRAPHIC LCD MODULE
;===============================================================================
Clear_display:
call lcd_LEFT
call lcd_init ; Initialise cs1
call BLANK ; clears all pages of cs1
call lcd_RIGHT
call lcd_init ; Initialise cs2
call BLANK ; clears all pages of cs2
ret
BLANK:
mov r5, #0b8h ; X address counter at First Page
pageS:
mov a, r5
call COMMAND
mov a, #40h ; Y address counter at First Column
call COMMAND
mov a, #00h ; To be cleared
mov r1, #64
nextS:
call LCD_DATA
dJNZ r1,NEXTS ; Clear all columns in one page
inc r5
cjne r5,#0c0h,paGES ; Loop for clearing all pages
ret
;===============================================================================
;BRING XY POINTER TO STARTING POSITION OF GRAPHIC LCD
;===============================================================================
HOME: mov a,#0B8H ;x ADDRESS FIRST PAGE
call COMMAND
mov a,#40h ; Y address counter at First Column
call COMMAND
RET
;===============================================================================
;SUBROUTINE TO SEND THE HEX VALUES OF 5X8 FONTS FROM THE FONT TABLE
;===============================================================================
LCD_STRING: ;ROUTINE TO DISPLAY MESSAGE
MOV A,#0H
MOV 50H,#0H
NEXT:
INC 50H
MOVC A,@A+DPTR
CJNE A,#2FH,NEXT1
RET
NEXT1:
CALL TABLE_PTR
MOV A,#00H
CALL LCD_DATA
MOV A,50H
AJMP NEXT
TABLE_PTR:
PUSH DPL
PUSH DPH
MOV DPTR,#TABLE
MOV B,#05H
MUL AB
SUBB A,#0A0H
JNC HERE2
DEC B
HERE2:
MOV R4,A
CJNE R4,#00H,L1
AJMP L3
L1: INC DPTR
DJNZ R4,L1
L3:
CLR C
MOV R4,B
CJNE R4,#00H,L2
AJMP L4
L2:
INC DPH
DJNZ R4,L2
L4:
MOV R6,#00H
MOV A,#00H
NEXT2:
INC R6
MOVC A,@A+DPTR
CALL LCD_DATA
MOV A,R6
CJNE R6,#05H,NEXT2
POP DPH
POP DPL
RET
MESSAGE1: DB "128x64 lcd/"
message2: db "KS0108B/"
;===============================================================================
;5X8 CHARACTER TABLE USED IN MOST OF THE GRAPHIC LCD
;===============================================================================
Table:
DB 000H,000H,000H,000H,000H, ; 20 space
DB 000H,000H,05fH,000H,000H, ; 21 !
DB 000H,007H,000H,007H,000H, ; 22 "
DB 014H,07fH,014H,07fH,014H, ; 23 #
DB 024H,02aH,07fH,02aH,012H, ; 24 $
DB 023H,013H,008H,064H,062H, ; 25 %
DB 036H,049H,055H,022H,050H, ; 26 &
DB 000H,005H,003H,000H,000H, ; 27 '
DB 000H,01cH,022H,041H,000H, ; 28 (
DB 000H,041H,022H,01cH,000H, ; 29 )
DB 014H,008H,03eH,008H,014H, ; 2a *
DB 008H,008H,03eH,008H,008H, ; 2b +
DB 000H,050H,030H,000H,000H, ; 2c ,
DB 008H,008H,008H,008H,008H, ; 2d -
DB 000H,060H,060H,000H,000H, ; 2e .
DB 020H,010H,008H,004H,002H, ; 2f /
DB 03eH,051H,049H,045H,03eH, ; 30 0
DB 000H,042H,07fH,040H,000H, ; 31 1
DB 042H,061H,051H,049H,046H, ; 32 2
DB 021H,041H,045H,04bH,031H, ; 33 3
DB 018H,014H,012H,07fH,010H, ; 34 4
DB 027H,045H,045H,045H,039H, ; 35 5
DB 03cH,04aH,049H,049H,030H, ; 36 6
DB 001H,071H,009H,005H,003H, ; 37 7
DB 036H,049H,049H,049H,036H, ; 38 8
DB 006H,049H,049H,029H,01eH, ; 39 9
DB 000H,036H,036H,000H,000H, ; 3a :
DB 000H,056H,036H,000H,000H, ; 3b ;
DB 008H,014H,022H,041H,000H, ; 3c <
DB 014H,014H,014H,014H,014H, ; 3d =
DB 000H,041H,022H,014H,008H, ; 3e >
DB 002H,001H,051H,009H,006H, ; 3f ?
DB 032H,049H,079H,041H,03eH, ; 40 @
DB 07eH,011H,011H,011H,07eH, ; 41 A
DB 07fH,049H,049H,049H,036H, ; 42 B
DB 03eH,041H,041H,041H,022H, ; 43 C
DB 07fH,041H,041H,022H,01cH, ; 44 D
DB 07fH,049H,049H,049H,041H, ; 45 E
DB 07fH,009H,009H,009H,001H, ; 46 F
DB 03eH,041H,049H,049H,07aH, ; 47 G
DB 07fH,008H,008H,008H,07fH, ; 48 H
DB 000H,041H,07fH,041H,000H, ; 49 I
DB 020H,040H,041H,03fH,001H, ; 4a J
DB 07fH,008H,014H,022H,041H, ; 4b K
DB 07fH,040H,040H,040H,040H, ; 4c L
DB 07fH,002H,00cH,002H,07fH, ; 4d M
DB 07fH,004H,008H,010H,07fH, ; 4e N
DB 03eH,041H,041H,041H,03eH, ; 4f O
DB 07fH,009H,009H,009H,006H, ; 50 P
DB 03eH,041H,051H,021H,05eH, ; 51 Q
DB 07fH,009H,019H,029H,046H, ; 52 R
DB 046H,049H,049H,049H,031H, ; 53 S
DB 001H,001H,07fH,001H,001H, ; 54 T
DB 03fH,040H,040H,040H,03fH, ; 55 U
DB 01fH,020H,040H,020H,01fH, ; 56 V
DB 03fH,040H,038H,040H,03fH, ; 57 W
DB 063H,014H,008H,014H,063H, ; 58 X
DB 007H,008H,070H,008H,007H, ; 59 Y
DB 061H,051H,049H,045H,043H, ; 5a Z
DB 000H,07fH,041H,041H,000H, ; 5b [
DB 002H,004H,008H,010H,020H, ; 5c Yen Currency Sign
DB 000H,041H,041H,07fH,000H, ; 5d ]
DB 004H,002H,001H,002H,004H, ; 5e ^
DB 040H,040H,040H,040H,040H, ; 5f _
DB 000H,001H,002H,004H,000H, ; 60 `
DB 020H,054H,054H,054H,078H, ; 61 a
DB 07fH,048H,044H,044H,038H, ; 62 b
DB 038H,044H,044H,044H,020H, ; 63 c
DB 038H,044H,044H,048H,07fH, ; 64 d
DB 038H,054H,054H,054H,018H, ; 65 e
DB 008H,07eH,009H,001H,002H, ; 66 f
DB 00cH,052H,052H,052H,03eH, ; 67 g
DB 07fH,008H,004H,004H,078H, ; 68 h
DB 000H,044H,07dH,040H,000H, ; 69 i
DB 020H,040H,044H,03dH,000H, ; 6a j
DB 07fH,010H,028H,044H,000H, ; 6b k
DB 000H,041H,07fH,040H,000H, ; 6c l
DB 07cH,004H,018H,004H,078H, ; 6d m
DB 07cH,008H,004H,004H,078H, ; 6e n
DB 038H,044H,044H,044H,038H, ; 6f o
DB 07cH,014H,014H,014H,008H, ; 70 p
DB 008H,014H,014H,018H,07cH, ; 71 q
DB 07cH,008H,004H,004H,008H, ; 72 r
DB 048H,054H,054H,054H,020H, ; 73 s
DB 004H,03fH,044H,040H,020H, ; 74 t
DB 03cH,040H,040H,020H,07cH, ; 75 u
DB 01cH,020H,040H,020H,01cH, ; 76 v
DB 03cH,040H,030H,040H,03cH, ; 77 w
DB 044H,028H,010H,028H,044H, ; 78 x
DB 00cH,050H,050H,050H,03cH, ; 79 y
DB 044H,064H,054H,04cH,044H, ; 7a z
DB 000H,008H,036H,041H,000H, ; 7b <
DB 000H,000H,07fH,000H,000H, ; 7c |
DB 000H,041H,036H,008H,000H, ; 7d >
DB 010H,008H,008H,010H,008H, ; 7e Right Arrow ->
DB 078H,046H,041H,046H,078H ; 7f Left Arrow <-
END