3-wire LCD adapter with M74HC595 shift register

To improve the Arduino thermometer, I used a shift register which reduced the number of pins from six to three. However, this setup requires a lot of jumper wires for connecting LCD and shift register. To be able to use the LCD as a module for future projects, I wanted to build an Arduino-LCD shield on a small piece of stripboard.

Unfortunately, the order of the LCD input pins D4 to D7 is not suitable for a tidy stripboard layout when using the default Arduino LiquidCrystal library. However, I found a layout at Instructables, which makes use of the LiquidCrystal595 library, allowing to connect to the shift register pins in a reversed order (D7 – D4 to pin 1 – 4 of the SR). The library also works on the ATtiny85/45 microcontroller, so that it is possible to further downsize the project.

I have slightly modified the layout and included a 47Ω resistor to dim the display. The backlight can be permanently disabled with a switch, in case that you don’t want to control it with a “lcd.setLED1Pin(HIGH/LOW);” command or “lcd.setLED2Pin(HIGH/LOW);” along with a “lcd.print();” line.


The LCD board can be easily assembled. Here is a list of parts that are required:

  • 1 x piece of stripboard 24 columns x 14 rows
  • 1x BC547 NPN transistor
  • 1x M74HC595 shift register
  • 1x 10k potentiometer
  • 1x switch (optional)
  • 1x 47Ω resistor (optional)
  • 1 x female pin header with 16 pins
  • 1 x male pin header with 2 pins
  • 1 x male pin header with 4 pins