Este es un tutorial del display gráfico GLCD 128x64 con microcontroladores PIC con el controlador Toshiba T6963C incorporado. El LCD grafico brinda mucha flexibilidad para el desarrollo de aplicaciones en las que sea necesario presentar texto o imágenes. Se compone de una matriz de pixeles dispuestos en filas y columnas. Cada pixel puede manejarse individualmente y permite mostrar texto, gráficos o una combinación de ambos.


¡Descubre el mundo de los microcontroladores PIC y lleva tus habilidades de programación al siguiente nivel! Obtén nuestro eBook y disfruta aprendiendo paso a paso desde cero, podrás realizar proyectos prácticos, encontrar soluciones a problemas comunes y explorar una amplia cobertura de temas desde lo más básico a lo más avanzado. Incluye software y ejemplos resueltos. ¡Cómpralo ahora y libera el increíble potencial de esta poderosa tecnología hoy mismo!

Microcontroladores PIC en PDF: Curso completo


Se emplea en aquellos casos en los que es necesario tener un control total del área de la pantalla; sin embargo, la flexibilidad implica una mayor dificultad en el diseño del circuito de control.

Display LCD grafico GLCD 128x64

Retroiluminación LED (LED backlighting)

Los LCDs crean las imágenes con la manipulación de la luz ambiental visible. En ausencia de esta luz, se tiene que añadir retroiluminación (backlight) o luz de fondo para que las imágenes sean visibles. Hay muchas opciones para agregar iluminación de fondo a un LCD. Cada una tiene sus ventajas y desventajas, y no hay un único método para todas las aplicaciones.

Retroiluminación (backlight) LED

La Retroiluminación LED (LED backlighting) es la técnica más popular para LCDs medianos y pequeños. Las ventajas de los LEDs son su bajo costo, larga vida, inmunidad a la vibración, bajo voltaje de operación, y control de intensidad preciso. La principal desventaja es que requiere más potencia que la mayoría de los demás métodos. La retroiluminación (backlight) LED viene en muchos colores, siendo el amarillo-verde el más común, mientras que el blanco se está volviendo muy popular y de bajo costo.  La vida de operación es muy larga (50.000 horas como mínimo), y son más brillantes que los ELPs. Al ser de estado sólido, se configuran para operar con 5 o 12 VDC, así que no requieren un inversor. La retroiluminación (backlight) LED tiene dos configuraciones básicas: matricial (array) y de borde (edge). En ambos tipos la luz de los LEDs se enfoca sobre un difusor que distribuye la luz uniformemente detrás de la pantalla. En la configuración matricial hay muchos LEDs distribuidos uniformemente tras la pantalla, esto produce un alumbrado más uniforme y brillante y consume más potencia. En la configuración  de borde, los LEDs se ubican en una de las orillas (típicamente la orilla superior) y se enfocan sobre el borde del difusor, esto permite tener un módulo más delgado con menor consumo de potencia.

led-de-bordeled-matricial

Control de contraste del LCD

Es habitual utilizar el concepto de contraste para nombrar a la diferencia relativa en intensidad que existe entre un punto de una imagen y sus alrededores. Cuando el contraste es nulo, resulta imposible distinguir un objeto de su fondo. En cambio, a mayor contraste, mayor facilidad para la diferenciación. El contraste, en el aspecto visual de una imagen, también hace referencia a la escasez de tonos intermedios, de forma que resalta con notoriedad lo claro y lo oscuro. 

Cuando se usa un LCD, se debe disponer de un control para ajustar el voltaje de polarización de la pantalla. Este ajuste permitirá el control del contraste entre los segmentos encendidos y apagados, diferenciandolos claramente entre sí y mejorando la visualizacion de los datos en pantalla.

Ajuste del contraste del LCD

