Pages Menu
TwitterFacebook



BANNER1_ALT

Posted by on May 6, 2015 in Pantallas LCD/TFT | 13 comments

LCD Nokia 5110 Arduino

LCD Nokia 5110 Arduino

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.

lcd_nokia

hetpro tutorial

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.

pines

Identificación de pines LCD Nokia 5110


 

 

 

DIAGRAMA DE CONEXIÓN

 

nokia 5110 con arduino

Diagrama de conexión LCD Nokia 5110 con Arduino

 

 

 

 

 

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: LCD5110_Graph

 

#include <LCD5110_Graph.h>

//      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


<pre>myGLCD.print("TUTORIAL",14,20);

Mostrar texto en pantalla dando las coordenadas en el eje X y Y(“texto a mostrar”,x,y)

 


<pre> 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

13 Comments

  1. Solo me gustaria corregir unos pequeños detalles en el “Codigo” para poder hacer fuincionar correctamente el LCD.

    a) El PINOUT deberia de quedar de la siguiente manera


    LCD5110 myGLCD(3,4,5,7,6);

    Pues encontre la siguiente tabla que nos muestra que el orden del LCD es (RST,CE,DC,Din,CLK,Vcc,BL,GND) y no (SCK,MOSI,DC,RST,CS) como marca la publicacion arriba, unicamente es invertir el RST y CE, ya sean en los cables o en el IDE como lo marque yo.


    RST = Reset
    CE = Chip Select (not 100% sure)
    DC = DI = A0 = Data / Command select
    Din = MOSI = Serial Data In
    Clk = SCK = Clock

    Referencias:
    Problem with non standard markings on a 5110 lcd?

    • Gracias por tu comentario Rodrigo, ya se corrigio el error en el codigo saludos

  2. 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.

  3. 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

  4. 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

  5. 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

  6. #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.

  7. 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

Post a Reply

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *