Autor Tema: Uso del CGRAM de un LCD  (Leído 3625 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Lager.

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 477
Uso del CGRAM de un LCD
« en: 11 de Diciembre de 2004, 16:50:00 »
Para accesar de forma RAPIDA y SENCILLA sin laboriosas TABLAS de datos, se puede hacer usando el comando PRINT a traves del cual se accesa la informacion de escritura en la CGRAM enviando el comando 254 + la direccion en donde se va a guardar dicha informacion. Cada caracter o posicion de memoria de pende de sus dimensiones directamente (7 x 5 en muchos de los casos, 7 lineas de 5 bits cada una, dandonos una resolucion de 31 bits por linea y 155 bits por caracter ,revizar cada DS) , Luego entonces tendriamos  7  lineas   cuya informacion soportada por cada una seria de 0 a 31 dependiendo del pixel a habilitar con 1 o deshabilitar con cero donde el byte  mas significativo(MSB) es taria dado por la linea 1 y el Byte menos significativo(LSB) por la linea 8.
Una ves establecido este protocolo de envio/recepcion de informacion para el LCD, se puede hacer el formato siguiente:

PRINT 254,64,31,17,17,17,17,17,31,254,1

Donde, el 254 como se menciono anteriormente es el comando de habilitacion de la CGRAM, 64 es la direccion donde se guardara, y 31,17,17,17,17,17,31 son la informacion que almacenara en la CGRAM en dicha direccion y 254,1 es el comando de BORRADO(CLS) el cual se puede incluir de esta forma o de la estandar CLS

DIRECCIONES? las direcciones dependiendo del modelo de LCD empezarian de la 64 hasta la 128, como cada direccion requiee de un espacio maximo de 8 bits, entonces para la direccion 0 de CGRAM seria desde el inicio 64 hasta  64+8=71, onde guardaria el ultimo BIT de informacion para esta direccion. Con este FORMATO podemos considerar la siguiente tabla :
Char 0 = 64 // Char 1 = 72 // Char 2 = 80 // Char 3 = 88 //Char 4 = 96
Char 5 = 104// Char 6 = 112// Char 7 = 120
..donde podemos observar que tenemos hasta 8 caracteres para guardar..
Claro que esto no nos limita a usar solo caracteres, tambien podemos usar GRAFICOS, abusando de esta habilidad.. jejejeje.

Ahora si un ejemplo sencillo que resume toda la informacion:
-----------------------------------------------------------------------------------------------------------
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF
ALL_DIGITAL ON
PORTB_PULLUPS ON
DECLARE LCD_DTPIN PORTA.0
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTA.4

 PRINT 254,64,31,17,17,17,17,17,31 "cgram posicion 0
 PRINT 254,72,31,27,21,21,31,31,31 "cgram posicion 1
 PRINT 254,80,14,27,31,27,31,27,14 "cgram posicion 2
 PRINT 254,88,12,18,18,18,23,18,0  "cgram posicion 3
 PRINT 254,96,0,14,17,17,17,10,27  "cgram posicion 4
 CLS
 PRINT 0,1,"x","@",2,3,4
 DELAYMS 1000
END
-----------------------------------------------------------------------------------------------------------
"01110///////////////01100//////////////00000//////////////
"11011///////////////10010//////////////01110//////////////
"11111///////////////10010//////////////10001//////////////
"11011  = 2//////////10010  = 3////////10001  =4////////
"11111///////////////10111//////////////10001//////////////
"11011///////////////10010//////////////01010//////////////
"01110///////////////00000//////////////11011//////////////
----------------------------------------------------------------------------------------------------------
Salu2 panas

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: Uso del CGRAM de un LCD
« Respuesta #1 en: 12 de Diciembre de 2004, 13:35:00 »
hola:

EXELENTE ARTICULO GRACIAS ,

yo solo sabia crear el simbolo de grados JA  JA  JA .....pero ahora no  hay limites JA JA


GRACIAS PANA

Saludos
khasistos

Desconectado Lager.

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 477
RE: Uso del CGRAM de un LCD
« Respuesta #2 en: 12 de Diciembre de 2004, 14:20:00 »
De nada pana Khasistos , para eso estamos Sonrisa Gigante

Un abrazo pana

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: Uso del CGRAM de un LCD
« Respuesta #3 en: 17 de Diciembre de 2004, 19:47:00 »
Muy buena explicación Lager.

Con esto realmente no tenemos limitaciones para generar cualquier carácter especial o símbolo que necesitemos.

Gracias Lager

Saludos
Ricky

Desconectado Lager.

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 477
RE: Uso del CGRAM de un LCD
« Respuesta #4 en: 17 de Diciembre de 2004, 21:09:00 »
Bueno panas, mucho de esto(si no es que todo) se que ya lo sabian emplear, pero veo que muchos usuarios ven el BASIC como limiitado.. y NADA QUE VER.. empleandolo bien (como todo lenguaje) se puede hacer una rutina con EXACTITUD, y optimizacion.
Asi como este detalle hay muchos mas que ofrece proton, ademas de la habilidad de tomar los registros como lo que son REGISTROS!.. es logico que si quieren hacer una operacion con registros como:
PORTB= PORTB/2  , tendrian que guardarlo en una variable ya que el mismo puerto no es UNA VARIABLE..... (PORTB=PORTB/2 <---- MAL SINTAXIS!!!!!! ¿por que mal sintaxis?.. por que proton REALMENTE usa los registros como REGISTROS,, no variables direccionadas que ocupen espacio inecesario en nuestro micro y por consiguiente TIEMPO de proceso)
esta mal que uno lo tome de esa forma ya que uno con el tiempo pierde el conocimiento de que es un REGISTRO no una variable... lo adecuado como Micros Secuanciales es :
VAR= PORTB/2:PORTB=VAR , esto SI EXISTE y es real, y no trabajamos fuera del contexto MAQUINA.
Asi como todos estos detalles, hay mas que proton nos ofrece siempre y cuando respetemos el contexto maquina a seguir.
Con esto solo trato de motivarnos mas ya que la unica limitacion Real es la que nos impongamos. y los BUGs, jajajajajajajajaja. Muchas risas
Un gran abrazo Ricky y Khasistos