Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Interfacing GLCD With LPC2148 ARM: Arm How-To Guide

Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

ARM HOW-TO GUIDE

Interfacing GLCD with


LPC2148 ARM
Contents at a Glance
ARM7 LPC2148 Evaluation Board .....................................3
GLCD (Graphical Liquid Crystal Display) ............................3
Interfacing GLCD ..............................................................4
Description of GLCD .........................................................5
Interfacing GLCD with LPC2148 ...................................... 14
Pin Assignment with LPC2148 ........................................ 14
Circuit Diagram to Interface GLCD with LPC2148 ............ 15
Source Code .................................................................. 15
C Program to display a text in GLCD using LPC2148 ........ 16
Testing the Graphical LCD Module with LPC2148 ............ 18
General Information ...................................................... 19

Join the Technical Community Today!


http://www.pantechsolutions.net
ARM7 LPC2148 Evaluation Board

The ARM7 LPC2148 Evaluation board is specifically


designed to help students to master the required skills in
the area of embedded systems. The kit is designed in such
way that all the possible features of the microcontroller will
be easily used by the students. The kit supports in system
programming (ISP) which is done through serial port.

NXP’s ARM7 (LPC2148), ARM Evaluation Kit is proposed


to smooth the progress of developing and debugging of
various designs encompassing of High speed 32-bit
Microcontrollers.

GLCD (Graphical Liquid Crystal Display)

The Graphics LCD as the name suggests is a type of LCD


which can display graphics. The graphical representation of
any data presents good understanding than just characters.
More user friendly applications can be designed by using
the graphical LCDs.

Join the Technical Community Today!


http://www.pantechsolutions.net
Interfacing GLCD

Fig. 1 shows how to interface the GLCD to


microcontroller. The 128X64 Graphical LCD interfaces to
adjust contrast through trim pot. The GLCD needed to
create 8-bit interface; 8 data bits (D0 – D7), three control
lines, address bit (RS), read/write bit (R/W) and control
signal (E), Page Select (CS).

Fig. 1 Interfacing GLCD to Microcontroller

Join the Technical Community Today!


http://www.pantechsolutions.net
Description of GLCD

The GLCD is divided into two parts which are controlled


by two different controllers. Each of these parts is divided
into rows and columns.

To interface this GLCD with microcontroller, two


registers (Input and Output register) are provided in the
LCD. These registers are selected by the combination of RS
and RW signals. These combinations are given in the
following Table1.
R/W RS Function

L Send Instruction
L
H Data Write (From Input Register to DDRAM)

L Status Check (Busy Read)


H
H Data Read (From DDRAM to Output Register)

Table1

Input Register:

Input Register is used while giving instructions and


writing data to LCD. It holds the data/instruction
temporarily before writing to DDRAM (Data Display RAM).

Join the Technical Community Today!


http://www.pantechsolutions.net
When the LCD is in active mode (CS1 and CS2 high), the
Input register can be selected by sending bits on RS and RW
pins as shown in the following table. The data of input
register is latched in at the falling edge (from high to low) of
EN (Enable) signal and written into DDRAM automatically
through internal operation.

Output Register:

Output Register is used to read data from DDRAM and


to check status data (busy check). When the LCD is in active
mode (CS1 and CS2 high), the Output register can be
selected by sending bits on RS and RW pins as shown in the
following table. When R/W and RS are high, data is latched
into output register and when R/W=H, RS=L, status data
(busy check) can be read out.

The basic operation with graphical LCD requires


following steps:

1. LCD Initialization

2. Page Selection

Join the Technical Community Today!


http://www.pantechsolutions.net
3. Column Selection

4. Data Display

All these steps have been explained in the following


sections with corresponding instruction sets.

1. LCD Initialization

Before displaying anything on graphics LCD, it must be


initialized, i.e., display must be put on and column/page
selection be made. This is achieved by giving proper
instructions to the LCD. To make Display On\Off the
following set of instructions must be followed in order:

a) Put these values in Data Register

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 1 1 1 1 1 D

Data appears when D=1 and disappears when


D=0. When the display is off, there is no effect on the data
which is stored in DDRAM.

Join the Technical Community Today!


http://www.pantechsolutions.net
b) CS1=1, CS2=1(to activate display of both halves of

LCD)

c) RS=0, R/W=0 (to select the instruction mode)

d) EN=1

e) Delay

f) EN=0 (to latch data into the input register)

Display on/off function can also be used to blink data


continuously on the LCD by switching the display with some
delay.

2. Page selection

Before writing any data, the page of LCD must be


selected. Page can be selected through following steps:

a) Put these values in Data Register

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

1 0 1 1 1 X3 X2 X1

Join the Technical Community Today!


http://www.pantechsolutions.net
Since there are a total of 8 pages (0–7), a particular
page is selected by setting three bits (X1-X3).

b) CS1=1, CS2=1(to activate display of both halves of


LCD)
c) RS=0, R/W=0 (to select the instruction mode)

d) EN=1

e) Delay

f) EN=0 (to latch data into the input register)

For example, if X3=0, X2=1 and X1=0, and then the


second page is selected. Reading or writing operation is
done on this page until next page is set. Depending on the
column selection, the page is selected from either left or
right half of the graphics LCD.

3. Column selection

There are 128 [64 (=26) columns per half] in graphics


LCD and they are automatically incremented. This means
that after selecting a column, it increases on its own by one,
after each write cycle.

Join the Technical Community Today!


http://www.pantechsolutions.net
So it is easier to write data column by column. A
column can be chosen through following instructions:

a) Put these values in Data Register

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 1 Y5 Y4 Y3 Y2 Y1 Y0

The corresponding controller (CS1 or CS2) is selected


depending on the Column number as shown below.

Join the Technical Community Today!


http://www.pantechsolutions.net
b) RS=0, R/W=0 (to select the instruction mode)

c) EN=1

d) Delay

e) EN=0 (to latch data into the input register)

For example, if Page address is 0 and Column address is


0, then 0th column of page 0 is selected, i.e., the first pixel
will be selected which is highlighted in the following
diagram.

Join the Technical Community Today!


http://www.pantechsolutions.net
4. Display data

After page and column selection, data can be sent to


LCD for display. The programming steps for display data are
as given below:

a) Put the data values in Data Register. With every


write cycle, data is written in one column and the column
then gets auto-incremented. A high data bit (DBx = 1)
corresponds to activated (dark) pixel and low data bit (DBx
= 0) corresponds to deactivated (light) pixel. Here MSB
corresponds to 8th row in column and LSB to 1st row of
column.

b) If column<63 then (CS1=1 & CS2=0) else (CS1=0

& CS2=1)

c) RS=1 and R/W=0 (to select write mode of LCD)

d) EN=1

e) Delay

f) EN=0 (to latch data into the input register)

Join the Technical Community Today!


http://www.pantechsolutions.net
If data port is given value ‘0x99’ or ‘10011001’ then
column takes the values as shown below.

The following points can be included in above


programming steps for efficient programming:

1. While sending data to be written with array, one


can specify the array limit as well. This limit signifies the
number of columns one wants to write at once. If the
limit is 8, eight columns will be written at once and if it
is 7, seven columns will be written in one go.

2. The condition ‘if (column >127)’ can be used to


return the control back to the main function if the limit
exceeds the number of columns present in the LCD.

3. The function for setting column should be called


again if array limit condition doesn’t fit in left page and
has to be extended to right page too.

4. Though column address increases itself by one


but one variable should be taken to check the
conditions (ii) & (iii) explained above.

Join the Technical Community Today!


http://www.pantechsolutions.net
Interfacing GLCD with LPC2148

We now want to display a text in LPC2148 Evaluation


Board by using GLCD module. In LPC2148 Evaluation Board
contains the LCD and GLCD connections in a single header.

The ARM7 LPC2148 Evaluation board has numbers of


GLCD connections, connected with I/O Port lines (P1.18 –
P1.22 && P0.16 – P0.23) to make GLCD display.

Pin Assignment with LPC2148


GLCD/LCD LPC2148 LCD | 128x64 GLCD Selection

CS1 P1.18
JP7
CONTROL L LINES

CS2 P1.19 - LCD Select


1 2 3
RS P1.20 1 2 3 - GLCD
R/W P1.21
E P1.22
RST P1.23
DB0 P0.16
DB1 P0.17
LCD – DATA LINES

DB2 P0.18
DB3 P0.19
DB4 P0.20
DB5 P0.21
DB6 P0.22
DB7 P0.23

Join the Technical Community Today!


http://www.pantechsolutions.net
Circuit Diagram to Interface GLCD with LPC2148

P0.31
P0.30
P0.29
P0.28
P0.25

P1.16
P1.17
P1.23
P1.24
P1.25
P1.26
P1.27
P1.28
P1.29
P1.30
D+
+3.3V +5V
D-

LCD/GLCD

1 R31 10K
1 2 1 3
2 3
11
10

63
51
43
23

17
15
14
13

16
12
32
28
24
64
60
56
52
20
7

9
U5 3

2
J11
D+
D-

P0.31
P0.30
P0.29
P0.28
P0.25

P1.16
P1.17
P1.24
P1.25
P1.26
P1.27
P1.28
P1.29
P1.30
P1.31
VDD1
VDD2
VDD3
VDDA
VREF

J13
6
18 VSS1 8 CS1 1
25 VSS2 P1.18 4 CS2 2
42 VSS3 P1.19 3
50 VSS4 4
59 VSS5 +5V 5
VSSA 48 RS 6
P1.20 44 R/W 7 24
P1.21 40 EN 8
49 P1.22 46 D0 9 23
VBAT VBAT P0.16 47 10
LPC2148 D1
57 P0.17 53 D2 11 22
RST RESET P0.18 54 12
D3
P0.19 55 D4 13 21
3 P0.20 1 D5 14
RTXC1 RTXC1 P0.21 2 15
D6
5 P0.22 58 D7 16
RTXC2 RTXC2 P0.23 36 17
RST
P1.23 18
19
+5V 20
R36 10E
XTAL2

