Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TextLCD by
Diff: TextLCD.cpp
- Revision:
- 40:d3496c3ea301
- Parent:
- 39:e9c2319de9c5
- Child:
- 41:111ca62e8a59
--- a/TextLCD.cpp Tue May 19 18:13:00 2015 +0000 +++ b/TextLCD.cpp Wed May 20 18:46:51 2015 +0000 @@ -21,7 +21,7 @@ * 2015, v18: WH, Performance improvement I2C portexpander * 2015, v19: WH, Fixed Adafruit I2C/SPI portexpander pinmappings, fixed SYDZ Backlight * 2015, v20: WH, Fixed occasional Init fail caused by insufficient wait time after ReturnHome command (0x02), Added defines to reduce memory footprint (eg LCD_ICON), - * Fixed and Added more fonttable support for PCF2119K, Added HD66712 controller. + * Fixed and Added more fonttable support for PCF2119R_3V3, Added HD66712 controller. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -1225,49 +1225,46 @@ case LCD20x1: case LCD24x1: // case LCD32x1: // EXT pin is High, extension driver needed - _function = 0x02; // Function set 001 DL N RE(0) DH REV (Std Regs) + _function = 0x02; // Function set 001 DL N RE(0) - - (Std Regs) // DL=0 (4 bits bus) // N=0 (1-line mode, N=1 2-line mode) - // RE=0 (Dis. Extended Regs, special mode for KS0073) - // DH=1 (Disp shift enable, special mode for KS0073) - // REV=0 (Reverse normal, special mode for KS0073) + // RE=0 (Dis. Extended Regs, special mode for HD66712) + // _function_1 = 0x04; // Function set 001 DL N RE(1) BE LP (Ext Regs) // DL=0 (4 bits bus) // N=0 (1-line mode, N=1 2-line mode) - // RE=1 (Ena Extended Regs, special mode for KS0073) - // BE=0 (Blink Enable, CG/SEG RAM, special mode for KS0073) - // LP=0 (LP=1 Low power mode, LP=0 Normal) + // RE=1 (Ena Extended Regs; special mode for HD66712) + // BE=0 (Blink Enable, CG/SEG RAM; special mode for HD66712) + // LP=0 (LP=1 Low power mode, LP=0 Normal; special mode for HD66712) _function_x = 0x00; // Ext Function set 0000 1 FW BW NW (Ext Regs) - // NW=0 (1,2 line), NW=1 (4 Line, special mode for KS0073) + // NW=0 (1,2 line), NW=1 (4 Line, special mode for HD66712) break; -// case LCD12x3D: // Special mode for KS0073, KS0078 and PCF21XX -// case LCD12x3D1: // Special mode for KS0073, KS0078 and PCF21XX +// case LCD12x3D: // Special mode for KS0073, KS0078, PCF21XX and HD66712 +// case LCD12x3D1: // Special mode for KS0073, KS0078, PCF21XX and HD66712 case LCD12x4D: // Special mode for KS0073, KS0078, PCF21XX and HD66712 -// case LCD16x3D: // Special mode for KS0073, KS0078 -// case LCD16x4D: // Special mode for KS0073, KS0078 +// case LCD16x3D: // Special mode for KS0073, KS0078 and HD66712 +// case LCD16x4D: // Special mode for KS0073, KS0078 and HD66712 case LCD20x4D: // Special mode for KS0073, KS0078 and HD66712 - _function = 0x02; // Function set 001 DL N RE(0) DH REV (Std Regs) + _function = 0x02; // Function set 001 DL N RE(0) - - (Std Regs) // DL=0 (4 bits bus) - // N=0 (dont care for 4 line mode) - // RE=0 (Dis. Extended Regs, special mode for KS0073) - // DH=1 (Disp shift enable, special mode for KS0073) - // REV=0 (Reverse normal, special mode for KS0073) + // N=0 (1-line mode, N=1 2-line mode) + // RE=0 (Dis. Extended Regs, special mode for HD66712) + // _function_1 = 0x04; // Function set 001 DL N RE(1) BE LP (Ext Regs) // DL=0 (4 bits bus) - // N=0 (1-line mode), N=1 (2-line mode) - // RE=1 (Ena Extended Regs, special mode for KS0073) - // BE=0 (Blink Enable, CG/SEG RAM, special mode for KS0073) - // LP=0 (LP=1 Low power mode, LP=0 Normal) + // N=0 (1-line mode, N=1 2-line mode) + // RE=1 (Ena Extended Regs; special mode for HD66712) + // BE=0 (Blink Enable, CG/SEG RAM; special mode for HD66712) + // LP=0 (LP=1 Low power mode, LP=0 Normal; special mode for HD66712) _function_x = 0x01; // Ext Function set 0000 1 FW BW NW (Ext Regs) - // NW=0 (1,2 line), NW=1 (4 Line, special mode for KS0073) + // NW=0 (1,2 line), NW=1 (4 Line, special mode for HD66712) break; - case LCD16x3G: // Special mode for ST7036 // case LCD24x3D: // Special mode for KS0078 // case LCD24x3D1: // Special mode for KS0078 @@ -1277,22 +1274,20 @@ default: // All other LCD types are initialised as 2 Line displays (including LCD16x1C and LCD40x4) - _function = 0x0A; // Function set 001 DL N RE(0) DH REV (Std Regs) + _function = 0x0A; // Function set 001 DL N RE(0) - - (Std Regs) // DL=0 (4 bits bus) // N=1 (2-line mode), N=0 (1-line mode) - // RE=0 (Dis. Extended Regs, special mode for KS0073) - // DH=1 (Disp shift enable, special mode for KS0073) - // REV=0 (Reverse normal, special mode for KS0073) + // RE=0 (Dis. Extended Regs, special mode for HD66712) _function_1 = 0x0C; // Function set 001 DL N RE(1) BE LP (Ext Regs) // DL=0 (4 bits bus) // N=1 (2 line mode), N=0 (1-line mode) - // RE=1 (Ena Extended Regs, special mode for KS0073) - // BE=0 (Blink Enable, CG/SEG RAM, special mode for KS0073) - // LP=0 (LP=1 Low power mode, LP=0 Normal) + // RE=1 (Ena Extended Regs, special mode for HD66712) + // BE=0 (Blink Enable, CG/SEG RAM, special mode for HD66712) + // LP=0 (LP=1 Low power mode, LP=0 Normal) _function_x = 0x00; // Ext Function set 0000 1 FW BW NW (Ext Regs) - // NW=0 (1,2 line), NW=1 (4 Line, special mode for KS0073) + // NW=0 (1,2 line), NW=1 (4 Line, special mode for HD66712) break; } // switch type @@ -1300,27 +1295,27 @@ _writeCommand(0x20 | _function_1);// Function set 001 DL N RE(1) BE LP (Ext Regs) // DL=0 (4 bits bus), DL=1 (8 bits mode) // N=0 (1 line mode), N=1 (2 line mode) - // RE=1 (Ena Extended Regs, special mode for KS0073) - // BE=0 (Blink Enable/Disable, CG/SEG RAM, special mode for KS0073) + // RE=1 (Ena Extended Regs, special mode for HD66712) + // BE=0 (Blink Enable/Disable, CG/SEG RAM, special mode for HD66712) // LP=0 (LP=1 Low power mode, LP=0 Normal) _writeCommand(0x08 | _function_x); // Ext Function set 0000 1 FW BW NW (Ext Regs) - // FW=0 (5-dot font, special mode for KS0073) - // BW=0 (Cur BW invert disable, special mode for KS0073) - // NW=0 (1,2 Line), NW=1 (4 line, special mode for KS0073) - - _writeCommand(0x10); // Scroll/Shift set 0001 DS/HS4 DS/HS3 DS/HS2 DS/HS1 (Ext Regs) - // Dotscroll/Display shift enable (Special mode for KS0073) - - _writeCommand(0x80); // Scroll Quantity set 1 0 SQ5 SQ4 SQ3 SQ2 SQ1 SQ0 (Ext Regs) - // Scroll quantity (Special mode for KS0073) + // FW=0 (5-dot font, special mode for HD66712) + // BW=0 (Cur BW invert disable, special mode for HD66712) + // NW=0 (1,2 Line), NW=1 (4 line, special mode for HD66712) + + _writeCommand(0x10); // Scroll/Shift set 0001 HS4 HS3 HS2 HS1 (Ext Regs) + // Dotscroll/Display shift enable (Special mode for HD66712) + + _writeCommand(0x80); // Scroll Quantity set 1 0 HDS5 HDS4 HDS3 HDS2 HDS1 HDS0 (Ext Regs) + // Scroll quantity (Special mode for HD66712) _writeCommand(0x20 | _function); // Function set 001 DL N RE(0) DH REV (Std Regs) // DL=0 (4 bits bus), DL=1 (8 bits mode) // N=0 (1 line mode), N=1 (2 line mode) - // RE=0 (Dis. Extended Regs, special mode for KS0073) - // DH=1 (Disp shift enable/disable, special mode for KS0073) - // REV=0 (Reverse/Normal, special mode for KS0073) + // RE=0 (Dis. Extended Regs, special mode for HD66712) + // DH=1 (Disp shift enable/disable, special mode for HD66712) + // REV=0 (Reverse/Normal, special mode for HD66712) break; // case HD66712 Controller @@ -1466,7 +1461,7 @@ } else { //Character to write -#if (LCD_DEFAULT_FONT == 1) +#if (LCD_DEF_FONT == 1) _writeData(value); #else _writeData(ASCII_2_LCD(value)); @@ -1978,7 +1973,8 @@ case PCF2113_3V3 : // Some UDCs may be used for Icons case PCF2116_3V3 : case PCF2116_5V : - case PCF2119_3V3 : // Some UDCs may be used for Icons + case PCF2119_3V3 : // Some UDCs may be used for Icons + case PCF2119R_3V3: // Some UDCs may be used for Icons c = c & 0x0F; // mask down to valid range break; @@ -2036,13 +2032,14 @@ case BlinkOn: // Controllers that support UDC/Icon Blink switch (_ctrl) { - case KS0073 : - case KS0078 : + case KS0073 : + case KS0078 : + case HD66712 : _function_1 |= 0x02; // Enable UDC/Icon Blink _writeCommand(0x20 | _function_1); // Function set 0 0 1 DL N RE(1) BE 0/LP (Ext Regs) _writeCommand(0x20 | _function); // Function set 0 0 1 DL N RE(0) DH REV (Std Regs) - break; // case KS0073, KS0078 Controller + break; // case KS0073, KS0078, HD66712 Controller case US2066_3V3 : case SSD1803_3V3 : @@ -2075,13 +2072,14 @@ case BlinkOff: // Controllers that support UDC Blink switch (_ctrl) { - case KS0073 : - case KS0078 : + case KS0073 : + case KS0078 : + case HD66712: _function_1 &= ~0x02; // Disable UDC/Icon Blink _writeCommand(0x20 | _function_1); // Function set 0 0 1 DL N RE(1) BE 0/LP (Ext Regs) _writeCommand(0x20 | _function); // Function set 0 0 1 DL N RE(0) DH REV (Std Regs) - break; // case KS0073, KS0078 Controller + break; // case KS0073, KS0078, HD66712 Controller case US2066_3V3 : case SSD1803_3V3 :