La pantalla Nokia 5110 es ideal para aplicaciones básicas, con el controlador PCD8544 ideal para ser controlado por microcontroladores o tarjetas Arduino.
La pantalla es gráfica, esto es que puedes desplegar tanto caracteres como figuras o gráficos.

ESPECIFICACIONES
- Controlador: PCD8544
- Protocolo de control: SPI
- Resolución: 84×48
- Iluminación: Azul
- Pixeles: Negro
- Tamaño: 1.6″
En este tutorial se mostrara como utilizar las funciones básicas de la pantalla Nokia 5110 para mostrar texto en asi como tamaños de fuente.
MATERIAL A UTILIZAR
- Arduino UNO
- Cables macho-hembra
- LCD Nokia 5110
En la tienda virtual de HeTPro puedes encontrar todos los manteriales: hetpro-store.com
Los controladores y software Arduino lo puedes encontrar en: www.arduino.cc
IDENTIFICACIÓN DE PINES LCD NOKIA 5110
El protocolo de control para este display es por medio de SPI, lo cual hace más fácil su comunicación entre este y el Arduino UNO dejando más salidas disponibles a diferencia de las pantallas convencionales de 16×2.

DIAGRAMA DE CONEXIÓN

CODIGO DE EJEMPLO
Para hacer uso del LCD Nokia 5110 es necesario importar una nueva librería llamada LCD5110_Graph, la puedes descargar del siguiente link. Una vez añadida al compilador ingresa el código que está a continuación. Este programa muestra los tipos de fuente, tamaños de números, como hacer líneas y círculos, así como invertir los pixeles.
Descarga de libreria:
#include
// CLK – Pin 3
// Din – Pin 4
// DC – Pin 5
// CE – Pin 6
// RST – Pin 7
LCD5110 myGLCD(3,4,5,7,6);
extern unsigned char MediumNumbers[];
extern unsigned char BigNumbers[];
extern unsigned char SmallFont[];
extern unsigned char TinyFont[];
int contrast = 60;
int inv=0;
void setup()
{
Serial.begin(9600);
myGLCD.InitLCD(contrast);
}
void loop()
{
myGLCD.setFont(SmallFont);
myGLCD.print(«HetPro»,CENTER,5);
myGLCD.print(«TUTORIAL»,14,20);
myGLCD.print(«LCD NOKIA «,10,30);
myGLCD.print(«5110 «,CENTER,40);
myGLCD.update();
delay(1000);
myGLCD.clrScr();
delay(1000);
myGLCD.setFont(TinyFont);
myGLCD.print(«HETPRO»,0,10);
myGLCD.print(«hetpro»,0,30);
myGLCD.setFont(SmallFont);
myGLCD.print(«HETPRO»,45,10);
myGLCD.print(«hetpro»,45,30);
myGLCD.update();
delay(1000);
myGLCD.clrScr();
myGLCD.setFont(BigNumbers);
myGLCD.print(«123»,0,0);
myGLCD.setFont(MediumNumbers);
myGLCD.print(«123»,40,30);
myGLCD.update();
delay(1000);
myGLCD.clrScr();
myGLCD.drawRoundRect(0,0,83,47);
myGLCD.drawLine(0,5,83,5);
myGLCD.drawLine(0,20,83,20);
myGLCD.drawLine(0,35,83,35);
myGLCD.update();
delay(1000);
myGLCD.clrScr();
myGLCD.drawCircle(42,24,10);
myGLCD.drawCircle(42,24,20);
myGLCD.update();
delay(1000);
myGLCD.clrScr();
myGLCD.setFont(SmallFont);
myGLCD.print(«VISITA»,CENTER,10);
myGLCD.setFont(TinyFont);
myGLCD.print(«hetpro-store.com»,10,30);
myGLCD.update();
delay(2000);
myGLCD.clrScr();
inv=inv+1;
if(inv==1)
{
myGLCD.invert(true);
myGLCD.update();
}
if(inv==2)
{
myGLCD.invert(false);
myGLCD.update();
inv=0;
}
myGLCD.clrScr();
}
DETALLES DEL PROGRAMA
LCD5110 myGLCD(3,4,5,6,7);
Se declara los pines para la comunicacion del protocolo SPI en el siguiente orden (SCK,MOSI,DC,RST,CS)
myGLCD.InitLCD(contrast);
Se define el valor del contraste en este caso «contrast» lo declaramos con un valor de 60, pero lo puedes ajustar con valores entre 0 y 127
myGLCD.setFont(SmallFont);
Se declara el tipo de fuente ya sea Smallfont o TinyFont
myGLCD.print("TUTORIAL",14,20);
Mostrar texto en pantalla dando las coordenadas en el eje X y Y(«texto a mostrar»,x,y)
myGLCD.setFont(BigNumbers);
Define el tamaño de los números BigNumbers o MediumNumbers
myGLCD.drawRoundRect(0,0,83,47);
Dibuja un rectángulo con bornes redondos declarando la posición inicial y final del recuadro (X inicial,Y inicial, X final, Y final)
myGLCD.drawCircle(42,24,10);
Dibuja un circulo declarando la posición y diametro (X, Y, diametro)
myGLCD.drawLine(0,20,83,20);
Dibuja una linea declarando la posición inicial y final (X inicial,Y inicial, X final, Y final)
myGLCD.invert(true);
Invierte los pixeles del LDC en «true» es activado
myGLCD.clrScr();
Limpiar pantalla
*NOTA IMPORTANTE
Después de declarar todo lo que se quiera mostrar en pantalla es necesario agregar el siguiente comando, ya que es el que manda la instruccion para visualizarlo en la pantalla
myGLCD.update();
La carpeta de la librería contiene el manual de estas y otras funciones para controlar la pantalla Nokia 5110
Gracias por tu comentario Rodrigo, ya se corrigio el error en el codigo saludos
Este modelo de pantalla ya tiene el ic de adaptación a 5 volts? ya que el PCD8544 que gestiona la pantalla trabaja a 3.3v.
Hola que tal, si funciona tambien a 5V. Saludos
hola amigo, quisiera visualizar un dato de un adc en la pantalla pero no me deja con el
myGLCD.print(‘adc0’,CENTER,10);
me dice q el «adc0» es entero y no se puede poner en char
Que tal Francisco prueba con esta linea
myGLCD.printNumF(adc0,1,CENTER,10)
donde:
adc0: donde almacenas la lectura del ADC
1: la cantidad de decimales que requieras
CENTER,10: la posicion de la pantalla
Saludos
myGLCD.print(«I1 =»+String(FIrms1)+» A», 0, 12); –> cuando el dato es diferente de cadena de caracteres tenes q convertirlo
Hola, yo solo necesito desplegar un timer
MM:SS
ej 07:59
a todo lo ancho posible
habra algun ejemplo para realizar
Gracias
Hola que tal Gris, solo pon en la instrucción myGLCD.setFont(TinyFont); el tipo de fuente que requieres, seria myGLCD.setFont(BigNumbers); por ejemplo. Y solo pon myGLCD.print(«Texto»,PosiciónX,PosiciónY); me avisas como te fue. Saludos
Gracias Héctor!
Si funcionó si pongo BigNumbers, pero solo si pongo números fijos
no los del timer, es decir; «07» donde va el texto
pero como hago para traducir decenas de minuto y unidades de min
a chr para que entre dentro de las comillas » » para desplegar?
y podrias explicar como se genera el bitmap ya que estoy buscando el modo de hacer los digitos a todo lo que da la pantalla en alto y ancho posible? Gracias, saludos
#include
LCD5110 myGLCD(8, 9, 10, 11, 12);
extern unsigned char SmallFont[];
int contrast = 63;
long distancia;
long tiempo;
void setup() {
Serial.begin(9600);
myGLCD.InitLCD(contrast);
pinMode(7, OUTPUT);
pinMode(6, INPUT);
}
void loop() {
digitalWrite(7, LOW);
delayMicroseconds(5);
digitalWrite(7, HIGH);
delayMicroseconds(10);
tiempo = pulseIn(6, HIGH);
distancia = int(0.017 * tiempo);
myGLCD.setFont(SmallFont);
Serial.println(«Distancia:»);
myGLCD.print(«Distancia:», 5, 5);
Serial.println(distancia); —-> mi problema
myGLCD.update();
Serial.println(«cm»);
myGLCD.print(«cm», 5, 15);
myGLCD.update();
delay(5000);
}
// Serial.println(distancia); —-> mi problema
quisiera que me ayuden, mi problema es que tengo una pantalla nokia lcd5110 y quiero que me muestre la distancia en mi pantalla lo cual se me hace un poco dificil lograrlo, espero que me puedas ayudar estoy configurando un sensor de aproximacion con pantalla lcd 5110, te he puesto mi configuracion apoyame por favor.
gracias
Hola que tal Cesar, ya para modificar códigos especiales usualmente cobramos, si te interesa una cotización puedes mandar un correo a hector.torres@hetpro.com.mx si tienes preguntas especificas con gusto te atendemos por este medio, también quizás alguien más tenga una respuesta por aquí :). Saludos.
Hola, muy bueno, me ayudo a entender muchas cosas, lo que si necesitaría saber si esas son las únicas funciones o tiene mas, porque necesito mostrar el nivel de un tanque de agua y no se como graficarlo. Desde ya muchas gracias ñ.
Hola, gracias por tus comentarios, de momento no sabemos si se podra realizar mas funciones con esta LCD pero puedes utilizar las pantallas nextion que son ideales para esto