This code has Pulse sensor and lcd16x2 code

Dependents:   PulseSense

Committer:
EDISON_NGUNJIRI
Date:
Tue Feb 22 19:51:10 2022 +0000
Revision:
0:2ebc137f8f55
PULSE_SENSOR_AND LCD16X2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EDISON_NGUNJIRI 0:2ebc137f8f55 1 /* mbed TextLCD Library, for LCDs based on HD44780 controllers
EDISON_NGUNJIRI 0:2ebc137f8f55 2 * Copyright (c) 2014, WH
EDISON_NGUNJIRI 0:2ebc137f8f55 3 * 2014, v01: WH, Extracted from TextLCD.h as of v14
EDISON_NGUNJIRI 0:2ebc137f8f55 4 * 2014, v02: WH, Added AC780 support, added I2C expander modules, fixed setBacklight() for inverted logic modules. Fixed bug in LCD_SPI_N define
EDISON_NGUNJIRI 0:2ebc137f8f55 5 * 2014, v03: WH, Added LCD_SPI_N_3_8 define for ST7070
EDISON_NGUNJIRI 0:2ebc137f8f55 6 * 2015, v04: WH, Added support for alternative fonttables (eg PCF21XX)
EDISON_NGUNJIRI 0:2ebc137f8f55 7 * 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
EDISON_NGUNJIRI 0:2ebc137f8f55 8 * 2015, v06: WH, Performance improvement I2C portexpander
EDISON_NGUNJIRI 0:2ebc137f8f55 9 * 2015, v07: WH, Fixed Adafruit I2C/SPI portexpander pinmappings, fixed SYDZ Backlight
EDISON_NGUNJIRI 0:2ebc137f8f55 10 * 2015, v08: WH, Added defines to reduce memory footprint (eg LCD_ICON), added some I2C portexpander defines
EDISON_NGUNJIRI 0:2ebc137f8f55 11 * 2015, v09: WH, Added defines to reduce memory footprint (LCD_TWO_CTRL, LCD_CONTRAST, LCD_UTF8_FONT),
EDISON_NGUNJIRI 0:2ebc137f8f55 12 * Added UTF8_2_LCD decode for Cyrilic font (By Andriy Ribalko). Added setFont()
EDISON_NGUNJIRI 0:2ebc137f8f55 13 *
EDISON_NGUNJIRI 0:2ebc137f8f55 14 * Permission is hereby granted, free of charge, to any person obtaining a copy
EDISON_NGUNJIRI 0:2ebc137f8f55 15 * of this software and associated documentation files (the "Software"), to deal
EDISON_NGUNJIRI 0:2ebc137f8f55 16 * in the Software without restriction, including without limitation the rights
EDISON_NGUNJIRI 0:2ebc137f8f55 17 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
EDISON_NGUNJIRI 0:2ebc137f8f55 18 * copies of the Software, and to permit persons to whom the Software is
EDISON_NGUNJIRI 0:2ebc137f8f55 19 * furnished to do so, subject to the following conditions:
EDISON_NGUNJIRI 0:2ebc137f8f55 20 *
EDISON_NGUNJIRI 0:2ebc137f8f55 21 * The above copyright notice and this permission notice shall be included in
EDISON_NGUNJIRI 0:2ebc137f8f55 22 * all copies or substantial portions of the Software.
EDISON_NGUNJIRI 0:2ebc137f8f55 23 *
EDISON_NGUNJIRI 0:2ebc137f8f55 24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
EDISON_NGUNJIRI 0:2ebc137f8f55 25 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
EDISON_NGUNJIRI 0:2ebc137f8f55 26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
EDISON_NGUNJIRI 0:2ebc137f8f55 27 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
EDISON_NGUNJIRI 0:2ebc137f8f55 28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
EDISON_NGUNJIRI 0:2ebc137f8f55 29 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
EDISON_NGUNJIRI 0:2ebc137f8f55 30 * THE SOFTWARE.
EDISON_NGUNJIRI 0:2ebc137f8f55 31 */
EDISON_NGUNJIRI 0:2ebc137f8f55 32 #ifndef MBED_TEXTLCDCONFIG_H
EDISON_NGUNJIRI 0:2ebc137f8f55 33 #define MBED_TEXTLCDCONFIG_H
EDISON_NGUNJIRI 0:2ebc137f8f55 34
EDISON_NGUNJIRI 0:2ebc137f8f55 35 //Select hardware interface options to reduce memory footprint (multiple options allowed)
EDISON_NGUNJIRI 0:2ebc137f8f55 36 #define LCD_I2C 1 /* I2C Expander PCF8574/MCP23008 */
EDISON_NGUNJIRI 0:2ebc137f8f55 37 #define LCD_SPI 1 /* SPI Expander SN74595 */
EDISON_NGUNJIRI 0:2ebc137f8f55 38 #define LCD_I2C_N 1 /* Native I2C bus */
EDISON_NGUNJIRI 0:2ebc137f8f55 39 #define LCD_SPI_N 1 /* Native SPI bus */
EDISON_NGUNJIRI 0:2ebc137f8f55 40 #define LCD_SPI_N_3_8 1 /* Native SPI bus */
EDISON_NGUNJIRI 0:2ebc137f8f55 41 #define LCD_SPI_N_3_9 1 /* Native SPI bus */
EDISON_NGUNJIRI 0:2ebc137f8f55 42 #define LCD_SPI_N_3_10 1 /* Native SPI bus */
EDISON_NGUNJIRI 0:2ebc137f8f55 43 #define LCD_SPI_N_3_16 1 /* Native SPI bus */
EDISON_NGUNJIRI 0:2ebc137f8f55 44 #define LCD_SPI_N_3_24 1 /* Native SPI bus */
EDISON_NGUNJIRI 0:2ebc137f8f55 45
EDISON_NGUNJIRI 0:2ebc137f8f55 46 //Select options to reduce memory footprint (multiple options allowed)
EDISON_NGUNJIRI 0:2ebc137f8f55 47 #define LCD_UDC 1 /* Enable predefined UDC example*/
EDISON_NGUNJIRI 0:2ebc137f8f55 48 #define LCD_PRINTF 1 /* Enable Stream implementation */
EDISON_NGUNJIRI 0:2ebc137f8f55 49 #define LCD_ICON 1 /* Enable Icon implementation -2.0K codesize*/
EDISON_NGUNJIRI 0:2ebc137f8f55 50 #define LCD_ORIENT 1 /* Enable Orientation switch implementation -0.9K codesize*/
EDISON_NGUNJIRI 0:2ebc137f8f55 51 #define LCD_BIGFONT 1 /* Enable Big Font implementation -0.6K codesize */
EDISON_NGUNJIRI 0:2ebc137f8f55 52 #define LCD_INVERT 1 /* Enable display Invert implementation -0.5K codesize*/
EDISON_NGUNJIRI 0:2ebc137f8f55 53 #define LCD_POWER 1 /* Enable Power control implementation -0.1K codesize*/
EDISON_NGUNJIRI 0:2ebc137f8f55 54 #define LCD_BLINK 1 /* Enable UDC and Icon Blink control implementation -0.8K codesize*/
EDISON_NGUNJIRI 0:2ebc137f8f55 55 #define LCD_CONTRAST 1 /* Enable Contrast control implementation -0.9K codesize*/
EDISON_NGUNJIRI 0:2ebc137f8f55 56 #define LCD_TWO_CTRL 1 /* Enable LCD40x4 (two controller) implementation -0.1K codesize*/
EDISON_NGUNJIRI 0:2ebc137f8f55 57 #define LCD_FONTSEL 0 /* Enable runtime font select implementation using setFont -0.9K codesize*/
EDISON_NGUNJIRI 0:2ebc137f8f55 58
EDISON_NGUNJIRI 0:2ebc137f8f55 59 //Select option to activate default fonttable or alternatively use conversion for specific controller versions (eg PCF2116C, PCF2119R, SSD1803, US2066)
EDISON_NGUNJIRI 0:2ebc137f8f55 60 #define LCD_DEF_FONT 1 //Default HD44780 font
EDISON_NGUNJIRI 0:2ebc137f8f55 61 //#define LCD_C_FONT 1 //PCF21xxC font
EDISON_NGUNJIRI 0:2ebc137f8f55 62 //#define LCD_R_FONT 1 //PCF21xxR font
EDISON_NGUNJIRI 0:2ebc137f8f55 63 //#define LCD_UTF8_FONT 1 /* Enable UTF8 Support (eg Cyrillic tables) -0.4K codesize*/
EDISON_NGUNJIRI 0:2ebc137f8f55 64 //#define LCD_UTF8_CYR_B 1 /* Select specific UTF8 Cyrillic table (SSD1803 ROM_B) */
EDISON_NGUNJIRI 0:2ebc137f8f55 65
EDISON_NGUNJIRI 0:2ebc137f8f55 66 //Pin Defines for I2C PCF8574/PCF8574A or MCP23008 and SPI 74595 bus expander interfaces
EDISON_NGUNJIRI 0:2ebc137f8f55 67 //Different commercially available LCD portexpanders use different wiring conventions.
EDISON_NGUNJIRI 0:2ebc137f8f55 68 //LCD and serial portexpanders should be wired according to the tables below.
EDISON_NGUNJIRI 0:2ebc137f8f55 69 //
EDISON_NGUNJIRI 0:2ebc137f8f55 70 //Select Serial Port Expander Hardware module (one option only)
EDISON_NGUNJIRI 0:2ebc137f8f55 71 #define DEFAULT 1
EDISON_NGUNJIRI 0:2ebc137f8f55 72 #define ADAFRUIT 0
EDISON_NGUNJIRI 0:2ebc137f8f55 73 #define DFROBOT 0
EDISON_NGUNJIRI 0:2ebc137f8f55 74 #define LCM1602 0
EDISON_NGUNJIRI 0:2ebc137f8f55 75 #define YWROBOT 0
EDISON_NGUNJIRI 0:2ebc137f8f55 76 #define GYLCD 0
EDISON_NGUNJIRI 0:2ebc137f8f55 77 #define MJKDZ 0
EDISON_NGUNJIRI 0:2ebc137f8f55 78 #define SYDZ 0
EDISON_NGUNJIRI 0:2ebc137f8f55 79 #define WIDEHK 0
EDISON_NGUNJIRI 0:2ebc137f8f55 80 #define LCDPLUG 0
EDISON_NGUNJIRI 0:2ebc137f8f55 81
EDISON_NGUNJIRI 0:2ebc137f8f55 82 #if (DEFAULT==1)
EDISON_NGUNJIRI 0:2ebc137f8f55 83 //Definitions for default (WH) mapping between serial port expander pins and LCD controller
EDISON_NGUNJIRI 0:2ebc137f8f55 84 //This hardware supports the I2C bus expander (PCF8574/PCF8574A or MCP23008) and SPI bus expander (74595) interfaces
EDISON_NGUNJIRI 0:2ebc137f8f55 85 //See https://mbed.org/cookbook/Text-LCD-Enhanced
EDISON_NGUNJIRI 0:2ebc137f8f55 86 //
EDISON_NGUNJIRI 0:2ebc137f8f55 87 //Note: LCD RW pin must be connected to GND
EDISON_NGUNJIRI 0:2ebc137f8f55 88 // E2 is used for LCD40x4 (second controller)
EDISON_NGUNJIRI 0:2ebc137f8f55 89 // BL may be used to control backlight
EDISON_NGUNJIRI 0:2ebc137f8f55 90
EDISON_NGUNJIRI 0:2ebc137f8f55 91 //I2C bus expander (PCF8574/PCF8574A or MCP23008) interface
EDISON_NGUNJIRI 0:2ebc137f8f55 92 #define LCD_BUS_I2C_D4 (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 93 #define LCD_BUS_I2C_D5 (1 << 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 94 #define LCD_BUS_I2C_D6 (1 << 2)
EDISON_NGUNJIRI 0:2ebc137f8f55 95 #define LCD_BUS_I2C_D7 (1 << 3)
EDISON_NGUNJIRI 0:2ebc137f8f55 96 #define LCD_BUS_I2C_RS (1 << 4)
EDISON_NGUNJIRI 0:2ebc137f8f55 97 #define LCD_BUS_I2C_E (1 << 5)
EDISON_NGUNJIRI 0:2ebc137f8f55 98 #define LCD_BUS_I2C_E2 (1 << 6)
EDISON_NGUNJIRI 0:2ebc137f8f55 99 #define LCD_BUS_I2C_BL (1 << 7)
EDISON_NGUNJIRI 0:2ebc137f8f55 100
EDISON_NGUNJIRI 0:2ebc137f8f55 101 #define LCD_BUS_I2C_RW (1 << 6)
EDISON_NGUNJIRI 0:2ebc137f8f55 102
EDISON_NGUNJIRI 0:2ebc137f8f55 103 //SPI bus expander (74595) interface, same as I2C
EDISON_NGUNJIRI 0:2ebc137f8f55 104 #define LCD_BUS_SPI_D4 LCD_BUS_I2C_D4
EDISON_NGUNJIRI 0:2ebc137f8f55 105 #define LCD_BUS_SPI_D5 LCD_BUS_I2C_D5
EDISON_NGUNJIRI 0:2ebc137f8f55 106 #define LCD_BUS_SPI_D6 LCD_BUS_I2C_D6
EDISON_NGUNJIRI 0:2ebc137f8f55 107 #define LCD_BUS_SPI_D7 LCD_BUS_I2C_D7
EDISON_NGUNJIRI 0:2ebc137f8f55 108 #define LCD_BUS_SPI_RS LCD_BUS_I2C_RS
EDISON_NGUNJIRI 0:2ebc137f8f55 109 #define LCD_BUS_SPI_E LCD_BUS_I2C_E
EDISON_NGUNJIRI 0:2ebc137f8f55 110 #define LCD_BUS_SPI_E2 LCD_BUS_I2C_E2
EDISON_NGUNJIRI 0:2ebc137f8f55 111 #define LCD_BUS_SPI_BL LCD_BUS_I2C_BL
EDISON_NGUNJIRI 0:2ebc137f8f55 112
EDISON_NGUNJIRI 0:2ebc137f8f55 113 #define LCD_BUS_SPI_RW LCD_BUS_I2C_RW
EDISON_NGUNJIRI 0:2ebc137f8f55 114
EDISON_NGUNJIRI 0:2ebc137f8f55 115 //Select I2C Portexpander type (one option only)
EDISON_NGUNJIRI 0:2ebc137f8f55 116 #define PCF8574 1
EDISON_NGUNJIRI 0:2ebc137f8f55 117 #define MCP23008 0
EDISON_NGUNJIRI 0:2ebc137f8f55 118
EDISON_NGUNJIRI 0:2ebc137f8f55 119 //Inverted Backlight control
EDISON_NGUNJIRI 0:2ebc137f8f55 120 #define BACKLIGHT_INV 0
EDISON_NGUNJIRI 0:2ebc137f8f55 121 #endif
EDISON_NGUNJIRI 0:2ebc137f8f55 122
EDISON_NGUNJIRI 0:2ebc137f8f55 123 #if (ADAFRUIT==1)
EDISON_NGUNJIRI 0:2ebc137f8f55 124 //Definitions for Adafruit i2cspilcdbackpack mapping between serial port expander pins and LCD controller
EDISON_NGUNJIRI 0:2ebc137f8f55 125 //This hardware supports both an I2C expander (MCP23008) and an SPI expander (74595) selectable by a jumper.
EDISON_NGUNJIRI 0:2ebc137f8f55 126 //Slaveaddress may be set by solderbridges (default 0x40). SDA/SCL has pullup Resistors onboard.
EDISON_NGUNJIRI 0:2ebc137f8f55 127 //See http://www.ladyada.net/products/i2cspilcdbackpack
EDISON_NGUNJIRI 0:2ebc137f8f55 128 //
EDISON_NGUNJIRI 0:2ebc137f8f55 129 //Note: LCD RW pin must be kept LOW
EDISON_NGUNJIRI 0:2ebc137f8f55 130 // E2 is not available on this hardware and so it does not support LCD40x4 (second controller)
EDISON_NGUNJIRI 0:2ebc137f8f55 131 // BL is used to control backlight
EDISON_NGUNJIRI 0:2ebc137f8f55 132 //Note: The pinmappings are different for the MCP23008 and the 74595!
EDISON_NGUNJIRI 0:2ebc137f8f55 133
EDISON_NGUNJIRI 0:2ebc137f8f55 134 //I2C bus expander (MCP23008) interface
EDISON_NGUNJIRI 0:2ebc137f8f55 135 #define LCD_BUS_I2C_0 (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 136 #define LCD_BUS_I2C_RS (1 << 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 137 #define LCD_BUS_I2C_E (1 << 2)
EDISON_NGUNJIRI 0:2ebc137f8f55 138 #define LCD_BUS_I2C_D4 (1 << 3)
EDISON_NGUNJIRI 0:2ebc137f8f55 139 #define LCD_BUS_I2C_D5 (1 << 4)
EDISON_NGUNJIRI 0:2ebc137f8f55 140 #define LCD_BUS_I2C_D6 (1 << 5)
EDISON_NGUNJIRI 0:2ebc137f8f55 141 #define LCD_BUS_I2C_D7 (1 << 6)
EDISON_NGUNJIRI 0:2ebc137f8f55 142 #define LCD_BUS_I2C_BL (1 << 7)
EDISON_NGUNJIRI 0:2ebc137f8f55 143
EDISON_NGUNJIRI 0:2ebc137f8f55 144 #define LCD_BUS_I2C_E2 (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 145 #define LCD_BUS_I2C_RW (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 146
EDISON_NGUNJIRI 0:2ebc137f8f55 147 //SPI bus expander (74595) interface
EDISON_NGUNJIRI 0:2ebc137f8f55 148 #define LCD_BUS_SPI_0 (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 149 #define LCD_BUS_SPI_RS (1 << 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 150 #define LCD_BUS_SPI_E (1 << 2)
EDISON_NGUNJIRI 0:2ebc137f8f55 151 #define LCD_BUS_SPI_D7 (1 << 3)
EDISON_NGUNJIRI 0:2ebc137f8f55 152 #define LCD_BUS_SPI_D6 (1 << 4)
EDISON_NGUNJIRI 0:2ebc137f8f55 153 #define LCD_BUS_SPI_D5 (1 << 5)
EDISON_NGUNJIRI 0:2ebc137f8f55 154 #define LCD_BUS_SPI_D4 (1 << 6)
EDISON_NGUNJIRI 0:2ebc137f8f55 155 #define LCD_BUS_SPI_BL (1 << 7)
EDISON_NGUNJIRI 0:2ebc137f8f55 156
EDISON_NGUNJIRI 0:2ebc137f8f55 157 #define LCD_BUS_SPI_E2 (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 158 #define LCD_BUS_SPI_RW (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 159
EDISON_NGUNJIRI 0:2ebc137f8f55 160 //Force I2C portexpander type
EDISON_NGUNJIRI 0:2ebc137f8f55 161 #define PCF8574 0
EDISON_NGUNJIRI 0:2ebc137f8f55 162 #define MCP23008 1
EDISON_NGUNJIRI 0:2ebc137f8f55 163
EDISON_NGUNJIRI 0:2ebc137f8f55 164 //Inverted Backlight control
EDISON_NGUNJIRI 0:2ebc137f8f55 165 #define BACKLIGHT_INV 0
EDISON_NGUNJIRI 0:2ebc137f8f55 166 #endif
EDISON_NGUNJIRI 0:2ebc137f8f55 167
EDISON_NGUNJIRI 0:2ebc137f8f55 168 #if (DFROBOT==1)
EDISON_NGUNJIRI 0:2ebc137f8f55 169 //Definitions for DFROBOT LCD2004 Module mapping between serial port expander pins and LCD controller
EDISON_NGUNJIRI 0:2ebc137f8f55 170 //This hardware uses PCF8574 and is different from earlier/different Arduino I2C LCD displays
EDISON_NGUNJIRI 0:2ebc137f8f55 171 //Slaveaddress hardwired to 0x4E. SDA/SCL has pullup Resistors onboard.
EDISON_NGUNJIRI 0:2ebc137f8f55 172 //See http://arduino-info.wikispaces.com/LCD-Blue-I2C
EDISON_NGUNJIRI 0:2ebc137f8f55 173 //
EDISON_NGUNJIRI 0:2ebc137f8f55 174 //Definitions for DFROBOT V1.1
EDISON_NGUNJIRI 0:2ebc137f8f55 175 //This hardware uses PCF8574. Slaveaddress may be set by jumpers (default 0x40).
EDISON_NGUNJIRI 0:2ebc137f8f55 176 //SDA/SCL has pullup Resistors onboard and features a voltage level converter 3V3 <-> 5V.
EDISON_NGUNJIRI 0:2ebc137f8f55 177 //See http://www.dfrobot.com/index.php?route=product/product&product_id=135
EDISON_NGUNJIRI 0:2ebc137f8f55 178 //
EDISON_NGUNJIRI 0:2ebc137f8f55 179 //
EDISON_NGUNJIRI 0:2ebc137f8f55 180 //Note: LCD RW pin must be kept LOW
EDISON_NGUNJIRI 0:2ebc137f8f55 181 // E2 is not available on default Arduino hardware and so it does not support LCD40x4 (second controller)
EDISON_NGUNJIRI 0:2ebc137f8f55 182 // BL is used to control backlight
EDISON_NGUNJIRI 0:2ebc137f8f55 183
EDISON_NGUNJIRI 0:2ebc137f8f55 184 //I2C bus expander PCF8574 interface
EDISON_NGUNJIRI 0:2ebc137f8f55 185 #define LCD_BUS_I2C_RS (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 186 #define LCD_BUS_I2C_RW (1 << 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 187 #define LCD_BUS_I2C_E (1 << 2)
EDISON_NGUNJIRI 0:2ebc137f8f55 188 #define LCD_BUS_I2C_BL (1 << 3)
EDISON_NGUNJIRI 0:2ebc137f8f55 189 #define LCD_BUS_I2C_D4 (1 << 4)
EDISON_NGUNJIRI 0:2ebc137f8f55 190 #define LCD_BUS_I2C_D5 (1 << 5)
EDISON_NGUNJIRI 0:2ebc137f8f55 191 #define LCD_BUS_I2C_D6 (1 << 6)
EDISON_NGUNJIRI 0:2ebc137f8f55 192 #define LCD_BUS_I2C_D7 (1 << 7)
EDISON_NGUNJIRI 0:2ebc137f8f55 193
EDISON_NGUNJIRI 0:2ebc137f8f55 194 #define LCD_BUS_I2C_E2 (1 << 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 195
EDISON_NGUNJIRI 0:2ebc137f8f55 196 //SPI bus expander (74595) interface, same as I2C
EDISON_NGUNJIRI 0:2ebc137f8f55 197 #define LCD_BUS_SPI_RS LCD_BUS_I2C_RS
EDISON_NGUNJIRI 0:2ebc137f8f55 198 #define LCD_BUS_SPI_RW LCD_BUS_I2C_RW
EDISON_NGUNJIRI 0:2ebc137f8f55 199 #define LCD_BUS_SPI_E LCD_BUS_I2C_E
EDISON_NGUNJIRI 0:2ebc137f8f55 200 #define LCD_BUS_SPI_BL LCD_BUS_I2C_BL
EDISON_NGUNJIRI 0:2ebc137f8f55 201 #define LCD_BUS_SPI_D4 LCD_BUS_I2C_D4
EDISON_NGUNJIRI 0:2ebc137f8f55 202 #define LCD_BUS_SPI_D5 LCD_BUS_I2C_D5
EDISON_NGUNJIRI 0:2ebc137f8f55 203 #define LCD_BUS_SPI_D6 LCD_BUS_I2C_D6
EDISON_NGUNJIRI 0:2ebc137f8f55 204 #define LCD_BUS_SPI_D7 LCD_BUS_I2C_D7
EDISON_NGUNJIRI 0:2ebc137f8f55 205
EDISON_NGUNJIRI 0:2ebc137f8f55 206 #define LCD_BUS_SPI_E2 LCD_BUS_I2C_E2
EDISON_NGUNJIRI 0:2ebc137f8f55 207
EDISON_NGUNJIRI 0:2ebc137f8f55 208
EDISON_NGUNJIRI 0:2ebc137f8f55 209 //Force I2C portexpander type
EDISON_NGUNJIRI 0:2ebc137f8f55 210 #define PCF8574 1
EDISON_NGUNJIRI 0:2ebc137f8f55 211 #define MCP23008 0
EDISON_NGUNJIRI 0:2ebc137f8f55 212
EDISON_NGUNJIRI 0:2ebc137f8f55 213 //Inverted Backlight control
EDISON_NGUNJIRI 0:2ebc137f8f55 214 #define BACKLIGHT_INV 0
EDISON_NGUNJIRI 0:2ebc137f8f55 215 #endif
EDISON_NGUNJIRI 0:2ebc137f8f55 216
EDISON_NGUNJIRI 0:2ebc137f8f55 217 #if ((YWROBOT==1) || (LCM1602==1))
EDISON_NGUNJIRI 0:2ebc137f8f55 218 //Definitions for YWROBOT LCM1602 V1 Module mapping between serial port expander pins and LCD controller.
EDISON_NGUNJIRI 0:2ebc137f8f55 219 //Very similar to DFROBOT. Also marked as 'Funduino'. This hardware uses PCF8574.
EDISON_NGUNJIRI 0:2ebc137f8f55 220 //Slaveaddress may be set by solderbridges (default 0x4E). SDA/SCL has no pullup Resistors onboard.
EDISON_NGUNJIRI 0:2ebc137f8f55 221 //See http://arduino-info.wikispaces.com/LCD-Blue-I2C
EDISON_NGUNJIRI 0:2ebc137f8f55 222 //
EDISON_NGUNJIRI 0:2ebc137f8f55 223 //Note: LCD RW pin must be kept LOW
EDISON_NGUNJIRI 0:2ebc137f8f55 224 // E2 is not available on default hardware and so it does not support LCD40x4 (second controller)
EDISON_NGUNJIRI 0:2ebc137f8f55 225 // BL is used to control backlight.
EDISON_NGUNJIRI 0:2ebc137f8f55 226
EDISON_NGUNJIRI 0:2ebc137f8f55 227 //I2C bus expander PCF8574 interface
EDISON_NGUNJIRI 0:2ebc137f8f55 228 #define LCD_BUS_I2C_RS (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 229 #define LCD_BUS_I2C_RW (1 << 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 230 #define LCD_BUS_I2C_E (1 << 2)
EDISON_NGUNJIRI 0:2ebc137f8f55 231 #define LCD_BUS_I2C_BL (1 << 3)
EDISON_NGUNJIRI 0:2ebc137f8f55 232 #define LCD_BUS_I2C_D4 (1 << 4)
EDISON_NGUNJIRI 0:2ebc137f8f55 233 #define LCD_BUS_I2C_D5 (1 << 5)
EDISON_NGUNJIRI 0:2ebc137f8f55 234 #define LCD_BUS_I2C_D6 (1 << 6)
EDISON_NGUNJIRI 0:2ebc137f8f55 235 #define LCD_BUS_I2C_D7 (1 << 7)
EDISON_NGUNJIRI 0:2ebc137f8f55 236
EDISON_NGUNJIRI 0:2ebc137f8f55 237 #define LCD_BUS_I2C_E2 (1 << 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 238
EDISON_NGUNJIRI 0:2ebc137f8f55 239 //SPI bus expander (74595) interface, same as I2C
EDISON_NGUNJIRI 0:2ebc137f8f55 240 #define LCD_BUS_SPI_RS LCD_BUS_I2C_RS
EDISON_NGUNJIRI 0:2ebc137f8f55 241 #define LCD_BUS_SPI_RW LCD_BUS_I2C_RW
EDISON_NGUNJIRI 0:2ebc137f8f55 242 #define LCD_BUS_SPI_E LCD_BUS_I2C_E
EDISON_NGUNJIRI 0:2ebc137f8f55 243 #define LCD_BUS_SPI_BL LCD_BUS_I2C_BL
EDISON_NGUNJIRI 0:2ebc137f8f55 244 #define LCD_BUS_SPI_D4 LCD_BUS_I2C_D4
EDISON_NGUNJIRI 0:2ebc137f8f55 245 #define LCD_BUS_SPI_D5 LCD_BUS_I2C_D5
EDISON_NGUNJIRI 0:2ebc137f8f55 246 #define LCD_BUS_SPI_D6 LCD_BUS_I2C_D6
EDISON_NGUNJIRI 0:2ebc137f8f55 247 #define LCD_BUS_SPI_D7 LCD_BUS_I2C_D7
EDISON_NGUNJIRI 0:2ebc137f8f55 248
EDISON_NGUNJIRI 0:2ebc137f8f55 249 #define LCD_BUS_SPI_E2 LCD_BUS_I2C_E2
EDISON_NGUNJIRI 0:2ebc137f8f55 250
EDISON_NGUNJIRI 0:2ebc137f8f55 251 //Force I2C portexpander type
EDISON_NGUNJIRI 0:2ebc137f8f55 252 #define PCF8574 1
EDISON_NGUNJIRI 0:2ebc137f8f55 253 #define MCP23008 0
EDISON_NGUNJIRI 0:2ebc137f8f55 254
EDISON_NGUNJIRI 0:2ebc137f8f55 255 //Inverted Backlight control
EDISON_NGUNJIRI 0:2ebc137f8f55 256 #define BACKLIGHT_INV 0
EDISON_NGUNJIRI 0:2ebc137f8f55 257 #endif
EDISON_NGUNJIRI 0:2ebc137f8f55 258
EDISON_NGUNJIRI 0:2ebc137f8f55 259 #if ((GYLCD==1) || (MJKDZ==1))
EDISON_NGUNJIRI 0:2ebc137f8f55 260 //Definitions for Arduino-IIC-LCD GY-LCD-V1, for GY-IICLCD and for MJKDZ Module mapping between serial port expander pins and LCD controller.
EDISON_NGUNJIRI 0:2ebc137f8f55 261 //Very similar to DFROBOT. This hardware uses PCF8574.
EDISON_NGUNJIRI 0:2ebc137f8f55 262 //Slaveaddress may be set by solderbridges (default 0x4E). SDA/SCL has pullup Resistors onboard.
EDISON_NGUNJIRI 0:2ebc137f8f55 263 //See http://arduino-info.wikispaces.com/LCD-Blue-I2C
EDISON_NGUNJIRI 0:2ebc137f8f55 264 //
EDISON_NGUNJIRI 0:2ebc137f8f55 265 //Note: LCD RW pin must be kept LOW
EDISON_NGUNJIRI 0:2ebc137f8f55 266 // E2 is not available on default hardware and so it does not support LCD40x4 (second controller)
EDISON_NGUNJIRI 0:2ebc137f8f55 267 // BL is used to control backlight, reverse logic: Low turns on Backlight. This is handled in setBacklight()
EDISON_NGUNJIRI 0:2ebc137f8f55 268
EDISON_NGUNJIRI 0:2ebc137f8f55 269 //I2C bus expander PCF8574 interface
EDISON_NGUNJIRI 0:2ebc137f8f55 270 #define LCD_BUS_I2C_D4 (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 271 #define LCD_BUS_I2C_D5 (1 << 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 272 #define LCD_BUS_I2C_D6 (1 << 2)
EDISON_NGUNJIRI 0:2ebc137f8f55 273 #define LCD_BUS_I2C_D7 (1 << 3)
EDISON_NGUNJIRI 0:2ebc137f8f55 274 #define LCD_BUS_I2C_E (1 << 4)
EDISON_NGUNJIRI 0:2ebc137f8f55 275 #define LCD_BUS_I2C_RW (1 << 5)
EDISON_NGUNJIRI 0:2ebc137f8f55 276 #define LCD_BUS_I2C_RS (1 << 6)
EDISON_NGUNJIRI 0:2ebc137f8f55 277 #define LCD_BUS_I2C_BL (1 << 7)
EDISON_NGUNJIRI 0:2ebc137f8f55 278
EDISON_NGUNJIRI 0:2ebc137f8f55 279 #define LCD_BUS_I2C_E2 (1 << 5)
EDISON_NGUNJIRI 0:2ebc137f8f55 280
EDISON_NGUNJIRI 0:2ebc137f8f55 281 //SPI bus expander (74595) interface
EDISON_NGUNJIRI 0:2ebc137f8f55 282 #define LCD_BUS_SPI_D4 LCD_BUS_I2C_D4
EDISON_NGUNJIRI 0:2ebc137f8f55 283 #define LCD_BUS_SPI_D5 LCD_BUS_I2C_D5
EDISON_NGUNJIRI 0:2ebc137f8f55 284 #define LCD_BUS_SPI_D6 LCD_BUS_I2C_D6
EDISON_NGUNJIRI 0:2ebc137f8f55 285 #define LCD_BUS_SPI_D7 LCD_BUS_I2C_D7
EDISON_NGUNJIRI 0:2ebc137f8f55 286 #define LCD_BUS_SPI_E LCD_BUS_I2C_E
EDISON_NGUNJIRI 0:2ebc137f8f55 287 #define LCD_BUS_SPI_RW LCD_BUS_I2C_RW
EDISON_NGUNJIRI 0:2ebc137f8f55 288 #define LCD_BUS_SPI_RS LCD_BUS_I2C_RS
EDISON_NGUNJIRI 0:2ebc137f8f55 289 #define LCD_BUS_SPI_BL LCD_BUS_I2C_BL
EDISON_NGUNJIRI 0:2ebc137f8f55 290
EDISON_NGUNJIRI 0:2ebc137f8f55 291 #define LCD_BUS_SPI_E2 LCD_BUS_I2C_E2
EDISON_NGUNJIRI 0:2ebc137f8f55 292
EDISON_NGUNJIRI 0:2ebc137f8f55 293 //Force I2C portexpander type
EDISON_NGUNJIRI 0:2ebc137f8f55 294 #define PCF8574 1
EDISON_NGUNJIRI 0:2ebc137f8f55 295 #define MCP23008 0
EDISON_NGUNJIRI 0:2ebc137f8f55 296
EDISON_NGUNJIRI 0:2ebc137f8f55 297 //Force Inverted Backlight control
EDISON_NGUNJIRI 0:2ebc137f8f55 298 #define BACKLIGHT_INV 1
EDISON_NGUNJIRI 0:2ebc137f8f55 299 #endif
EDISON_NGUNJIRI 0:2ebc137f8f55 300
EDISON_NGUNJIRI 0:2ebc137f8f55 301 #if (SYDZ==1)
EDISON_NGUNJIRI 0:2ebc137f8f55 302 //Definitions for SYDZ Module mapping between serial port expander pins and LCD controller.
EDISON_NGUNJIRI 0:2ebc137f8f55 303 //Very similar to DFROBOT. This hardware uses PCF8574A.
EDISON_NGUNJIRI 0:2ebc137f8f55 304 //Slaveaddress may be set by switches (default 0x70). SDA/SCL has pullup Resistors onboard.
EDISON_NGUNJIRI 0:2ebc137f8f55 305 //See ebay
EDISON_NGUNJIRI 0:2ebc137f8f55 306 //
EDISON_NGUNJIRI 0:2ebc137f8f55 307 //Note: LCD RW pin must be kept LOW
EDISON_NGUNJIRI 0:2ebc137f8f55 308 // E2 is not available on default hardware and so it does not support LCD40x4 (second controller)
EDISON_NGUNJIRI 0:2ebc137f8f55 309 // BL is used to control backlight
EDISON_NGUNJIRI 0:2ebc137f8f55 310
EDISON_NGUNJIRI 0:2ebc137f8f55 311 //I2C bus expander PCF8574A interface
EDISON_NGUNJIRI 0:2ebc137f8f55 312 #define LCD_BUS_I2C_RS (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 313 #define LCD_BUS_I2C_RW (1 << 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 314 #define LCD_BUS_I2C_E (1 << 2)
EDISON_NGUNJIRI 0:2ebc137f8f55 315 #define LCD_BUS_I2C_BL (1 << 3)
EDISON_NGUNJIRI 0:2ebc137f8f55 316 #define LCD_BUS_I2C_D4 (1 << 4)
EDISON_NGUNJIRI 0:2ebc137f8f55 317 #define LCD_BUS_I2C_D5 (1 << 5)
EDISON_NGUNJIRI 0:2ebc137f8f55 318 #define LCD_BUS_I2C_D6 (1 << 6)
EDISON_NGUNJIRI 0:2ebc137f8f55 319 #define LCD_BUS_I2C_D7 (1 << 7)
EDISON_NGUNJIRI 0:2ebc137f8f55 320
EDISON_NGUNJIRI 0:2ebc137f8f55 321 #define LCD_BUS_I2C_E2 (1 << 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 322
EDISON_NGUNJIRI 0:2ebc137f8f55 323 //SPI bus expander (74595) interface, same as I2C
EDISON_NGUNJIRI 0:2ebc137f8f55 324 #define LCD_BUS_SPI_RS LCD_BUS_I2C_RS
EDISON_NGUNJIRI 0:2ebc137f8f55 325 #define LCD_BUS_SPI_RW LCD_BUS_I2C_RW
EDISON_NGUNJIRI 0:2ebc137f8f55 326 #define LCD_BUS_SPI_E LCD_BUS_I2C_E
EDISON_NGUNJIRI 0:2ebc137f8f55 327 #define LCD_BUS_SPI_BL LCD_BUS_I2C_BL
EDISON_NGUNJIRI 0:2ebc137f8f55 328 #define LCD_BUS_SPI_D4 LCD_BUS_I2C_D4
EDISON_NGUNJIRI 0:2ebc137f8f55 329 #define LCD_BUS_SPI_D5 LCD_BUS_I2C_D5
EDISON_NGUNJIRI 0:2ebc137f8f55 330 #define LCD_BUS_SPI_D6 LCD_BUS_I2C_D6
EDISON_NGUNJIRI 0:2ebc137f8f55 331 #define LCD_BUS_SPI_D7 LCD_BUS_I2C_D7
EDISON_NGUNJIRI 0:2ebc137f8f55 332
EDISON_NGUNJIRI 0:2ebc137f8f55 333 #define LCD_BUS_SPI_E2 LCD_BUS_I2C_E2
EDISON_NGUNJIRI 0:2ebc137f8f55 334
EDISON_NGUNJIRI 0:2ebc137f8f55 335 //Force I2C portexpander type
EDISON_NGUNJIRI 0:2ebc137f8f55 336 #define PCF8574 1
EDISON_NGUNJIRI 0:2ebc137f8f55 337 #define MCP23008 0
EDISON_NGUNJIRI 0:2ebc137f8f55 338
EDISON_NGUNJIRI 0:2ebc137f8f55 339 //Force Inverted Backlight control
EDISON_NGUNJIRI 0:2ebc137f8f55 340 #define BACKLIGHT_INV 0
EDISON_NGUNJIRI 0:2ebc137f8f55 341 #endif
EDISON_NGUNJIRI 0:2ebc137f8f55 342
EDISON_NGUNJIRI 0:2ebc137f8f55 343 #if (WIDEHK==1)
EDISON_NGUNJIRI 0:2ebc137f8f55 344 //Definitions for WIDE.HK I2C backpack mapping between serial port expander pins and LCD controller
EDISON_NGUNJIRI 0:2ebc137f8f55 345 //This hardware uses an MCP23008 I2C expander.
EDISON_NGUNJIRI 0:2ebc137f8f55 346 //Slaveaddress is hardcoded at 0x4E. SDA/SCL has pullup Resistors onboard (3k3).
EDISON_NGUNJIRI 0:2ebc137f8f55 347 //See http://www.wide.hk
EDISON_NGUNJIRI 0:2ebc137f8f55 348 //
EDISON_NGUNJIRI 0:2ebc137f8f55 349 //Note: LCD RW pin must be kept LOW
EDISON_NGUNJIRI 0:2ebc137f8f55 350 // E2 is not available on this hardware and so it does not support LCD40x4 (second controller)
EDISON_NGUNJIRI 0:2ebc137f8f55 351 // BL is used to control backlight
EDISON_NGUNJIRI 0:2ebc137f8f55 352 //
EDISON_NGUNJIRI 0:2ebc137f8f55 353
EDISON_NGUNJIRI 0:2ebc137f8f55 354 //I2C bus expander (MCP23008) interface
EDISON_NGUNJIRI 0:2ebc137f8f55 355 #define LCD_BUS_I2C_D4 (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 356 #define LCD_BUS_I2C_D5 (1 << 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 357 #define LCD_BUS_I2C_D6 (1 << 2)
EDISON_NGUNJIRI 0:2ebc137f8f55 358 #define LCD_BUS_I2C_D7 (1 << 3)
EDISON_NGUNJIRI 0:2ebc137f8f55 359 #define LCD_BUS_I2C_RS (1 << 4)
EDISON_NGUNJIRI 0:2ebc137f8f55 360 #define LCD_BUS_I2C_RW (1 << 5)
EDISON_NGUNJIRI 0:2ebc137f8f55 361 #define LCD_BUS_I2C_BL (1 << 6)
EDISON_NGUNJIRI 0:2ebc137f8f55 362 #define LCD_BUS_I2C_E (1 << 7)
EDISON_NGUNJIRI 0:2ebc137f8f55 363
EDISON_NGUNJIRI 0:2ebc137f8f55 364 #define LCD_BUS_I2C_E2 (1 << 5)
EDISON_NGUNJIRI 0:2ebc137f8f55 365
EDISON_NGUNJIRI 0:2ebc137f8f55 366 //SPI bus expander (74595) interface, same as I2C
EDISON_NGUNJIRI 0:2ebc137f8f55 367 #define LCD_BUS_SPI_D4 LCD_BUS_I2C_D4
EDISON_NGUNJIRI 0:2ebc137f8f55 368 #define LCD_BUS_SPI_D5 LCD_BUS_I2C_D5
EDISON_NGUNJIRI 0:2ebc137f8f55 369 #define LCD_BUS_SPI_D6 LCD_BUS_I2C_D6
EDISON_NGUNJIRI 0:2ebc137f8f55 370 #define LCD_BUS_SPI_D7 LCD_BUS_I2C_D7
EDISON_NGUNJIRI 0:2ebc137f8f55 371 #define LCD_BUS_SPI_RS LCD_BUS_I2C_RS
EDISON_NGUNJIRI 0:2ebc137f8f55 372 #define LCD_BUS_SPI_RW LCD_BUS_I2C_RW
EDISON_NGUNJIRI 0:2ebc137f8f55 373 #define LCD_BUS_SPI_BL LCD_BUS_I2C_BL
EDISON_NGUNJIRI 0:2ebc137f8f55 374 #define LCD_BUS_SPI_E LCD_BUS_I2C_E
EDISON_NGUNJIRI 0:2ebc137f8f55 375
EDISON_NGUNJIRI 0:2ebc137f8f55 376 #define LCD_BUS_SPI_E2 LCD_BUS_I2C_E2
EDISON_NGUNJIRI 0:2ebc137f8f55 377
EDISON_NGUNJIRI 0:2ebc137f8f55 378 //Force I2C portexpander type
EDISON_NGUNJIRI 0:2ebc137f8f55 379 #define PCF8574 0
EDISON_NGUNJIRI 0:2ebc137f8f55 380 #define MCP23008 1
EDISON_NGUNJIRI 0:2ebc137f8f55 381
EDISON_NGUNJIRI 0:2ebc137f8f55 382 //Inverted Backlight control
EDISON_NGUNJIRI 0:2ebc137f8f55 383 #define BACKLIGHT_INV 0
EDISON_NGUNJIRI 0:2ebc137f8f55 384 #endif
EDISON_NGUNJIRI 0:2ebc137f8f55 385
EDISON_NGUNJIRI 0:2ebc137f8f55 386 #if (LCDPLUG==1)
EDISON_NGUNJIRI 0:2ebc137f8f55 387 //Definitions for Jeelabs LCD_Plug I2C backpack mapping between serial port expander pins and LCD controller
EDISON_NGUNJIRI 0:2ebc137f8f55 388 //This hardware uses an MCP23008 I2C expander.
EDISON_NGUNJIRI 0:2ebc137f8f55 389 //Slaveaddress is hardcoded at 0x48. SDA/SCL has no pullup Resistors onboard.
EDISON_NGUNJIRI 0:2ebc137f8f55 390 //See http://jeelabs.net/projects/hardware/wiki/lcd_plug
EDISON_NGUNJIRI 0:2ebc137f8f55 391 //
EDISON_NGUNJIRI 0:2ebc137f8f55 392 //Note: LCD RW pin must be kept LOW
EDISON_NGUNJIRI 0:2ebc137f8f55 393 // E2 is available on a plug and so it does support LCD40x4 (second controller)
EDISON_NGUNJIRI 0:2ebc137f8f55 394 // BL is used to control backlight
EDISON_NGUNJIRI 0:2ebc137f8f55 395 //
EDISON_NGUNJIRI 0:2ebc137f8f55 396
EDISON_NGUNJIRI 0:2ebc137f8f55 397 //I2C bus expander (MCP23008) interface
EDISON_NGUNJIRI 0:2ebc137f8f55 398 #define LCD_BUS_I2C_D4 (1 << 0)
EDISON_NGUNJIRI 0:2ebc137f8f55 399 #define LCD_BUS_I2C_D5 (1 << 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 400 #define LCD_BUS_I2C_D6 (1 << 2)
EDISON_NGUNJIRI 0:2ebc137f8f55 401 #define LCD_BUS_I2C_D7 (1 << 3)
EDISON_NGUNJIRI 0:2ebc137f8f55 402 #define LCD_BUS_I2C_RS (1 << 4)
EDISON_NGUNJIRI 0:2ebc137f8f55 403 #define LCD_BUS_I2C_E2 (1 << 5)
EDISON_NGUNJIRI 0:2ebc137f8f55 404 #define LCD_BUS_I2C_E (1 << 6)
EDISON_NGUNJIRI 0:2ebc137f8f55 405 #define LCD_BUS_I2C_BL (1 << 7)
EDISON_NGUNJIRI 0:2ebc137f8f55 406
EDISON_NGUNJIRI 0:2ebc137f8f55 407 #define LCD_BUS_I2C_RW (1 << 5)
EDISON_NGUNJIRI 0:2ebc137f8f55 408
EDISON_NGUNJIRI 0:2ebc137f8f55 409 //SPI bus expander (74595) interface, same as I2C
EDISON_NGUNJIRI 0:2ebc137f8f55 410 #define LCD_BUS_SPI_D4 LCD_BUS_I2C_D4
EDISON_NGUNJIRI 0:2ebc137f8f55 411 #define LCD_BUS_SPI_D5 LCD_BUS_I2C_D5
EDISON_NGUNJIRI 0:2ebc137f8f55 412 #define LCD_BUS_SPI_D6 LCD_BUS_I2C_D6
EDISON_NGUNJIRI 0:2ebc137f8f55 413 #define LCD_BUS_SPI_D7 LCD_BUS_I2C_D7
EDISON_NGUNJIRI 0:2ebc137f8f55 414 #define LCD_BUS_SPI_RS LCD_BUS_I2C_RS
EDISON_NGUNJIRI 0:2ebc137f8f55 415 #define LCD_BUS_SPI_E2 LCD_BUS_I2C_E2
EDISON_NGUNJIRI 0:2ebc137f8f55 416 #define LCD_BUS_SPI_E LCD_BUS_I2C_E
EDISON_NGUNJIRI 0:2ebc137f8f55 417 #define LCD_BUS_SPI_BL LCD_BUS_I2C_BL
EDISON_NGUNJIRI 0:2ebc137f8f55 418
EDISON_NGUNJIRI 0:2ebc137f8f55 419 #define LCD_BUS_SPI_RW LCD_BUS_I2C_RW
EDISON_NGUNJIRI 0:2ebc137f8f55 420
EDISON_NGUNJIRI 0:2ebc137f8f55 421 //Force I2C portexpander type
EDISON_NGUNJIRI 0:2ebc137f8f55 422 #define PCF8574 0
EDISON_NGUNJIRI 0:2ebc137f8f55 423 #define MCP23008 1
EDISON_NGUNJIRI 0:2ebc137f8f55 424
EDISON_NGUNJIRI 0:2ebc137f8f55 425 //Inverted Backlight control
EDISON_NGUNJIRI 0:2ebc137f8f55 426 #define BACKLIGHT_INV 0
EDISON_NGUNJIRI 0:2ebc137f8f55 427 #endif
EDISON_NGUNJIRI 0:2ebc137f8f55 428
EDISON_NGUNJIRI 0:2ebc137f8f55 429
EDISON_NGUNJIRI 0:2ebc137f8f55 430 //Bitpattern Defines for I2C PCF8574/PCF8574A, MCP23008 and SPI 74595 Bus expanders
EDISON_NGUNJIRI 0:2ebc137f8f55 431 //Don't change!
EDISON_NGUNJIRI 0:2ebc137f8f55 432 #define LCD_BUS_I2C_MSK (LCD_BUS_I2C_D4 | LCD_BUS_I2C_D5 | LCD_BUS_I2C_D6 | LCD_BUS_I2C_D7)
EDISON_NGUNJIRI 0:2ebc137f8f55 433 #if (BACKLIGHT_INV == 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 434 #define LCD_BUS_I2C_DEF (0x00 | LCD_BUS_I2C_BL)
EDISON_NGUNJIRI 0:2ebc137f8f55 435 #else
EDISON_NGUNJIRI 0:2ebc137f8f55 436 #define LCD_BUS_I2C_DEF 0x00
EDISON_NGUNJIRI 0:2ebc137f8f55 437 #endif
EDISON_NGUNJIRI 0:2ebc137f8f55 438
EDISON_NGUNJIRI 0:2ebc137f8f55 439 #define LCD_BUS_SPI_MSK (LCD_BUS_SPI_D4 | LCD_BUS_SPI_D5 | LCD_BUS_SPI_D6 | LCD_BUS_SPI_D7)
EDISON_NGUNJIRI 0:2ebc137f8f55 440 #if (BACKLIGHT_INV == 1)
EDISON_NGUNJIRI 0:2ebc137f8f55 441 #define LCD_BUS_SPI_DEF (0x00 | LCD_BUS_SPI_BL)
EDISON_NGUNJIRI 0:2ebc137f8f55 442 #else
EDISON_NGUNJIRI 0:2ebc137f8f55 443 #define LCD_BUS_SPI_DEF 0x00
EDISON_NGUNJIRI 0:2ebc137f8f55 444 #endif
EDISON_NGUNJIRI 0:2ebc137f8f55 445
EDISON_NGUNJIRI 0:2ebc137f8f55 446
EDISON_NGUNJIRI 0:2ebc137f8f55 447 /* PCF8574/PCF8574A I2C portexpander slave address */
EDISON_NGUNJIRI 0:2ebc137f8f55 448 #define PCF8574_SA0 0x40
EDISON_NGUNJIRI 0:2ebc137f8f55 449 #define PCF8574_SA1 0x42
EDISON_NGUNJIRI 0:2ebc137f8f55 450 #define PCF8574_SA2 0x44
EDISON_NGUNJIRI 0:2ebc137f8f55 451 #define PCF8574_SA3 0x46
EDISON_NGUNJIRI 0:2ebc137f8f55 452 #define PCF8574_SA4 0x48
EDISON_NGUNJIRI 0:2ebc137f8f55 453 #define PCF8574_SA5 0x4A
EDISON_NGUNJIRI 0:2ebc137f8f55 454 #define PCF8574_SA6 0x4C
EDISON_NGUNJIRI 0:2ebc137f8f55 455 #define PCF8574_SA7 0x4E
EDISON_NGUNJIRI 0:2ebc137f8f55 456
EDISON_NGUNJIRI 0:2ebc137f8f55 457 #define PCF8574A_SA0 0x70
EDISON_NGUNJIRI 0:2ebc137f8f55 458 #define PCF8574A_SA1 0x72
EDISON_NGUNJIRI 0:2ebc137f8f55 459 #define PCF8574A_SA2 0x74
EDISON_NGUNJIRI 0:2ebc137f8f55 460 #define PCF8574A_SA3 0x76
EDISON_NGUNJIRI 0:2ebc137f8f55 461 #define PCF8574A_SA4 0x78
EDISON_NGUNJIRI 0:2ebc137f8f55 462 #define PCF8574A_SA5 0x7A
EDISON_NGUNJIRI 0:2ebc137f8f55 463 #define PCF8574A_SA6 0x7C
EDISON_NGUNJIRI 0:2ebc137f8f55 464 #define PCF8574A_SA7 0x7E
EDISON_NGUNJIRI 0:2ebc137f8f55 465
EDISON_NGUNJIRI 0:2ebc137f8f55 466 /* MCP23008 I2C portexpander slave address */
EDISON_NGUNJIRI 0:2ebc137f8f55 467 #define MCP23008_SA0 0x40
EDISON_NGUNJIRI 0:2ebc137f8f55 468 #define MCP23008_SA1 0x42
EDISON_NGUNJIRI 0:2ebc137f8f55 469 #define MCP23008_SA2 0x44
EDISON_NGUNJIRI 0:2ebc137f8f55 470 #define MCP23008_SA3 0x46
EDISON_NGUNJIRI 0:2ebc137f8f55 471 #define MCP23008_SA4 0x48
EDISON_NGUNJIRI 0:2ebc137f8f55 472 #define MCP23008_SA5 0x4A
EDISON_NGUNJIRI 0:2ebc137f8f55 473 #define MCP23008_SA6 0x4C
EDISON_NGUNJIRI 0:2ebc137f8f55 474 #define MCP23008_SA7 0x4E
EDISON_NGUNJIRI 0:2ebc137f8f55 475
EDISON_NGUNJIRI 0:2ebc137f8f55 476 /* MCP23008 I2C portexpander internal registers */
EDISON_NGUNJIRI 0:2ebc137f8f55 477 #define IODIR 0x00
EDISON_NGUNJIRI 0:2ebc137f8f55 478 #define IPOL 0x01
EDISON_NGUNJIRI 0:2ebc137f8f55 479 #define GPINTEN 0x02
EDISON_NGUNJIRI 0:2ebc137f8f55 480 #define DEFVAL 0x03
EDISON_NGUNJIRI 0:2ebc137f8f55 481 #define INTCON 0x04
EDISON_NGUNJIRI 0:2ebc137f8f55 482 #define IOCON 0x05
EDISON_NGUNJIRI 0:2ebc137f8f55 483 #define GPPU 0x06
EDISON_NGUNJIRI 0:2ebc137f8f55 484 #define INTF 0x07
EDISON_NGUNJIRI 0:2ebc137f8f55 485 #define INTCAP 0x08
EDISON_NGUNJIRI 0:2ebc137f8f55 486 #define GPIO 0x09
EDISON_NGUNJIRI 0:2ebc137f8f55 487 #define OLAT 0x0A
EDISON_NGUNJIRI 0:2ebc137f8f55 488
EDISON_NGUNJIRI 0:2ebc137f8f55 489 /* ST7032i I2C slave address */
EDISON_NGUNJIRI 0:2ebc137f8f55 490 #define ST7032_SA 0x7C
EDISON_NGUNJIRI 0:2ebc137f8f55 491
EDISON_NGUNJIRI 0:2ebc137f8f55 492 /* ST7036i I2C slave address */
EDISON_NGUNJIRI 0:2ebc137f8f55 493 #define ST7036_SA0 0x78
EDISON_NGUNJIRI 0:2ebc137f8f55 494 #define ST7036_SA1 0x7A
EDISON_NGUNJIRI 0:2ebc137f8f55 495 #define ST7036_SA2 0x7C
EDISON_NGUNJIRI 0:2ebc137f8f55 496 #define ST7036_SA3 0x7E
EDISON_NGUNJIRI 0:2ebc137f8f55 497
EDISON_NGUNJIRI 0:2ebc137f8f55 498 /* ST7066_ACM I2C slave address, Added for ACM1602 module */
EDISON_NGUNJIRI 0:2ebc137f8f55 499 #define ST7066_SA0 0xA0
EDISON_NGUNJIRI 0:2ebc137f8f55 500
EDISON_NGUNJIRI 0:2ebc137f8f55 501 /* PCF21XX I2C slave address */
EDISON_NGUNJIRI 0:2ebc137f8f55 502 #define PCF21XX_SA0 0x74
EDISON_NGUNJIRI 0:2ebc137f8f55 503 #define PCF21XX_SA1 0x76
EDISON_NGUNJIRI 0:2ebc137f8f55 504
EDISON_NGUNJIRI 0:2ebc137f8f55 505 /* AIP31068 I2C slave address */
EDISON_NGUNJIRI 0:2ebc137f8f55 506 #define AIP31068_SA 0x7C
EDISON_NGUNJIRI 0:2ebc137f8f55 507
EDISON_NGUNJIRI 0:2ebc137f8f55 508 /* SSD1803 I2C slave address */
EDISON_NGUNJIRI 0:2ebc137f8f55 509 #define SSD1803_SA0 0x78
EDISON_NGUNJIRI 0:2ebc137f8f55 510 #define SSD1803_SA1 0x7A
EDISON_NGUNJIRI 0:2ebc137f8f55 511
EDISON_NGUNJIRI 0:2ebc137f8f55 512 /* US2066/SSD1311 I2C slave address */
EDISON_NGUNJIRI 0:2ebc137f8f55 513 #define US2066_SA0 0x78
EDISON_NGUNJIRI 0:2ebc137f8f55 514 #define US2066_SA1 0x7A
EDISON_NGUNJIRI 0:2ebc137f8f55 515
EDISON_NGUNJIRI 0:2ebc137f8f55 516 /* AC780 I2C slave address */
EDISON_NGUNJIRI 0:2ebc137f8f55 517 #define AC780_SA0 0x78
EDISON_NGUNJIRI 0:2ebc137f8f55 518 #define AC780_SA1 0x7A
EDISON_NGUNJIRI 0:2ebc137f8f55 519 #define AC780_SA2 0x7C
EDISON_NGUNJIRI 0:2ebc137f8f55 520 #define AC780_SA3 0x7E
EDISON_NGUNJIRI 0:2ebc137f8f55 521
EDISON_NGUNJIRI 0:2ebc137f8f55 522 /* SPLC792A is clone of ST7032i */
EDISON_NGUNJIRI 0:2ebc137f8f55 523 #define SPLC792A_SA0 0x78
EDISON_NGUNJIRI 0:2ebc137f8f55 524 #define SPLC792A_SA1 0x7A
EDISON_NGUNJIRI 0:2ebc137f8f55 525 #define SPLC792A_SA2 0x7C
EDISON_NGUNJIRI 0:2ebc137f8f55 526 #define SPLC792A_SA3 0x7E
EDISON_NGUNJIRI 0:2ebc137f8f55 527
EDISON_NGUNJIRI 0:2ebc137f8f55 528 //Some native I2C controllers dont support ACK. Set define to '0' to allow code to proceed even without ACK
EDISON_NGUNJIRI 0:2ebc137f8f55 529 //#define LCD_I2C_ACK 0
EDISON_NGUNJIRI 0:2ebc137f8f55 530 #define LCD_I2C_ACK 1
EDISON_NGUNJIRI 0:2ebc137f8f55 531
EDISON_NGUNJIRI 0:2ebc137f8f55 532
EDISON_NGUNJIRI 0:2ebc137f8f55 533 // Contrast setting, 6 significant bits (only supported for controllers with extended features)
EDISON_NGUNJIRI 0:2ebc137f8f55 534 // Voltage Multiplier setting, 2 or 3 significant bits (only supported for controllers with extended features)
EDISON_NGUNJIRI 0:2ebc137f8f55 535 #define LCD_DEF_CONTRAST 0x20
EDISON_NGUNJIRI 0:2ebc137f8f55 536
EDISON_NGUNJIRI 0:2ebc137f8f55 537 //ST7032 EastRising ERC1602FS-4 display
EDISON_NGUNJIRI 0:2ebc137f8f55 538 //Contrast setting 6 significant bits (0..63)
EDISON_NGUNJIRI 0:2ebc137f8f55 539 //Voltage Multiplier setting 3 significant bits:
EDISON_NGUNJIRI 0:2ebc137f8f55 540 // 0: 1.818V
EDISON_NGUNJIRI 0:2ebc137f8f55 541 // 1: 2.222V
EDISON_NGUNJIRI 0:2ebc137f8f55 542 // 2: 2.667V
EDISON_NGUNJIRI 0:2ebc137f8f55 543 // 3: 3.333V
EDISON_NGUNJIRI 0:2ebc137f8f55 544 // 4: 3.636V (ST7032 default)
EDISON_NGUNJIRI 0:2ebc137f8f55 545 // 5: 4.000V
EDISON_NGUNJIRI 0:2ebc137f8f55 546 // 6: 4.444V
EDISON_NGUNJIRI 0:2ebc137f8f55 547 // 7: 5.000V
EDISON_NGUNJIRI 0:2ebc137f8f55 548 #define LCD_ST7032_CONTRAST 0x28
EDISON_NGUNJIRI 0:2ebc137f8f55 549 #define LCD_ST7032_RAB 0x04
EDISON_NGUNJIRI 0:2ebc137f8f55 550
EDISON_NGUNJIRI 0:2ebc137f8f55 551 //ST7036 EA DOGM1603 display
EDISON_NGUNJIRI 0:2ebc137f8f55 552 //Contrast setting 6 significant bits
EDISON_NGUNJIRI 0:2ebc137f8f55 553 //Voltage Multiplier setting 3 significant bits
EDISON_NGUNJIRI 0:2ebc137f8f55 554 #define LCD_ST7036_CONTRAST 0x28
EDISON_NGUNJIRI 0:2ebc137f8f55 555 #define LCD_ST7036_RAB 0x04
EDISON_NGUNJIRI 0:2ebc137f8f55 556
EDISON_NGUNJIRI 0:2ebc137f8f55 557 //SSD1803 EA DOGM204 display
EDISON_NGUNJIRI 0:2ebc137f8f55 558 //Contrast setting 6 significant bits
EDISON_NGUNJIRI 0:2ebc137f8f55 559 //Voltage Multiplier setting 3 significant bits
EDISON_NGUNJIRI 0:2ebc137f8f55 560 #define LCD_SSD1_CONTRAST 0x28
EDISON_NGUNJIRI 0:2ebc137f8f55 561 #define LCD_SSD1_RAB 0x06
EDISON_NGUNJIRI 0:2ebc137f8f55 562
EDISON_NGUNJIRI 0:2ebc137f8f55 563 //US2066/SSD1311 EastRising ER-OLEDM2002-4 display
EDISON_NGUNJIRI 0:2ebc137f8f55 564 //Contrast setting 8 significant bits, use 6 for compatibility
EDISON_NGUNJIRI 0:2ebc137f8f55 565 #define LCD_US20_CONTRAST 0x3F
EDISON_NGUNJIRI 0:2ebc137f8f55 566 //#define LCD_US20_CONTRAST 0x1F
EDISON_NGUNJIRI 0:2ebc137f8f55 567
EDISON_NGUNJIRI 0:2ebc137f8f55 568 //PCF2113, PCF2119 display
EDISON_NGUNJIRI 0:2ebc137f8f55 569 //Contrast setting 6 significant bits
EDISON_NGUNJIRI 0:2ebc137f8f55 570 //Voltage Multiplier setting 2 significant bits
EDISON_NGUNJIRI 0:2ebc137f8f55 571 #define LCD_PCF2_CONTRAST 0x20
EDISON_NGUNJIRI 0:2ebc137f8f55 572 #define LCD_PCF2_S12 0x02
EDISON_NGUNJIRI 0:2ebc137f8f55 573
EDISON_NGUNJIRI 0:2ebc137f8f55 574 //PT6314 VFD display
EDISON_NGUNJIRI 0:2ebc137f8f55 575 //Contrast setting 2 significant bits, use 6 for compatibility
EDISON_NGUNJIRI 0:2ebc137f8f55 576 #define LCD_PT63_CONTRAST 0x3F
EDISON_NGUNJIRI 0:2ebc137f8f55 577
EDISON_NGUNJIRI 0:2ebc137f8f55 578 //SPLC792A is clone of ST7032i
EDISON_NGUNJIRI 0:2ebc137f8f55 579 //Contrast setting 6 significant bits (0..63)
EDISON_NGUNJIRI 0:2ebc137f8f55 580 //Voltage Multiplier setting 3 significant bits:
EDISON_NGUNJIRI 0:2ebc137f8f55 581 // 0: 1.818V
EDISON_NGUNJIRI 0:2ebc137f8f55 582 // 1: 2.222V
EDISON_NGUNJIRI 0:2ebc137f8f55 583 // 2: 2.667V
EDISON_NGUNJIRI 0:2ebc137f8f55 584 // 3: 3.333V (SPLC792A default)
EDISON_NGUNJIRI 0:2ebc137f8f55 585 // 4: 3.636V
EDISON_NGUNJIRI 0:2ebc137f8f55 586 // 5: 4.000V
EDISON_NGUNJIRI 0:2ebc137f8f55 587 // 6: 4.444V
EDISON_NGUNJIRI 0:2ebc137f8f55 588 // 7: 5.000V
EDISON_NGUNJIRI 0:2ebc137f8f55 589 #define LCD_SPLC792A_CONTRAST 0x28
EDISON_NGUNJIRI 0:2ebc137f8f55 590 #define LCD_SPLC792A_RAB 0x04
EDISON_NGUNJIRI 0:2ebc137f8f55 591
EDISON_NGUNJIRI 0:2ebc137f8f55 592 #endif //MBED_TEXTLCDCONFIG_H