Character
Type Liquid Crystal Display (LCD) Modules Features
1.
5x8 dot matrix
2.
Built-in controller (KS0066 or equivalent)
3.
+5V or +3.3V power supply
4.
1/16 duty cycle
5.
8-bit
parallel interface
LCD Kit
Interface pin Connections information LCD
16 pins (14 I/O + 2 for Back-light)
No. |
Symbol |
Function |
PIC16F690 pin # |
PIC Pin Symbol
|
1 |
VSS |
Ground |
20 |
GND |
2 |
VDD |
Power
supply |
1 |
VCC |
3 |
VO |
Contrast
adjust |
N/A |
VSS |
4 |
RS |
Register
select |
13 |
RB4
|
5 |
R/W |
Read
/ Write |
12 |
RB5
|
6 |
E |
Enable
signal |
11 |
RB6 |
7 |
DB0 |
Data
bus |
9 |
RC7 |
8 |
DB1 |
Data
bus |
8 |
RC6 |
9 |
DB2 |
Data
bus |
14 |
RC2 |
10 |
DB3 |
Data
bus |
7 |
RC3 |
11 |
DB4 |
Data
bus |
15 |
RC1 |
12 |
DB5 |
Data
bus |
6 |
RC4 |
13 |
DB6 |
Data
bus |
16 |
RC0 |
14 |
DB7 |
Data
bus |
5 |
RC5 |
Back-light
No. |
Symbol |
Function |
J2
Pins |
Symbol |
15 |
K |
Backlight
(-) |
1 |
HV1
|
16 |
A |
Backlight
(+) |
2 |
HV2 |
J4
& J5 I/O or Power indication or LED control: ***
For power indication G short to X
No. |
Symbol |
Function |
CY7C63001A
No |
Symbol |
G |
VSS |
Ground |
7
& 8 |
GND |
X |
I/O
1' |
I/O |
1 |
P0.0
via 2.4K resistor to I/O1 |
LCD
Character
Address Code
Display
position |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16
|
Display
DDRAM address |
00 |
01 |
02 |
03 |
04 |
05 |
06 |
07 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
Code
Instruction Set for Character Type LCD Modules
Instruction
|
Code
|
Description
|
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
Clear
display
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
Clear
display and return the cursor to home position
(Address
0).
Sets I/D=1 of Entry Mode
|
Return
home
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
*
|
Return
the cursor to the home position (Address
0). Also return the display being shifted to the
original position.
DD RAM contents remain unchanged.
Set DD RAM addresses to zero.
|
Entry
mode
set
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
I/D
|
S
|
Set
the cursor move direction and specifies or not to
shift the display. These operations are performed
during data write and read of DD RAM/CG RAM.
For normal operation, set S to
0.
|
Display
On/Off
control
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
D
|
C
|
B
|
Set
On/Off all display (D), cursor On/Off (C), and
blink of cursor position character (B)
|
Cursor
of
display
shift
|
0
|
0
|
0
|
0
|
0
|
1
|
S/C
|
R/L
|
*
|
*
|
Move
the cursor and shift the display without changing
DD RAM contents
|
Function
set
|
0
|
0
|
0
|
0
|
1
|
DL
|
N
|
F
|
*
|
*
|
Set
interface data length (DL), number of display
lines (N) and character font (F)
|
Set
the
CG RAM
address
|
0
|
0
|
0
|
1
|
MSB ACG
|
LSB
|
Set
the CG RAM address. CG RAM data is sent and
recievd after this setting
|
Set
the
DD RAM
address
|
0
|
0
|
1
|
MSB ADD
|
LSB
|
Set
the DD RAM address. DD RAM data is sent and
recievd after this setting
|
Read
busy flag
&
address
|
0
|
1
|
|
MSB AC
|
LSB
|
Read
Busy flag (BF) indicating internal operation is
being performed and read address counter contents
|
Write
data to
CG or
DD RAM
|
1
|
0
|
MSB
LSB
|
Write
data into DD RAM or CG RAM
|
Read
data
from
CG or DD
RAM
|
1
|
1
|
MSB
LSB
|
Read
data from DD RAM or CG RAM
|
|
S=1
: accompanies display shift when data is written
for normal operation set to
0
|
DD
RAM : Display Data RAM
|
I/D
= 1 : Increment
|
DL
= 1 : 8 bits
|
CG
RAM : Character Generator RAM
|
I/D
=
0: Decrement
|
DL
=
0: 4 bits
|
ACG
: CG RAM Address
|
S/C
= 1 : Display shift
|
N
= 1 : 2 (1) line
|
ADD
: DD RAM Address corresponds to cursor address
|
S/C
=
0: Cursor move
|
N
= 0 : 1 line
|
AC
: Address Counter used for both DD and CG RAM
addresses
|
R/L
= 1 : Shift to the right
|
F
= 1 : 5x10 dots
|
B
: 1 = On,
0= Off (Blinking cursor)
|
R/L
=
0: Shift to the left
|
F
=
0: 5x7 dots
|
C
: 1 = On,
0= Off (Cursor)
|
BF
= 1 : Internally operating
|
D
: 1 = On,
0= Off (Display)
|
BF
=
0: Can accept instruction
|
*= Don't care
|
*
The module automatically performed initialization when
powered on (using internal reset circuit). The following
instructions are executed during initialization:
1
Clear Display
|
The
Busy Flag in the buisy state (BF = 1) unit
initialization ends. The time is 15 ms.
|
2
Function Set
|
DL
= 1 : 8 bits long interface data
N =
0: 1 Line display
|
3
Display On/Off Control
|
D
=
0: Display OFF
C =
0: Cursor OFF
B =
0: Blink OFF
|
4
Entry mode Set
|
I/D
= 1 : +1(INCREMENT)
S =
0: NO SHIFT
|
5
DD RAM is Selected
|
Power
On Initialization depends on rise time of the
supply when it is turned on. The following time
relationship must be satisfied.
|
Item
|
Symbol
|
Standard
|
Unit
|
Min
|
Typ
|
Max
|
Power
Supply Rise Time
|
t
rec
|
0.1
|
-
|
10
|
ms
|
Power
Supply Off Time
|
t
off
|
1.0
|
-
|
-
|
ms
|
Power
On Timing Diagram
Note:
When the above power
supply condition is not satisfied, the internal reset
circuitry does not operate correctly. In this case
perform the needed initialization by sending function
set instructions thrice from MPU after turning the power
on. For example, to designate an 8-bit data length, set
the following instructions thrice.
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
0
|
0
|
0
|
0
|
1
|
1
|
*
|
*
|
*
|
*
|
0
|
0
|
0
|
0
|
1
|
1
|
*
|
*
|
*
|
*
|
0
|
0
|
0
|
0
|
1
|
1
|
*
|
*
|
*
|
*
|
Character Type LCD Modules Initialization
For 8 bit data
interfacing
Power On
Wait
for 15ms or more after Vcc rises to 4.5v Please
be advised that BF
cannot be checked at this time
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
0
|
0
|
0
|
0
|
1
|
1
|
X
|
X
|
X
|
X
|
Function set :
DL = 1, 8 bit interface data
DL must be set at H during this initialization
|
Wait for 4.1ms or more Please
be advised that BF
cannot be checked at this time
RS |
R/W |
DB7 |
DB6 |
DB5 |
DB4 |
DB3 |
DB2 |
DB1 |
DB0 |
0 |
0 |
0 |
0 |
1 |
1 |
X |
X |
X |
X |
Function set :
DL = 1, 8 bit interface data
DL must be set at H during this initialization
|
Wait for 100us or more
RS |
R/W |
DB7 |
DB6 |
DB5 |
DB4 |
DB3 |
DB2 |
DB1 |
DB0 |
0 |
0 |
0 |
0 |
1 |
1 |
X |
X |
X |
X |
Function set :
DL = 1, 8 bit interface data
DL must be set at H during this initialization
|
BF cannot be checked at this time, check
for not busy
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
0
|
0
|
0
|
0
|
1
|
1
|
N
|
F
|
X
|
X
|
Function set :
DL = 1, 8 bit interface data
DL must be set at H during this initialization0
|
check for not busy
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
Display off
|
check for not busy
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
Clears all display and returns
cursor to home position
|
check for not busy
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
I/D
|
S
|
Set the shift mode
|
End of Initialization
Character
Type LCD Modules Initialization For 4 bit data
interfacing
Power
On
Wait
for 15ms or more after Vcc rises to 4.5v. Please be
advised that BF cannot be checked at this time
RS |
R/W |
DB7 |
DB6 |
DB5 |
DB4
|
0 |
0 |
0 |
0 |
1 |
1 |
Function
set :
DL = 1, 8 bit interface data
DL must be set at H during this initialization |
Wait
for 4.1ms or more. Please be advised that BF cannot be
RS |
R/W |
DB7 |
DB6 |
DB5 |
DB4
|
0 |
0 |
0 |
0 |
1 |
1 |
Function
set :
DL = 1, 8 bit interface data
DL must be set at H during this initialization |
Wait
for 100us or more Please be advised that BF cannot be
RS |
R/W |
DB7 |
DB6 |
DB5 |
DB4
|
0 |
0 |
0 |
0 |
1 |
1 |
Function
set :
DL = 1, 8 bit interface data
DL must be set at H during this initialization |
check
for not busy
RS |
R/W |
DB7 |
DB6 |
DB5 |
DB4
|
0 |
0 |
0 |
0 |
1 |
0 |
Function
set :
DL = 0, 4 bit interface data |
check
for not busy
RS |
R/W |
DB7 |
DB6 |
DB5 |
DB4
|
0 |
0 |
0 |
0 |
1 |
1 |
Function
set :
DL = 1, 8 bit interface data
DL must be set at H during this initialization |
check
for not busy
RS |
R/W |
DB7 |
DB6 |
DB5 |
DB4
|
0 |
0 |
0 |
0 |
1 |
0
|
0 |
0 |
N |
F |
X |
X |
Function
set :
DL = 0, 4 bit interface data
N = No. of lines
F = character font |
check
for not busy
RS |
R/W |
DB7 |
DB6 |
DB5 |
DB4
|
0 |
0 |
0 |
0 |
0 |
0
|
0 |
0 |
1 |
0 |
0 |
0 |
Display
off |
check
for not busy
RS |
R/W |
DB7 |
DB6 |
DB5 |
DB4
|
0 |
0 |
0 |
0 |
0 |
0
|
0 |
0 |
0 |
0 |
0 |
1 |
Display
on |
Check
for not busy
RS |
R/W |
DB7 |
DB6 |
DB5 |
DB4
|
0 |
0 |
0 |
0 |
0 |
0
|
0 |
0 |
0 |
1 |
I/D |
S |
Entry
mode set |
End
of Initialization
Typical
Character Type LCD Modules Block Diagrams
16x1
DMM, 1/16 MUX
16x2 DMM, 1/16 MUX
16x4 DMM, 1/16 MUX
20x2 DMM, 1/16 MUX
20x4 DMM, 1/16 MUX
24x2 DMM, 1/16 MUX
40x4 DMM, 1/16 MUX
Software Tips:
1. W holds the character
to move to Port C (The display data lines) DB0 to DB7 (8
Bits)
An example move 'A' --> W
--> PORT C
MOVLW 81H
;'A' --> W
MOVWF PORTC
;W --> PORT C
See below table for all
the ASCII characters:
CA MOVLW 81H ;A
SA MOVLW 91H ;a
CB MOVLW 41H ;B
SB MOVLW 51H ;b
CC MOVLW 0C1H ;C
SC MOVLW 0D1H ;c
CD MOVLW 05H ;D
SD MOVLW 15H ;d
CE MOVLW 85H ;E
SE MOVLW 95H ;e
CF MOVLW 45H ;F
SF MOVLW 55H ;f
CG MOVLW 0C5H ;G
SG
MOVLW 0D5H ;g
CH MOVLW 09H ;H
SH
MOVLW 19H ;h
CI MOVLW 89H ;I
SI
MOVLW 79H ;i
CJ MOVLW 49H ;J
SJ
MOVLW 59H ;j
CK MOVLW 0C9H ;K
SK MOVLW 0D9H ;k
CL MOVLW 0DH
;L
SL MOVLW 1DH
;l
CM MOVLW 8DH ;M
SM MOVLW 9DH ;m
CN
MOVLW 4DH ;N
SN
MOVLW 5DH ;n
CO MOVLW 0CDH ;O
SO MOVLW 0DDH ;o
CP MOVLW 03H ;P
SP MOVLW 13H ;p
CQ
MOVLW 83H ;Q
SQ MOVLW 93H ;q
CR MOVLW 43H ;R
SR MOVLW 53H ;r
CS MOVLW 0C3H ;S
SS MOVLW 0D3H ;s
CT MOVLW 07H ;T
ST MOVLW 17H ;t
CU MOVLW 87H ;U
SU MOVLW 97H ;u
CV MOVLW 47H ;V
SV
MOVLW 57H ;v
CW
MOVLW 0C7H ;W
SW MOVLW 0D7H ;w
CX
MOVLW 0BH ;X
SX
MOVLW 1BH ;x
CY MOVLW 8BH ;Y
SY
MOVLW 9BH ;y
CZ MOVLW 4BH ;Z
SZ
MOVLW 5BH ;s
N0 MOVLW 12H ;0
N1 MOVLW 92H ;1
N2 MOVLW 52H ;2
N3 MOVLW 0D2H ;3
N4 MOVLW 16H ;4
N5 MOVLW 96H ;5
N6 MOVLW 56H ;6
N7 MOVLW 0D6H ;7
N8 MOVLW 1AH ;8
N9 MOVLW 9AH ;9
DOT MOVLW 5CH ;.
COMA MOVLW 1CH ;,
DEG MOVLW 0EFH ;Degree
EQL MOVLW 9EH ;=
AT MOVLW 01H ;@
NUM MOVLW 0D0H ;#
SPC MOVLW 30H ;Space
Note:
LCD sold separately!
|