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