Description: The Nokia 5110 is a basic graphic LCD screen for lots of applications. It was originally intended for as a cell phone screen. This one is mounted on an easy to solder PCB.
It uses the PCD8544 controller, which is the same used in the Nokia 3310 LCD. The PCD8544 is a low power CMOS LCD controller/driver, designed to drive a graphic display of 48 rows and 84 columns. All necessary functions for the display are provided in a single chip, including on-chip generation of LCD supply and bias voltages, resulting in a minimum of external components and low power consumption. The PCD8544 interfaces to microcontrollers through a serial bus interface.
Note: There may be small blemishes on these screens as they are surplus.
Note: Your screen may or may not have a diode on the PCB. It does not affect performance and will vary depending on our shipment.
Based on 12 ratings:
1 of 1 found this helpful:
It is a small graphical lcd with backlight on a sturdy pcb with probably one of the easiest to use controller ever at a ludicrously cheap price! what else could you want. if you are new to the joy of electronics and want to try coding for graphical screens this is the best starting point i can think of!
1 of 1 found this helpful:
We ran it at 5V and I think it might have blown our LCD. We were having trouble getting it to display anything, and when it finally did, it was very dim. Then eventually it displayed nothing at all.
Tried another LCD (same model), running at 3.3 this time, and it worked great!
So, be careful running it at 5 V.
Also, listen to the other members who recommended changing the contrast setting in initialization. You might need to play around with it, but you will get there eventually.
3 of 3 found this helpful:
There are a few things you need be aware of here.
Dirty connections: I have found that one of my units would randomly stop working or flicker, or alternate between being too dim or being too dark, and this was clearly a physical problem (pressing on the board made the problem change). The problem, as I discovered, was dirty contacts on the board and screen itself. I unclipped the board and found dust particles on the contacts. Cleaned both sets of contacts with cotton swabs and rubbing alcohol, and the problem was resolved.
Contrast setting: I think most of the difficulties people are having here stem from trying random hardcoded contrast settings. The proper way to do this is to allow for adjustable contrast settings by the end user. The acceptable range is between 0x80 (being a contrast value of 0) and 0xFF (being a contrast value of 127). The ideal contrast setting will change with ambient temperature. This is why I suggest making your contrast setting changeable on-the-fly, through your microcontroller software. Whether by a trimmer, or buttons, or whatever. For typical room temperature, a good value is likely to be around 0xBF. That’s where mine is at. If it’s too dark, decrease by increments of 1 until you find the ideal value, if too light increase by increments of 1. I have buttons on my device that do this and I save the user-selected contrast setting to EEPROM. The code for changing the contrast on the fly is easy. Set the SCE pin to low to enable the serial interface. Set the D/C pin to low (which tells the LCD you are sending commands, not pixel data), then send byte 0x21 which enables the extended instruction set, then send the contrast byte, then send byte 0x20 which returns to the basic instruction set. You do not need to reset the panel or anything like that.
Hardware SPI: use it. It makes the display so much more responsive. For this, connect the MOSI line to the microcontroller’s MOSI pin, and the SCK line to the microcontroller’s SCK pin. Then, avoid using the MISO and SS lines of the microcontroller unless you know what you’re doing. On a ATMega328 chip, as found in Arduino UNO, Pro, and Pro mini, the MOSI and SCK lines are digital pins 11 and 13, respectively. Then you want your library to communicate with the LCD using SPI. Easy to do. The LCD’s speed is 4Mhz, data is sent most significant bit first (MSBFIRST), the data clock is idle when low (Clock Polarity/CPOL = 0), and samples are taken on the rising/positive edge of clock pulses (Clock Phase/CPHA = 0). So for Arduino SPI, that means using SPI_MODE0. It’s all downhill from there and you can chain multiple devices to SPI. It’s wonderful.
I have a working library for this LCD that uses hardware SPI that I’m pretty happy with, and plan to release under MIT license on github sooner or later. If there is demand I can rush that process.
Definitely run this LCD on 3.3V. Don’t even think of 5V. Not even a little bit. You should be able to put a voltage dropping resistor on the Vin pin, though, if you don’t have a 3.3V regulated output.
1 of 1 found this helpful:
I can get the backlight to work but nothing appears on the display itself. I don’t know if I have the right library installed. I have checked my wiring several times and it appears to be wired correctly. Don’t know what could be wrong, any suggestions would be helpful, thanks in advance. Graig
Be sure to check out the hook up guide – https://learn.sparkfun.com/tutorials/graphic-lcd-hookup-guide
1 of 6 found this helpful:
The weather here has been so good that I’ve spent time working in the garden rather than working with electronic.
It’s SPI (2 wire no SDO from LCD). Works well with Microchip PIC16F1454.
I unfortunately was not as lucky as the other reviewers. The first screen I received was usable but defective (bad row). The great people at SparkFun send me a replacement no questions asked.
Unfortunately the second screen would not even turn on; The SparkFun Squad wanted to help me debug the issue, but I decided against it since it was pretty obvious that the screen was dead and I didn’t want to spend time fiddling around with it. The one with the bad row will do just fine for now.
This does what it says it does for a cheaper price than many other lcd’s. It is also very simple to use, so you can get started right away.
It is fairly simple to do either graphics or text on by simply using/modifying the example code. There is example code on-line to do a larger 7-segment display if you need bigger numbers. All-in-all very handy to apply to a project.
Works as expected!