LCD’s Gráficos (PCD8544)

Utilidades con la plataforma Arduino.
Introducción.

Como me diría a mi mismo, «Bienvenida la novedad que, nos brinda la posibilidad de aprender nuevas técnicas» y lo ratifico. Ya que, esta es la página de inicio sobre los LCD gráficos, donde aprender, algunas cosas sobre, la forma de presentar datos de una forma más profesional, si cabe. Eso espero.

foto009p

Actualmente tenemos a nuestro alcance, en el mercado una serie de componentes que hasta no hace mucho tiempo, eran dispositivos con los que especular. Sin embargo, las tecnologías en su imparable avance, han puesto a nuestro alcance entre otras, las pantallas graficas LCD que pueden sernos de gran utilidad, para nuestros proyectos.

Otro sitio, a parte del comercio, donde podemos localizar alguna de estas pantallas gráficas, puede ser, procedente de un viejo teléfono móvil o celular. En concreto, he podido conseguir desguazar una de estas LCD, perteneciente a un Nokia3310. Tal vez, usted tenga un móvil de este tipo o quizás de un familiar o amigo y con un poco de cuidado y mucha paciencia, acabará obteniendo un LCD en condiciones de hacerlo trabajar.

No es fácil, pero puede intentarlo, si yo lo hice, usted, también puede. La verdad es que lo más sencillo es aprovechar la pantalla y poco más, ya que, la tarjeta o placa, es bastante compleja de reciclar. Algunos modelos, vienen con una cinta de conexión plana, este tipo, es más sencillo de aprovechar, ya que si llevamos cuidado, al separar la LCD con la cinta de la placa, podremos soldar con facilidad a nuestro proyecto.

Han quedado atrás, los tiempos en que mostrábamos los datos con fríos ‘números’, no teníamos medios con los que mostrar de forma gráfica los datos. Pero esto, últimamente ha cambiado, ahora, podremos mostrar los gráficos que mejor expresen los datos. Por ese motivo, utilizaremos ejemplos de utilidades, las cuales se apoyan en este tipo de LCD, para mostrar distintos datos y gráficos, debido a que con esta pantalla, es bastante fácil, controlar vía puerto serie, los datos que necesitamos enviarle a la LCD.

Si usted se decide a adquirir un LCD, puede encontrar una gran variedad de suministradores, procure asegurarse que, la que adquiere tiene garantías, ya se que son económicas, sin embargo, no debe aceptar productos sin garantías. En la plataforma de Arduino, puede encontrar las librerías que soportan este tipo de pantallas LCD.

nokia_3311

La pantalla LCD.

En este tutorial, veremos cómo proceder para hacer que nuestra LCD, funcione y podamos presentar los datos por medio de esta pequeña pantalla. La pantalla es monocromática de 84×48 píxeles y ha retroiluminación LED para una visibilidad bajo la luz. Como ya he mencionado, la podemos adquirir en los comercios del ramos o por LCD Nokia en eBay o en Sparkfun, los podemos encontrar en una gama de posibilidades y muy económicos, o desguazando un celular viejo. Yo, voy a apoyarme en una muestra que dispongo de un viejo móvil Nokia 3310 que, andaba perdido por el cajón. Algunos ejemplos, los presentaré con una pantalla Nokia 5110 que adquirí.

nokia3310-lcdp

El lector, puede utilizar cualquier otro LCD que tenga disponible un controlador PCD8544, son muchos los modelos disponibles, naturalmente deberá realizar ciertos cambios, dependiendo del modelo para adaptar las E/S, al que vaya a utilizar.

Pero!. Ni se le ocurra conectar el LCD directamente a un microcontrolador de 5V como el Arduino. El LCD es un dispositivo de 3,3V. Sin embargo, sí podremos conectarlo directamente a dispositivos como el Arduino Pro y Pro Mini 3,3V.

nokia5110_01p