El ajuste del contraste también modifica el ángulo de visión de la pantalla. Una pantalla de 12h00 se puede optimizar para ser vista desde las 6h00 por medio del ajuste del contraste; aunque el resultado no será tan bueno como una pantalla de 6h00 optimizada para ser vista desde las 6h00. Si se va a ver la pantalla de frente, se puede escoger una de 12h00 o una de 6h00 y realizar un ajuste ligero del contraste para optimizar la imagen desde esa posición. Para el ajuste del contraste se emplea normalmente un potenciómetro (conectado entre Vdd y Vss, ó Vee y Vdd para módulos LCD de alto voltaje). El terminal móvil del potenciómetro se conecta a Vo (voltaje de contraste). Actuando sobre este potenciómetro se logra la apariencia deseada.

Control de contraste del GLCD 128x64 t6963c

Librería T6963C_Graphic_LCD de mikroC PRO para GLCD 128x64

mikroC PRO proporciona una librería de funciones para el trabajo con el GLCD 128x64 que tenga incorporado el controlador Toshiba T6963C.

Funciones de mikroC PROC para glcd 128x64 con t6963c

LM4228: GLCD 128x64 con controlador Toshiba T6963C

El LM4228 es un módulo GLCD 128x64, con tecnología CMOS y controlador Toshiba T6963C. Armado en tablero de circuito impreso, con marco de soporte de metal y retroiluminacion LED. 

Precauciones

Precauciones de manipulación

  • Este dispositivo es susceptible a los daños por descarga electrostática (ESD). Se deben tener en cuenta los cuidados contra la electricidad estática.

Precauciones de la fuente de alimentación

  • Tomar siempre en cuenta los valores máximos permitidos.
  • Evitar la aplicación de voltaje con polaridad invertida en los pines VDD y VSS, aunque sea por un tiempo muy breve.
  • Usar una fuente bien regulada y libre de transitorios.
  • Evitar las señales en el bus de datos mientras el módulo está apagado.
  • No colocar un capacitor entre Vo (contraste) y el pin de referencia VSS. VDD tiene que ser siempre mayor que Vo (en el instante de apagado el voltaje almacenado en el capacitor puede hacer que Vo sea mayor que VDD, lo cual puede dañar el módulo).

Precauciones de operación

  • No conectar o desconectar el módulo cuando el sistema está alimentado.
  • Minimizar la longitud de cable entre el módulo y el microcontrolador (máximo 30 cm).
  • El módulo debe trabajar dentro de los límites de temperatura especificados por el fabricante.

Precauciones ambientales y mecánicas

  • Uno de los mayores motivos de dificultades es un proceso inapropiado de soldadura. No se recomienda el uso de pastas o cremas limpiadoras ya que pueden deslizarse en el interior del módulo y producir fallas.
  • El módulo instalado debe estar libre de esfuerzos mecánicos.
  • La superficie del módulo LCD no se debe tocar ni rayar. La superficie frontal es un polarizador plástico muy fácil de rayar. Limpiar la pantalla solo cuando sea necesario con un algodón humedecido en un líquido apropiado para la limpieza de LCDs.
  • Siempre se deben tener en cuenta los procedimientos anti estática cuando se manipule el módulo.
  • Evitar el ingreso de humedad al módulo y tener en cuenta los límites de temperatura de operación y almacenamiento.
  • No exponerlo a la luz del sol de forma directa.
  • Si se produce una fuga del cristal líquido, evitar el contacto y la ingestión. Si se produce el contacto, lavarlo con abundante agua y jabón.

Valores máximos absolutos

Los valores mostrados aquí deberían explicarse por sí solos, no obstante es necesario recalcar que el máximo voltaje de alimentación es de 7V (lo normal es 5V). Nótese que los voltajes VDD-VSS y VDD-VEE no deberían ser negativos en ningún momento, ya que, como se dijo anteriormente esto puede dañar seriamente al dispositivo.

Máximos del GLCD 128x64 con T6963C

Características eléctricas

El LM4228 consume una corriente de 10 mA para su funcionamiento (aparte de la corriente consumida por la retroiluminacion LED). Si se emplea una fuente negativa externa VEE de 18V, el GLCD 128x64 consumirá una corriente de 6 mA de esta fuente.

