LCD Serial Shield
Mark Sproul
msproul _at_ skychariot.com
This Arduino board is designed to be primarily a standalone serial LCD display. It can also be
used as a primary display on any arduino, regular or mega. It was desgined because of the
lack of an LCD display board that supported proper ASCII (i.e. cr/lf) and was open source.
This board allows you to have a 2 line or 4 line LCD display WITHOUT using any extra Arduino pins.
It just uses the TXData that normally goes to the USB port. Thus allowing you to use the same
serial print functions that you would to the Arduino serial monitor.
It also means you do not need to include the LCD drivers in your program and saves you valuable space.
Board features
- Supports 2x16 and 4x20 LCDs using the HD44780 or SPLC780D
- Can be used standalone
- Can be used as a shield on an Arduino Duemilanove
- Can be used as a shield on an Arduino Mega
- Will work with any existing ASCII output, no need for re-writing special codes
- Full open source
- Fully Arduino development environment compatible
- Use Arduino 168 or 328 processor
- Accepts Serial input from the following sources
- Arduino main serial port (pins 0/1)
- RS-232 DB-9 port
- Arduino Mega serial port 3
- Arduino Mega serial port 2
- Arduino Mega serial port 1
- FTDI input connector (this connector is also use to program the Atmega CPU)
- 4 pin header (JP3)
- unused
- The LCD shield can also get data from the I2C on the Arduino Duemilanove or from Arduino Mega (different pins)
- Includes 7 on board buttons for use with your program. These buttons send ASCII "1" through "7" when pressed
to the selected transmit line.
- The transmit line and receive line can be set independently.
- On board buzzer, beeps when it receives an ASCII BELL (^G)
- Unused Arduino connector pins brought out to a header for other uses (JP1 and JP2)
- Pulse Width Modulation to control brightness
Software features
- Supports 2x16 and 4x20 displays (I have not tested with 2x20 yet)
- Supports standard ASCII including control characters
- Echo on or off
- Scroll or page mode
- Baudrates from 300 to 115200 (anything higher and the LCD is to slow)
- Auto dim feature
- On board menu interface to set parramters
- I2C enabled or disabled
- User settable I2C address
- User settable brightness level
- Hold down buttons 1 and 2 and then hit reset to restore default settings
Serial communications
- Standard Ascii (CR, TAB, BELL, FF)
- Carige return generates auto Line Feed, Line Feed is ignored
- Shift In / Shift Out select alternate character set (Japanese and Spanish)
- ESC 2 set 2 by 16 mode
- ESC 4 set 4 by 20 mode
- ESC B set big chararchter set
- ESC D enter DEMO mode
- ESC E enable ECHO
- ESC H go HOME (without clearing screen)
- ESC M enables Morse Code
- ESC N sets back to normal
- ESC P set PAGE mode (no scrolling)
- ESC S set SCROLL mode
- ESC + increase morse code speed
- ESC - decrease morse code speed
Parts List
Quantity |
ID |
Description |
Part# |
Comments |
1 |
IC3 |
Atmeg168 OR Atmega328 |
|
The standard code fits fine in the 168 |
1 |
T1 |
TIP120 or TIP122 |
TIP120 Darlington Transistor |
9 |
|
0.01 uF capacitor |
|
8 |
S1-7, Reset |
Pushbutton switch |
Sparkfun COM-00097 |
1 |
|
Trim pot |
Sparkfun |
1 |
R1 |
Resister 1/4w 10K |
1 |
R2 |
Resister 1/4w 150 ohm |
1 |
R3 |
Resister 1/4w 330 ohm |
1 |
SG1 |
Buzzer |
Sparkfun COM-07950 |
Optional |
1 |
IC2 |
MAX232 RS-232 driver |
|
Optional |
1 |
X1 |
DB-9 Female connector |
|
Optional |
0 |
IC1 |
Arduino Outline |
|
IC1 is the Arduino board outline |
Programming the LCDshield
In order to program the Arduino CPU on the LCDshield you need an FTDI USB cable or equivalent.
You must set both TXD and RXD jumpers to position 6 (FTDI). Once this is done, the LCDsheild
should be have just like an Arduino Duemilanove with either the 168 or 328 CPU.
The LCD shield can use the standard LiquidCrystal library.
If you don't have an FTDI cable, you can put the ATMEGA cpu in an Arduino board, program it, and then put it back in the LCDshield.
This of course is fairly inconvient but it works.