La pantalla de los teléfonos celulares Nokia 3310 y el 5110, utiliza el circuito controlador PCD8544 de Philips cuyas características se pueden estudiar en el siguiente enlace. Este circuito está diseñado para funcionar sólo a 3,3V y tienen niveles de comunicación 3V, así que, para los microcontroladores de 5V como Arduino, se requiere un desplazador de nivel lógico (de lo contrario se puede dañar fácilmente la pantalla), este tema se verá mas adelante.

Sistema de coordenadas.

Este tipo de pantallas monocromáticas tienen una densidad de 84×48 píxeles que cubren la totalidad de la misma. Pixel. Es (acrónimo del inglés picture element), un ‘elemento de imagen’, es la menor unidad homogénea en color que forma parte de una imagen digital, ya sea esta una fotografía, un fotograma de vídeo o un gráfico. Los bloques que componen una imagen digital, son tratados por sus coordenadas horizontal (X) y verticales (Y), justo lo contrario al sistema de coordenadas cartesianas estándar, de las matemáticas, pero, es una práctica establecida en muchos sistemas gráficos por ordenador desde los principios de los escáneres gráficos que, trabajaban de arriba a abajo.

coordsys-

Además, a diferencia del sistema de coordenadas cartesianas matemática, aquí los puntos, tienen dimensión que, siempre son un píxel entero, «lleno» con ancho y alto. Las coordenadas, siempre se expresan en unidades de píxel, no existe una escala implícita a una medida del mundo real como milímetros o en pulgadas, y el tamaño de un gráfico que se muestra será una función de la distancia entre puntos que la pantalla específica o densidad de píxeles.

Para aclarar la semántica que se sigue sobre pixeles en las pantallas monocromáticas (de un solo color), los colores siempre se especifican simplemente como 1 (set, encendido) o 0 (claro, apagado), es específicos para el tipo de pantalla. Digamos que, por lo general, en referencia con una pantalla de LEDs, un pixel «set», se ilumina mientras que con una pantalla LCD reflectante, un píxel «set» es generalmente oscuro.

Características.

Este LCD que, utilizaban para el teléfono móvil Nokia 5110 o el 3310 (con unas pequeñas diferencias entre sí que, veremos más adelante). Todas las funciones necesarias para la visualización se proporcionan en un solo chip, incluyendo la generación de on-chip de alimentación LCD y tensiones de polarización, lo que resulta en un mínimo de componentes externos y bajo consumo de energía. Tiene muchas cosas interesantes este LCD: precio bajo, de fácil interfaz a través del puerto SPI, puede soportar gráficos y texto y consume poca intensidad sobre 200uA. Como se aprecia en las imágenes anteriores, el área activa de 30x22mm, permite una exposición bastante decente de los datos.

asignaciones_pines

Utiliza la interfaz de comunicaciones serie, con el procesador principal, número de líneas de la señal de interfaz muy reducido, sólo 8 líneas de señales, incluyendo la alimentación y GND. Soporta diferentes tipos de MCU, tales como el Arduino, AVR, del PIC, STM32, STC MSP430 y otros. Velocidad de transferencia de hasta 4 Mbps, la velocidad máxima que puede escribir datos en la pantalla, sin tiempo de espera.

El oscilador en el chip, proporciona la señal de reloj para el sistema de visualización. No se requieren componentes externos y la entrada de OSC, debe estar conectada a VDD. Una señal de reloj externa, si se utiliza, está conectada a esta entrada. En el caso de que usted se decida a utilizar una LCD de un viejo móvil, le voy a dar unos consejos: El peine de conexionado, puede ser de elastómero o por contactos metálicos, en ambos casos, tiene un espaciado de 1’15mm, fíjese en la posición de las patillas que, nos permiten dos opciones:

  • 1) Trazar unas pistas sobre la placa PCB, si es el caso, con el ancho de 1,15mm y una longitud de 1’00cm. o
  • 2) Soldar directamente (ponga atención), al punto de contacto, con sumo cuidado, los cables muy finos, para su conexión.

El proyecto que decida realizar, puede funcionar con una tensión de alimentación máxima de 4’8V, la podemos obtener de baterías recargables (4×1’2V), que convierte su manejo en independiente y fácil.

