Friday, May 24, 2013

Attiny_LCD_595 Board: LCD controlled by ATtiny85… stand-alone


      LCD’s are projects most common output method. We can display any sensor’s value, print information alerts on screen, or even scroll big messages.
LCD screen using the
Hitachi HD44780 LCD controller
      Also, a screen for setting up parameters, or generally having a visual of your project status, is always useful.


The 595 Shift Register
595's Pin-out
      It’s easy to connect an LCD screen with an Arduino, despite the many cables needed. The problem is when you need to shrink your project using the ATtiny85. Because of the ATtiny’s limited outputs, we cannot connect it directly to an LCD screen. But like everything else, a solution can be found online.
      A 595 Shift Register chip is used and the connections are reduced only to three. So by using ATtiny’s pins 0, 1 and 2 through the 595, we control the data passed on the LCD screen.

The ATtiny_LCD_595 board with an LCD
All connections are found on this little board.
  • There is a 16-pin Socket for the LCD, a 14-pin Dip Socket for the 595 Shift Register and finally an 8-pin Dip Socket for the ATtiny85.
  • A potentiometer helps the adjustment of screen’s brightness. 
  • There is also a rubber support for the LCD screen on board. 
  • The whole board is being powered by a 5 Volts supply.
      With all these fitted on the board, the project can be easily fitted in a small box and furthermore create a stand-alone display.

      The programming of the ATtiny85 can be made easily using the ATtinyShield and by calling the 595 modified LCD Library. Also when the LCD’s pins are defined, must be set to 0, 1 and 2. All these can be seen in this example sketch, which displays a message on the two lines of the LCD screen.
 /* ATtiny85 with 74HC595 Shift Register control over LCD with 3 pins
 * This requires the use of the LiquidCrystal595 library
 * available at:

#include    // include the library
LiquidCrystal595 lcd(0,1,2);     // datapin, latchpin, clockpin

void setup() {
    lcd.begin(16,2);             // 16 characters, 2 rows
    // Message for 1st row
    // Message for 2nd row
    lcd.print("Board  koursaros");

void loop() {

You can find the library needed for the 595 LCD control all over the internet but check here too:


If you want to buy this board check, my EBay listing:

You will get:
  • The ATtiny_LCD_595 board made with PCB colour printed silkscreen on it, and of course high quality components soldered.
  • FREE: 1 LCD 16x2 Screen with Blue backlight and headers solder on it, ready to be placed on the project board.
  • 1 printed book-guide with all the information about the connection and the programming needed to display a message on screen.
    Be carefull that you won't get any ATtiny chip. If you want one you must check my programmable shield for ATtiny85's (link follows)...

      Step 1. To program the ATtiny85, firstly connect the chip to the ATtinyShield and fit it on the Arduino. Open the Arduino IDE, set the correct parameters and copy the code given before.
      Step 2. For your future sketches you must keep the first lines that configure the LCD – 595 Library. From that point, you can make your own changes that fit your project.
      Step 3. Remove the ATtiny85 from the ATtinyShield and place it on the ATtiny_LCD_595 board, minding the correct position of the indicator.
      Step 4. Check the connection of the LCD screen and the 595 Shift Register. Adjust the pot to proper screen brightness.
      Step 5. Power up the board with 5 Volts. The screen must light up and if the programming was correct, the message should appear.


  1. Does the modified code and library only work with the LCD board above? There are no connections from the ATTiny85 to the shift register and the register to the LCD, what are the physical connections so i can have ago at this?

  2. this board in this version has one purpose. to test upload and display a message on the display using the 595.
    i am working on a new version with physical outputs and inputs for the attiny so you ll be able to drive a sensor.

    in an experimental mode with this board you can try connecting inputs by yourself.

    i am about to launch the new version.

    anything else i could help please ask.
    thanks for your comment