Autor Tema: Libreria gráfica CCS para GLCD KS0108.  (Leído 8049 veces)

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

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Libreria gráfica CCS para GLCD KS0108.
« en: 12 de Julio de 2008, 15:40:49 »
Hola amigos!
Este hilo surge a partir del proyecto de crear una sencilla plataforma para juegos basada en PIC. Implica crear una interfase para ver imagenes en un TV, y....una libreria para este GLCD, ya que la "version portatil" del mismo usará esa pantalla.

Dado que nos gustaria proveer una serie de funciones en CCS para facilitar las tareas a los que quieran desarrollar algun juego para la maquinita, pondre por aqui las ideas y soluciones que vayan surgiendo.

Cuando todo este listo, armaré un archivo con todo el proyecto para que se pueda copiar libremente. Comencemos!
------------

Lista de funciones (provisoria, ampliable y cuestionable) a implementar:

- limpiar_pantalla ()
Limpia la pantalla. Es decir, la “pinta” con el color de fondo, que seria por defecto del color “0”

- punto (int x, int y, int color)
Dibuja un punto en (x,y) con el color color.

- linea (int x1, int y1, int x2, int2,int color, int grosor)
Traza una recta entre (x1,y1) y (x2,y2) del color  y grosor especificado.

- rectangulo (int x1, int y1, int x2, int2,int color, int grosor)
Dibuja un rectángulo entre (x1,y1) (esquina superior izquierda) y (x2,y2) (esquina inferior derecha) del color  y grosor especificado. El interior del rectángulo se mantiene del color del fondo.

- caja (int x1, int y1, int x2, int2,int color)
Dibuja un rectángulo entre (x1,y1) (esquina superior izquierda) y (x2,y2) (esquina inferior derecha) del color especificado.

- Circulo (int x, int y, int radio, int color)
Dibuja un circulo con centro en (x1,y1), radio especificado y borde del color elegido. El interior se mantiene del color del fondo.
 
- Circunferencia (int x, int y, int radio, int color)
Dibuja un circulo con centro en (x1,y1), radio especificado y lo pinta del color elegido.

- char (int x, int y, int character, int fuente, int color)
Escribe un carácter en la posición (x1,y1) (esquina superior izquierda de la “caja” que contiene el carácter), de la fuente especificada. El color puede seleccionarse.
Implica definir al menos un juego de caracteres (tengo el de la C64 por ahi), guardarlo en la EEPROM en alguna posicion fija, etc.

- Bitmap ((int x, int y, word posicion_en_la_eeprom)
Dibuja un bitmap en la posición (x1,y1) (esquina superior izquierda de la “caja” que contiene el dibujo), desde la posición de la EEPROM especificada.
Esta es la mas complicada. Habria que ver el formato (BMP?), cantidad de colores, etc. Pero puede ser muy util para las pantallas de los juegos....

-----------------------------------
Entre la informacion que he encontrado en Google, se "destaca" esta (un post de un tal Armando en un blog):

"La librería para el CCS llamada KS0108 no me valía para nada. Recuerdo que a ti tampoco te iba.
El caso es que me cogí el datasheet del fabricante (que hay varios) y me lo empollé un poco.
La verdad es que es mas o menos sencillo, mirando el protocolo y cumpliendo los tiempos no hay problema. En realidad solo existen 3 o 4 instrucciones, establecer coordenada X, Y, y Z, escribir, leer y leer el registro de estado. En mi programa los tiempos van todos sobrados, es decir, que segun el fabricante los ciclos de lectura y escritura estan en el orden de nanosegundos, mientras que yo al utilizar un cristal de 4 Mhz, lo mínimo que puedo contar es 250 ns, pero no hay problema con eso mientras se respeten las temporizaciones en exceso.

Ah, otra cosa, hay muchos fabricantes que utilizan ese controlador, lo que importa es el patillaje, en los dos datasheet que te adjunto, uno está en chino, pero es mi modelo exacto (comprado en futurlec) y el otro en inglés (que es el que he utilizado para entender el protocolo).
"

Por supuesto, no estan ninguno de los dos datasheets mencionados.

Comienzo hoy mismo a investigar y avanzar en el tema. :)
« Última modificación: 12 de Julio de 2008, 15:46:55 por aitopes »
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Libreria gráfica CCS para GLCD KS0108.
« Respuesta #1 en: 12 de Julio de 2008, 15:52:33 »
Este puede ser un buen punto de partida.

Es una libreria posteada en el foro de CCS, que acabo de comenzar a analizar.

Saludos.

EDITO: La librería funciona. Solo tiene las "primitivas" para puntos, inicializacion y poco mas, pero creo que con ella puedo construir las otras en poco tiempo.

Saludos!
« Última modificación: 12 de Julio de 2008, 16:07:33 por aitopes »
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Libreria gráfica CCS para GLCD KS0108.
« Respuesta #2 en: 12 de Julio de 2008, 16:17:31 »
YES!!!

Un pequeño paso, pero significa que todo esta ok. Ya puedo hacer lineas! :)

Cuando depure todo, posteo el código.

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Libreria gráfica CCS para GLCD KS0108.
« Respuesta #3 en: 12 de Julio de 2008, 18:51:29 »
Apunto tambien por aqui un buen articulo sobre como dibujar circulos y demas primitivas gráficas con la menor cantidad posible de operaciones matematicas. Eso brinda mas velocidad y menor consumo de recursos.

¿Sabias que se pueden dibujar circulos sin Senos, Cosenos o Raices Cuadradas? :)

primitivas graficas 1
primitivas graficas 2
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado Duende_Azul

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 902
Re: Libreria gráfica CCS para GLCD KS0108.
« Respuesta #4 en: 13 de Julio de 2008, 20:47:26 »
El CCS ya trae una libreria para ese GLCD, se llama hdm64gs12.c y yo la he usado sin problemas.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Libreria gráfica CCS para GLCD KS0108.
« Respuesta #5 en: 14 de Julio de 2008, 09:22:10 »
Hola Duende!
Gracias por el dato! :)

Las "librerias" que traen CCS tienen una leyenda de Copyright al comienzo, y como a mi me gusta mucho que la gente copie las cosas, es que quiero hacer una version que sea "open source".

Mirando un poco la libreria de CCS, veo que han usado exactamente los mismos algoritmos que estoy usando yo. Me refiero a los links que postee antes. Evidentemente, son los mas "economicos" en cuanto a consumo e tiempo y de recursos.

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert