LCDproc development and user support list

Text archives Help

[lcdproc] Non-matrix Orbital display

Chronological Thread 
  • From: apcarr AT (Angus Carr)
  • Subject: [lcdproc] Non-matrix Orbital display
  • Date: Wed, 7 Apr 1999 15:35:21 -0400 (EDT)

I am in Canada, and I went to Matrix Orbital's Canadian distribuitor (HVW
Tech ) to poke around at prices.

They also carry an lcd kit, for about $30 Cdn. For comparison, The Matrix
Orbital 2x20 display is $100 Cdn. I thought to myself that I was
interested. It isn't backlit, and uses a different protocal, but what the
heck, eh?

I haven't bought one yet, and it requires that I assemble it. I will, and
probably send back a report to the list.

I wanted an opinion from the group as to whether or not the documentation
is sufficient for writing a driver for lcdproc.

I have included it here below, as pasted out of my web browser. For a copy
"From the Horse's mouth", check

Anyway, thanks for any input. I will, of course, summ.

Angus Carr.

or 9600 Inverted).

Configuration)rtednnrteddnrtedndrtednd: External pull up resistors are not
required on the Baud (pin 13) and Mode (pin 14)
inputs because pullups are built-into the PIC16C554.

Apply power. A very brief message will appear on the LCD along with the
current options;

Rochanda LCD
Baud=2400 Mode=INV

The message is very short. To see it again, remove and re-apply power.


Serial Connection.

The serial LCD may be connected to any serial source capable of generating
either 2400 or 9600
baud. This might be a Basic Stamp, Domino, PicStic, a PlC or similar
processor. Note that the connection
consists of two leads, the signal lead and ground.

Delay between Characters

Each serial character that is sent by the host micro must be received,
processed, and displayed on the LCD. When the sequence is finished, the
next character is fetched. The amount of time required for the processor
to do this varies depending on the operation being performed.

To avoid the processor missing a serial character, it is recommended that
there be a minimum 5.0
msec delay between the transmission of each character.

In the case of the Basic Stamp II, this may easily be accomplished by
setting the pace field to 5
or greater.

For example;

SEROUT 0, 396+$4000, 10, ["ABCDEF"]

Here we have set the pace to 10 msecs of delay between characters

If you are using a PIC, see HYPERLINK
for code examples.

Sending Instructions to the LCD

Characters which are sent to the serial LCD may be of two types, either
instructions to configure
the LCD or actual data to be displayed on the LCD. Instructions are
distinguished from data by first sending the character $FE (or 254
decimal). The actual instruction is the next character.

For example;

$FE $01 ; clears the LCD
$FE $80 ; sets the cursor to the beginning of line 1
$FE $80+$40 ; sets the cursor to the beginning of line 2

Other instruction commands are discussed in the context of examples.

Example SERIAL_1.BS2.

The following program illustrates how to clear the LCD, set the cursor to
either the beginning of
line 1 or line 2, and how to display text and how to display variables in
either decimal or
hexadecimal format. NOTE: The serial driver was designed for 2x20
displays; some of the code examples in this manual expect a 20 character
display. In these cases, some characters may be truncated.

A brief word about the Basic Stamp II's SEROUT command.

SEROUT pin, bit_delay, intercharacter_delay, [...]

The bit delay determines the baud rate. For example; at 2400 baud, each
bit is 1/2400 = 416
secs. However, the Stamp has a built in overhead of 20 secs. Thus, the bit
delay is specified
as 416 - 20 = 396. For 9600 baud, 1/9600 = 104. Subtracting 20 gives 84.

In addition to the delay timing, bit 14 of this parameter controls whether
the data is sent inverted
or non-inverted. Thus, for inverted;

0100000000000000 or $4000 which means that:
0000000000000000 or $0000 would be used for non-inverted


Illustrates how to display simple text strings and variables.

For 2400 Inverted use SEROUT 0, 396+$4000, 10, [...]
For 9600 Inverted use SEROUT 0, 84+$4000, 10, [...]
For 2400 Non inverted use SEROUT 0, 396+$0, 10, [...]
For 9600 Non inverted use SEROUT 0, 84+$0, [0, [...]

P0 (pin 5)----------------To RX on LCD

Towanda Malone, Morgan State University, 7 July, `97

B_2400 CON 396
B_9600 CON 84
INV CON$4000
NON CON $0000


DIRO=1 define serial output to LCD


SEROUT 0, B_2400+INV, 10, [$FE, $01] clear LCD
SEROUT 0, B_2400+INV, 10, [$FE, $80] cursor at line I
SEROUT 0, B_2400+INV, 10, ["This is line 1"] display some text

SEROUT 0, B_2400+INV, 10, [$FE, $80+$40, "This is line 2"]
locate cursor at the beginning of line 2 and display some text

PAUSE 10000 10 second pause to admire

SEROUT 0, B_2400+INV, 10, [$FE, $01] clear the LCD

T_C_WHOLE=23 dummy up a temperature of 23.17 degrees

SEROUT 0, B_2400+INV, 10, [$FE, $80, "T_C=", dec T_C_WHOLE]
SEROUT 0, B_2400+INV, 10, [".",dec T_C_DEC, "Deg C"] display
T_C = 23.17 Deg C

PAUSE 10000 pause to admire

SEROUT 0, B_2400+INV, 10, [$FE, $01, $FE, $80] clear, line 1

FOR N=0 TO 15 `count up in de

To unsubscribe from this list send a blank message to
lcdproc-unsubscribe AT

Archive powered by MHonArc 2.6.18.

Top of page