Hola este es el codigo con el que he podido hacer que funcione mi LCD, esto era un test que hice coje lo que te sirva
#include <Time.h>
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h> // F Malpartida's NewLiquidCrystal library
#define I2C_ADDR 0x27 // Define PCF8574A's I2C Address
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
#define LED_OFF 0
#define LED_ON 1
char* Str[]={"Light OFF","Sun Rise","Mid Day","New Moon","Waxing Crescent","First Quarter"};
char* reef = "REEF Aquearium V5.0";
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
void setup()
{
lcd.begin (20,4); // initialize the lcd
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(LED_ON);
lcd.setCursor(0, 0);
lcd.print("REEF Aquearium V5.0");
delay(1000);
lcd.clear();
}
void loop()
{
fecha(0,0);
}
void fecha(int ROW,int file){
//Cada 30 segundos cambiamos entre mostrar la fecha y el nombre MABELEVA-REEF
// getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
lcd.setCursor(ROW,file);
if (second() >=0 && second() <= 5){ //Pintamos la fech
lcd.print(" ");
if (day() < 10) Serial.print("0");
lcd.print(day());
lcd.print("/");
if (month() < 10) Serial.print("0");
lcd.print(month());
lcd.print("/");
if (year() < 10) Serial.print("0");
lcd.print(year());
}else if(second() >= 5 && second() <=10){ //Pintamos el nombre del reef
lcd.print(reef);
}else{
//Pintamos la hora
LCDprintDigits(hour());
lcd.print(":");
LCDprintDigits(minute());
lcd.print(":");
LCDprintDigits(second());
lcd.print(" ");
}
}
void digitalClockDisplay(){
// digital clock display of the time
lcd.setCursor(0, 0);
LCDprintDigits(hour());
lcd.print(":");
LCDprintDigits(minute());
lcd.setCursor(8, 0);
lcd.setCursor(5,0);
lcd.print(":");
LCDprintDigits(second());
}
void LCDprintDigits(int digits){
// utility function for digital clock display: prints preceding colon and leading 0
// lcd.print(":");
if(digits < 10)
lcd.print('0');
lcd.print(digits);
}