Creative Commons images are CC BY-NC-SA 3.0


added to your
shopping cart

In stock 47 in stock
24.95 1+ units
22.46 10+ units
19.96 100+ units

Description: The serial enabled LCD allows you to control a parallel based LCD over a single-wire serial interface. Included in this product is a white on black 16x2 LCD connected to our serial backpack. The backpack, based around a PIC16LF88, takes a TTL serial input and prints the characters it receives onto the LCD. The installed firmware allows for a number of special commands so you can clear the screen, adjust the backlight brightness, turn the display on/off, and more.

Communication with SerLCD requires 3.3V TTL serial at a default baud rate of 9600bps (8-N-1). You can adjust the baud to any standard rate between 2400 and 38400bps. The power, ground and RX pins are all broken out to a 3.5mm pitch screw terminal.

SerLCD has the ability to dim the backlight to conserve power if needed. There is also a potentiometer on the backpack to adjust the contrast.

Note: Though the silkscreen may say '5V', this is a 3.3v Serial LCD. Connect to a 3.3v power source.


  • PIC 16LF88 utilizes onboard UART for greater communication accuracy
  • Greater processing speed at 10MHz
  • Incoming buffer stores up to 80 characters
  • Backlight transistor can handle up to 1A
  • Pulse width modulation of backlight allows direct control of backlight brightness and current consumption
  • All surface mount design allows a backpack that is half the size of the original
  • Faster boot-up time
  • Boot-up display can be turned on/off  via firmware

Dimensions: 1.425x3.15" - 1" Thick


