SparkFun 20x4 SerLCD - Black on RGB 3.3V

The SparkFun SerLCD is an AVR-based, serial enabled LCD that provides a simple and cost effective solution for adding a 20x4 Black on RGB Liquid Crystal Display into your project. We've seriously overhauled the PCB design on the back of the screen by including an ATmega328P that handles all of the screen control, meaning a backpack is no longer needed! This display can now communicate in three different ways: serial, I2C, and SPI. This simplifies the number of wires needed and allows your project to display all kinds of text and numbers.

The on-board ATmega328P AVR microcontroller utilizes 11.0592 MHz crystal for greater communication accuracy with adjustable baud rates of 1200 through 1000000 but is default set at 9600. The firmware for this SerLCD is fully opensource and allows for any customizations you may need.

Note: Since the SerLCD is a 3.3V device, please make sure you convert to 3.3V logic depending on your chosen microcontroller or single board computer. Otherwise, you may risk damaging your board.

  • 20x4, Black on RGB Display
  • The AVR ATMega328p (with Arduino-compatible bootloader) is populated on the back of each LCD screen and handles all of the LCD control
  • Three communication options: Serial, I2C and SPI
  • Adjustable I2C address controlled via software special commands (0x72 default)
  • Emergency reset to factory settings (Jumper RX to GND on bootup)
  • Operational backspace character
  • Incoming buffer stores up to 80 characters
  • Pulse width modulation of backlight allows direct control of backlight brightness and current consumption
  • Pulse width modulation of contrast allows for software defined contrast amount.
  • User definable splash screen
  • Open-sourced firmware and Arduino-compatible bootloader enables updates via the Arduino IDE

SparkFun 20x4 SerLCD - Black on RGB 3.3V Product Help and Resources

GPS-RTK Hookup Guide

September 13, 2018

Find out where you are! Use this easy hook-up guide to get up and running with the SparkFun high precision GPS-RTK NEO-M8P-2 breakout board.

AVR-Based Serial Enabled LCDs Hookup Guide

August 2, 2018

The AVR-based Qwiic Serial Enabled LCDs are a simple and cost effective solution to include in your project. These screens are based on the HD44780 controller, and include ATmega328P with an Arduino compatible bootloader. They accept control commands via Serial, SPI and I2C (via PTH headers or Qwiic connector). In this tutorial, we will show examples of a simple setup and go through each communication option.

GPS-RTK2 Hookup Guide

January 14, 2019

Get precision down to the diameter of a dime with the new ZED-F9P from u-blox.

Mechanical drawing

You can find a basic mechanical drawing for this LCD here.

Additional libraries needed to compile the SerLCD firmware

You can find the additional libraries needed to compile the SerLCD firmware at the link below. LiquidCrystalFast and SoftPWM libraries

Core Skill: Soldering

This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.

1 Soldering

Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels

Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

2 Programming

Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels

Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

