sspence @ instructables.com shows how to interface a character LCD using I2C and only two IO pins.
The typical parallel LCD used with an Arduino (16×2 or 20×4) has 16 pins. Only 6 I/O pins are required on the Arduino, but what if you could get that down to two I/O pins, and still have those pins available for other devices?
The I2C interface is on pins A4 and A5 of the Arduino. These are addressable, and are therefore shareable with other I2C devices that have different addresses.
DIY I2C LCD Display – [Link]