Control LCD Display with Shift Register (8-Bit)

I am trying to reduce the number of output pins an LCD uses for the Arduino. As of right now it's taking six connections (rs, enable, d4, d5, d6, d7) and I know you can control 8 output pins with only 3 Arduino pins with a shift register (74HC595).

(Note, I'm sending the 'rw' pin to ground so I don't need to use an additional Arduino output pin).

I am using the 'LiquidCrystal.h' library as of right now.

Has anyone figured out how to create a function or library that does this easily?

Or, does anyone have any good directions for how to get this accomplished? (I'm more than happy to release the code if I can figure it out myself).

Maybe your looking for this Arduino Adventures: Controlling an LCD Display with a Shift Register ive used and it works very well.

Cheers! It looks good. I'll try this out.

UPDATE: It works perfecetly! Once again thank you for the find. I am able to use 3 non PWN outputs to control my LCD now. It was a straight drop in by replacing the LiquidCrystal.h with the LCDShift.h library. (Note: Just make sure you check the datasheets on your Arduino versus his layout as mine was different).

Hi all, this is my first post on this forum. I'm relatively new to Arduino development. I have an HD44780 compatible LCD which I have used successfully connected directly to the arduino using 6 pins. I recently received a few shift registers and decided to try using the library on this page to connect using only 3 pins. The shift registers I have are SN74HC595N, and I have connected my LCD and shift register and arduino as per directions in the example files (minus the mosfet for backlight control).

After loading the sketch into the Arduino, I only get the classic first row of grey blocks.

I have checked my wiring several times over, and I'm stumped as to why this won't work.

I have taken several pictures of my setup and will post them in a follow-up post.

I have initialized the lcd variable with ShiftLCD lcd(2,3,4);

Any help is appreciated.

Cheers,
Mark

The pictures of my setup as promised:

http://mvgrafx.net/~vmark/arduino/dsc_1367.jpg
http://mvgrafx.net/~vmark/arduino/dsc_1368.jpg
http://mvgrafx.net/~vmark/arduino/dsc_1369.jpg
http://mvgrafx.net/~vmark/arduino/dsc_1370.jpg