Método de control para un display gráfico (GLCD) con microcontrolador avr

Publicado: julio 28, 2010 en MICROCONTROLADORES

Método de control para un display gráfico (GLCD) con microcontrolador avr

Marcelo Ramírez

e-mail: soymarcelo88@hotmail.com

 

 

 

Resumen: En la actualidad existen varios métodos y programas para controlar un GLCD, algunos son simples y otros un poco más sofisticados así como multifuncionales. Para la presente investigación utilicé un microcontrolador avr (Atmega 32), y el controlador (chipdrivers)  KS0108 con su respectiva  librería KS0108 que soporta LCD’s Gráficos (GLCD), en internet se puede encontrar una gran diversidad de este tipo de librería.

 

PALABRAS CLAVE: GLCD, KS0108.

I. INTRODUCCIÓN

Los LCD’s gráficos (GLCD por sus siglas en inglés) son pantallas de cristal líquido cuya resolución es medida en pixeles. A diferencia de los LCD’s de texto, en los GLCD’s, se puede tener acceso a cada pixel disponible, potenciando con ello las posibilidades de presentación y manejo de información. [1]

Debido a que existen en el mercado electrónico una gran diversidad de display’s gráficos, de tamaños y tipos variados, para esta demostración  he decidido utilizar un solo tipo de GLCD como es el TS12864A-2 de 128*64, en la tabla 1 se resume algunas de sus características generales.

TABLA 1.

Características técnicas del GLCD TS-12864A-2

FEATURES
• Module: graphic LCD arranged as 128 x 64 dots with LED Back-light*(Yellow/Green)
• Glass Type: STN
• Viewing Direction : 6 ‘clock (bottom view)
• Display color: Green
• Background color: Yellow
• Polarizer mode:  Positive, Reflective/Transflective
• Driving Method: 1/64Duty Cycle, 1/9 Bias
• Glass to PCB: ZEBRA CONNECTOR
• Dot Size : 0.48x 0.48 mm
• Dot Pitch : 0.52 x 0.52 mm

[Datos tomados del datasheet: Specification For LCD Module TS-12864A-2]

II. CONTROLADOR Y LIBRERIA  KS018

Un GLCD por sí mismo no se puede conectar directamente a un microcontrolador, para ello necesita de un chipdriver, que se encarga de interpretar las señales recibidas. Los chipdrivers mas empleados son: KS0108 (A, B, y C), SED133x, T6963c, Noritake3900 y lc7891. Cada chip requiere de un circuito específico que actúa como interfaz entre el microcontrolador y el LCD. [2]

Podemos encontrar en Internet las librerías correspondientes a cada controlador para comenzar a trabajar, también existen varias herramientas que pueden utilizarse para generar matrices de caracteres, gráficos, entre otras funcionalidades para el GLCD, entre estos programas especializados están el LCDHype, el LCDStudio, el LCDInfo, entre otros.

El controlador que utilicé para poner a funcionar mi GLCD es el KS0108, con su respectiva librería KS0108.lib de la página www.eca.ir. La librería es fácil de entender y de utilizar ya que su código y sus funciones están expresados de forma clara y entendible.

III. DISPLAY DE CRISTAL LIQUIDO GRÁFICO 128*64

El GLCD tiene pines de control y de datos. Los de control son: CS1, CS2, DI, RW, E y Reset. Los de datos son del DB0 al DB7. Este GLCD se divide en 2 zonas de 64 * 64 pixeles. Con los pines de selección CS1 y CS2 seleccionamos que zona queremos usar.

Con los pines DI y RW nos sirven para controlar el display y decirle si queremos leer o escribir datos desde o hacia el display, ejecutar alguna instrucción o leer el status del GLCD.

El pin E (enable) sirve como forma de decirle al display que lea los otros pines de control y ejecute lo que se le indica por medio de estos y el pin de Reset, pues ya se han de imaginar para que sirve. Con los pines de datos se va poder enviar o recibir datos del display y leer el status del chip de control del display. [3]

En la imagen No. 1 se muestra la conexión que utilicé entre el GLCD y el microcontrolador avr (Atmega32).