Nota: NO USE DIRECTAMENTE PILAS ALCALINAS DE 1’5V (4×1’5V=6V), quemará el LCD y el microcontrolador, salvo que añada un regulador LF33CV o similar, para reducir la tensión a 3’3V. Esta que sigue, es una prueba de mi experiencia.

nokia3311_14p

 ASIGNACIÓN DE PINES ENTRE UN LCD 3310 Y UN LCD 5110.

En la tabla de abajo, hago una comparativa entre un conector de 8pines, con los 8 cables procedentes del Nokia3310 (al que se han soldado con mucho cuidado) y las 8 salidas del Nokia5110.

tabla1

Sencillo desplazador de nivel lógico.

Si usted está utilizando, un sistema Arduino Pro (microcontrolador 3,3V), puede omitir el desplazador de nivel. Como venimos repitiendo el LCD funciona a 3,3V por lo que tendrá que utilizar un chip para cambiar de nivel para trabajar con un microcontrolador de 5V.

bufferMuchos dispositivos que se pueden utilizar con un Arduino, requieren una fuente de alimentación de 3,3V. Este, es también el caso del Nokia 5110 o 3310. Con la ayuda del conocido circuito CD4050, podemos desplazar el nivel de tensión. Este circuito integrado de 16 patillas, tiene la particularidad en su alimentación que, se corresponde con: el VCC está en la patilla 1 y el GND en la patilla 8. Consta de 6 amplificadores no-inversores, como el mostrado. De modo que la mejor y más económica forma de trabajar con el LCD es, utilizar un simple cambiador de nivel.

pines4050El Nokia 5110 es una pantalla LCD gráfica básica para muchas aplicaciones. Gracias a la fijación interna de la PCD8544 podemos utilizar un simple cambiador de nivel, con cuatro resistencias limitadoras de corriente de 10k, que pueden hacer el trabajo. Cuando una línea de control LCD es alta, la corriente a través del resistor 10kΩ es de sólo 40uA, por lo que, es inofensivo. Sin estas resistencias, pueden aparecer grietas en la pantalla LCD. El esquemático que sigue, muestra el conexionado de la pantalla junto al desplazador de nivel CD4050.

esquema_nivel_logicoEn el supuesto de adquirir una pantalla Nokia 5110 con el PCD8544, decida que lado superior/inferior soldar la tira de 8 pines que suele traer. Una vez decidido, para evitar deformaciones al soldar la tira, inserte la tira de 8 pines, en un protoboard y suelde la tira de 8 pines al lado elegido. Los números de los pines vienen indicados en la propia PCB.

nokia3310_arduino_nivelLa pantalla de un nokia3310 de reciclaje, tiene 8 pines, el pin 1 está situado a la izquierda (vista, desde detrás de la pantalla), con cables diminutos se podrían soldar directamente a los pines metálicos. Recomendación: para mayor seguridad, diseñe una placa de circuito (con pistas de 1’15mm a un conector de 2’5mm) por su cuenta debido a que la placa de circuito apenas puede ser reciclada.

También, puede realizar un convertidor de paso de 1,15mm a 2.5mm con una pequeña PCB, como se puede ver arriba, observe que el PCB, se ha trazado en espejo, de modo que lo puede girar sin perjuicio para su uso. Para hacer más fácil el conexionado de la pantalla al circuito impreso o PCB, he creado un conector conversor de paso de 1’15mm a 2’5mm que es el estándar, lo puede descargar desde aquí.

Una aplicación sencilla.

El controlador del PCD8544, puede funcionar a 5V. Gracias al reductor interno del PCD8544, se puede utilizar un cambiador de nivel lógico simple, con cuatro resistencias limitadoras de corriente de 10KΩ, la corriente a través de estas resistencias es de sólo 40uA, por lo que es inofensivo. Sin estas resistencias, pueden aparecer grietas en la pantalla LCD.

