desktop

Touch Screen GLCD 160x80, desarrollo con ASM + PIC18F4550

Si claro solo es necesario ocupar una de los dos el test o la interrupción todo depende de lo que necesites
 
Última edición por un moderador:
Ando leyendo sobre eso, me parece que es necesario agregar otra ROM al controlador LC7981. Por el momento me encuentro investigando como configurar el GLCD para mostrar 10x26 letras en modo caracter.

Por cierto, en la web encontré Ver el archivo adjunto glcd_160x80.rar esta libreria para CCS para controlar este GLCD... me parece muy completa aunque aún no la pruebo. Supongo ha de funcionar
 
Hombre gracias por compartir la libreria que pienso yo es la definitiva para CCS, ahora no se que hacer porque al tener esta libreria puedo migrar mi proyecto a C. ¬¬

Por cierto no sabes si hay un hilo sobre esa libreria?, porque tengo varias dudas.
 
Última edición:
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.
 
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.

Diagrama.png

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.

CGI.png

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.

Codigos.png

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:

Diagrama conexión.png

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
Config.png


Patrón de bits en tamaño real
Patrón.png

Instrucciónes
paint.png

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 :confused:

Imagen0264.jpg

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
 

Adjuntos

  • GLCD.rar
    682 KB · Visitas: 45
Última edición:
Gracias por esto, eres un hacker en todo esto, entonces debes meter la 27C16 en algun espacio de l a glcd para digamos: darle mas memoria y con A3 y MA15 se direcciona a la nueva memoria no ?.
Ahora le podre poner los iconos de las redes sociales para que se vea mas loco =P

Oye una pregunta cambiaste el backlight por uno de led? lo venden por separado ?

En mi tesis dira: Gracias a Daniel Meza por ayudarme con mi pantalla. =)
 
Última edición:
Gracias por esto, eres un hacker en todo esto, entonces debes meter la 27C16 en algun espacio de l a glcd para digamos: darle mas memoria y con A3 y MA15 se direcciona a la nueva memoria no ?.
Ahora le podre poner los iconos de las redes sociales para que se vea mas loco =P

Oye una pregunta cambiaste el backlight por uno de led? lo venden por separado ?

En mi tesis dira: Gracias a Daniel Meza por ayudarme con mi pantalla. =)

jajaja esque necesitaba mostrar esos caracteres y comprar otro GLCD que los tenga está difícil, son muy costosos...

Exacto, aunque en realidad se direcciona con MD0-MD7 y con MA12, MA13 y MA14.

Con respecto al backlight creo que optaré por adaptarle una tirita de leds que le quitaré a otro LCD de deshecho... enseguida dejo las fotos que prometí.. allí se ve la placa para la EPROM y la tira de leds que pienso adaptarle

IMG_4193.JPG

IMG_4195.JPG

IMG_4196.JPG

IMG_4197.JPG

IMG_4198.JPG

PD: Sobre la tésis.. jaja, con que quede tu proyecto está bien... saludos
 
Última edición:
Gracias compañeros... espero les sirvan... por el momento me dedicaré a lo del electroluminicente y a la adaptación de la tirita de leds, pronto les informaré sobre los avances...
Saludos
 
olinqui podrias pasar un esquematico de tu bootloader, porfas ?

Hola espero no sea muy tarde jeje el esquema de mi tarjeta con el Bootloader implementado es este y las instrucciones y el código están en el adjunto del post anterior.


Agregué unas resistencias de pull down para la lectura del panel touch esto con la intención de tener una lectura más estable estoy probando el código que escribió falflores en otro foro en CCS pero no tengo suerte para echarlo a andar me pregunto si alguien logro hacerlo en ASM igual lo entiendo mejor y resuelvo mi problema.

Saludos cordiales.
 

Adjuntos

  • Pistas Vista Superior T.JPG
    Pistas Vista Superior T.JPG
    149.4 KB · Visitas: 13
Saludos, hace tiempo que no me paseo por este tema pero en esta ocasión vengo a dejar una pequeña aplicación de este GLCD.

Consiste en un "juego de gato" (en otros lugares conocido como 3 en línea, etc) usando el touchscreen que viene incorporado en el GLCD como teclado.

Como procesador uso el PIC18F2450, dejo de todos modos el .ASM por si alguien desea adaptarlo a otro PIC de esta serie.

IMG_6850.JPG
 

Adjuntos

  • PIC_AT.rar
    71.9 KB · Visitas: 24
Como seria pensar un juego tipo Wan pero comunicado por xbee's, asi dos jugadores jugarian el mismo juego inalambricamente, oye una duda como sabe el programa donde se coloca el x o el O, es decir en que casilla se coloco la X?
 
Atrás
Arriba