Imagen No 1. Conexión entre el GLCD y el microcontrolador avr

Para comenzar hacer funcionar la GLCD presento a continuación 3 programas que he diseñado como ejemplo de su utilización.

IV. GLCD GEOGRÁFICA

Este programa demuestra una de las formas de cómo utilizar la GLCD para que nos presente información gráfica, ya que nos enseña 4 mapas latinoamericanos, que son activados por medio de 4 botones, el hardware del circuito es una placa que he armado para un proyecto de un osciloscopio digital, pero puede ser utilizada para presentar otros proyectos siguiendo la configuración de sus conexiones (ver imagen No. 1).

En la imagen No. 2 se presenta la GLCD ya  trabajando, tanto en simulación como montada en la placa.

Imagen No 2. GLCD en simulación y en placa

Los gráficos fueron diseñados en el programa FastLCD, aunque no soy muy bueno para el dibujo a mano alzada el programa supero todas mis expectativas; además, en un 5to botón programé el micro para que presente una imagen acerca de mí (ver imagen No.3).

Imagen No 3. Imagen en simulación

V. GLCD ANIMACIÓN

Para realizar este programa me base en el procedimiento básico de la animación (ver imagen No. 4), podemos lograr el mismo efecto en nuestros proyectos, con paciencia y dedicación se puede lograr hacer verdaderos cortos animados.

Imagen No. 4. Secuencia de imágenes para hacer una animación

VI. GLCD TEMPERATURA

Por último he diseñado un programa que incluye todo el conocimiento que he adquirido sobre el manejo de los GLCDs. Este programa indica la Temperatura y la Hora; el valor de la Temperatura es enviada al microcontrolador por medio de un LM35 (ver imagen No. 5), y la Hora está controlada por un TIMER del micro (interrupción interna). La única forma de igualar los minutos y las horas es desde el archivo fuente del proyecto.

Imagen No. 5. Sensor de temperatura.

El programa inicializa con una animación que representa el software dentro del micro cargándose (ver imagen No. 6).

Imagen No. 6. Pantalla de inicialización del programa.

Luego de la inicialización, se carga el programa principal que consta de algunas animaciones y la visualización de la temperatura y la hora (ver imagen No. 7).

Imagen No. 7. Programa principal

VII. CONCLUCIONES

Existen algunos proyectos excelentes utilizando estas pantallas, pero en la mayoría de los casos la información que brindan sus autores es escasa, aunque esto nos ayuda a generar buenas ideas para empezar a desarrollar nuestros  propios diseños.

La información existe en la actualidad sobre el control y manejo de los GLCDs es poca y en algunos casos está incompleta. Así como también tienen poca referencia sobre sus autores haciendo una tarea casi imposible el encontrar sus informes bibliográficos

Al comenzar a utilizar por primera vez estas pantallas se posee una perspectiva de desorientación debido a que aparentan tener un control muy técnico y científico. Pero a medida que se va investigando y experimentando con los diversos métodos de control se convierte en algo sumamente fácil y hasta divertido.

La información recopilada y las demostraciones de control sobre estos GLCDs es el comienzo de un trabajo más extenso y profundo debido a que existe un inmenso número de métodos de control para estas pantallas, así que cualquier duda, inquietud o sugerencia será bien recibida.

