I found that many of the projects I would build used a character LCD. These come in many varieties most of which are based around an HD44780 or compatable chipset. The disadvantage these displays have is the number of pins required to drive them. So I decided to build a basic library to drive these displays using an I2C port expander.
This is the basic schematic used. I used a Maxim MAX7318AWG 16bit I2C port expander to drive the LCD.
An update to this project can be found in this post.