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
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
Diff: TextLCD_Config.h
- Revision:
- 37:ce348c002929
- Parent:
- 36:9f5f86dfd44a
- Child:
- 38:cbe275b0b647
--- a/TextLCD_Config.h Tue Nov 25 19:21:18 2014 +0000 +++ b/TextLCD_Config.h Sun Mar 29 13:08:03 2015 +0000 @@ -1,8 +1,10 @@ -/* mbed TextLCD Library, for a 4-bit LCD based on HD44780 +/* mbed TextLCD Library, for LCDs based on HD44780 controllers * Copyright (c) 2014, WH * 2014, v01: WH, Extracted from TextLCD.h as of v14 * 2014, v02: WH, Added AC780 support, added I2C expander modules, fixed setBacklight() for inverted logic modules. Fixed bug in LCD_SPI_N define * 2014, v03: WH, Added LCD_SPI_N_3_8 define for ST7070 + * 2015, v04: WH, Added support for alternative fonttables (eg PCF21XX) + * 2015, v05: WH, Clean up low-level _writeCommand() and _writeData(), Added support for alt fonttables (eg PCF21XX), Added ST7066_ACM for ACM1602 module, fixed contrast for ST7032 * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -40,10 +42,14 @@ #define LCD_UDC 1 /* Enable predefined UDC example*/ #define LCD_PRINTF 1 /* Enable Stream implementation */ +//Select option to activate default fonttable or alternatively use conversion for specific controller versions (eg PCF2119C) +#define LCD_DEFAULT_FONT 1 + //Pin Defines for I2C PCF8574/PCF8574A or MCP23008 and SPI 74595 bus expander interfaces -//LCD and serial portexpanders should be wired accordingly +//Different commercially available LCD portexpanders use different wiring conventions. +//LCD and serial portexpanders should be wired according to the tables below. // -//Select Hardware module (one option only) +//Select Serial Port Expander Hardware module (one option only) #define DEFAULT 1 #define ADAFRUIT 0 #define DFROBOT 0 @@ -51,7 +57,6 @@ #define GYLCD 0 #define SYDZ 0 -//Select Hardware module (one option only) #if (DEFAULT==1) //Definitions for default (WH) mapping between serial port expander pins and LCD controller //This hardware supports the I2C bus expander (PCF8574/PCF8574A or MCP23008) and SPI bus expander (74595) interfaces @@ -226,6 +231,7 @@ #endif //Bitpattern Defines for I2C PCF8574/PCF8574A, MCP23008 and SPI 74595 Bus expanders +//Don't change! // #define D_LCD_D4 (1<<D_LCD_PIN_D4) #define D_LCD_D5 (1<<D_LCD_PIN_D5) @@ -291,6 +297,9 @@ #define ST7036_SA2 0x7C #define ST7036_SA3 0x7E +/* ST7066_ACM I2C slave address, Added for ACM1602 module */ +#define ST7066_SA0 0xA0 + /* PCF21XX I2C slave address */ #define PCF21XX_SA0 0x74 #define PCF21XX_SA1 0x76 @@ -324,7 +333,7 @@ //ST7032 EastRising ERC1602FS-4 display //Contrast setting 6 significant bits //Voltage Multiplier setting 3 significant bits -#define LCD_ST7032_CONTRAST 0x18 +#define LCD_ST7032_CONTRAST 0x28 #define LCD_ST7032_RAB 0x04 //ST7036 EA DOGM1603 display