LCD2041
Technical Manual
Revision: 2.0
Contents
Contents
ii
1 Introduction
1.1 What to Expect From the LCD2041 . .
1.2 What Not to Expect From the LCD2041
1.3 Setup for Testing . . . . . . . . . . . .
1.4 Trying out the LCD2041 . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Connections
2.1 Connector Pinout . . . . . . . . . . . . . . . . . . .
2.1.1 Power Connection . . . . . . . . . . . . . .
2.1.2 Five Volt Modules . . . . . . . . . . . . . .
2.1.3 Wide Voltage Range Modules . . . . . . . .
2.1.4 Applying Power through the DB-9 Connector
2.2 RS-232 Communications . . . . . . . . . . . . . . .
2.2.1 DB9 Connections . . . . . . . . . . . . . . .
2.2.2 Alternate Serial Connection . . . . . . . . .
2.2.3 TTL communications . . . . . . . . . . . .
2.2.4 Configuring RS-232 and I2 C . . . . . . . .
2.3 I2 C Communications . . . . . . . . . . . . . . . . .
2.3.1 ACK . . . . . . . . . . . . . . . . . . . . .
2.4 General Purpose Output . . . . . . . . . . . . . . . .
3 Displaying Text
3.1 General . . . . . . . . . . . . . . . . . . . . . . .
3.2 The built in Character Font . . . . . . . . . . . . .
3.3 Writing Text to the Display . . . . . . . . . . . . .
3.4 Text Commands . . . . . . . . . . . . . . . . . . .
3.4.1 Auto line wrap on (254 67) . . . . . . . .
3.4.2 Auto line wrap off (254 68) . . . . . . . .
3.4.3 Auto scroll on (254 81) . . . . . . . . . .
3.4.4 Auto scroll off (254 82) . . . . . . . . . .
3.4.5 Set cursor position (254 71 [column] [row])
3.4.6 Send cursor home (254 72) . . . . . . . . .
3.4.7 Turn on underline cursor (254 74) . . . . .
3.4.8 Turn off underline cursor (254 75) . . . . .
3.4.9 Turn on block (blinking) cursor (254 83) .
3.4.10 Turn off block (blinking) cursor (254 84) .
3.4.11 Cursor left (254 76) . . . . . . . . . . . . .
3.4.12 Cursor right (254 77) . . . . . . . . . . . .
Matrix Orbital
LCD2041
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
1
1
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
3
4
5
6
6
6
7
8
8
10
10
11
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12
13
13
14
14
14
14
14
14
15
15
15
15
15
15
15
16
ii
4 Bar Graphs and Special Characters
4.1 Command List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Initialize wide vertical bar graph (254 118) . . . . . . . . . . . .
4.1.2 Initialize narrow vertical bar graph (254 115) . . . . . . . . . . .
4.1.3 Draw vertical bar graph (254 61 [column] [height]) . . . . . . . .
4.1.4 Initialize horizontal bar graph (254 104) . . . . . . . . . . . . . .
4.1.5 Draw horizontal bar graph (254 124 [column] [row] [dir] [length])
4.1.6 Initialize large digits (254 110) . . . . . . . . . . . . . . . . . . .
4.1.7 Place large digit 254 35 [col] [digit] . . . . . . . . . . . . . . . .
4.1.8 Define custom character (254 78 [c] [8 bytes]) . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
16
16
16
16
16
17
17
17
17
17
5 Miscellaneous Commands
5.1 Command List . . . . . . . . . . . . . . . . . . . . .
5.1.1 Clear display (254 88) . . . . . . . . . . . . .
5.1.2 Set contrast (254 80 [contrast]) . . . . . . . . .
5.1.3 Backlight on (254 66 [minutes]) . . . . . . . .
5.1.4 Backlight off (254 70) . . . . . . . . . . . . .
5.1.5 General purpose output off (254 86) . . . . . .
5.1.6 Set backlight brightness (254 153 [brightness])
5.1.7 General purpose output on (254 87) . . . . . .
5.1.8 Read module type . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
19
19
19
19
19
19
20
20
20
6 Appendix; Command Summary
6.1 General . . . . . . . . . . . . . .
6.2 Issuing Commands . . . . . . . .
6.3 On Numbers . . . . . . . . . . . .
6.3.1 ASCII Characters . . . . .
6.4 Text Commands . . . . . . . . . .
6.5 Bar Graphs and Special Characters
6.6 Miscellaneous Commands . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
20
20
20
21
21
22
24
25
7 Appendix: Specifications
7.1 Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
26
28
8 Appendix: Glossary
28
Matrix Orbital
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
LCD2041
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
iii
1 Introduction
The LCD2041 comes equipped with the following features;
•
•
•
•
•
•
•
•
•
•
•
20 column by 4 line text display
Built in font with provision for up to 8 user defined characters
Speeds from 1200 bps to a lighting fast 19.2 Kbps over RS-232
Communication over RS-232 or I2 C
Software controlled contrast
Backlight with configurable time out setting up to 180 minutes
One general purpose output for a variety of applications
Horizontal or Vertical bar graphs
Variable power options, +5V or +8V to +15V
Extended temperature option
Fits Matrix Orbital’s Dual PC Bay insert without any modifications
1.1 What to Expect From the LCD2041
The LCD2041 is designed as the display unit for an associated controller. The controller may be anything
from a single board, special purpose micro-controller to a PC, depending on the application. This controller
is responsible for what is displayed on the screen of the display.
The display provides a simple command structure to allow text and bar graphs to be displayed on the
screen. Text fonts are built in, and use standard ASCII mapping. Provision is made for up to 8 user defined
characters.
The screen is backlit for low light situations. Backlighting may be turned on or off under program
control. Contrast is adjustable to compensate for differing lighting conditions and viewing angles.
A general purpose output allows the controller to switch an electronic or electro-mechanical device by
issuing commands to the display unit. This can be used for controlling LEDs, relays, etc.
1.2 What Not to Expect From the LCD2041
The display does not include bitmap graphics capability, except that permitted by defining special characters. The display does not include a keypad interface.
1.3 Setup for Testing
Before setting up the application the user may want to try out the display. This is easily done with a PC.
If not equipped with a dual bay PC mounting kit, the following will be required;
• A 4-pin power connector of the type used to connect 3.5” floppy drive. Take care not to connect the
display to an unmodified spare power connector in a PC
• A spare RS-232 port. (Either COM1 or COM2)
• A 5V power supply. For wide voltage models, an 8 - 15 V supply will be required
• A 9 or 25 pin RS-232 serial cable. If using a 25 conductor cable, a 9 to 25 pin adapter will be required
Matrix Orbital
LCD2041
1
Figure 1: Connections for Testing
1. Refer to the Figure above for the following steps.
2. Wire the connector to the power supply. On most connectors the RED lead will go to +5V and the
BLACK lead to GND.
NOTE The Manufacturer’s Warranty becomes void if the unit is subjected to over-voltage
or reversed polarity.
3. Connect the display to the PC using the serial cable and adapter if required. Make sure the RS-232
cable includes the required ground lead. There must be no voltage differential between the RS-232
ground and the power supply ground.
4. Connect the power connector, making sure that the +5V goes to V+ . Turn on the power; the display
backlight should come on and a blinking cursor at the top left should appear.
1.4 Trying out the LCD2041
The unit should be connected to power and the PC and backlight should be on. To experiment with
typing text, run a PC program such as Display Tuner or AlphaDemo. Make sure it’s configured to use the
correct port. Set the baud rate to 19,200.
To exercise some of the other features of the display, a program (in any convenient language such as
Basic or C) will need to be written in order to issue the required command strings. Most terminal programs
are unable to issue the 0xFE character needed as a command prefix.
2 Connections
2.1 Connector Pinout
Refer to the Figure below for this chapter.
Matrix Orbital
LCD2041
2
Figure 2: Electrical Connections
The display has three connectors;
Table 1: Connectors & Functions
Connector
2 pin
4 pin
DB-9F
Function
General purpose output
Power and I2 C communication
RS-232/power
2.1.1 Power Connection
Power is applied via pins 1 and 4. Power requirement for standard units is +5 VDC ±0.25V . Units with
the wide voltage range option require 8 - 15 VDC.
WARNINGS
• Do not apply any power with reversed polarization. Do not apply
any voltage other than the specified voltage. Do not use any cables
other than the cables supplied by Matrix Orbital, unless aware of
the modifications required. Do not apply voltage to the DB-9 connector AND power connector Do not apply more than +5Vdc to
pin #9 on the DB-9 connector.
Matrix Orbital
LCD2041
3
Connector pinout is as follows;
Figure 3: Power Connector
Table 2: Pinout Connections
Pin 4
Pin 3
Pin 2
Pin 1
Ground
SDA (I2 C data) / Rx
SCL (I2 C clock) / Tx
Vdc
2.1.2 Five Volt Modules
If the display is used in a PC it is tempting to plug a spare power connector into the unit. Don’t do this!
Wiring for the PC power connector and that required for the display are different.
Figure 4: Wiring for 5V Modules
Matrix Orbital is equipped to supply an adapter cable designed to use with the LCD2041 when it’s
installed in a PC. The cable is wired as shown in the Figure below.
NOTE This cable does not provide connections for I2 C.
Matrix Orbital
LCD2041
4
Figure 5: Five Volt Power Cable
2.1.3 Wide Voltage Range Modules
NOTE Do not use this cable unless the display module has the "Wide voltage range"
option. Use of the 12 volt power cable with 5 volt modules will damage the module.
The 12 volt power cable is designed for use with wide voltage range display modules mounted in a PC.
Wiring required for the 12 volt power connector is shown in the Figure below.
Figure 6: Wiring for 12 Volt Modules
Matrix Orbital is equipped to supply an adapter cable designed to use with the display module when it’s
installed in a PC. The cable is wired as shown in the Figure below.
Figure 7: Twelve Volt Power Cable
Matrix Orbital
LCD2041
5
2.1.4 Applying Power through the DB-9 Connector
Power may be provided to the module by pin 9 of the DB-9 connector instead of through the 4-pin SIP.
If power is to be applied using the DB-9, it must be a regulated 5Vdc supply.
NOTE This applies to wide voltage units, V and VPT extensions, as well as to standard
5 volt units.
Figure 8: DB-9 Power
To use pin 9 as the power source, the user must solder the 5 volt jumper pad beside the DB-9 connector.
WARNING Application of a voltage to pin 9 greater than 5.25 volts
may cause immediate destruction of unit and void the Manufacturer’s
Warranty.
2.2 RS-232 Communications
The RS-232 connector on the PC cable is wired so that a standard ’straight through’ 9 pin D-sub cable
may be used to connect the module to a standard serial port such as COM ports on PCs. Please note that this
device complies with the EIA-232 standard in that it uses signal levels from ± 12V to ± 12V and can be
converted to TTL levels as well. The display is set at 19.2Kbps default speed. Other settings are;
• 8 bits, no parity, 1 stop bit.
2.2.1 DB9 Connections
A standard DB-9F is provided for RS-232 communications. Power may also be supplied via this connector if desired.
Matrix Orbital
LCD2041
6
Figure 9: RS-232 and Power Connector
Table 3: RS-232 Pinout
Pin Number
2
3
5
Direction
Data from LCD
Data to LCD
-
Description
Data out (LCD
Data in (LCD)
Ground
LCD
Tx
Rx
gnd
Host
Rx
Tx
gnd
2.2.2 Alternate Serial Connection
An optional alternate connection header is provided to allow one cable for data and power. Two jumpers
will have to be set into the RS-232 position above the DB-9 connector.
Figure 10: RS232 Configuration
Connector pinout is as follows;
Matrix Orbital
LCD2041
7
Pin 4
Pin 3
Pin 2
Pin 1
Ground
Rx
Tx
Vdc
Figure 11: Power Connector
2.2.3 TTL communications
The display can be talked to at TTL (logic 0V to +5V) levels. The following three jumps will need to be
modified as shown in figure below. This will allow TTL communications through the 4-pin SIP header or
the DB9 connector.
Figure 12: TTL Communications
2.2.4 Configuring RS-232 and I2 C
RS-232 baud rate and I2 C address are configured by means of jumpers.
Matrix Orbital
LCD2041
8
Figure 13: RS-232 Jumpers
The module is supplied with jumpers J1 and J2 installed, which gives an RS-232 baud rate of 19200 and
an I2 C address of 0x5C.
• RS-232 port: J0, J1, J2 - control baud rate. RS-232 format is 8N1, 8 bits, no parity, one stop bit
• I2 C port: J0, J1, J2, J3 - sets slave peripheral address
Table 4: Serial Baud Rates
Baud Rate
1200
2400
9600
19200
1200
2400
9600
19200
Matrix Orbital
Slave Address
50H
52H
54H
56H
58H
5AH
5CH
5EH
60H
62H
64H
66H
68H
6AH
6CH
6EH
LCD2041
J3
out
out
out
out
out
out
out
out
in
in
in
in
in
in
in
in
J2
out
out
out
out
in
in
in
in
out
out
out
out
in
in
in
in
J1
out
out
in
in
out
out
in
in
out
out
in
in
out
out
in
in
J0
out
in
out
in
out
in
out
in
out
in
out
in
out
in
out
in
9
2.3 I2 C Communications
I2 C
I2 C communications runs at 100Kbps and supports up to 16 units on a single communications line. The
data line operates on 5 volt CMOS levels.
2.3.1 ACK
The idea of ACK is to indicate when the data has been received correctly. ACK does not indicate data
incorrectly received. ACK simply fails to indicate when data is correctly received. Clearly, this is of limited
usefulness and even less so with Matrix Orbital modules. Matrix orbital modules are not capable of failing
to acknowledge an incorrectly received byte in response to that bytes transition. They are only capable of
failing to acknowledge the bytes following the byte, which was not received. To fully understand the reasons
for this one needs to understand something about how a Matrix Orbital module processes data. Basically the
reason why a Matrix Orbital module might fail to receive a byte correctly is that it was unable to process the
byte previous before the failed byte was transmitted. Because the module cannot possibly know that it would
be unable to store the byte before the next byte was received it cannot know to not ACK. The reason for this
situation in deference to situations one might be familiar with (i.e., memory chips, etc) is that the Matrix
Orbital module employs a micro-processor to perform these data storage functions. A memory chip takes
care of these things entirely with in hardware subsystems that operate at the same speed as the transmission
themselves.
The display uses a standard Phillips 7bit address as defined by Phillips. However, Matrix Orbital specifies
I2 C address in 8bits. The 8th bit, or least significant bit, LSB or Low Order Bit of the 8bit address is a read
/ write bit. If we take a standard Phillips 7bit address of 45hex this would be in binary, 1000101. This is
7bits. Matrix Orbital would describe the Phillips I2 C address of 45hex as 8Ahex. The read address would
be 8Bhex.
For more information on Phillips I2 C please visit;
http://www.ping.be/~ping0751/i2cfaq/i2cindex.htm
And for more information specific to our displays visit;
http://www.lcdforums.com/forums/viewtopic.phpt=910
To communicate by I2 C two jumpers have to be set into the I2 C position above the DB-9 connector.
Figure 14: I2 C Communications
Connector pinout is as follows;
Matrix Orbital
LCD2041
10
Pin 4
Pin 3
Pin 2
Pin 1
Ground
SDA (12 C Data)
SLC (I2 C Clock)
Vdc
Figure 15: Power Connector
2.4 General Purpose Output
The display has a general purpose output which can be used to control relays or other electronic devices.
This allows external devices to be turned on or off using your PC or controller and software commands. The
+ terminal is connected to the module positive supply, the - terminal is connected through a 240ohm current
limiting resistor and the electronic switch to ground.
Figure 16: General Purpose Output
Maximum allowable current is 20mA, which is enforced by the current limiting resistor. If the device
being switched has a resistance of 240ohms or more the corresponding resistor may be shorted. Solder a
small jumper wire or wirewrap wire between the two feed through holes.
Matrix Orbital
LCD2041
11
Figure 17: Bypassing 240 ohm Resistor
NOTE The GPOs do not have any over current or over / under voltage protection so care
must be taken when using them. For instance if the external device is a relay it must be fully
clamped using a diode and capacitor to absorb any generated back electro-motive force or
“EMF”.
Figure 18: Clamping a Relay
3 Displaying Text
This chapter describes the various text-display commands in detail. Before issuing commands to the
LCD2041 please read sections 6.2 and 6.3.
Matrix Orbital
LCD2041
12
3.1 General
Text is displayed on the display using the built in 5x7 dot matrix font, in addition to up to 8 user defined
characters.
3.2 The built in Character Font
The display includes a built in 5x7 dot matrix font with the full range of ASCII characters plus a variety
of extended characters, as shown in the Figure below.
Figure 19: Character Set
In addition to the built in characters, users may define up to 8 special characters which, once defined,
occupy positions 0x00 to 0x07 in the above chart. The display does not have provision to download other
Matrix Orbital
LCD2041
13
fonts.
3.3 Writing Text to the Display
When the display receives a character, it displays that character at the position currently defined. The
next character sent to the module then advances to the following position on the display. Characters are
drawn using the built in font, and only characters defined in the font are actually displayed. Characters that
are not defined by the built in font print as a space. The position where text is to be inserted is a character
location stored in the display’s volatile memory and maintained internally by the display’s firmware. This
position is manipulated by the commands shown in the following section.
3.4 Text Commands
In this section commands are identified by their names and decimal values.
3.4.1 Auto line wrap on (254 67)
Enables automatic line wrapping. This is not ’word wrapping’ and wraps may occur in the middle of a
word. If auto line wrap and auto scroll are both off (default) text will wrap from line 1 to line 3 then 2 then
4. Factory default is OFF.
3.4.2 Auto line wrap off (254 68)
Disables automatic line wrapping.
3.4.3 Auto scroll on (254 81)
When auto scrolling is on the display shifts the entire display’s contents up to make room for a new line
of text when the text reaches the scroll position at the bottom right character position.
3.4.4 Auto scroll off (254 82)
When auto scrolling is disabled, text will wrap to the top left corner of the display area. Existing text in
the display area is not erased before new text is placed. A series of ’spaces’ followed by a “Cursor home”
command may be used to erase the top line of text.
Matrix Orbital
LCD2041
14
3.4.5 Set cursor position (254 71 [column] [row])
This command sets the cursor position (text insertion point) to the [column] and [row] specified. Columns
have values from 1 to 20 (0x01 to 0x14) and rows have values of 1 to 4 (0x01 to 0x04).
3.4.6 Send cursor home (254 72)
This command moves the cursor position (text insertion point) to the top left of the display area.
3.4.7 Turn on underline cursor (254 74)
Turns on the underline cursor. The cursor shows the current text insertion point. Both underline and
blinking cursors may be turned on or off independently. The cursor is off by default.
3.4.8 Turn off underline cursor (254 75)
Turns off the underline cursor. Does not affect the blinking block cursor.
3.4.9 Turn on block (blinking) cursor (254 83)
Turns on the blinking block cursor. The cursor shows the current text insertion point. Both blinking and
underline cursors may be turned on or off independently. The cursor is off by default.
3.4.10 Turn off block (blinking) cursor (254 84)
Turns off the blinking block cursor. Does not affect the underline cursor.
3.4.11 Cursor left (254 76)
Moves the cursor one position to the left but does not erase any character that may be in that position.
Note that this command moves the text insertion point even if the cursor is turned off.
NOTE A ’destructive backspace’ which erases the character to the left of the original
position, may be done by issuing the following sequence: cursor left, space, cursor left.
Matrix Orbital
LCD2041
15
3.4.12 Cursor right (254 77)
Moves the cursor one position to the right but does not erase any character that may be in that position.
This command moves the text insertion point even if the cursor is turned off.
4 Bar Graphs and Special Characters
The display includes the ability to draw bar graphs, either horizontally or vertically, large numbers, and
allows users to define up to eight special characters. Eight characters (ASCII values 0x00 to 0x07) are set
aside for use with bar graphs, user defined characters, and large digits. Since the same 8 characters are used
for each function, the functions may not be used simultaneously. The characters may be defined or redefined
at any time by issuing the commands shown in this section. Once defined, they may be used either by means
of the bar graph commands, or by simply issuing one of the ASCII values 0x00 to 0x07 which is not prefixed
by the command byte, 254.
4.1 Command List
4.1.1 Initialize wide vertical bar graph (254 118)
This command defines the 8 special / user characters to be blocks suitable for use in drawing wide
vertical bar graphs, such as 5 pixels. Any previously existing definitions will be lost. Once this command
has been issued, any number of vertical bar graphs may be drawn unless the characters are redefined by
another command.
4.1.2 Initialize narrow vertical bar graph (254 115)
This command defines the 8 special / user characters to be blocks suitable for use in drawing narrow
vertical bar graphs, such as 2 pixels. Any previously existing definitions will be lost. Once this command
has been issued, any number of vertical bar graphs may be drawn unless the characters are re-defined by
another command.
4.1.3 Draw vertical bar graph (254 61 [column] [height])
Draws a vertical bar graph in [column] having a height of [height] pixels. The height may range from
0 to 20 (0x00 to 0x14) pixels. The necessary characters must first be initialized by either of the commands
shown in section 5.1.1 or 5.1.2, which will determine the width of the graph drawn. Graph may be erased
by drawing a bar graph of height = 0 in the same column.
Matrix Orbital
LCD2041
16
4.1.4 Initialize horizontal bar graph (254 104)
This command defines the 8 special / user characters to be blocks suitable for use in drawing horizontal
bar graphs. Any previously existing definitions will be lost. Once this command has been issued, any number
of horizontal bar graphs may be drawn unless the characters are redefined by another command.
4.1.5 Draw horizontal bar graph (254 124 [column] [row] [dir] [length])
Draws a horizontal bar graph in [row] starting at [column] with a length of [length] pixels. [row] may
have a value of 0x01 or 0x02, column may range from 0x01 to 0x14 and length may be from 0x00 to 0x64 (0
to 100) if the graph can extend the full width of the screen. Each column is 5 pixels wide, as spaces between
the columns don’t count.
[dir] specifies the direction: 0x00 goes from left to right, 0x01 goes from right to left.
4.1.6 Initialize large digits (254 110)
This command defines the 8 special / user characters to be blocks suitable for use in drawing large digits.
Any previously existing definitions will be lost. Once this command has been issued, any number of large
characters may be placed until the characters are redefined by another command.
4.1.7 Place large digit 254 35 [col] [digit]
This command allows the large digits to be drawn on the display screen. Numbers of almost full display
height may be placed along side regular text on four row displays. The column number has a maximum
value which is less than the display width because the digits are all three columns wide.
Before using this command the “Initialize large digits” command must be issued to define the blocks
necessary to make up the digits. If regular text and large digits are mixed on one screen, the user should
always set the display cursor position before placing regular text because the creation of a large digit will
leave the cursor position to the bottom right of the large digit and not at the last regular text write position.
[col] can have values from 0x01 to 0x12 (1 to 18). [digit] has values from 0x00 to 0x09 (0 to 9).
4.1.8 Define custom character (254 78 [c] [8 bytes])
The display allows up to 8 user defined ’custom’ characters. These characters occupy the first 8 (0x00
to 0x07) places in the character set.
Custom characters occupy a 5x8 pixel matrix. Built in characters are 5x7: the bottom row of pixels is
normally reserved for the underline cursor. The underline cursor should be turned off if the bottom row of
pixels forms part of a custom character.
The characters are defined by issuing the command 254 78 [c] followed by 8 bytes to define the character.
[c] is the character number (0x00 to 0x07). The 8 bytes are mapped as shown below;
Matrix Orbital
LCD2041
17
Table 5: 8 Byte Map
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
1
6
11
16
21
26
31
36
MSB LSB
2
3
4
7
8
9
12 13 14
17 18 19
22 23 24
27 28 29
32 33 34
37 38 39
5
10
15
20
25
30
35
40
Data Byte 1
Data Byte 2
Data Byte 3
Data Byte 4
Data Byte 5
Data Byte 6
Data Byte 7
Data Byte 8
A "1" bit indicates an on (black) pixel, a "0" bit indicates an off (clear) pixel.
Once defined, a character is displayed simply by issuing a value (0x00 to 0x07) corresponding to the
character number. The character will be laid out as follows;
Table 6: Character Values
1
6
11
16
21
26
31
36
2
3
4
7
8
9
12 13 14
17 18 19
22 23 24
27 28 29
32 33 34
37 38 39
Cursor Line
5
10
15
20
25
30
35
40
NOTE Custom characters will be erased if any of the "Initialize bar graph" commands
are issued.
Example of a degree symbol;
txUart.sendByte(0xFE); //command prefix
txUart.sendByte(’N’); //custom character command
txUart.sendByte(0x00); //custom character value 0-7
txUart.sendByte(12); //8 bytes to create
txUart.sendByte(18); //the custom character
txUart.sendByte(18);
txUart.sendByte(12);
txUart.sendByte(0);
txUart.sendByte(0);
txUart.sendByte(0);
Matrix Orbital
LCD2041
18
txUart.sendByte(0);
txUart.sendByte(0x00); //display custom character 0
5 Miscellaneous Commands
The commands listed in this chapter don’t readily fit in any of the other categories, or are used in more
than one category.
5.1 Command List
5.1.1 Clear display (254 88)
This command clears the display and resets the text insertion point to the top left of the screen.
5.1.2 Set contrast (254 80 [contrast])
This command sets the display’s contrast to [contrast], where [contrast] is a value between 0x00 and
0xFF (between 0 and 255). Lower values cause ’on’ elements in the display area to appear lighter, while
higher values cause ’on’ elements to appear darker. Lighting conditions will affect the actual value used
for optimal viewing. Individual display modules will also differ slightly from each other in appearance. In
addition, values for optimal viewing while the display backlight is on may differ from values used when
backlight is off.
5.1.3 Backlight on (254 66 [minutes])
This command turns on the backlight for a time of [minutes] minutes. If [minutes] is zero (0), the
backlight will remain on indefinitely. The factory default for backlight is on.
5.1.4 Backlight off (254 70)
This command turns the backlight of the display off.
5.1.5 General purpose output off (254 86)
This command turns OFF any of the general purpose outputs. [gpo #] is 1 to 8. Please note that OFF
means the GPO pin floats (high impedance).
Matrix Orbital
LCD2041
19
5.1.6 Set backlight brightness (254 153 [brightness])
This command sets the display’s brightness to [brightness], where [brightness] is a value between 0x00
and 0xFF (between 0 and 255). The higher the number is, the brighter the backlight will appear.
5.1.7 General purpose output on (254 87)
This command turns ON the general purpose output. ON means that the output is pulled low or, ground
via 240ohms.
5.1.8 Read module type
This command will return, over the RS-232 interface in TTL levels only, the model type value of the
module. This command returns a 1-byte hex value. Values for various modules at the time of this publication
are as follows;
Table 7: Module Values
LCD0821 - 0x01
LCD4041 - 0x07
LK404-55 - 0x0A
VK204-25PC - 0x0E
GLC24064 - 0x13
LK404-AT - 0x31
LCD2021 - 0x03
LK202-25 - 0x08
VFD2021 - 0x0B
VK204-25 - 0x0F
GLK24064-25 - 0x15
LK402-12 - 0x33
LCD2041 - 0x05
LK204-25 - 0x09
VFD2041 - 0x0C
GLC12232 - 0x10
GLK12232-25 - 0x22
LK162-12 - 0x34
6 Appendix; Command Summary
6.1 General
The operation of the display is controlled by a simple and consistent command set. Commands control;
•
•
•
•
Text
Display graphics
Display keypad interface
Miscellaneous operating parameters
6.2 Issuing Commands
Commands are issued to the display by the controller. In a test setup, commands can be issued to
the display by means of a BASIC program, using the chr$( ) function. In the tables below, we’ve shown
Matrix Orbital
LCD2041
20
commands in hex, ASCII and decimal form. All commands begin with the prefix character 0xFE (254
decimal). These commands are issued on the serial communications link (I2 C or RS-232) at the currently
defined baud rate.
For example (using BASIC in a test setup), the user could issue the command to clear the screen on the
display by including the line:
PRINT#1,chr$(254);chr$(88)
in the BASIC program.
ZComm1->WriteCommByte(0xfe);
ZComm1->WriteCommByte(’X’);
6.3 On Numbers
Like all computerized devices, the display operates with commands and values in the form of binary
numbers. These binary numbers are arranged in 8 digit (i.e., 8 bit) groups called bytes. The decimal value
of a byte may have any value from 0 to 255. Bytes are usually specified in either decimal or hexadecimal
(base 16) form for convenience, since binary numbers are confusing to deal with directly. Hexadecimal
(hex) numbers are particularly convenient because exactly two hexadecimal digits make up one byte, each
hex digit representing 4 binary digits (4 bits) as shown here;
Table 8: Hex Value Table
Binary
0000
0001
0010
0011
0100
0101
0110
0111
Hex
0
1
2
3
4
5
6
7
Decimal
0
1
2
3
4
5
6
7
Binary
1000
1001
1010
1011
1100
1101
1110
1111
Hex
8
9
A
B
C
D
E
F
Decimal
8
9
10
11
12
13
14
15
Based on the table, the byte 01001011 can be represented in hex as 4B, which is usually written as any
of 4Bh, 4BH, 4B hex or 0x4B. The numbers can also be expressed in decimal form if preferred.
6.3.1 ASCII Characters
Since computers deal internally with numbers only, but externally with both letters and numbers, several
schemes were developed to ’map’ written characters to numeric values. One such scheme has become
universal, the American Standard Code for Information Interchange, or ASCII. ASCII tables are readily
available from a number of sources. A few examples will do here;
Matrix Orbital
LCD2041
21
Table 9: Example of an ASCII Table
Letter/ Number
A
a
0
9
Decimal Value
65
97
48
57
Hex Value
41
61
30
39
This gives rise to the possibility of confusion when parameters are being set on the display. For example,
the GPO ON and OFF commands use a number to indicate which GPO is being controlled. We’re told that
acceptable values are 0 to 8. All such parameters must use numeric values (i.e., the actual byte values). If
we send the ASCII number 0 by mistake it will actually give the value 48 decimal (30 hex) to the parameter,
which is wrong.
In the tables given in the following sections ASCII characters are shown as ’A’, with single quotes.
6.4 Text Commands
Syntax in the tables below is given in hex, decimal and decimal with ASCII, in that order, one per line.
Table 10: Text Commands
Command
Auto line wrap on
Auto line wrap off
Auto scroll on
Auto scroll off
Matrix Orbital
Syntax
FE 43
254 67
254’C’
FE 44
254 68
254 ’D’
FE 51
254 81
254 ’Q’
Default
off
FE 52
254 82
254 ’R’
off
off
off
LCD2041
Notes
Enables
line
wrapping
(not
word wrap).
Disables
line
wrapping.
Enables scroll at
bottom of screen.
Text will push
display up one
line to make room
for new line.
Disables
auto
scroll. Text will
wrap to top left
and
overwrite
existing text.
22
Command
Set cursor position
Syntax
FE 47 [col][row]
254 71 [col][row]
254 ’G’ [col][row]
Default
n/a
Send cursor home
FE 48
254 72
254 ’H’
n/a
Underline cursor on
FE 4A
254 74
254 ’J’
FE 4B
254 75
254 ’K’
FE 53
254 83
254 ’S’
FE 54
254 84
254 ’T’
FE 4C
254 76
254 ’L’
off
FE 4D
254 77
254 ’M’
n/a
Underline cursor off
Block cursor on
Block cursor off
Cursor left
Cursor right
Matrix Orbital
Notes
Moves
cursor
to the specified
column and row.
The cursor marks
the text insertion
point in this and
all commands.
This
command
moves the cursor
to the top left of
the display area.
Turns on the underline cursor.
Turns off the underline cursor.
off
n/a
LCD2041
Turns on the
blinking
block
cursor.
Turns off the
blinking
block
cursor.
Moves the cursor one position
to the left. If the
cursor is already
at the beginning
of a line it will
move to the end
of the other line.
Moves the cursor one position
to the right. If the
cursor is already
at the end of a line
it will move to the
beginning of the
other line.
23
6.5 Bar Graphs and Special Characters
The commands in this section are used to define and display bar graphs and special characters.
Table 12: Bar Graph and Special Character Commands
Command
Initialize thick vertical bar
graph
Initialize thin vertical bar
graph
Initialize horizontal bar
graph
Draw vertical bar graph
Syntax
FE 76
254 118
254 ’v’
FE 73
254 115
254 ’s’
FE 68
254 104
254 ’h’
FE 3D [col][length]
254 61 [col][length]
254 ’=’ [col][length]
FE 7C [c][r][d][length]
254 124 [c][r][d][length]
254 ’|’ [c][r][d][length]
7.1 Specifications
FE 6E
254 110
254 ’n’
FE 23 [col] [digit]
254 23 [col] [digit]
254 ’#’ [col] [digit]
FE 4E [c][8 bytes]
254 78 [c][8 bytes]
254 ’N’ [c][8 bytes]
Matrix Orbital
LCD2041
Notes
Initializes the user character set to
make wide vertical bar graphs.
Initializes the user character set to
make narrow vertical bar graphs.
Initializes the user character set to
make horizontal bar graphs.
Draws a vertical bar graph at column
[col] of length [length]. Length is
measured in pixels (0x00 to 0x14).
User must first use the ’v’ or ’s’
command to initialize characters.
Draws a horizontal bar graph starting at column [c] on row [r] with direction [d] (0 is right, 1 is left) of
length [length]. Length is measured
in pixels (0x00 to 0x64 if starting in
column 1). User must first use the
’h’ command to initialize characters.
Initializes the user character set to
make large digits.
Place large digit number [digit] in
column [col] of the display. Cursor
moves to bottom right of large digit.
[digit] is 0x00 to 0x09, [col] is 0x01
to 0x12 (i.e. 1 to 18 decimal).
Defines one of 8 custom "user" characters. Character number is [c] between 0x00 and 0x07.
24
6.6 Miscellaneous Commands
Table 14: Miscellaneous Commands
Command
Clear display
Syntax
FE 58
254 88
254 ’X’
Default
n/a
Set contrast
FE 50 [contrast]
254 80 [contrast]
254 ’P’ [contrast]
0x80128
Backlight on
FE 42 [minutes]
254 66 [minutes]
254 ’B’ [minutes]
on
Backlight off
FE 46
254 70
254 ’F’
FE 56 [gpo #]
254 86 [gpo #]
254 ’V’ [gpo #]
FE 57 [gpo #]
254 87 [gpo #]
254 ’W’ [gpo #]
FE 37
254 55
254 ’7’
on
General purpose output off
General purpose output on
Read module type
Matrix Orbital
LCD2041
off
off
see table
Notes
Clears screen of
text and graphics,
places text cursor
at top left.
Sets display contrast.
Compensates for viewing
angle. Contrast
is a value between
0 and 255 (hex 0
to FF). Larger =
darker.
Backlight
will
stay on for [minutes]. If [minutes]
= 0 backlight
will
stay
on
permanently.
Turns off backlight.
Turns
general
purpose
output
OFF.
Turns
general
purpose
output
ON.
This command returns a 1-byte hex
value.
25
7 Appendix: Specifications
7.1 Specifications
Table 16: Environmental Specifications
Operating Temperature
Storage Temperature
Operating Relative Humidity
Standard Temperature
0◦ C to +50◦ C
-20◦ C to +70◦ C
90% max non-condensing
Extended Temperature
-20◦ C to +70◦ C
-40◦ C to +85◦ C
90% max non-condensing
Table 17: Electrical Specifications
Supply Voltage
Supply Current
Supply Backlight Current
4.75 - 5.25 Vdc (optional 8 - 15 VDC)
11 mA typical
90 mA typical
Table 18: Optical Characteristics
Number of Characters
Matrix format
Display Area
Character Size
Character Pitch
Line pitch
Dot Size
Dot Pitch
LED Backlight Life
Color of Illumination
Matrix Orbital
80 (20 characters by 4 lines)
5 x 7 with underline
76.3 x 25.20 mm XxY
2.95 x 4.75 mm (XxY), not including underline
3.55 mm
5.35 mm
0.55 x 0.55 mm (XxY)
0.60 x 0.60 mm (XxY)
100,000 hours typical
Yellow Green
LCD2041
26
Matrix Orbital
LCD2041
Figure 20: Physical Layout
27
7.2 Options
Table 19: Options Available on LCD2041
Inverse Blue LCD WB
Inverse Yellow LCD
White backlight with Gray glass (Ice Blue)
Extended Temperature
Wide Voltage
Wide Voltage with Efficient Switching Power Supply
WB
IY
GW
E
V
-VPT
8 Appendix: Glossary
Table 20: Appendix: Glossary
ASCII
Backlight
Baud Rate
Binary Number
Bit
Bitmap
Byte
CCFL
Matrix Orbital
American Standard Code for Information Interchange.
A 7 bit binary code representing the English alphabet, decimal numbers and common punctuation marks.
Also includes control characters such as carriage return or end of text. An 8 bit superset of the standard
ASCII codes is often used today to include foreign
characters and other symbols. These supersets are often called extended ASCII character sets.
A backlit display is illuminated from behind to provide
nighttime and improved daytime readability.
The (data and signaling) bit transmission rate of an RS232 device.
A number written using binary notation, which only
uses zeros and ones
The smallest unit of information a computer can work
with. Each bit is either 0 or 1. Binary digit.
A representation, consisting of rows and columns of
dots, of a graphics image in computer memory. The
value of each dot, whether it is filled in or not, is stored
in one or more bits of data.
A grouping of eight binary bits
Cold Cathode Fluorescent Lamp. A high brightness
backlighting source consists of a fluorescent tube powered by a high voltage A.C. source.
LCD2041
28
Configuration
Contrast
Controller
DB-9
Firmware
Font
Font Metric
Hexadecimal
I2 C
Interface
LCD
Module Type Value
Pixel
Pre-Generated Fonts
Matrix Orbital
The way a system is set up, or the assortment of components that make up the system. Configuration can
refer to either hardware or software, or the combination of both.
The ratio of luminance between the light state of the
display to the dark state of the display.
The micro-controller or PC used to control the Matrix
Orbital display unit
The designation of a connector used in the RS-232 interface: 9 pin connector
Software (programs or data) that has been written onto
read-only memory (ROM). Firmware is a combination of software and hardware. ROMs, PROMs and
EPROMs and flash EEPROMs that have data or programs recorded on them are firmware.
A design for a set of characters. A font is the combination of typeface and other qualities, such as size, pitch,
and spacing.
A definition of where font is to be placed, such as margins and spacing between characters and lines.
Refers to the base-16 number system, which consists
of 16 unique symbols: the numbers 0 to 9 and the letters A to F. For example, the decimal number 15 is
represented as F in the hexadecimal numbering system. The hexadecimal system is useful because it can
represent every byte (8 bits) as two consecutive hexadecimal digits. It is easier for humans to read hexadecimal numbers than binary numbers.
Short for Inter-IC, a type of bus designed by Phillip’s
Semiconductors in the early 1980s, which is used to
connect integrated circuits (I2 Cs). I2 C is a multimaster bus, which means that multiple chips can be
connected to the same bus and each one can act as a
master by initiating a data transfer.
A means by which two systems interact.
Liquid Crystal Display
This refers to the model number of the module.
The smallest individually controllable element of a
display.
Pre-determined fonts which can be downloaded into
graphic liquid crystal displays.
LCD2041
29
Primitive
RS-232
Scroll
Serial Number
Serial Port
Version Number
Volatile Memory
Matrix Orbital
A low-level object or operation from which higherlevel, more complex objects and operations can be
constructed. In graphics, primitives are basic elements,
such as lines, curves, and polygons, which you can
combine to create more complex graphical images
Short for recommended standard-232C, a standard interface approved by the Electronic Industries Association (EIA) for connecting serial devices.
To view consecutive lines of data on the display screen.
The term scroll means that once the screen is full, each
new line appears at the bottom edge of the screen and
all other lines move up one position.
A number that is one of a series and is used for identification of the module
A port, or interface, that can be used for serial communication, in which only 1 bit is transmitted at a time.
This refers to the firmware revision number of the
module.
Temporary memory. Once the power supply is turned
off volatile memory is then erased.
LCD2041
30