comentarios
  1. Luis René dice:

    oe mas graficos………

  2. Juan dice:

    Hola! Te agradecería si me solucionas un problemita. Se puede hacer lo mismo con por ejemplo un display de un nokia 1100.
    Gracias responde por favor

    • Marcelo Ramírez dice:

      Hola, Claro que se puede hacer, aunque personalmente nunca he trabajado con esos displays, (debido a que la u me facilita los LCD’s…!!!!!). Pero, el principio es el mismo; busca el datasheet de la LCD del cel que tengas (lo encontraras googleando), decide que controlador usar (dependiendo si vas a utilizar la PC, un pic o un micro avr), y el lenguaje en el cual vas a programar… Una vez bien definido todos estos parámetros podrás hacer lo que desees con tu LCD (sea la lcd que sea)……………………
      Me parece que en “Foros de Electrónica” (http://www.forosdeelectronica.com) hay una discusión abierta de lo que has comentado “display de nokia 1100”

  3. andersson dice:

    como implementa el codigo generado por fastlcd en el codigo del programa

    • Marcelo Ramírez dice:

      El fastlcd lo utilicé para modificar las imagenes 128×64 no para generar el codigo…!
      Utilicé el “glcd_editor” para generar el código, el codigo generado es un vector y por ende lo tratas como tal en el programa principal.

      Este es un ejemplo del codigo de la imagen

      unsigned char const Imagen_BMP[1024] = {
      255, 1,253,133,133,133,133,125, 13,253,253, 61, 29, 13, 13, 13,
      13, 13, 13, 13, 13, 13, 13, 13, 13, 13,141, 77, 77, 77,205, 13,
      13, 13,141, 77, 77, 77,141, 13, 77,205,205, 13, 13, 77,205, 77,
      13,205, 77, 77,205, 77, 77,205, 13,205,205, 77, 77, 77,141, 13,
      13, 13,141, 77, 77, 77,141, 13, 13,205,205, 77, 13, 13, 13, 13,
      13, 13, 13, 13, 13, 13, 13, 13, 13,205,205, 77, 77,141, 13, 13,
      13,205,205, 77, 77, 77,205, 13, 13, 13, 13, 13, 13, 13, 13, 13,
      13, 13, 13, 29, 61,253,253, 5,125,133,133,133,133,253, 1,255,
      255, 0,255,255, 0,255, 0, 0, 0,255,255, 0, 0, 0, 0, 0,
      0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 31, 32, 32, 32, 16, 0,
      0, 15, 31, 32, 32, 32, 31, 15, 32, 63, 32, 3, 12, 48, 63, 0,
      0, 0, 0, 32, 63, 32, 0, 0, 0, 63, 63, 36, 4, 12, 19, 32,
      0, 15, 31, 32, 32, 32, 31, 15, 0, 63, 63, 32, 32, 32, 56, 0,
      0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 63, 32, 32, 16, 15, 0,
      0, 63, 63, 34, 39, 32, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0, 0, 0, 0, 0,255,255, 0, 0, 0,255, 0,255,255, 0,255,
      255, 0,255,255, 0,255, 0, 0, 0,255,255, 0, 0, 0, 0, 0,
      0, 0, 0, 0, 0, 12, 4, 4,252, 4, 4, 12, 0,252,252, 36,
      116, 4, 12, 0, 0,252,252, 28, 96, 28,252, 4, 0,252,252, 68,
      68, 68, 56, 0, 0,252,252, 36,116, 4, 12, 0, 0,252,252, 68,
      68,196, 56, 0, 0, 0,192,252,140,252,192, 0, 0, 12, 4, 4,
      252, 4, 4, 12, 0, 4,252, 4, 0, 4,252, 4, 0,252,252, 68,
      68,196, 56, 0, 0, 0, 0,244,140,240, 0, 0, 0, 0, 0, 0,
      0, 0, 0, 0, 0,255,255, 0, 0, 0,255, 0,255,255, 0,255,
      255, 0,191,161,161,161,161,190,176,191,191,188,184,176,176,176,
      176,176,176,176,176,176,176,178,179,178,176,176,176,179,179,178,
      178,178,179,176,176,179,179,178,176,178,179,178,176,179,179,178,
      176,176,176,176,176,179,179,178,178,178,179,176,176,179,179,178,
      176,176,177,178,176,178,179,178,176,178,179,178,176,176,176,178,
      179,178,176,176,176,176,177,178,178,178,177,176,176,179,179,178,
      176,176,177,178,176,178,179,178,176,178,179,178,176,176,176,176,
      176,176,176,184,188,191,191,160,190,161,161,161,161,191, 0,255,
      255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0,
      0, 0, 0, 0, 0, 0,240,248,252, 14, 14, 14, 14, 14, 14, 14,
      14, 14, 14,142,142,142,142, 14, 14, 14, 14,142,142,142, 14, 14,
      14,142,142,142,142,142, 14, 14, 14, 14, 14,142,142,142,142, 14,
      14, 14, 14,142,142,142, 14, 14, 14,142,142,142, 14, 14,142,142,
      142, 14,142,142,142,142, 14, 14, 14, 14, 14, 14,142,142,142, 14,
      14, 14, 14, 14, 14, 14, 14,254,252,248, 0, 0, 0, 0, 0, 0,
      0,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255,
      255, 0,255, 0, 0, 96, 96, 96,244, 8,100,247,247,100, 8,244,
      96, 96, 96, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0, 0,
      0, 30, 63, 97, 97, 97, 51, 0, 0, 64,120, 95, 17, 95,120, 64,
      0,127,127, 72, 8, 31, 39, 64, 0, 30, 63, 97, 97,105, 57, 8,
      0, 64,120, 95, 17, 95,120, 64, 0,127,127, 65, 6, 24, 96,127,
      0, 0,127,127, 64, 64, 33, 30, 0, 0, 30, 63, 97, 97, 97, 63,
      30, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0,240,252,254,127,
      247,255, 31, 95, 27,251,247,206,252,240, 0, 0, 0,255, 0,255,
      255, 0,255, 0, 0, 0, 0, 0, 2, 1, 2, 30, 30, 2, 1, 2,
      0, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0, 0,
      124, 68, 68, 68, 68, 68, 68, 68,124,124,124,124,124,124,124,124,
      68, 68, 68, 68, 68, 68, 68, 68,124,124,124,124,124,124,124,124,
      68, 68, 68, 68, 68, 68, 68, 68,124,124,124,124,124,124,124,124,
      68, 68, 68, 68, 68, 68, 68, 68,124,124,124,124,124,124,124,124,
      124, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0, 1, 7, 15, 30,
      29, 59, 59, 63, 63, 31, 29, 15, 7, 1, 0, 0, 0,255, 0,255,
      255,128,191,160,160,160,160,160,160,160,160,160,160,160,160,160,
      160,160,160,160,160,160,163,167,175,174,174,174,174,174,174,174,
      174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,
      174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,
      174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,
      174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,
      174,174,174,174,174,174,174,175,167,163,160,160,160,160,160,160,
      160,160,160,160,160,160,160,160,160,160,160,160,160,191,128,255
      };

  4. jose dice:

    que bueno por fin un documento que lo anima a uno a trabajar las graficadoras excelente lo felicito y pues también te pido que por favor me ayudes con un proyecto que no e podido graficar de antemano muchas gracias

  5. q tal oie podrias subir los archivos para darme una idea xfa

  6. mi dice:

    ola te felicito por el proyecto!!.. podrias poner el link para descargar la libreria con la que controlaas el gcld..

    saludos

  7. Yaniel Dueñas Yong dice:

    Saludos colega, muy bueno tu material, te diré que yo tengo una LCD 128×64 con chip KS0108b ayer un colega me le hizo el cableado, pero cuando la conectamos a la pc y abrimos el LCDStudio, solo se pone un puntico negro en el medio y parte inferior de la pantalla, pero no pone mas nada de lo que se le configura por el LCDStudio. Me podrías ayudar? Gracias de antemano.

  8. Javier Lopez dice:

    Muy buen material, la forma como empiezas es una verdad con la que he lidiado con mis compañeros, ya que la gente quiere tener todo listo y les da flojera investigar y probar, yo he querido empezar a experimentar con estas pantallas pero usando PIC, pero tengo un problema, no consigo el datasheet para saber como son los comandos para inicializar, es una KS0108, lo otro que vi en el material que logre conseguir, es que la pantalla trabaja a 3.3Volt, pero el pic trabaja a 5V, y no se si el driver de la pantalla me acepta señales TTL a 5 volt, no he experimentado porque me da temor quemar el driver de la pantalla, tu que ya has trabajado con ella que me puedes decir, configuraste al microcontrolador para que trabajara a 3.3 volt, o lo conectaste directo a los 5 volt?? gracias por tu info

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s