Arduino UNO R3 + PCF8574P + HD44780

Hi the other thing that you can do is to give the LCD library (New LiquidCrystal library) here a shot. It looks like it is not initializing the LCD correctly:

#include <LiquidCrystal_I2C.h>

//   LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, 
//                     uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 );

myLCD LiquidCrystal_I2C ( 0x20, 4, 5, 6, 0, 1, 2, 3 );

void setup()
{
  lcd.begin( 16,2 );                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.setCursor(0,0);
  lcd.print("ARDUINO+PCF8574P");
  lcd.setCursor(0,1);
  lcd.print("+HD44780=I2C-LCD");
}

void loop()
{
}

or, with backlight control

// Constructor with backlight control
//   LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, 
//                     uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
//                     uint8_t backlighPin, t_backlighPol pol);

myLCD LiquidCrystal_I2C ( 0x20, 4, 5, 6, 0, 1, 2, 3, 7, POSITIVE );

void setup()
{
  lcd.begin( 16,2 );                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("ARDUINO+PCF8574P");
  lcd.setCursor(0,1);
  lcd.print("+HD44780=I2C-LCD");
}

void loop()
{
}

That transistor looks a bit fishy too.

If you have the PCF8574 use Address 0x20 if you have the PCF8574A use I2C addres 0x38.