Comments 31 comments

  • The SerLCD firmware doesn’t appear to permit creating custom characters, does it? Unless I’ve missed something?

  • I’ve discovered, to my annoyance, that the potentiometer on the serial backpack is too sensitive (too large a resistance range). The LCD arrived in a ‘negative’ state (wrong contrast) and adjusting it is like brain surgery with the finest movement required to it set it correctly! Not to mention competing with mechanical hysteresis means this pot needs swapping out for a more appropriate-valued one.

  • You guys should mention that the way to power the back light is through the two “holes” on the side of the lcd labeled on the silk screen with “+” and “-”.

  • Anyone know if it is possible to put in Sleep mode the SerLCD? If yess, how?

  • I have a serial enabled LCD that I connected to an arduino in the past but now want to get more back to basics using just the AVR chip. I wanted to use it with an AT tiny85 but I think that’s not possible. Am I right? I need a chip with USART capabilities? Or is there a way to connect it to a tiny85? Thanks Steve

  • Sorry if this is a n00b question, but I want to hook this up to my Arduino Duemilanove. I want a connector that will fit in the input of this screen without soldering. Also, what code can I use to print, i.e. Hello World?

    • Since it is a screw terminal on the screen, you can use jumper wires to connect to the screen without soldering. In regards to printing “Hello World”, check out the example code at

  • The hex file is not the same as the one burnt in the unit. Please disclose the same working c source for this unit, which is exactly used for the hex burnt inside.
    Please, please.
    Otherwise, don’t buy it. You can not make your changes unless you find what they did distill or hide.

  • I have ported LiquidCrystal library for use with the serial LCD you can look at my code here. Still working on finishing all the documentation. But putting up for now hopefully someone will find it usefull.

  • using MPLAB with PICKit 3, I could load the modified version which was from serLCD-v2.7, however, it did not work for some reasons. After that, I reloaded the orginal firmware from Neither did it work. I doubt the firmware and source code are not the working version. Any ideas.

  • what is the compiler or tool chain for serLCD-v2? I’m new to this pic development environment. Please give me the list of steps for setup since I want to modify this firmware for my application.

    • We used CC5X to write the code for this device. If you’re new to PIC programming, you might want to start with something easier than this board; you’d have to get the LCD and serial port working in the blind, which may not be easy.

      • I made some changes to show my particular message on the screen. How can load .hex (It is intel hex format?) into PIC16F88 thru PICKit 3. I do have PICkit 3. Thanks for your information.

      • Mike, Thanks for your quick response. I got one serial LCD
        LCD-09067 yesterday. Does CC5X support 32bit variables? Can I use MPLAB to compile your source code?
        Aslo, I want to use very small LCD just like SCD55104A from OSRAMP Opto? Do you carry such small LCD or LED (at least 8 chars)?

  • main points for a Netduino+ user:
    1. call port.Flush() following every call. closing the port doesnt guarantee it will happen. go figure. YMMV.
    2. COM1 consists of digital pins 0&1 with 1 being the only one to hook up with this board. (com2 == pins 2&3)
    those small pieces of info would have gone a long way to making it easier for this newb.
    other points:
    notice there are two command bytes for different commands…0xFE and Ox7C
    the potentiometer on the back is not overly sensitive as someone pointed out. when i finally figured out what it was.
    make sure you drive it with 3.3V even though it says 5V on the back. mine didnt burn out or anything when i did it, but it was obvious.

  • Is it just me or does this thing not save baud rate changes? The datasheet claims that changes to the baud rate and splash screen are saved in the EEPROM, but when I change the baud (I know it changed because I can communicate at the new baud) and then restart the LCD it reverts to 9600 baud.

    • Ensure that you’re not sending it characters when it starts up. It has a built-in recovery mode where if it receives characters during startup, it will revert to 9600 baud.

  • This screen is a true pain in my ass. I’ve spent hours debugging it, only to realize that when using arduino hardware Serial, the screen gets sent random characters when programming the arduino. This causes the screen to get into a wacky state, requiring not only a full power reset of the device (unplugging usb), but also requires shorting power and ground to the screen so that any caps get discharged.
    Sparkfun needs to update the firmware for the serial driver they have built, because this is really absurd.
    Yea yea, i know what the response will be, SW serial. lame.
    other than that, a $30 Serial LCD? oh that’s cool!

    • If you disconnect the RX line on the LCD while programming the Arduino, this should fix the problem you are having with the screen. Keeping the RX line connected can lead to garbling the firmware on the LCD, because of exactly what you mentioned.

  • I ordered this for an aerodesign project at Boise State. We have a competition in < 3 weeks.
    I have this interfaced to an ATxmega128A1. I can write to it fine, but what I am finding is that it is a bit sensitive. Also, when the PIC gets confused, there is no recovery. Since this is a one way communication, there is no way to tell if the display is messed up or not. I’m finding this to be a pretty severe issue.
    When I power up my system, sometimes i get glitches on the LCD screen. Often when I write things to the screen, I get odd results. This is at 9600Baud.. seriously??? I communicate over serial lines at > 400Kbps, this should be a piece of cake.
    To be honest, the glitches don’t happen that often, but I am concerned that they happen at all, and that I cannot recover the LCD. I have a command to try and send all of the reset codes to it, but nothing works. Once the PIC goes off into the weeds, I cannot recover it. Is there some sort of reset sequence I can try?
    At this point, the LCD is probably “good enough”, but I really dislike a state machine that locks up hard and won’t recover.
    FWIW - I am using 3.3V, verified and tested. I do have a wire harness, which is about 2 feet long. I added a cap between ground and the RX line because without that, I was getting terrible noise and lots of errors on the LCD. More garbage than clean characters.
    I am sure that there is some coupling of noise from the RX line to the power, but, are there no caps on the board?? Okay, a quick check of the board shows that.. there is a single 0.1uf cap. Wow.. hardly adequate. Maybe I’ll put something heftier on the board for power..
    Never mind.. I put some crazy big caps on the power and it does not help. I need a cap between RX and Ground to get the thing to work at all..
    Hopefully I’m making some simple mistake, so if anyone can point out what I’m doing wrong - I’ll be grateful.. it’s always possible I got a bad unit.. stuff does happen.

  • i bought this yesterday and made my own clock with it. I wonder how could i change the contrast of screen? (not backlight)

    • oh and i forgot; what is the max current draw of this one? ive used it with fdti chips 3v3 out pin and its looks fine with fully backlight on, but still im curious about it

  • distilled datasheet
    Position Indexes:
    Line 1: 128 to 143 (16 chars)
    Line 2: 192 to 207 (16 chars)
    here is the fastest way to get up and running:


    define txPin 2

    SoftwareSerial LCD = SoftwareSerial(0, txPin);
    // don’t need rxPin for an LCD (0)
    void setup()
    pinMode(txPin, OUTPUT);
    void loop()
    //To clear the Screen
    LCD.print(0xFE, BYTE);
    LCD.print(0x01, BYTE);
    //Move to beginning of second line (192)
    LCD.print(0xFE, BYTE);
    LCD.print(192, BYTE);
    LCD.print(“Hello world!”);
    //Set the light level (range is 128-157)
    LCD.print(0x7C, BYTE); //backlight command flag
    LCD.print(157, BYTE); //light level max

  • Slick looking display, and it’s easy to use. This white/black version is also more readable outdoors and in vehicles than the black/green version I had previously used. They both seem to have some issue with polarized sunglasses at certain angles, but this white/black one seems much better during my initial tests.

  • Further to my previous comment, I’ve discovered that I had not read the item description properly and therefore tried to run the device off a 5V line instead of 3.3V. Obviously with 3.3V the potentiometer is in fact appropriate. Perhaps then, Sparkfun should consider applying a label over the 5V silk-screen just to make it abundantly clear it is a 3.3V device!

  • While I really like this LCD, I’ve discovered that it has a nasty habit of trying to power itself off the serial data line when the power (5V line) is disconnected. This overloads the output pin on my controller, usually rendering an $8 chip inert.
    I checked my circuit for any obvious problems, but it’s pretty hard to get confused when you’re only dealing with three wires and one of them’s unplugged.

    • Are you using this exact display? Because it clearly states that it requires 3.3v not the 5v the silkscreen claims.

    • Regarding sucking power from the serial port, I’ve discovered the same thing. It hasn’t damaged my micro yet, but I suppose it could (an ADuC).

  • I would like to connect the Arduino Pro 328 a Serial Enabled 16x2 LCD.
    This gives no problems with the debugging because the TXD also used?

  • I’m new to this and found the datasheet unclear and inconsistent about how to clear screen etc.
    Serial.print(0x7C, BYTE);
    Serial.print(0x01, BYTE);
    Just wasn’t doing it!
    Several hours of searching finally answered the question! to clear the screen you use this;
    Serial.print(0xFE, BYTE);
    Serial.print(0x01, BYTE);
    A really useful explanation and more info is to be found here;
    No author mentioned, but thanks whoever you are! :-)

    • in BASH on a beaglebone if I echo -e “\xFE\X01” > /dev/ttyO1 it clears the screen but I have 5 vertical lines (in character 1 off on off on off, and in character 2 on off on off on) instead of a clear screen

Related Products