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
History
Added setFont() support (for SSD1803, US2066, ST7070) and support for UTF-8 code (Cyrillic language), added SPLC792A controller.
2015-11-06, by wim [Fri, 06 Nov 2015 18:59:27 +0000] rev 41
Added setFont() support (for SSD1803, US2066, ST7070) and support for UTF-8 code (Cyrillic language), added SPLC792A controller.
Fixed an occasional init problem. Added PCF2119R support, added HD66712 support, added some more I2C portexpander types.
2015-05-20, by wim [Wed, 20 May 2015 18:46:51 +0000] rev 40
Fixed an occasional init problem. Added PCF2119R support, added HD66712 support, added some more I2C portexpander types.
Working version PCF2119
2015-05-19, by wim [Tue, 19 May 2015 18:13:00 +0000] rev 39
Working version PCF2119
Fixed Adafruit I2C/SPI portexpander pinmappings, fixed SYDZ Backlight control
2015-04-18, by wim [Sat, 18 Apr 2015 11:33:02 +0000] rev 38
Fixed Adafruit I2C/SPI portexpander pinmappings, fixed SYDZ Backlight control
Cleaned up low level command and data write operations to improve speed of I2C expander versions (PCF8574 and MCP23008). Added initial support for controllers with alternative fonttables.
2015-03-29, by wim [Sun, 29 Mar 2015 13:08:03 +0000] rev 37
Cleaned up low level command and data write operations to improve speed of I2C expander versions (PCF8574 and MCP23008). Added initial support for controllers with alternative fonttables.
Added ST7070 and KS0073 support, added setIcon(), clrIcon() and setInvert() method for supported devices.
2014-11-25, by wim [Tue, 25 Nov 2014 19:21:18 +0000] rev 36
Added ST7070 and KS0073 support, added setIcon(), clrIcon() and setInvert() method for supported devices.
Added AC780 support, added I2C expander module types, fixed setBacklight() for inverted logic I2C expander modules. Fixed bug in LCD_SPI_N define.
2014-10-10, by wim [Fri, 10 Oct 2014 15:47:56 +0000] rev 35
Added AC780 support, added I2C expander module types, fixed setBacklight() for inverted logic I2C expander modules. Fixed bug in LCD_SPI_N define.
Added support for PT6314 (VFD), added setOrient() method for supported devices (eg SSD1803, US2066), added Double Height lines and 16 UDCs for supported devices. Added separate files for UDC defines and feature/footprint configuration.
2014-09-27, by wim [Sat, 27 Sep 2014 12:38:27 +0000] rev 34
Added support for PT6314 (VFD), added setOrient() method for supported devices (eg SSD1803, US2066), added Double Height lines and 16 UDCs for supported devices. Added separate files for UDC defines and feature/footprint configuration.
Added support for controllers US2066/SSD1311 (OLED), added setUDCBlink method for supported devices (eg SSD1803), fixed issue in setPower()
2014-08-28, by wim [Thu, 28 Aug 2014 15:44:08 +0000] rev 33
Added support for controllers US2066/SSD1311 (OLED), added setUDCBlink method for supported devices (eg SSD1803), fixed issue in setPower()
Added support for controllers PCF2119 (native I2C) and SSD1803A, ST7036 (native I2C/SPI), added setContrast method (by JH1PJL) and setPower method for supported devices (eg ST7032i). Cleaned up Init method.
2014-08-22, by wim [Fri, 22 Aug 2014 19:50:49 +0000] rev 32
Added support for controllers PCF2119 (native I2C) and SSD1803A, ST7036 (native I2C/SPI), added setContrast method (by JH1PJL) and setPower method for supported devices (eg ST7032i). Cleaned up Init method.