ATTiny45/85 LCD display control with a shift register, programmed in Arduino

Picture of ATTiny45/85 LCD display control with a shift register, programmed in Arduino
Running Arduino on an ATTiny45 of 85 chip is a huge cost-saver for mini-projects. However, you cannot connect a HD44780 compatible LCD display as you require 6 outputs, but you only have 5. This issue can be solved by using a shift register to control it using only 3 pins! That means you still have 2 more left over for other use!
Remove these adsRemove these ads by Signing Up

Step 1: Parts needed

Here is a list of the parts you will need for this project:

1x Arduino Microcontroller (to act as the programmer, you could use an ISP to program them though.)
1x ATTiny45 / ATTiny85 microcontroller
1x 74HC595 Shift Register
1x HD44780 compatible LCD
1x LED (for testing the microcontroller)
1x Resistor for the LED (use one that is right for the specs of your LED)
1x Potentiometer for LCD contrast (You can connect the contrast to ground 
Loads of wires!

Step 2: Connecting the ATTiny to Arduino

Picture of Connecting the ATTiny to Arduino
The ATTiny pins are numbered in picture 1.

Start by connecting ATTiny pin 4 to Ground.
Connect ATTiny pin 8 to +5V.

Next, connect the following cables from the ATTiny to Arduino:
ATTiny pin 1 to Arduino pin 10,
ATTiny pin 5 to Arduino pin 11,
ATTiny pin 6 to Arduino pin 12,
ATTiny pin 7 to Arduino pin 13.

In some cases such as using the new Uno boards, ou will need to connect a 10 microfared capacitor from the Arduino reset pin to Ground. Make sure the capacitor ground (-) is connected to round as it is polarised. In my case everything works just fine without one, but there may be some issues that I'm not aware of. If anyone is aware of any then please post them in the comments.

You are now good to go, next is the programming!

(reference: High-Low Tech)
killercatfish6 months ago

What would you use as a power source if you wanted this to be stand alone without using the arduino power?

jimpeachey1 year ago

Im having real problems controlling an LCD with anATTiny85 despite following several instructables. Does anyone have a full fritzing diagram for this instructable so that i can see what all the connections are supposed to be? I have been using ATTin85 pins 0 1 and 2 Does the order that you list them in the sketch make any difference? Im also not sure how using different libraries affect the way these things operate so would appreciate any help that anyone could give. Thanks

it has been a while, and i hope you found the reply, but just in case
someone is looking for the same answers: yes, it does make a difference
what orde you list the pins as the order defines datapin, clockpin, latchpin.
Yr program should look like this:

#include "LiquidCrystal595.h" // include the library or replace the "" by fishhooks
LiquidCrystal595 lcd(0,1,2); // datapin, latchpin, clockpin

void setup() {
lcd.begin(16,2); // 16 characters, 2 rows

lcd.print("Only 3 pins!");
lcd.print("Thats it");

void loop() {
// not used.

If you want to work with an LCD on a attiny84, I strongly suggest the two wire variant with a 74HC164, saves an extra pin


diy_bloke11 months ago

try making a shiftregister with only two wires


... or better yet, only one


i'm wondering if it's possible to make a thermometer using this configuration with a DS18B20 sensor...
jimpeachey1 year ago

Can i just replace the original sketch command of

LiquidCrystal595 lcd(7,8,9); with

LiquidCrystal595 lcd(0,1,2);

As you can see i am using a different library than this one but i have had it working with a shift register, just not an ATTiny85. Any help would be greatly appreciated.

Krb6861 year ago
Very cool project, but you could also just get a 14-pin ATTiny84, which has 11 digitial I/O. I guess it's cool to learn how to add additional pins to micros though.
emdarcher3 years ago
I used this library and it worked

it is used in this instructable
diy_bloke3 years ago
Judging from the website of Chris Parish, quite some people experienced errors with the code
qwerty1563 years ago
Would this work on an ATTINY2313
You will find a 2313 core here:
I have not tried that one, but it may come in handy if the Attin85 core doesn't do it for you
baharini (author)  qwerty1563 years ago
I have not tried with this chip before, but I believe you can run arduino on it.
You can try out the Arduino Tiny core, found at http://code.google.com/p/arduino-tiny/
I know the core will work with the tiny 2313 but I am not completely sure on the ShiftLCD library. It may work just fine, or it will get a compiling error. I wish you good luck!