Gracias, alguien ha hecho algo con la touch ?, a mi solo me leen las coordenadas en X pero las Y no, no se si este conectado mal o si mi touch no funciona.
En el mismo link de la librería viene el archivo de prueba... supongo allí viene declarada la función para leer el touch. Pruebalo haber si te anda bien.
Ahora les comento que ya logré mostrar caracteres personalizados en este GLCD en el modo alfanumérico.
He de aclarar que para lograr esto es necesario modificar el Hardware y en algunos casos puede ser riesgoso...
Aclarado este punto, manos a la obra...
Primero que nada hay que explicar como es que el GLCD muestra el texto y para eso ahy que recurrir a la hoja de datos del controlador principal: el LC7981.
La sección que nos interesa es la que está encerrada en el recuadro color aguamarina, así como los buses rojo (datos), azul (direcciónes) y amarillo (datos de entrada provenientes del CG Externo).
La memoria RAM que se aprecia en el diagrama es en donde se almacenan los datos de imágenes (1600 bytes en modo gráfico) o los caracteres ASCII (en modo alfanúmerico). En el GLCD, esta memoria es equivalente a una RAM 62256 (32 KB) de la cual solo se tiene acceso a los primeros 4 KB de datos (las líneas de dirección A12, A13, y A14 están conectadas a tierra).
El recuadro con el nombre "Character Generator" es una ROM interna al uC la cual se encarga de generar los códigos de bits para cada caracter (algo así como las miniimágenes a las que me referia en los comentarios anteriores cuando tratabamos de enviar texto en modo gráfico). Este CG tiene como entradas 8 bits provenientes de la RAM externa en donde se codifica el caracter ASCII a mostrar, y otros 4 bits provenientes del "ROW ADDRESS COUNTER" el cual es básicamente un contador de 4 bits encargado del barrido del patrón de bits que componene al caracter; en conjunto estos 12 bits forman el código de entrada para la CG ROM la cual a su salida envía el patrón de bits correspondiente al caracter codificado en la RAM.
A continuación dejo una explicación gráfica hasta este punto.
Ahora pasando a lo interesante... para generar nuestros propios caracteres es necesario generar los patrones de bits de ellos, bit pot bit. Para facilitar esta tarea he recurrido a dos programas: "Paint" con el cual dibujé cada caracter personalizado y "Bitmap2LCD" para generar el código binario para los caracteres. De esta manera podemos definir hasta 256 caracteres de 8x8 pixeles (o 512 caracteres utilizando una ROM de 4 Kbytes). A continuación muestro la tabla de caracteres y códigos que he generado; como verán son los mismos que trae el código ASCII más algunos de los símbolos más utilizados y aún así quedan varios espacios para definir algunos más.
Bien, pero ¿como añadir estos caracteres al GLCD?... Vayamos a eso.
Como mencioné anteriormente, el uC puede comunicarse al exterior por medio de 3 buses: direcciones, datos de RAM y el de datos de entrada del CG Externo. Este CG externo estará comprendido por una EPROM 27C16 (2KB) conexidonada de la siguiente manera:
Como se puede observar el bus de datos de salida de la RAM es utilizado como el byte alto del bus de direcciónes de la EPROM, los 3 bits inferiores A0, A1 y A2 están conectados a MA12, MA13 y MA14 del bus de direcciónes del uC; estos 3 bits fungen con el "RAC" para el barrido del patron de caracteres almacenado en la EPROM, en realidad MA15 también debería ser conectado pero como los caracteres que definí tienen una altura de máx 8 bytes con 3 bits es suficiente para direccionarlos.
El bus de datos de salida de la EPROM es conectado a las líneas RD0..RD7 del uC, en este bus se tendrán los patrones de bits de cada caracter personalizado.
Para acceder a ellos es necesario enviar al GLCD el comando que le indicará que conmute al CG externo, es decir enviar la siguiente secuencia de bytes:
RS=1 0x00 Comando de configuración
RS=0 0x31 Selecciona CG Externo sin visualización del cursor en modo texto
Con esto, el CG interno es ignorado y en su lugar se toman los datos provenientes de la EPROM externa.
Por ejemplo:
Supongamos que en la localidad de RAM 0x0000 (Inicio de la primera fila) se tiene el código ASCII del caracter "M" 0x4D; entonces para que el uC lea este dato primero coloca en su bus de direcciones el código 0xX000 (recordemos que los 4 bits de mayor peso son ignorados por la RAM), enseguida la RAM devuelve el código de la "M" 0x4D el cual sirve como byte alto de dirección para la EPROM, las líneas MA12-MA14 comienzan el conteo progresivo de las direcciónes 0x4D0, 0x4D1..0x4D7 para obtener los datos del patrón de bits correspondiente al caracter "M"; por esta razón en las localidades 0x4D0..4D7 debe de estar guardado dicho patrón.
Una vez terminado el barrido, el bus de datos MA0..MA11 se incrementa y apunta al siguiente
caracter en RAM y una vez más se repite el proceso hasta finalizar el barrido completo del GLCD.
Ahora, pasando al software para la EPROM, les dejo la imágen con el patrón de bits de los caracteres en tamaño real para que la puedan modificar con paint y las instrucciónes necesarias para generar el código con el Bitmap2LCD.
Configuración en el Bitmap2LCD
Patrón de bits en tamaño real
Instrucciónes
Finalmente una foto con el resultado, disculpen la calidad de la imágen pero solo tenía a la mano la cámara del celular
Como recomendación si es que desean hacer la modificación, utilicen alambre de bobina para hacer las conexiónes entre el LC7981 y la EPROM de esta manera podrán soldar con mayor comodidad. Nadamás tenga a la mano una buena cámara posteo fotos de el conexioando físico de la EPROM y el PCB que diseñé para ella.
Saludos