TextLCD
Revision 40:d3496c3ea301, committed 2015-05-20
- Comitter:
- wim
- Date:
- Wed May 20 18:46:51 2015 +0000
- Parent:
- 39:e9c2319de9c5
- Child:
- 41:111ca62e8a59
- Commit message:
- Fixed an occasional init problem. Added PCF2119R support, added HD66712 support, added some more I2C portexpander types.
Changed in this revision
--- 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 :
--- a/TextLCD.h Tue May 19 18:13:00 2015 +0000 +++ b/TextLCD.h Wed May 20 18:46:51 2015 +0000 @@ -21,7 +21,7 @@ * 2015, v18: WH, Performance improvement I2C portexpander * 2015, v19: WH, Added 10x2D and 10x4D type for SSD1803 * 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
--- a/TextLCD_Config.h Tue May 19 18:13:00 2015 +0000 +++ b/TextLCD_Config.h Wed May 20 18:46:51 2015 +0000 @@ -46,27 +46,27 @@ #define LCD_PRINTF 1 /* Enable Stream implementation */ #define LCD_ICON 1 /* Enable Icon implementation -2.0K codesize*/ #define LCD_ORIENT 1 /* Enable Orientation switch implementation -0.9K codesize*/ -#define LCD_BIGFONT 0 /* Enable Big Font implementation -0.6K codesize */ -#define LCD_INVERT 0 /* Enable display Invert implementation -0.5K codesize*/ -#define LCD_POWER 0 /* Enable Power control implementation -0.1K codesize*/ +#define LCD_BIGFONT 1 /* Enable Big Font implementation -0.6K codesize */ +#define LCD_INVERT 1 /* Enable display Invert implementation -0.5K codesize*/ +#define LCD_POWER 1 /* Enable Power control implementation -0.1K codesize*/ #define LCD_BLINK 1 /* Enable UDC and Icon Blink control implementation -0.8K codesize*/ -//Select option to activate default fonttable or alternatively use conversion for specific controller versions (eg PCF2119C, PCF2119R) -#define LCD_DEFAULT_FONT 0 +//Select option to activate default fonttable or alternatively use conversion for specific controller versions (eg PCF2116C, PCF2119R) +#define LCD_DEF_FONT 1 //Pin Defines for I2C PCF8574/PCF8574A or MCP23008 and SPI 74595 bus expander interfaces //Different commercially available LCD portexpanders use different wiring conventions. //LCD and serial portexpanders should be wired according to the tables below. // //Select Serial Port Expander Hardware module (one option only) -#define DEFAULT 0 +#define DEFAULT 1 #define ADAFRUIT 0 #define DFROBOT 0 #define LCM1602 0 #define YWROBOT 0 #define GYLCD 0 #define MJKDZ 0 -#define SYDZ 1 +#define SYDZ 0 #define WIDEHK 0 #define LCDPLUG 0