2 Electrical Prototyping

Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Does anyone have instructions for repairing one of these after bricking? When the LCD starts I get the black squares on rows one and three and no splash screen etc.

  • Member #1516250 / about 5 years ago / 1

    Do you have a 20x4 RGB on Black LCD or are planning to release one?

  • David Gitz / about 6 years ago / 1

    Also, how do you change the text mode from ROM Code: A00 to ROM Code: A02? I think this should be the one by default.

  • David Gitz / about 6 years ago / 1

    Whenever I change the brightness of any of the rgb fields I get the text "brightness 0%". Is there a way to easily disable this text on the lcd? Or do I have to reprogram it?

  • fourstix / about 6 years ago / 1

    I soldered a Qwiic adapter to this and it makes a great display to hook up with other Qwiic components. To make things easy, I ported the LiquidCrystal Library for the Arduino to use the serLCD commands. It's available on github here:

  • Jeffrey Arcand / about 6 years ago / 1

    Is there an electric schematic document for this board? I'm wondering if there's any spare pins that can be used to read button that would added next to the screen to make an interactive menu system... Thanks!

    • M-Short / about 6 years ago / 1

      Also, while it doesn't break out extra pins it does break out the UART, SPI, and I2C pins. Once you pick your protocol the other 2 are free pins to use for the most part. Since the code is open source you should be able to modify it to use those pins for whatever you want.

    • Hey Jeffery, Thanks for reaching out. Unfortunately, we do not have a schematic for this design. But I can tell you that the pins broken out on the long header along the side are the same I/O pins that you would find on a standard Arduino. For example, RX/TX = D0/D1, SDA/SCL = A4/A5, and the SPI pins are standard (D10, D11, D12, D13). If you're looking for a good control interface, maybe the qwiic joystick and an adapter might be a good way to go - and you could use the I2C interface to communicate. Hope this helps!

      • Jeffrey Arcand / about 6 years ago / 1

        Oh, so if there isn't any plans, doesn't that mean this product (plus #14072 and #14073) are not OSHW compliant? That's too bad... The joystick might work as an alternative... I'll have to take a closer look.

  • Shirley / about 6 years ago / 1

    3.3V (clearly marked!) means that it won't be a great add-on for the majority of Arduino projects; the user would have to inconveniently add level shifters. But it's a great fit for a Raspberry Pi, or for the newer ARM-based Arduino boards that run at 3.3V.

    • Indeed, 5V tolerant screens would be sweet. That did come up a little late in prototyping (after the 2nd or 3rd round). Unfortunately, there just wasn't enough space on the back of these screens to add logic level conversion. Maybe we could pursue smaller package sizes for everything, but that would be a beast of a revision. Good point about the raspi, and we are lucky that there are a fair amount of 3.3V controllers these days. Thanks for your comment!

  • Love the "3.3V Logic Only" Label - it will help keep the magic smoke inside! Nice, clear looking display too!

    • Haha. Thanks for RTFM. Ya know, you can only make a warning so large, bold or highlighted, but ultimately, your reader has to want to read it :) I'm sure it will be overlooked by some, but I hope that they don't break too much. It will survive for a little bit before the I/O are unhappy. I, confess... I actually damaged a prototype by talking to it from a 5V test jig (I was so excited about the protos, I didn't double-check my settings, durp). So it happens to the best of us. In fact, that's how SparkFun was started. Nate burned up his olimex programmer back in 2004 - having fun with sparks.

Customer Reviews

4 out of 5

Based on 8 ratings:

Currently viewing all customer reviews.

1 of 1 found this helpful:

Works great with Qwiic

I was looking for a display to go with some Qwiic components and this fit the bill perfectly. I soldered a Qwiic adapter on the I2c pins and it was good to go.

Almost the best thing

Good looking display to be used for a readout on my MPD music player. Straight serial for ease of interfacing (3 wires) to a Raspberry Pi (did not want to use I2c because it is also being used to control volume to the DAC chip).

I would encourage SparkFun to please ship these units with the latest firmware. It took me a while to realize that was why the '+ RGB' command was not functioning. Then I had to cobble together a serial programming interface to update it.

All is fine now and working. Time to plunge into Python programming land, one more thing I know nothing about.

Great tool, needs some documentation help or firmware updates

Fantastic tool for quick out of the box serial display away from a terminal. In our case we need 115200 for some specific purposes, but have not been able to get the speed switched. Documentation and firmware source code says it's an option and well within range since it has the MHz oscillator, but we have not been able to get it to switch to any other speed. Stuck at 9600.

Might just need a firmware update... but why would a device be shipping with a firmware which is months out of date? Excess inventory, or production just hasn't gotten the right hex file to load. In either case, it's keeping it from getting 5 stars.

Static power consumption runs about 5mA with the back light off measured on a Rigol digital supply. I was rather pleased with that power level.

The PDF documentation of the SerLCD is rather old. It is applicable, though missing the speeds which are shown in the source code on GitHub and mentioned in the product description.

Nice Display

I chose this display because of the SPI interface and the fact it has four lines and twenty characters per line. I found that the the SPI clock needed to be around 54 kHz (or at least well under 100kHz) to eliminate flicker and have a stable display. Just stretching the delay times after sending commands did not help with the flicker Also, when I used the backlight setting commands to set the backlight (0x80 - 0xD9), I wasn't able to disable the backlight display messages with the Disable System Messages command (0x2F). Instead I used the Set RGB Backlight Command (0x2B) which doesn't display system messages when used. Overall, it's a nice display and I like the SPI interface.

Worked for two weeks, then dead

Worked fine for two weeks, then dead. Not the CPU as other displays worked in its place.

Sorry to hear you're having trouble! Please contact our technical assistance team for help with your display.

Great product.

This is a great product. The only thing I can suggest, is to add an automatic and programmable ambient light dimming circuit with a photo sensor. As an alternative, it would be nice to have a digital and analog pin as a breackout.

i2c Doesn't work well

I tried using this with I2C and pi4j on a raspberry pi, and it just didn't work well. There was some sort of comm error happening that corrupted the display. Perhaps the serial interface works, but the i2c doesn't.