I2CLCDextraIO - Rev A - LCD mounting. |
LCDs are very common and a great way to have projects report back visually. However, they need 6, 7 or 10, 11 pins to control them plus an additional pin for the backlight. For some projects, it is not easy to find those additional pins. The LCD backpack (I2CLCDextraIO) is the board for such applications.
By freeing up to 9 pins when connecting a LCD it is possible to use them on almost any pin constraint application. The I2C expander module allows you to free up pins (only 2 are required) to control LCDs. But what about using more than 1 LCD? This would almost be prohibitive for most projects with a single micro-controller. With this module you can connect up to 8 in the same I2C bus by simply reconfiguring the programming jumpers.
By freeing up to 9 pins when connecting a LCD it is possible to use them on almost any pin constraint application. The I2C expander module allows you to free up pins (only 2 are required) to control LCDs. But what about using more than 1 LCD? This would almost be prohibitive for most projects with a single micro-controller. With this module you can connect up to 8 in the same I2C bus by simply reconfiguring the programming jumpers.
For Arduino users we have created a library that is backward compatible with your current sketches. Please refer to the usage Section - SW Libraries.
Additionally, for projects requiring additional IO pins, the I2CLCDextraIO can be used as an IO expander. As before, their can be up to 8 connected to the I2C bus.
A library is also available (well, is also in the LCD library) to control each individual IO from the board.
Buy one now
Boards are sold as bare PCB or fully assembled.
PRODUCT DISCONTINUED
Voltage Range
|
2.5V to 6V
|
Number of IO
|
8 quasi-bidirectional
|
Drive / Sink capability
|
100mA between all IOs
|
Maximum single pin current
|
25mA
|
I2C Address Base
|
0x38 or 0x20
|
Board Layout
I2CLCDextraIO - Rev A - Top |
The board layout is ideal to use as an LCD backpack and has a very convenient potentiometer to control its contrast, even while the full assembly (LCD and expander board) is fitted into the final project.
I2CLCDextraIO - Rev A - Bottom |
Input Output
LCD use mode
I2CLCDextraIO - Rev A - LCD control pinout |
For LCD usage, a very convenient potentiometer is connected to control the contrast of the LCD and is accessible even when the LCD and I2CLCDextraIO are assembled on a PCB.
The only thing required is that the LCD has a standard pin out (16-pin single line connection header at the top). The board also breaks out a pin to be enable LCD backlight control (BL) independently.
The I2C control lines (SDA and SCL) are convenient 2.54mm headers that can be inserted into a standard breadboard for prototyping, fitting terminal blocks or simply solder it directly onto a PCB.
IO expansion use mode
When used stand alone, the board breaks out all the IO lines of the board to the 16 pin header connector, though only 8 are used.
I2CLCDextraIO - Rev A - IO pinout |
All pins from the board can be used as quasi-bidirectional IOs and are labeled on the PCB for convenient wiring to projects.
Usage
The I2C address of each board is 0x38 or 0x20 as shipped (address jumpers all 0). This address can be changed by removing the solder jumper of the I2C board address and reprogram its new address.
I2CLCDextraIO - Rev A - I2C Addressing |
The new address of the board is calculated by summing the base address (0x38 or 0x20) to the binary representation of the Address jumpers. Should you wish to connect multiple LCDs to the same I2C bus, each I2CLCDextraIO board must be configured to have a different I2C address.
SW Libraries
If you are using Arduino, we have created an open source library that is backward compatible with the standard LiquidCrystal library supplied as standard with the IDE.
Furthermore, it is a complete LCD control library that can replace the current LiquidCrystal library and be a one stop LCD library for all your projects. In I2C mode, the library is sufficiently performant to allow for animations and as a whole it uses almost 600 bytes less than the original LiquidCrystal which will be available for your sketches. With this library in place, your current projects should just work as the already do.
If you are migrating your sketch from a 4 bit parallel interface to an I2C interface you will only need to change an include file and the name of the object (variable) to what your display uses. The rest will remain the same.
The LCD library supports the following LCD control interfaces all in one package:
- 4 bit parallel LCD control
- 8 bit parallel control
- I2C control (using the I2CLCDextraIO)
- Shift Register control (project home link here).
The library is freely available, in the project wiki you will find all the details you need to successfully instal it and use it.
Sources and documentation are available here.
Sources and documentation are available here.
A library to control the I2CLCDextraIO board with out the LCD (as an IO expander) is also available as open source (well, is the same module the LCD library uses) allowing you to control each individual IO from the board individually.
Sources and documentation available for download here.
Assembly
I2CLCDextraIO - Rev A - Top Assembly |
I2CLCDextraIO - Rev A - Bottom Assembly |
Components and Part Numbers
Qty
|
Value
|
Device
|
Parts
|
Reference
|
2
|
0.1uF
|
CAP0805
|
C1, C2
|
80-C0805C104M5RACTM
|
2
|
1K
|
RESISTOR0805-RES
|
R1, R2(*)
|
ERJ-6GEYJ102V
|
1
|
Header
|
M05PTH
|
IF
|
5 pos - 2,54mm header
|
3
|
JUMPER
|
JUMPER-3-OLDSMD
|
A0, A1, A2
|
---
|
1
|
LCD I2C Interface
|
BOARD_INFOL+
|
REV_A.2
|
IO expansion
|
1
|
LCD-16X2NOHOLES
|
LCD-16X2NOHOLES
|
U1
|
16 pos - 2,54mm header
|
1
|
PCF8574 or A
|
PCF8574 or A
|
IC1
|
PCF8574APWR
|
1
|
10K
|
TRIMPOT10K_BOURNS
|
VR1
|
TC33X-2-103E
|
(*)R2 - can also be 470 (or something lower) to get more LCD backlight brightness.
Schematic and Design Files
Project wiki page.
Licensing
I2C LCD extra IO by F. Malpartida is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.