TextLCD library for controlling various LCD panels based on the HD44780 4-bit interface. Includes support for custom character bitmaps.

Dependents:   HD44780-LCD_with_Bluetooth

Fork of TextLCD by Simon Ford

Examples

Hello world in custom font

#include "mbed.h"
#include "TextLCD.h"

int main() {
    lcd=new TextLCD(D8, D9, D4, D5, D6, D7);


    char c_H[]={0x1b,0x1b,0x1b,0x1f,0x1b,0x1b,0x1b,0x1b};
    char c_e[]={0x0,0x0,0xe,0x1b,0x1f,0x18,0x18,0xf};
    char c_l[]={0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x6};
    char c_o[]={0x0,0x0,0xe,0x1b,0x1b,0x1b,0x1b,0xe};
    char c_W[]={0x1b,0x1b,0x1b,0x1b,0x1f,0x1f,0x1f,0x1b};
    char c_r[]={0x0,0x0,0xe,0x1b,0x18,0x18,0x18,0x18};
    char c_d[]={0x3,0x3,0xf,0x1b,0x1b,0x1b,0x1b,0xf};

    lcd->defineChar(1, c_H);
    lcd->putc(1);
    lcd->defineChar(2, c_e);
    lcd->putc(2);
    lcd->defineChar(3, c_l);
    lcd->putc(3);
    lcd->putc(3);
    lcd->defineChar(4, c_o);
    lcd->putc(4);
    lcd->putc(32);
    lcd->defineChar(5, c_W);
    lcd->putc(5);
    lcd->putc(4);
    lcd->defineChar(6, c_r);
    lcd->putc(6);
    lcd->putc(3);
    lcd->defineChar(7, c_d);
    lcd->putc(7);

    while (1) {
    }
}

Animated busy indicator

This animation only uses 1 of the 8 custom character slots, and can be used like a regular character in the output and will automatically animate in-place. Any number of the animated characters can be displayed on the display at once using this animation technique.

#include "mbed.h"
#include "TextLCD.h"

int main() {
    lcd=new TextLCD(D8, D9, D4, D5, D6, D7);

    //The 7 animation characters
    char spin[]={   0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x0,
                    0x2,0x2,0x2,0x4,0x8,0x8,0x8,0x0,
                    0x1,0x2,0x2,0x4,0x8,0x8,0x10,0x0,
                    0x0,0x0,0x3,0x4,0x18,0x0,0x0,0x0,
                    0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,
                    0x0,0x0,0x18,0x4,0x3,0x0,0x0,0x0,
                    0x10,0x8,0x8,0x4,0x2,0x2,0x01,0x0
                };

    //Output text.
    lcd->printf("\1 Please  wait \1");
    
    //Animation loop
    int frame=0;
    while (1) {
        lcd->defineChar(1, spin+frame*8);
        frame=(frame+1)%(sizeof(spin)/8);
        wait(.14);
    }
Revision:
2:227356c7d12c
Parent:
1:ac48b187213c
Child:
3:2a46d5820a78
--- a/main.cpp	Thu May 27 13:44:15 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-// Write to all HD44780 TextLCD RAM locations, sford
-//
-// A quick hack to write to all the display RAM locations
-// in an HD44780 display, to identify which location maps
-// to which character.
-//
-// Instructions:
-//  - Change TextLCD pinout as appropriate so it works
-//  - Run, and it should fill the screen with characters
-//  - Identify what characters are at the start of each row
-//
-// To determine what address each line starts at, you subtract the 
-// ascii code for '0'(48) from the character at the start of each line
-//  - see http://www.asciitable.com/
-// 
-// e.g.
-//   +----------------+
-//   |0123456789:;<=>?| first char = '0' (48)
-//   |XYZ....         | first char = 'X' (88)
-//   +----------------+
-//  
-// So in this case, the RAM offsets are 0 and 40
-
-#include "mbed.h"
-#include "TextLCD.h"
-DigitalOut zero(p11);
-TextLCD lcd(p10, p12, p15, p16, p29, p30, TextLCD::LCD16x2B);
-
-int main() {
-    lcd.printf("hithere");
-    wait(1);
-    lcd.putc('i');
-    wait(1);
-    lcd.cls();
-    wait(1);
-    lcd.locate(4, 1);    
-    wait(1);
-    lcd.printf("jdlkjfksj");
-    for(int i=0; i<30; i++) {
-        lcd.putc('A' + i);
-        wait(0.3);
-    }
-}