Características eléctricas del GLCD 128x64 con T6963C  

Especificaciones de la retroiluminación (LED backlight)

El GLCD 128x64 no incorpora el resistor de polarización de la luz de fondo (retroiluminación), por lo que debe ser añadido externamente, como se muestra en la figura. Se puede emplear normalmente una resistencia de 10 ohm / 0,25W (la alimentación es de 5V).

Retroiluminación (backlight) LED del GLCD 128x64 con T6963C

Fuente de alimentación

La figura muestra las posibles formas de conectar la fuente de alimentación al módulo, dependiendo de las características particulares de éste. En la mayoría de los casos el GLCD 128x64 ya incorpora el generador de voltaje negativo VEE, pero no trae el circuito de compensación de temperatura, así que se debe tomar como referencia la figura de la parte superior derecha. VR es un potenciómetro de 10kohm que se emplea para ajustar el contraste (más abajo se puede encontrar la conexión detallada).  

Alimentación del GLCD 128x64 con T6963C

Descripción de los pines del LM4228

Pinout del GLCD 128x64 con T6963C

Configuración del GLCD 128x64 con T6963C

Diagrama de bloques

El diagrama muestra que el LM4228 es una pantalla Single Scan (1 Screen), pues los controladores de columnas (COL) no aparecen duplicados (una pantalla Dual Scan (2 Screens) mostraría en total cuatro controladores de columnas: dos en la parte inferior y dos en la parte superior del LCD PANEL).

Diagrama de bloques del GLCD 128x64 con T6963C

Dimensiones del módulo y pinout (patillaje)

En la figura se puede ver que los pines del 1 al 20 se encuentran en la parte inferior del GLCD 128x64, distribuidos de acuerdo al detalle de las figuras adjuntas. Los pines para la alimentación de la retroiluminación LED se encuentran en el medio, a la izquierda (BL1-Anodo y BL2-Cátodo).

Dimensiones del GLCD 128x64 con T6963C

Detalle de los pines y conexión del contraste y la alimentación:

Conexión del GLCD 128x64 con T6963C

          Patillaje (pinout) del GLCD 128x64 con T6963C

Descripción del número de parte para las opciones disponibles

Las opciones disponibles se especifican por medio de los caracteres identificados con las posiciones 1 a 5.

Número de parte GLCD 128x64 con T6963C

Por ejemplo, el LM4228 EG64G128SNB tiene las siguientes características:

  • E    Polarizador transmisor. Fondo obscuro con retroiluminación LED.
  • G    Retroiluminación LED de color amarillo-verde.
  • S    Rango estándar de temperatura. Generación de voltaje negativo incorporado.
  • N    Cristal líquido STN. Sin compensación de temperatura.
  • B    Fondo de color azul.

opciones-disponibles-lm4228significado-de-opciones-glcd

Ejemplo en mikroC PRO con el PIC16F877A

Ejemplo-GLCD_01.c: Programa para animar la imagen de un camión en sentido vertical, y a continuación presentar un mensaje de texto. Se emplea una pantalla LM4228 (GLCD 128x64 con controlador T6963C) y un PIC16F877A (la conexión detallada de los pines Vo y VEE para el control de CONTRASTE, y de la luz de fondo o RETROILUMINACIÓN se puede encontrar más arriba).

Display grafico GLCD 128x64 con PIC 

//GLCD_01.c
//El archivo T6963C.h contiene la definición de constantes y macros. Este
//archivo se encuentra en la carpeta del proyecto. La función T6963_Init se
//encarga de configurar el tamaño real de la pantalla (16 columnas).
#include "T6963C.h"

//Declaración de variables de conexión del T6963C
char T6963C_dataPort at PORTD;                   // Puerto de Datos

sbit T6963C_ctrlwr  at RB2_bit;                  // Señal WR write
sbit T6963C_ctrlrd  at RB1_bit;                  // Señal RD read
sbit T6963C_ctrlcd  at RB0_bit;                  // Señal CD command/data
sbit T6963C_ctrlrst at RB4_bit;                  // Señal RST reset
sbit T6963C_ctrlwr_Direction  at TRISB2_bit;     // Señal WR write
sbit T6963C_ctrlrd_Direction  at TRISB1_bit;     // Señal RD read
sbit T6963C_ctrlcd_Direction  at TRISB0_bit;     // Señal CD command/data
sbit T6963C_ctrlrst_Direction at TRISB4_bit;     // Señal RST reset

//Señales no empleadas por la librería, se configuran en la función main
sbit T6963C_ctrlce at RB3_bit;                   // Señal CE
sbit T6963C_ctrlfs at RB6_bit;                   // Señal FS
sbit T6963C_ctrlmd at RB5_bit;                   // Señal MD
sbit T6963C_ctrlce_Direction  at TRISB3_bit;     // Señal CE
sbit T6963C_ctrlfs_Direction  at TRISB6_bit;     // Señal FS
sbit T6963C_ctrlmd_Direction  at TRISB5_bit;     // Señal MD
//Final de declaración de variables de conexión del T6963C

chari,j;
unsigned char const camion128x64_bmp[1024] = {
0,  0,  1,255,255,255,255,255,252,  0,  0,  0,  0,  0,  0,  0,
0,  0,126,  0,  0,  0,  0,  0,  6,  0,  0,  0,  0,  0,  0,  0,
0, 15,128,  0,  0,  0,  0,  0, 59,  0,  0,  0,  0,  0,  0,  0,
7,255,255,255,255,255,255,255,249,  0,  0,  0,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 17,  0,  0,  0,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 17,  0,  0,  0,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 25,  0,  0,  0,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 27,255,255,  0,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 31,224,  0,240,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 27,  0,  0,  8,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 24,  0,  0, 12,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 16,  0,  0,114,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 16,  0,  1,202,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 23,255,242,  4,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 20,  0, 10,  5,  0,  0,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 20,  0,  5,  3,191,192,  0,  0,
4,  0,  0,  0,  0,  0,  0,  0, 20,  0,  4,199,112,249,128,  0,
4,  0,  0,  0,  0,  0,  0,  0, 20,  0,  4,188,195,231, 64,  0,
4,  0,  0,  0,  0,  0,  0,  0, 20,  0,  4,142,  0, 31, 48,  0,
4,  0,  0,  0,  0,  0,  0,  0, 27,255,255,143,  0,  0, 38,  0,
4,  0,  0,  0,  0,  0,  0,  0, 27,128,  1,  8,255,  0, 22,  0,
4,  0,  0,  0,  0,  0,  0,  0, 18,  0,  1,  0,  1,  7,  6,128,
4,  0,  0,  0,  0,  0,  0,  0, 24,  0,  3, 96,  1,248,140,128,
7,255,255,255,255,255,255,252,120,  0,  3,128,  0,  1,206,128,
3,255,255,255,255,255,255,255,248,  0,  6,  0,  0,  0,172,  0,
0, 64,  0,  0,  0,  0,  0,  0,120,  0,  8,  0,  0,  0, 11,  0,
0,127,255,255,255,255,255,255,248,  0,  8,  0,  0,  0,136,  0,
0,  0, 63,248, 70,255,255,255,240,  0,  8,  0,  0,  0,129,  0,
0,  0, 63,159,225,191,255,255,248,  0,  8,  0,127,224,132,  0,
0,  0, 63,127,240,239,255,255,255,255,248,  1,255,252,242,  0,
0,  0, 63,255,254,123,255,255,255,255,224,  3,255,252, 41,  0,
0,  0, 63,243,207, 59,255,255,255,255,240,  3,201, 62, 73,192,
0,  0, 63,238, 55,157,255,255,255,255,240,  3,184,223, 38, 64,
0,  0,  3,209,139,143,254,  1,192, 32,120,  7,104, 13,240,128,
0,  0,  7,209,167,143,249,253,252,  0, 15,215,112,  4,129,  0,
0, 63,255,246,  5,143,255,255,255,255,255,254, 89, 22,254,  0,
0,127,255,247,  5,239,255,255,255,255,255,255,120,183,128,  0,
7,255,255,211,131,239,255,255,255,255,255,255,127, 15,128,  0,
7,255,255,236, 55,255,255,255,255,255,255,255,184, 79,191,  0,
7,255,255,247,143,221,255,255,255,255,255,255,205, 62,127,128,
15,255,255,252, 63,255,255,255,255,255,255,247,248,254,254,  0,
31,255,255,255,255,247,255,255,255,255,255,255,255,249,255,  0,
31,255,255,191,255,223,255,255,255,255,255,254,255,255,255,192,
1,255,255,239,254,127,255,255,255,255,255,255,191,223,255,192,
0, 63,255,252, 31,255,255,255,255,255,255,255,251,255,254,  0,
0,  1,220,255,255,255,255,255,255,255,255,255,255,255,248,  0,
0,  0,  0,  0,  3,255,199,255,255,255,255,255,255,255,224,  0,
0,  0,  0,  7,255,255,255,255,255,255,255,255,255,240, 32,  0,
0,  0,  0,  0, 15,255, 58,255,255,255,255,195,255,224,  0,  0,
0,  0,  0,  0,  7,255,255,255,255,255,240,255,255,128,  0,  0,
0,  0,  0,  0,  0,  6,192, 15,255,248, 31,252,127,  0,  0,  0,
0,  0,  0,  0,  0,  0,  0,  0, 15,255,254, 31,255,128,  0,  0,
0,  0,  0,  0,  0,  0,  0,  0,  0, 23,131,131,254,  0,  0,  0,
0,  0,  0,  0,  0,  0,  0,  0,  1,228,  0,  0,239,  0,  0,  0,
0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 59,216,  0,  0,  0,  0,
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
};