Este ejemplo, naturalmente, puede realizarse con un ATmega8 y unos pocos componentes a su alrededor, al que se le ha añadido un conector ISP para su programación in-situ. Un ejemplo, se muestra en la figura siguiente:

mini_analizador_pistasmini_analizador_compo

La lista de componentes es la siguiente:

  • 3 resistencias pueden ser de 10KΩ
  • 1 resistencias de 1KΩ
  • 3 diodos pueden servir con el 1N4148 o el 1N4001, para reducir la tensión del Atmega8.
  • 3 pulsadores normalmente abiertos
  • 1 cristal de cuarzo de 16MHz
  • 2 condensadores de 22pf
  • 1 dido LED de color.
  • 1 tira de pines de 8 (para el LCD) y 1 de 4 pines (para las entradas)
  • 2 tiras dobles de 3 pines (1 para el ISP y 1 para la alimentación) y 1 tira de 2 para alimentación.

El microcontrolador que podemos utilizar es un ATmega8 y unos pocos componentes, como veremos en el esquema, con una tensión de alimentación de 3’3V. Usted es libre de, utilizar otro modelo de microcontrolador. Sin embargo, en esta práctica he utilizado el Arduino habitual para pruebas.

LCD test

El siguiente es el código de la primera prueba:

El ejemplo, presenta unas palabras de saludo que muestra en mayúsculas y en minúsculas, simplemente para demostrar que funciona la pantalla. Si usted está utilizando una pantalla diferente, puede que el resultado se presente con alguna diferencia, eso es debido a la propia pantalla, como se muestra en las imágenes de abajo.

En el ejemplo anterior, he observado que existe una ligera diferencia entre las dos pantallas, me refiero a que el LCD 3310, muestra un ancho de visualización mayor que el LCD 5110, lo que repercute en los datos mostrados incluso en los gráficos. Los gráficos mostrados en el Nokia 3310 (reciclado), son mostrados en pantalla, ocupando menor espacio, como que, los pixeles son de menor tamaño. Al menos esto es lo que ocurre en la pantalla LCD 5110 que he recibido.

Trazando un rectángulo que ocupe toda la superficie del LCD 5110, en el Nokia 3310, se muestra con un espacio a la derecha de dos letras mayúsculas y abajo de 2 líneas. Es decir, el equivalente a 2 columnas y 2 filas.

foto007p-foto009p

La siguiente es la segunda prueba, en la que se ha modificado algunas rutina y añadido otras, para darle una posibilidad más al lector que decida llevar a cabo los ejercicios.

Descargar.

En este ejemplo, he añadido una barra de progreso que precede a unas palabras con el fin de rellenar la superficie de la pantalla.

Con la seguridad de que a usted le ha funcionado bien, doy por terminado este tutorial de inicio en la aventura de las LCDs. En caso de tener alguna consulta que hacer, no dude en plantearla en el apartado ‘Comentarios’. 

up_arrow_small

9 comentarios sobre «LCD’s Gráficos (PCD8544)»

  1. Realmente es una verdadera dicha toparse con estos artículos tan bien explicados, si encuentro un Nokia viejo que tengo tirado en algún lado intentare hacer algo con mi arduino. gracias

  2. Hola, gran tutorial, se acerca a lo que busco, utilizar un pic pero en ensamblador
    Habra alguna aplicacion para diseñar digitos fonts lo mas grande posibles para un timer
    MM:SS
    que ocupe toda la pantalla?
    Si no , como los puedo diseñar
    Gracias!

    1. Hola Gris.

      Considero que en PIC, también hay una aplicación o código que te permita hacer lo que comentas. En Arduino, si la hay, está en el propio código, aunque no lo he intentado nunca, estoy seguro que puedes lograrlo.
      Para hacerte una idea de lo que digo, puedes visitar este enlace al proyecto, y te debería servir de orientación, puesto que puedes realizar gráficos.

      Espero te sirva.

  3. Excelente explicación soy nuevo pero me guio bastante encontré un fax y quería hacer algo con el display pero es de 14 pines boy a seguir buscando por la web, aprendí mucho gracias

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.