XTAL1

P0.15
P0.14
P0.13
P0.12
P0.11
P0.10
P0.9
P0.8

P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0

GLCD
61

62

45
41
39
38
37
35
34
33

31
30
29
27
26
22
21
19

12MHz
P0.15
P0.14
P0.13
P0.12
P0.11
P0.10
P0.9
P0.8

P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0

C14 X5 C15

22pf 22pf

Source Code

The Interfacing GLCD with LPC2148 program is very


simple and straight forward, which display a text in 128 X 64
GLCD modules. Some delay is occurring when a single
command / data is executed.

Join the Technical Community Today!


http://www.pantechsolutions.net
C Program to display a text in GLCD using LPC2148
***************************************************************************************
Title : Program to GLCD display
***************************************************************************************

#include <lpc214x.h>
#include "Glcd.h"
#include "bmp_maska.h"
#include "Utility.h"

unsigned char ii;


char *someText;

int main (void)


{

PINSEL0 = 0;
PINSEL1 = 0;
PINSEL2 &= 0x0000000C;
PINSEL2 |= 0x00000030;
DelayProc(0.2 * CCLOCK);
IODIR0 = 0;

Glcd_Init(&IOPIN1, // Control lines Port


&IOPIN0, // Data Lines Port
18, // CS1#
19, // CS2#
20, // RS
21, // R/W#
23, // RST
22, // EN
16); // D0 data line position

Join the Technical Community Today!


http://www.pantechsolutions.net
while (1)
{
Glcd_Fill(0x00);

Glcd_Image( maska_bmp );
DelayProc(2.0 * CCLOCK);
Glcd_Fill(0x00);

Glcd_Line(120,1, 5,60, 1);


Glcd_Line(12,42, 5,60, 1);
DelayProc(1.0 * CCLOCK);

Glcd_Rectangle(12,20, 93,57, 1);


DelayProc(1.0 * CCLOCK);

Glcd_Line(120,12, 12,60, 1);


DelayProc(1.0 * CCLOCK);

for (ii = 1; ii <= 10; ii++)


Glcd_Circle(63,32, 3*ii, 1);
DelayProc(1.0 * CCLOCK);

Glcd_Box(12,20, 70,57, 2);


DelayProc(1.0 * CCLOCK);

someText = "BIG:ONE";
DelayProc(1.0 * CCLOCK);

}
}
To compile the above C code you need the KEIL
software. They must be properly set up and a project with
correct settings must be created in order to compile the
code. To compile the above code, the C file must be added
to the project.

Join the Technical Community Today!


http://www.pantechsolutions.net
In Keil, you want to develop or debug the project
without any hardware setup. You must compile the code for
generating HEX file. In debugging Mode, you want to check
the port output without microcontroller Evaluation Board.
The Flash Magic software is used to download the hex file
into your microcontroller through UART0.

Testing the Graphical LCD Module with LPC2148

Give +3.3V power supply to LPC2148 Evaluation Board;


the Graphical LCD is connected with microcontroller
LPC2148 Board. When the program is downloading into
LPC2148 in Evaluation Board, the screen should show the
picture output.

If you not reading any output from Graphical LCD, then


you just check the jumper connections & adjust the trim pot
level. Otherwise you just check it with debugging mode in
Keil. If you want to see more details about debugging just
see the videos in below link.

 How to Create & Debug a Project in Keil.

Join the Technical Community Today!


http://www.pantechsolutions.net
General Information

For proper working use the components of exact values


as shown in Circuit file. Wherever possible use new
components.

Solder everything in a clean way. A major problem


arises due to improper soldering, solder jumps and
loose joints.

Use the exact value crystal shown in schematic.

More instructions are available in following articles,

 User Manual of LPC2148 Evaluation Board.


 Interfacing LCD with LPC2148.
 Tutorial of how to create & Debug a project in Keil.

Join the Technical Community Today!


http://www.pantechsolutions.net
Did you enjoy the read?
Pantech solutions creates information packed technical
documents like this one every month. And our website is a rich
and trusted resource used by a vibrant online community of
more than 1, 00,000 members from organization of all shapes
and sizes.

Join the Technical Community Today!


http://www.pantechsolutions.net
What do we sell?
Our products range from Various Microcontroller
development boards, DSP Boards, FPGA/CPLD boards,
Communication Kits, Power electronics, Basic electronics,
Robotics, Sensors, Electronic components and much more . Our
goal is to make finding the parts and information you need
easier and affordable so you can create awesome projects and
training from Basic to Cutting edge technology.

Join the Technical Community Today!


http://www.pantechsolutions.net

You might also like