loading

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

Featured
Picture of ATTiny45/85 LCD display control with a shift register, programmed in Arduino
IMG_0046.JPG
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!

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!
 
killercatfish7 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.clear();
lcd.setCursor(0,0);
lcd.print("Only 3 pins!");
lcd.setCursor(0,1);
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

http://arduinodiy.wordpress.com/2014/01/12/two-wire-interface-for-lcd/

diy_bloke1 year ago

try making a shiftregister with only two wires

http://arduinodiy.wordpress.com/2014/01/12/two-wir...

... or better yet, only one

http://www.romanblack.com/shift1.htm

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.

Krb6862 years 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
http://code.google.com/p/arduino-lcd-3pin/

it is used in this instructable
http://www.instructables.com/id/Hookup-a-16-pin-HD44780-LCD-to-an-Arduino-in-6-sec/
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:
http://hci.rwth-aachen.de/luminet
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!