Creative Commons images are CC BY-NC-SA 3.0

24.95

added to your
shopping cart

quantity
In stock 369 in stock
24.95 1+ units
22.46 10+ units
19.96 100+ units

Description: This is the latest evolution of our serial LCD. Included on a single board is a 16x2 LCD and an embedded circuit based around a PIC 16F88. The on-board PIC takes a TTL serial input and prints the characters it receives onto the LCD. The installed firmware also 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 5V 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 (VDD), ground (GND) and RX pins are all broken out to both a 0.1" pitch header as well as a 3-pin JST connector.

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

Features:

  • Embedded PIC 16F88 utilizes onboard UART for greater communication accuracy
  • Adjustable baud rates of 2400, 4800, 9600 (default), 14400, 19200 and 38400
  • Operational Backspace
  • 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
  • User definable splash screen

Dimensions:

  • PCB: 103x36mm
  • LCD: 71.4x26.4mm

Documents:

Comments 73 comments

  • does anyone know if reversed polarity will kill this? That’s the only reason I can think of as to why mine will not work! I’ve tried everything!

    • What doesn’t work on it? Have you contact tech support yet? They should be able to help you out.

    • Not sure of your situation, but i’ve connected my lcd backwards to my arduino twice and its still good. Robust, just the way I like it.

  • Does anybody know how to do a hard reset on this LCD? While I was uploading my code, I left it plugged into TX, and it doesn’t work anymore. I’m realizing that it probably got spammed with commands and the configuration got messed up. Does anybody know how to reset to factory defaults?

  • Anyone know if this will work at 3.3V TTL, or will work while being powered below 4V?

    • I have the same question. I now have the 3.3v serial enabled LCD (with backpack) and want to use this one for future usage. VDD of 5V can be supplied, but will the TTL work when its getting 3.3V signals from the TX from Netduino?

  • Is it just me, or are the solder holes for VDD, GND, and TX near the JST connector too small to accept standard pin headers? Perhaps I just need to use a little more force? I see that one of the pictures of this module shows what appear to be standard headers installed in that location, so I am confused..

  • Does anybody know if the Infrared Sensor Jumper Wire (http://www.sparkfun.com/commerce/product_info.php?products_id=8733) works with this board? Barring that, anybody know where to find a 3-pin JST connector?

  • I’ve put together some python code for sending serial data to these LCD screens. In particular, the code pulls my twitter status and writes it to the LCD. To work with the extra characters, I wrote functions to page the text (vertical scroll) or scroll the text (horizontal scroll). Details are available here: http://dawes.wordpress.com/2009/12/23/twitter-to-lcd/
    Thanks for this great module, I’ve really enjoyed tinkering and actually had the first version working in under an hour!

  • I’ve created a new splash screen for the Serial LCD, now I want to save it to the Serial LCD memory. So, exactly how do I write a “control-j” to the Serial LCD. I’ve put in the required line to transmit special character 124, but I can figure out how to format the “control-j” line of code. I’ve Googled this for about an hour and can’t find an explanation or sample code anywhere. Here’s my code…

    void setup() {
      sLCD.begin(9600);            //Set serial baud rate with LCD
      sLCD.write(0XFE);            // = Decimal 254.  This line of code MUST preceed the next line      
      sLCD.write(0X01);            //Clears the screen.  (See SerLCD 2.5 Data Sheet, page 2, Section 3.3)
      sLCD.write(0xFE);            // = Decimal 254.  This line of code MUST preceed the next line 
      sLCD.write(134);             //Places cursor on Row 0, Col 6 (See Data Sheet, page 3)       
      sLCD.print("NEW");
      sLCD.write(0xFE);            // = Decimal 254.  This line of code MUST preceed the next line 
      sLCD.write(193);             //Places cursor on Row 1, Col 1 (See Data Sheet, page 3) 
     sLCD.print("SPLASH_SCREEN");
      sLCD.write(0X7c);            // = Decimal 124.  This line of code MUST preceed the next line 
      sLCD.write("< control >j");     /*If you copy & paste this code, remove the spaces in front of an behind "control".
                                      I had to add the spaces so that the inequality symbols and "control" would show up 
                                      This should save Splash Screen to LCD memory (but it doesn't)
                                      Multiple Errors are generated if quotation marks are omitted.*/
    }
    

    Instead of getting “NEW” on the first line and “SPLASH_SCREEN” on the second line, I get “ntrol>NEW” on the first line and “SPLASH_SCREENco” on the second line. Naturally you might leave off the quotation marks from around “< control > j”, but that just generates multiple errors. Any suggestions?

  • my comments don’t work

    • I’m not sure if you’re referring to comments on the website, or on your LCD screen. You can contact techsupport@ and they’ll be able to assist you further.

  • is this I2C compatible

  • I think I ruined this trying to solder to the connect points, would like easier way to hook up.

  • where can i get a 3-pin connector to breakout the RX, gnd, 5v for easier access maybe to a screw terminal or female connection

  • Did a Solid Works drawing here for those designing enclosures may come in handy:

    http://grabcad.com/library/sparkfun-serial-enabled-16x2-lcd-1

  • Was this same PCB green at one point, or was that an older rev with different features?

  • I have used a Labview program for this LCD. When i send character ‘a’, the display is ‘0’. Does anyone having a same problem. How should I troubleshoot this problem.Tq

  • Has anyone managed to get the PWM backlighting working with an Arduino? I’m trying variations of this and nothing works except the standard On/Off commands using 0xFE as the escape. All my attempts turn the display off but the backlight LED is on full.

    The splash screen on mine says SerLCD 2.5 so I believe my firmware is current. My board’s about 8 months old.

    void backlightLow() { //serCommand(); Serial.write(0x7C); Serial.write(140); }

    void backlightSet(int level) { Serial.write(0x7C); Serial.write(byte(level + 128)); }

  • Why do I get power out of the VDD port with only RX and GND hooked up? I have a 5V rail that I use to power everything on my board - and when I added this SerLCD I now have a bridge between the arduino power and my 5v line … which I dont want. Can I add a diode to the VDD to stop reverse voltage from powering my board?

  • I’m having trouble setting the cursor position on the second line, can anyone help? This line of code (PICAXE) works fine:

    serout B.5, T9600_8, (254, 142)
    serout B.5, T9600_8, ("++")
    

    and puts two pluses at the very end of the first line. However, this code doesn’t put anything on the screen, where it should put two plusses at the start of the second line, correct?

    serout B.5, T9600_8, (254, 146)
    serout B.5, T9600_8, ("++")
    

    any ideas, anyone? Thanks!

    *** Edit - never mind, got it! Apparently the position numbers aren’t contiguous, so it has to be location 192. Way to read the datasheet, Chris!

  • Being new, I am trying to mount this in a project box. Does anyone know where I can find a bezel for this or can someone offer some advice on how best to mount this into the cover of a project box so that it looks professional?

  • I think SparkFun needs to add a pull-up resistor on pin 4 (Vpp). This pin is an input (not input/output) and should not be left floating. Another pull-up on the RX pin would also be advisable.

  • It seems like the MCLR function has been disabled through the config bits. No pullup to Vdd is installed. This makes it really irritating to work with this display. Programming an arduino with this hooked the HW serial port will screw up the display, and without the reset line you have to pull power. A simple solution would just be to wire the PICs MCLR pin to the Arduinos reset line, but this isn’t possible without the MCLR function obviously.

  • I’m using usb->rs232 adapter for data and an open wire usb cable for power and am getting garbage on all baud rates using code and putty. Am I doing something wrong?

    Lcd: http://www.sparkfun.com/products/9395 Setup: http://imgur.com/g9GKB Code: http://pastebin.com/3DsWZFQH

    Edit: begining to think I need to ensure my data is switched between 0-5v using a TTL adapter like this: http://www.acroname.com/robotics/parts/ … ERIAL.html

  • Quick suggestion… It’d be very helpful for some people if you guys added a note in the description pointing people to the correct 3-pin JST jumper wire to be used with these serial LCDs. Two reasons… it’s not clear that the jumper is not included, and you have 3-pin jumpers in your catalog which don’t work with this serial LCD.

    And I realize it shows up in the ‘related products’ list, as do many things I don’t need.

    Thanks.

  • 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.
    http://arduino.cc/playground/Code/SerLCD
    -Thanks

  • Are there any updated drawings of this? I’m trying to design a board and would like to know the positions of the stand-off holes. All of your drawings are only for the “backpack”. Thanks!

  • Has anyone driven the data line at 3.3V? I wouldn’t think it should be a problem…

  • Schematic is no longer up to date it appears, for example JP2 only has 6 pins in the schematic, where it has 10 pins on the board in the pictures.

  • I bought this about a year ago and am finally playing with it now, but I see that the V2 schematic doesn’t match my board’s jumpers. Mine has JP1 a 6-pin and JP2 10-pin, JP3 is 3-pin, just like in the picture above.
    my board is: 2010-4-25
    adm1602U-NSW-FSB/Z
    5.0V

  • can you power these right off an arduino’s 5v rail?

  • I’m confused by the data sheet. It says JP2 numbered from 1 through 6.
    However, on the LCD JP2 is numbered through 10. What are the remaining 4 pins for? (and where can I find the documentation for them?)

  • Hi, guys!
    Is there any estimation when these LCDs will be back in stock again?

  • Does anyone know how to disable text wrap? It is annoying me that I can’t find a command to disable it.

    • Hmm. I just scanned through the code. It appears that the code was written without a command to shut off text wrapping. That is just bad practice. I already wrote my system to avoid the text wrapping, but just so I know, is there a way to update the PIC on this?

  • hi,
    now my lcd will show only 7 char on left side on two lines. Before the lcd works good and views 16 chars on two lines.
    I don’t know what happens to do this.
    Anywhere to help me?
    taler

  • pichenettes:
    A problem that appeared recently is the display losing its “line width” setting, and resulting in text strangely wrapped.

    I’m also having the same problem after accidentally sending the control character ‘|’ followed by ‘\’, ‘-’, ‘/’ to the LCD as I was trying to animate a rotating bar to indicate a busy status.
    As it is right now, text is wrapping at the 12th character but I can still draw in all the viewable area if I specify cursor location.
    Does anyone know how to set the text wrapping?

  • I echo Doogie’s report. It happens that some of the settings supposed to be written to eeprom (baud rate, splash screen) are lost after several power cycles.
    The baud rate problem can be solved by writing at 9600, at startup, a “change baud rate” command to the target rate. At worst, the display is already at the target rate and will misinterpret the command and display garbage, at best, it will be set to the right baud rate.
    Splash screen is more problematic, since there’s no command to systematically enable/disable it - there’s only a “toggle” command, and no way of knowing if it is in the desired state or if it reset itself.
    A problem that appeared recently is the display losing its “line width” setting, and resulting in text strangely wrapped.

  • Does the serial version of the display still have the parallel pins available on it? I would like to use the serial access for the most part, but I might need regular old parallel for one project.

  • Is there anyway to display custom characters on this display through serial or am I missing something in the datasheet?

    • Define ‘custom characters’. ASCII characters, or like the batman symbol.

      • I mean custom character as in if I wanted a pac-man character to go across the screen and eat the text.

        • Yes you can, but you are limited to only 8 custom characters. First define 8 bytes that will hold your custom character, one byte per line (obviously only the lower 5 bits can be used since this is a 5x8 display). Then decide which character (from 0-7) you want to set. Call this “x”. Then do this pseudocode:
          for(i = 0; i < 8; i++)
          lcd.print(0xFE, BYTE); // Send command
          lcd.print(0x40 | (x << 3) | i, BYTE); // Set the CGRAM address
          lcd.print(character_data[i], BYTE); // Set the character
          }
          lcd.print(0x80, BYTE); // Set the cursor back to DDRAM
          To use your custom character, use:
          lcd.print(x, BYTE);

  • Greetings,
    Can someone point me to a mechanical drawing of this? I am working on a case for a project and need the XY coordinates of the holes, viewable area etc..

    • I’m surprised that a mechanical drawing is not included in the data sheet. It’s not too hard to measure but seems like a documentation oversight for anyone who wants to integrate the display into a case.

  • Why does the datasheet on this page say “V2.5” but the schematic say “V2”? If I order the item on this page, am I buying v2 or v2.5?
    I’m asking b/c I’m in a space constrained situation where the serial backpack just isn’t going to fit. The datasheet (2.5) shows a picture with a backpack (soldered on?), but nothing else on this page suggests that any backpack is required to talk with this device thru 3-wire serial.
    Basically, if I can’t accommodate the backpack’s size, is it a mistake to buy this?

    • mikegoelzer: Why does the datasheet on this page say “V2.5” but the schematic say “V2”? If I order the item on this page, am I buying v2 or v2.5?
      I’m asking b/c I’m in a space constrained situation where the serial backpack just isn’t going to fit. The datasheet (2.5) shows a picture with a backpack (soldered on?), but nothing else on this page suggests that any backpack is required to talk with this device thru 3-wire serial.
      Basically, if I can’t accommodate the backpack’s size, is it a mistake to buy this?

      Having ordered this exact LCD myself, I can say that aside from the issue mentioned in my other comment, it looks exactly like the picture. No bulky backpack module, everything is on a single board. Pretty sleek, really.
      Also, the mounting holes are too small for the #4-40 screws that most Sparkfun boards will handle. Just FYI, I found this out about 45 seconds ago…

  • I used a few of these in my IRcombat laser tag game with my arduino duemiloves and love them. I also used the Red and Black. I like the white and black better outdoors and the red/black indoors. I just wish I could figure out how to send the reset code to them. I know how to clear and change brightness in code, but the ctrl+ command boggles my mind. A few of them have to be unplugged and plugged back in to work after power on because of this issue. Not worth replacing them yet.

  • Hi…noob question. how do i send data on the fly via arduino? it only has 1 connection to tx. i tried using the serial monitor to send something, but it doesnt work…im looking for something which i guess is similar to liquidCrystal->SerialDisplay example.
    Thanks for the help.

  • I’m having trouble setting the second line of the splash screen. I can set the first line to whatever I’d like. But no matter what I put on the second line, it isn’t saved when I send in the 0x7C, 0x0A sequence. Just to be clear, I do set both lines before sending the sequence.

    • Nevermind, my own fault. I calculated the wrong offset to the start of the second line when I repositioned the cursor. Although the second line was displayed correctly, the offset was wrong by -32.

  • Hi,
    I notice that the datasheet is lacking environmental specifications for this device. It would nice to have that information. Temperature limits especially.

  • Just got this guy and it’s working great! I put together a sketch for using this with an Arduino: http://github.com/cannikin/arduino_serial_lcd

  • The data stream I tapped into once inadvertently changed the backlight level to something less than 100%, and I noticed that the dimmed display had a noticeable flicker.

  • I have a couple of suggestions for a future version: On the PCB layout, please add a thermal to the ground pin for the user connectors to make it easier to hand solder. Please change the firmware to make it more difficult for a random serial stream to stumble upon a configuration sequence. Maybe pick a non-printable prefix character like ESC instead of the vertical bar. Please make the brightness values more user friendly, like 1, 2, 3, etc. Maybe have an option to make the display scroll when it gets full, instead of resetting the cursor to home and overwriting. All-in-all, a fun little platform. Thanks for using a PIC on this one! I think I may try my hand at writing some new firmware for it. Cheers!

  • I received mine just yesterday and hooked it up. It definitely works, but it occasionally “wigs out” in various ways. I set my own splash screen, which worked fine the first couple of times. The third time I powered it on I got a screen with one line of white blocks and one blank line. It has lost the baud rate setting on me several times. Sometimes I get reverse video garbage characters for some reason.

    • Have you figured out how to get it to work properly when it shows blocks all along the top line? Mine has done this since the day I received this.
      Edit: Got mine fixed. If you checked the soldering on all the terminals, check them again. I also sometimes was getting strings of garbage if I wriggled the terminals on the LCD (I suspect because I was getting a partial connection on the bad terminal). Resoldered and it is working fine now.

  • Wait, so I get the 3 pins for power and control, but whats with all the other pins on the sides? Can it be used to control another LCD besides the one built in?

    • The other pins are used if you want to control the LCD without using the serial standard. There’s some tutorials on how to do that with the arduino below. You have more control over what you can do with it, but it takes up more pins on the arduino. If you want to wire it up this way, don’t spend the money on the serial interface, they have cheaper LCD’s that allow you to do it this way, without the serial.
      http://www.hacktronics.com/Tutorials/arduino-character-lcd-tutorial.html

  • I’m using this with an ioBridge. All the commands I send end up looking like |||SO=“whatever”. It happens with everything I write, including the clear screen commands and such. Any tips?

    • Hi there,
      Hmm, we’d be happy to help. Can you send us an email detailing your setup? If characters aren’t being received/printed correctly, my first suggestion is usually to try other ‘standard’ (2400, 4800, 9600, etc.) baud rates.
      -techsupport at sparkfun dot com

      • It turned out to be the ioBridge that was formatting the serial outputs weird. The Arduino works fine with it.

        • The IO-204 has two ways to output serial - one directly out of a channel and the other is thru a serial smart board. If you see “SO=” then the widget was using the smart board protocol. Using a Serial Out widget under “I/O Channel Widgets”. I hope that helps out.


Related Products