2013/12/29
Notes About PCF8574 I2C LCD Using LiquidCrystal_I2C.h
IC Manufacturer
NXP - PCF8574P, PCF8574AP
TI - PCF8574N
Library
LiquidCrystal_I2C.h by Francisco Malpartida download from BitBucket Repository
Address
I2C address of PC8574 (all three address inputs grounded) = 0x20
I2C address of PC8574A (all three address inputs grounded) = 0x38
Pins Mapping (16 Pins 8574) (Schematic)
PCF8574.Pin1 -> GND
PCF8574.Pin2 -> GND
PCF8574.Pin3 -> GND
PCF8574.Pin4 (Port0) -> LCD.Pin11 (DB4)
PCF8574.Pin5 (Port1) -> LCD.Pin12 (DB5)
PCF8574.Pin6 (Port2) -> LCD.Pin13 (DB6)
PCF8574.Pin7 (Port3) -> LCD.Pin14 (DB7)
PCF8574.Pin9 (Port4) -> LCD.Pin4 (RS)
PCF8574.Pin10 (Port5) -> LCD.Pin5 (WR)
PCF8574.Pin11 (Port6) -> LCD.Pin6 (EN)
PCF8574.Pin14 (SCL) -> UNO.A5
PCF8574.Pin15 (SDA) -> UNO.A4
PCF8574.Pin16 (VDD) -> UNO.5V
PCF8574.Pin8 (VSS) -> UNO.GND
LCD Initialization
#include <Wire.h> // comes with Arduino IDE
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20)
lcd.begin(16,2) // in Setup()
Variations (Yourduino)
Marked "YwRobot Arduino LCM1602 IIC V1" -> lcd.begin(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE) // also SainSmart LCD2004, DFRobot (DZRMO)
Marked "Arduino-IIC-LCD GY-LCD-V1" -> lcd.begin(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE)
Marked "LCD1602 IIC A0 A1 A2" -> lcd.begin(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE)
Example Code (Yourduino)
/* YourDuino.com Example Software Sketch
16 character 2 line I2C Display
Backpack Interface labelled "YwRobot Arduino LCM1602 IIC V1"
terry@yourduino.com */
/*-----( Import needed libraries )-----*/
#include <Wire.h> // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>
/*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x20); // Set the LCD I2C address
/*-----( Declare Variables )-----*/
//NONE
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600); // Used to type in characters
lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight
// ------- Quick 3 blinks of backlight -------------
for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight(); // finish with backlight on
//-------- Write characters on the display ------------------
// NOTE: Cursor Position: (CHAR, LINE) start at 0
lcd.setCursor(0,0); //Start at character 4 on line 0
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(0,1);
lcd.print("HI!YourDuino.com");
delay(8000);
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
lcd.clear();
lcd.setCursor(0,0); //Start at character 0 on line 0
lcd.print("Use Serial Mon");
lcd.setCursor(0,1);
lcd.print("Type to display");
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
{
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
}/* --(end main loop )-- */
/* ( THE END ) */
Labels:
8574,
8574A,
Arduino,
Breakout,
Connection,
Freeduino,
HD44780,
I2C,
LCD,
LiquidCrystal,
LiquidCrystal_I2C,
Mapping,
Pin,
Serial,
Shield
Subscribe to:
Posts (Atom)