74HC595 with a LCD?

Dear All,

I'm trying to save some pins by using a 74HC595 to communicate with a LCD - so far without any luck. I've searched this forum and the interwebs, and found some information, but I can't seem to puzzle the bits to gether from the different sources. Sources which I found which seemed most relevant: http://code.google.com/p/arduinoshiftreglcd/ http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1261417276/10 http://twitpic.com/1tlybb/full http://www.instructables.com/id/LCD-Shifter-for-Arduino/

The "arduinoshiftreglcd seems very promising, but in the schematics a different register is used. In one of the forums post the creator of that lib mentions it should work with a 595, so I tried to wire mine up like the one in the twitpic link. That didn't work either.. I followed the guide of instructables, but there I'm missing the bit on how to hook it up to the actual LCD...

Is this possible at all, to use a 74hc595 for a LCD? Is there any one here who has more links to more information? Is there any one here who already built this and willing to give some tips or share pitfalls? What pins on my 595 would be similair to the A and B pins of the 74HC164 used in the lib. schematic?

Any help with this would be greatly appreciated!


You save like 3 pins with all the trouble you’ll have to go through. Will you tell more about your project? Maybe somewhere else you can save pins. Have you used up all the analog pins? They act as digital pins also.

which LCD? do you have a link to its datasheet?

At this point, the project is "saving pins on a LCD with a shift register". So no, I don't really need this. And yes, I would still like to know how this would work..

The LCD is a pretty standard one, HD44780 compat. http://www.adafruit.com/index.php?main_page=product_info&cPath=37&products_id=181&zenid=61b57599b5535288a27a74f57bf23c54

datasheet: http://www.adafruit.com/datasheets/TC1602A-01T.pdf

So instead of the 6 lines they have shown, you want to have 2 lines going to a shift register and have the 6 lines go from there? Hardware wise seems easy enough, just a software exercise to recreate this: "We'll be using the LiquidCrystal library to talk to the LCD so a lot of the annoying work of setting pins and such is taken care of. "

you want this:

read this:

and this:


I think one needs to spend one pin to control the latch so that the update to the pins will occur simultaneously.


I took a guess and I guessed it right. If you were using dot-matrix display, you may save 10 pins, which can overweigh the difficulty.


In one of the threads you link to (http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1261417276/10), Nadir mentions that he has used the 74HC595 with the library and that it works well. I have never tried the 595 with the lib myself, I just figured it should be possible.

Nadir's nice solution seems to indicate he used a three-wire connection, and also used the enable-pin to the '595's STCP (pin 12), as well as to enable on the LCD. Did you try this?

arduino pin         Shiftregpin          LCDpin
-------------        -------------         ---------
datapin ->              14 (ds)
clockpin->              11 (shcp)
enablepin->             12 (stcp)  ->    6 (E) pin
                              3 (Q3)    ->    4 (rs) pin
                              4 (Q4)    ->    11 (D4) pin
                              5 (Q5)    ->    12 (D5) pin
                              6 (Q6)    ->    13 (D6) pin
                              7 (Q7)    ->    14 (D7) pin

Another thing that probably works is just connect the SHCP shiftregister clock together with STCP, storage register clock/trigger, effectively not using the output latch capability of the '595 (and the enable output from the Arduino only to enable on the LCD), but I like Nadirs solution better.

It doesn't seem to like the two-wire method with the HC family IC's though, I'm not entirely sure why atm. Maybe a lower value than 1k for the resistor in the diode-resistor "AND gate" would help, I haven't tried that though so I don't know.

Also, a big thanks to ladyada here seems to be appropriate :) It's basically her library I (with some help from mircho) hacked together to work with a shiftregister. The only one I had at the time was the 74LS164.

Thank you all very much for the replies! Very helpfull.

@raron: I did see that entry in the post, but couldn’t quite figure out what was going on. Your explanation is very helpful, I’m going to give that a try!

@ladyada: Thanks for the link to the backpack, but due to the shipping cost its not that interesting for me - besides, it won’t help me understand shiftregisters :slight_smile: