This is the latest evolution of our serial LCD. Included on a single board is a 20x4 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.
This LCD makes for a great gift, because it can be used for so many different projects! For more gift ideas check out the SparkFun Gift Guide!
Whether it's for assembling a kit, hacking an enclosure, or creating your own parts; the DIY skill is all about knowing how to use tools and the techniques associated with them.
Skill Level: Noob - Basic assembly is required. You may need to provide your own basic tools like a screwdriver, hammer or scissors. Power tools or custom parts are not required. Instructions will be included and easy to follow. Sewing may be required, but only with included patterns.
See all skill levels
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.
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
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.
Skill Level: Competent - You will be required to reference a datasheet or schematic to know how to use a component. Your knowledge of a datasheet will only require basic features like power requirements, pinouts, or communications type. Also, you may need a power supply that?s greater than 12V or more than 1A worth of current.
See all skill levels
Based on 19 ratings:
1 of 1 found this helpful:
It works as I expected it to. There are wires on the one pictured, probably so “Hello World!” could be displayed, but mine did not come with wires so I had to solder some on.
2 of 2 found this helpful:
This is one of the those products that works as expected right out of the box. It was really easy to hook up a 9600 baud UART to it and start printing characters.
Unfortunately its just as easy to break. Because it has no I/O lockout on boot, it saves all settings on EEPROM between boots and because it is controlled using embedded control characters rather than either a dedicated control line, it will often read garbage characters during connection/disconnection and power cycles as control sequences and do everything from disabling the backlighting to changing baud rate. And there is no way (no obvious documented way that I can tell) to factory-reset it EXCEPT by using the UART interface, which is dodgy at best. Good luck ever recovering this thing once it reaches the tell-tale solid black 1st and 3rd lines.
This is an issue with which we are familiar. One of our techs wrote up the quick fix in the comments of the Quick Start Guide. Have a look here, it should help!
1 of 1 found this helpful:
I have owned one of these displays for about 5 months now I haven’t had any problems since I completed writing my own object to control this display. I had several problems with my own code initially that resulted in dark first and third lines or random characters like the other reviewers but I was always able to reset my serial connection speed to 9600 baud using the instructions provided with it. Now that all of my control functions are working properly it has been displaying exactly what it is supposed to
3 of 5 found this helpful:
I’ve bought about a over a dozen of these. All but three have gone bad. Symptoms are an all black screen or black lines across the first and third lines.
Hi there, So sorry to hear that you are running into this issue. It is common that if you leave these units connected to the UART, the programming of the control processor will scramble the LCD processor code. This is recoverable, however, this is not a defect of the unit. The best way to avoid causing this issue is to use a software serial setup to move your LCD communication lines to a different set of IO pins other than the hardware UART lines. If you find that you have put your screen into this state contact our tech support team and they can help you with directions on how to recover the module.
1 of 2 found this helpful:
I agree with the previous reviewer on the quality of these. I’ve only run them from Arduino’s and after awhile the serial input program seems to fail. It now turns on and shows the Sparkfun splash screen but any serial input shows vertical lines. If I unplug the screen and hook up another Sparkfun serial screen it shows the proper info. While it worked I really enjoyed the serial function.
I found this display straight forward and easy to work with. And no additional libraries to bloat your code. After a little study of the info available thru Sparkfun, the darn thing worked as intended the very first time. Spend a little time with the spec sheet, you’ll be way ahead. Nice display.
Very simple to use with only 3 cables
I thought I was going to be immune from the bricking issue already described (1st and 3rd lines all blocks) by using Serial2 on the Mega.
After months of reliable operation using the basic clear screen, move cursor, etc. commands, I thought I would reprogram the splash screen.
That’s when the problems began and I bricked the display. I attempted the recovery procedure, but since I was not getting the default splash screen I knew there was a little chance of successful recovery.
If I were to do it again, I would probably get the standalone backpack board so that it can be trashed if bricked, while keeping the LCD.
Suggestion… Change the firmware and expose some header pins or a switch so that recovery can happen under almost any conditions.
I bought three of these displays. I got two of them to work. One of the displays would only give me gibberish on the display. I tried using different baud rates thinking that the default was changed. I tried resetting the baud rate. Nothing really worked. So I am sending that one back. The other two though work great.
In the Arduino documentation for connecting to the display, they allude that you can use their SEN-08733 JST 3 pin connector with the LCD. You can as a matter of fact, but you need to pay attention to the wiring. Normally +5vdc is red and power supply return is black while yellow is your serial communication line. This is how the 16x2 serial LCD displays are set up. Well, pins one and three are swapped on this display. So you can either swap the wires around on the connector or use red as your communication wire and yellow as your +5vdc wire. You just need to pay attention to how you hook it up.
Also, the “SparkFun SerLCD v2.5 Application Note” does not have clarity on the cursor position addresses. It just indicates that the addresses are 0x80+n. That is sort of true but the addressing is not contiguous as one might assume. Therefore you need to pay attention to the “SerLCD v2.5” datasheet which indicates the “viewable” cursor position for a 20x4 display in it (page 3).
Other than that, these guys are fun to program and play with. I set the baud rate to 38.4kb so I avoid program slow downs when displaying data and messages. It works very much the same as the 16x2 serial display (with exception to the wiring of the power and signal lines and the extra addresses for more cursor positions).
It is very simple to program once your used to generally programming character based LCD’s. They are lots of fun.
The board works as expected and the hardware interface is easy to accomplish. The software is intuitive.
Pretty simple to operate. Great tutorial to go with it.
Been working on a project and the night before I needed it, something happened and it went into an unknown state. All it does is display two lines with black boxes. All attempts at unbricking it failed. I was left with either ordering a new one or buying a pic programmer to reflash it. I only chose to order a new one because I’m in such a rush to get this project completed and I don’t want another learning curve at flashing it.
We’ve heard that a lot. We’re working on a new layout for one that does not have the same issues, but as a general rule of thumb you should always be careful about what you have directly connected to hardware serial lines while uploading to the Arduino. Have you contacted our technical support department at firstname.lastname@example.org for help with the LCD in an unknown state?
This is really serious for me. The display was being used in a system that a user was travelling with. It has been working fine for weeks, but it seems that there is still a chance for these things to pick up garbage and freak out, even if it is not on the hardware serial lines. This failure was embarrassing, I will need to figure out a work-around, hopefully less of a kludge than only powering it up after the micro. Even doing that isn’t satisfying, because a fix for a relatively rare failure is hard to verify. I’d appreciate any suggestions!
Edit: I am going to call tech support in a few minutes but, for me, the issue is not whether I can recover this particular board. What I must do is put in place some kind of robust fix/hack to prevent this from happening again in the field. I can deal with SMT soldering, so if there’s a tested PCB fix in the works, I can likely implement it with a rework until it becomes available. Also, I don’t think it’s correct to suggest that Software Serial somehow was the cause of the LCD getting bricked.
Edit 2: I spoke with tech support, and they could neither give me any suggestions for work-arounds or re-works nor did they have a date for a replacement board. I’m experimenting with holding VPP low until the Arduino is booted and software serial is up and running.
Edit 3: It seems that the PIC is configured with VPP (MCLR) disabled, so controlling during power-up isn’t as easy as I hoped. That still leaves the problem of handling power-down crud.
Just to be clear, this mostly works fine, but it is IMHO too fragile for applications where you really want it to keep working. In the situation I have, power is supplied from a regulated wall wart. When that is plugged into the Arduino board there are some messy transients flying around, (and also when it is unplugged). If I simply plug and unplug a bunch of times I can pretty reliably get it somewhat scrambled (splash screen messed up). If I get more abusive with deliberately bad insertions of the plug I can very easily get it scrambled. Obviously, I can spend time tweaking and adding electronics to handle these situations and so improve the situation, but I think it will never be robust enough to be worth the effort. Sadly, I am going to consider them a loss of time and money and am planning to replace them with another display module. If anyone has suggestions for a fix, I’m still all ears, but I can’t spend more time on this…
Sorry to hear about the trouble with software serial bricking the LCD. Have you contacted our technical support department at Techsupport@sparkfun.com - they’re the best people to contact to get help with issues like these.
This unit makes it easy to add a basic display to my projects. I like the ease of using the serial interface as it makes connection to a controller very simple.
Agree with others who say it is too fragile to be practical. When it works, it is like any other serial 4X20 display; although, all but one command requires two writes. Fortunately, that one command is 0x12, which you will learn to use to unbrick it.
When using it to develop code, the slightest error will give garbage. More often than not, correcting that error or commenting it out doesn’t get you back to a known state. It stays garbage until you rebuild/unbrick it from scratch. It is sad that that “bricking” has been a known problem for more than 10 years and has not been fixed.
I bought the SF display because it will operate at 38400 baud, and it will do that. But keeping code ready to fix it when it goes off the rails is an inconvenience at best, and of course, that code is not left in-line. As one of the other reviewers said, you have to bring it into the shop, fix it, then return it.
My plan for the SparkFun 20x4 serial LCD is to keep it and write new code for it, if I get time. Unfortunately, SparkFun cannot provide a schematic for it, so you are left guessing about some pins. There is a schematic of a backpack version on the web. While that version is generally accurate so far as the number of active components, simple probing with a multimeter will show that connections between the 16F88, LCD, and transistor on this display are different.
The display also injects a pretty substantial pulse at about 83 Hz into your power line. Perhaps that is from the backlight supply. Be sure to use ample decoupling.
Edit: 06/03/18 Developed new software that seems robust. That seemed to be the main problem. Also changed to a PIC16F1827 as I was more familiar with that chip, and it had additional capabilities. The 16F1827 and 16F88 are pin compatible. Changed to a 16 MHz crystal for a better selection of faster baud rates. Here is a link to the finished project with code: https://forum.allaboutcircuits.com/threads/fixing-the-sparkfun-4x20-lcd-display.148893/ One could keep the original crystal and simply change the baud settings and delays to accommodate it.
Easy to hook up and reasonable quality and price. Would like more support in terms of programming language to perform various tasks. I’m a Picaxe fan and there is no help specific to Picaxe. But I was able to fumble around and figure it out.
Would like to see someone like myself write up a support document which uses “English” to explain various programming terms. Just a thought.
Hi, Thank you for your inquiry. We are on the point of installing the LCD displays and, therefore, cannot give you any feedback yet. Do you sell the same LCD displays 20 x 4 LCD black on white 5 volts? Please send me the part number. Best regards Juergen
Hi Juergen, I’m afraid we don’t currently offer a 20x4, black on white, 5V LCD Display.
This product is ALMOST the greatest thing ever…Almost.
For me, this is not simply a serial display, this is a ready made breakout board for the PIC16F88…. BUT NO.
If only the designer had broken out the UNUSED TX Pin…. WHY WHY WHY WHY was this pin left “NC” (as per the diagram)…its already there, you have broken out every other pin…. SF Engineer: “lets not break out the TX pin to mess with them”…. I swear there must be a conspiracy behind this. So: 4 stars…
Other than that, this board works just fine, and was exactly what I needed. I wrote a brief serial “driver” to control it because I did not like the user interface with the special characters, commands and cursor positioning and other things. http://www.ccsinfo.com/forum/viewtopic.php?t=55546
….that TX Pin though.