Updated for more display types. Fixed memoryaddress confusion in address() method. Added new getAddress() method. Added support for UDCs, Backlight control and other features such as control through I2C and SPI port expanders and controllers with native I2C and SPI interfaces. Refactored to fix issue with pins that are default declared as NC.

Dependents:   GPSDevice TestTextLCD SD to Flash Data Transfer DrumMachine ... more

Fork of TextLCD by Simon Ford

Example

Hello World! for the TextLCD

#include "mbed.h"
#include "TextLCD.h"
 
// Host PC Communication channels
Serial pc(USBTX, USBRX); // tx, rx
 
// I2C Communication
I2C i2c_lcd(p28,p27); // SDA, SCL
 
// SPI Communication
SPI spi_lcd(p5, NC, p7); // MOSI, MISO, SCLK

//TextLCD lcd(p15, p16, p17, p18, p19, p20);                // RS, E, D4-D7, LCDType=LCD16x2, BL=NC, E2=NC, LCDTCtrl=HD44780
//TextLCD_SPI lcd(&spi_lcd, p8, TextLCD::LCD40x4);   // SPI bus, 74595 expander, CS pin, LCD Type  
TextLCD_I2C lcd(&i2c_lcd, 0x42, TextLCD::LCD20x4);  // I2C bus, PCF8574 Slaveaddress, LCD Type
//TextLCD_I2C lcd(&i2c_lcd, 0x42, TextLCD::LCD16x2, TextLCD::WS0010); // I2C bus, PCF8574 Slaveaddress, LCD Type, Device Type
//TextLCD_SPI_N lcd(&spi_lcd, p8, p9);               // SPI bus, CS pin, RS pin, LCDType=LCD16x2, BL=NC, LCDTCtrl=ST7032_3V3   
//TextLCD_I2C_N lcd(&i2c_lcd, ST7032_SA, TextLCD::LCD16x2, NC, TextLCD::ST7032_3V3); // I2C bus, Slaveaddress, LCD Type, BL=NC, LCDTCtrl=ST7032_3V3  

int main() {
    pc.printf("LCD Test. Columns=%d, Rows=%d\n\r", lcd.columns(), lcd.rows());
    
    for (int row=0; row<lcd.rows(); row++) {
      int col=0;
      
      pc.printf("MemAddr(Col=%d, Row=%d)=0x%02X\n\r", col, row, lcd.getAddress(col, row));      
//      lcd.putc('-');
      lcd.putc('0' + row);      
      
      for (col=1; col<lcd.columns()-1; col++) {    
        lcd.putc('*');
      }
 
      pc.printf("MemAddr(Col=%d, Row=%d)=0x%02X\n\r", col, row, lcd.getAddress(col, row));      
      lcd.putc('+');
        
    }    
    
// Show cursor as blinking character
    lcd.setCursor(TextLCD::CurOff_BlkOn);
 
// Set and show user defined characters. A maximum of 8 UDCs are supported by the HD44780.
// They are defined by a 5x7 bitpattern. 
    lcd.setUDC(0, (char *) udc_0);  // Show |>
    lcd.putc(0);    
    lcd.setUDC(1, (char *) udc_1);  // Show <|
    lcd.putc(1);    

}

Handbook page

More info is here

Committer:
simon
Date:
Sat May 22 18:18:19 2010 +0000
Revision:
0:edfb85c53631
Child:
1:ac48b187213c

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon 0:edfb85c53631 1 /* mbed TextLCD Library, for a 4-bit 2x16 LCD
simon 0:edfb85c53631 2 * Copyright (c) 2007-2010, sford
simon 0:edfb85c53631 3 *
simon 0:edfb85c53631 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
simon 0:edfb85c53631 5 * of this software and associated documentation files (the "Software"), to deal
simon 0:edfb85c53631 6 * in the Software without restriction, including without limitation the rights
simon 0:edfb85c53631 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
simon 0:edfb85c53631 8 * copies of the Software, and to permit persons to whom the Software is
simon 0:edfb85c53631 9 * furnished to do so, subject to the following conditions:
simon 0:edfb85c53631 10 *
simon 0:edfb85c53631 11 * The above copyright notice and this permission notice shall be included in
simon 0:edfb85c53631 12 * all copies or substantial portions of the Software.
simon 0:edfb85c53631 13 *
simon 0:edfb85c53631 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
simon 0:edfb85c53631 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
simon 0:edfb85c53631 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
simon 0:edfb85c53631 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
simon 0:edfb85c53631 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
simon 0:edfb85c53631 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
simon 0:edfb85c53631 20 * THE SOFTWARE.
simon 0:edfb85c53631 21 */
simon 0:edfb85c53631 22
simon 0:edfb85c53631 23 #include "TextDisplay.h"
simon 0:edfb85c53631 24
simon 0:edfb85c53631 25 #ifndef MBED_TEXTLCD_H
simon 0:edfb85c53631 26 #define MBED_TEXTLCD_H
simon 0:edfb85c53631 27
simon 0:edfb85c53631 28 class TextLCD : public TextDisplay {
simon 0:edfb85c53631 29 public:
simon 0:edfb85c53631 30
simon 0:edfb85c53631 31 TextLCD(PinName rs, PinName rw, PinName e, PinName d0, PinName d1, PinName d2, PinName d3);
simon 0:edfb85c53631 32 virtual void character(int column, int row, int c);
simon 0:edfb85c53631 33 virtual int rows();
simon 0:edfb85c53631 34 virtual int columns();
simon 0:edfb85c53631 35
simon 0:edfb85c53631 36 // locate, cls, putc, printf come from derived classes
simon 0:edfb85c53631 37
simon 0:edfb85c53631 38 protected:
simon 0:edfb85c53631 39
simon 0:edfb85c53631 40 void writeByte(int value);
simon 0:edfb85c53631 41 void writeCommand(int command);
simon 0:edfb85c53631 42 void writeData(int data);
simon 0:edfb85c53631 43
simon 0:edfb85c53631 44 DigitalOut _rw, _rs, _e;
simon 0:edfb85c53631 45 BusOut _d;
simon 0:edfb85c53631 46 };
simon 0:edfb85c53631 47
simon 0:edfb85c53631 48 #endif