void main() {
T6963C_ctrlce_Direction = 0;
T6963C_ctrlce = 0;            //Habilitar el T6963C.
T6963C_ctrlfs_Direction = 0;
T6963C_ctrlfs = 0;            //Fuente 8x8 (FS<1:0>=00).
T6963C_ctrlmd_Direction = 0;
T6963C_ctrlmd = 1;            //32 columnas (MD<3:2>=11) (pantalla virtual)

T6963C_Init(128, 64, 8);      //Inicializa el T6963C. Caracteres de 8 bits.

T6963C_Graphics(1);           //Habilita la presentación de gráficos.
T6963C_Text(1);               //Habilita la presentación de texto.

while(1){
  T6963C_GrFill(0);            //Borra la pantalla gráfica.
  T6963C_TxtFill(0);           //Borra la pantalla de texto.

  Delay_ms(800);

  T6963C_Image(camion128x64_bmp);  //Dibuja la imagen en el GLCD.
  Delay_ms(1500);

  //Animación. Se logra cambiando el valor de GH.
  //GH corresponde a la esquina superior izquierda del GLCD.
  for (j=0;j<=3;j++){
    for (i=0;i<=0x0F;i++){
      T6963C_WriteData(i*0x10);
      T6963C_WriteData(j);
      T6963C_WriteCommand(T6963C_GRAPHIC_HOME_ADDRESS_SET);//Configurar GH.
      Delay_ms(30);
    }
  }
  T6963C_GrFill(0); //Borrar la pantalla gráfica.

  T6963C_WriteData(0);
  T6963C_WriteData(0);
  T6963C_WriteCommand(T6963C_GRAPHIC_HOME_ADDRESS_SET);//Restablecer GH.

  T6963C_Write_Text("Animacion de",0,2,T6963C_ROM_MODE_OR);
  T6963C_Write_Text("imagenes en",0,3,T6963C_ROM_MODE_OR);
  T6963C_Write_Text("mikroC.",0,4,T6963C_ROM_MODE_OR);
  Delay_ms(1000);
}
}