|
Using
a Graphics-Based LCD
Module with C
by Bob Perrin and Tak Auyeung
Start ý Software
Overview ý The Bottom Layer ý Initializing
the LCD Display ý Shadow Display ý
Drawing Dots and Lines ý Printing
Text ý Extensions ý Sources
and PDF
INITIALIZING THE LCD DISPLAY
The lcdInit() function initializes
the LCD display for normal operation. The function first configures
the bit-addressable I/O port properly and performs hardware reset.
Then the driver software sends a software-reset command to the LCD
module. Next, the software driver sets up the power supply for the
LCD module. The Hantronix HDG12864F-1 module uses a Epson SED1565
LCD controller. This LCD controller has three on-chip features to
provide the negative voltage for contrast control.
For a 5-V single-supply system, the Hantronix HDG12864F-1
recommends setting the 5-V regulator internal resistor ratio to 4
(out of 7); enabling the booster, voltage regulator, and voltage follower
circuits; and setting the electronic volume (contrast) control to
0 x 24 (36) out of 0xff (255).
As with any LCD controllers, it is important
to set up the display hardware before enabling the display. The last
step in lcdInit() enables the display.
PIXEL ARRANGEMENT
The arrangement of pixels on the Hantronix
HDG12864F-1 is awkward and deserves discussion. For consistency purposes,
up or top refers to the side of the LCD module where the interconnect
cable is located. Furthermore, we use the x,y coordinate convention,
which denotes the pixel on column x and row y. Column
0 is the first and leftmost column. Row 0 is the first and top row.
In other words, (0,0) is the pixel at the top-left corner.
|
Deadline
May 1, 2000
have you submitted your entry yet?
Connect
Your PIC to the Internet
Now,
Getting Connected to the
Internet Can Earn You Cash.
Win
your share of $26,500 CASH
plus great Development Tool Prizes!
More information
|
The LCD comprises eight pages. Each page
is a 128-pixel wide by 8-pixel high rectangle. Page 0 refers to the
rectangle with (0,0) as the top-left corner, and page N+1 is eight
pixels below page N. A register on the Epson SED1565 stores the
address of the current (or active) page. The command to set the page
address is abstracted as the lcdPageAddressSet macro.
Each page is comprised of 128 columns.
Each column is eight pixels high and one pixel wide. Each column in
a page is represented by a byte in which bit 0 is the top pixel of
the column. The most awkward aspect is that the first column of a
page is the right-most column. This is backward compared to most coordinate
conventions. A register on the Epson SED1565 maintains the address
of the current column. This backward horizontal pixel arrangement
does not affect the API, because the driver translates the commonly
used leftmost-is-first orientation to the LCD specific orientation.
The command to set the column address is abstracted as the lcdColumnAddressSet
macro.
Note that writing to the display data
(using the macro lcdDisplayDataWrite) automatically increments
the column address. However, at the end of a page, the page address
is not incremented. Furthermore, if the page address is altered, the
column address remains the same.
PREVIOUS
NEXT
Circuit Cellar provides up-to-date information
for engineers. Visit www.circuitcellar.com
for more information and additional articles.
For subscription information, call (860) 875-2199, subscribe@circuitcellar.com
or subscribe
online. ýCircuit Cellar, the Magazine for Computer Applications.
Posted with permission.
|