You are viewing an older revision! See the latest version
Text LCD
A driver code library for Text LCD panels using the 4-bit HD44780 lcd display driver.
 
 
Hello World!¶
| Pin number | TextLCD pins | mbed pins | 
|---|---|---|
| 1 | GND | 0V | 
| 2 | VCC | 3.3V | 
| 3 | VO | 0V, via 1k resistor | 
| 4 | RS | p15 | 
| 5 | RW | 0V | 
| 6 | E | p16 | 
| 7 | D0 | not connected | 
| 8 | D1 | not connected | 
| 9 | D2 | not connected | 
| 10 | D3 | not connected | 
| 11 | D4 | p17 | 
| 12 | D5 | p18 | 
| 13 | D6 | p19 | 
| 14 | D7 | p20 | 
Warning
The contrast VO pin seems to have different behaviour on different displays, so you may need to experiment for your display to see anything. I think I've seen some work tied to 0V, some to 3.3V, or with a different resistor.
Adjustable contrast can be achieved with a 10k trim-pot in a voltage divider configuration: one side to Vcc, other side to GND, wiper to VO. Adjust until you see a line of solid squares, then back off until they just disappear.
Some displays need a negative voltage at VO. One side of the trimpot is connected to the negative voltage instead of GND in that case. F.i. a Maxim MAX1044 can be used to generate the negative voltage.
Text LCD Library¶
Import library
| Public Types | |
| enum | LCDType { LCD16x2 , LCD16x2B , LCD20x2 , LCD20x4 } | 
| LCD panel format.More... | |
| Public Member Functions | |
| TextLCD (PinName rs, PinName e, PinName d4, PinName d5, PinName d6, PinName d7, LCDType type=LCD16x2) | |
| Create a
    
     TextLCD
    
    interface. | |
| int | putc (int c) | 
| Write a character to the LCD. | |
| int | printf (const char *format,...) | 
| Write a formated string to the LCD. | |
| void | locate (int column, int row) | 
| Locate to a screen column and row. | |
| void | cls () | 
| Clear the screen and locate to 0,0. | |
Different LCD Panel Sizes¶
Setting the type field int the TextLCD constructor allows configuration for the different display panel sizes:
TextLCD::LCD16x2 16x2 LCD panel (default) TextLCD::LCD16x2B 16x2 LCD panel alternate addressing TextLCD::LCD20x2 20x2 LCD panel TextLCD::LCD20x4 20x4 LCD panel
For example:
#include "mbed.h"
#include "TextLCD.h"
TextLCD lcd(p15, p16, p17, p18, p19, p20, TextLCD::LCD20x4); // rs, e, d4-d7
int main() {
    lcd.printf("Hello World!\n");
}
Reference¶
The underlying HD44780 chip is a driver used in many LCD character displays. It might sometimes be referred to as Hitachi HD44780U.
- Some of the original details were found at http://www.a-netz.de/lcd.en.php
- http://mbed.org/forum/mbed/topic/195/ covered lots of our discovery