TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Azicuetano en 27 de Enero de 2007, 18:31:33

Título: Display gráfico 128x64
Publicado por: Azicuetano en 27 de Enero de 2007, 18:31:33
Hola gente!

Este tema ya sido tratado por varios expertos en la materia, pero bueno, seguro que alguien agradecerá que se lo den todo más masticado (y el foro agradecerá que los que comen proyectos masticados también pongan los suyos, claro  :mrgreen:).

El display que he utilizado lo compré en Futurlec:

(http://www.futurlec.com/Pictures/BLUE128X64LCD_150.jpg)
BLUE128X64LCD

Adjunto el código fuente que a continuación explico.

La parte que se encarga de dibujar pixel a pixel el dibujito es esta:
(la he sacado de un post en el que la puso BrunoF y... como no hay que reinventar la rueda y... BrunoF es un buen programador pues... la he simplificado un poco y copy-paste al canto jeje)

Código: [Seleccionar]
for( coordenada_Y = 0  ; coordenada_Y < 64 ; coordenada_Y ++ )
   {
      for( coordenada_X = 0 ; coordenada_X < 128 ; coordenada_X ++)
      {
         if(bit_test(Prueba[coordenada_Y][coordenada_X],7))
         {
            glcd_pixel( coordenada_X,coordenada_Y, OFF );
         }
      }
   }

Puesto que el bitmap que voy a representar tiene 128x64 píxeles, coordenada_X llegará hasta 128 y... coordenada_Y llegará hasta 64. Analizarla y ya vereis que es muy simple.

Bueno... de donde he sacado el bitmap?? Pues bien, aquí entran en juego (como no podía ser de otra manera) otros colegas del foro.

Como comenta el amigo LordLafebre en otro post, existe un programita maravilloso que nos pasa los dibujos que hagamos a las tablas correspondientes que pondremos en nuestro programa. Lo podeis descargar de aquí:

http://www.hobbypic.com/index.php?option=com_content&task=view&id=15&Itemid=36

Y que no se os olvide guardar un minuto de meditación trascendental en honor a todos y cada uno de los que han intervenido en este software (se lo merecen).

Su apariencia es la siguiente:

(http://img292.imageshack.us/img292/3587/gclcdgeneradortodopicxd0.jpg)

Podeis ver como nos aparecen las coordenadas de la imagen y la tabla que tendremos que copiar en nuestro programa.

La variable yo la he creado como 'unsigned char const Prueba[64][128]' puesto que, como antes he dicho el dibujo es de 128x64. Sólo decir que los 2 primeros valores de la tabla ('0x80,0x40') que se nos ha creado los he omitido.

Bueno... os pongo una foto de como se ve la cosa y mañana pondré el esquema de conexión (voy a cenar a la velocidad del rayo que me tengo que ir de fiesta  :mrgreen: :mrgreen:).

(http://img409.imageshack.us/img409/739/dibujo1ow1.jpg)


Un saludo desde Alicante.

Título: Re: Display gráfico 128x64
Publicado por: RedPic en 27 de Enero de 2007, 18:35:39
¡Hay que ver lo que hacemos los mecánicos! ja ja ja  :D :D :D

Enhorabuena, Iván. Ta quedao mu chulo, a eso se le llama integrar.

Un Saludote. :mrgreen:
Título: Re: Display gráfico 128x64
Publicado por: Nocturno en 28 de Enero de 2007, 03:42:52
Una pregunta azicuetano; veo que utilizas en tu programa una llamada a glcd_pixel, precedida de un bit_test que decide si encender o no.
Seguramente la comunicación entre el PIC y el gLCD se hará a nivel de Byte, y el compilador gastará un montón de ciclos en convertir un tratamiento de pixels en bytes para enviarlo.
¿Porqué no envías directamente los bytes completos?
Título: Re: Display gráfico 128x64
Publicado por: Azicuetano en 28 de Enero de 2007, 14:39:05
Pues porque soy tonto  :D :D :D

Tienes razón Nocturno, he mirado el asm generado y... haciendo la comparación a nivel de Byte, ahorramos ciclos.

Thanks por la puntualización.


Un saludo desde Alicante.
Título: Re: Display gráfico 128x64
Publicado por: Sispic en 28 de Enero de 2007, 17:38:00
Citar
gastará un montón de ciclos en convertir un tratamiento de pixels en bytes para enviarlo

mira queres racano . :D
Título: Re: Display gráfico 128x64
Publicado por: Nocturno en 28 de Enero de 2007, 17:58:35
Eso, eso, tú me metes la filosofía catalana y ahora te metes conmigo...
Título: Re: Display gráfico 128x64
Publicado por: monopic1 en 05 de Mayo de 2007, 01:32:46
HOLA QUE BUENA PUBLICACION ESTA DE COMO UTILIZAR UN GLCD, PERO MI DUDA ES COMO SERIA EL MISMO PROGRAMA PERO PARA UN PIC16F877A, GRACIAS POR LAS RESPUESTAS MAESTROS.
Título: Re: Display gráfico 128x64
Publicado por: maunix en 05 de Mayo de 2007, 13:56:49
HOLA QUE BUENA PUBLICACION ESTA DE COMO UTILIZAR UN GLCD, PERO MI DUDA ES COMO SERIA EL MISMO PROGRAMA PERO PARA UN PIC16F877A, GRACIAS POR LAS RESPUESTAS MAESTROS.

Dependiendo del compilador de C que uses será "casi igual", "muy igual" o "poco igual".

Título: Re: Display gráfico 128x64
Publicado por: monopic1 en 06 de Mayo de 2007, 01:07:05
HOLA SERIA BUENO ASI COMO DICE AZICUETANO , QUE COLOCARAS UN EJEMPLITO PARA UN 16F877A Y PUES DICIENDO CON QUE COMPILADOR DE C, ESTARIA MUY AGRADECIDO YA QUE HACE MUCHISIMO TIEMPO HE QUE ESTADO TRABAJANDOLE A UNA GLCD Y LA HICE FUNCIONAR PERO PARA UNA SOLA IMAGEN GASTABA EL 25% DE MEMORIA DEL MICROCONTROLADOR. ANIMENSE GRACIAS
Título: Re: Display gráfico 128x64
Publicado por: Azicuetano en 06 de Mayo de 2007, 18:24:20
Hola monopic1!

Para que te hagas una idea, cuando compilo con el CCS para el PIC18F4550 se me queda la ROM al 28% y la RAM al 51%

He intentado compilar el programilla con un 16F877 y no me llega a compilar puesto que le falta memoria. Los arrays son demasiado grandes. Todo es cuestión de complicarse un poco la vida y ver que es lo que se puede hacer para ahorrar memoria, pero bueno, eso ya será otro proyecto.

Postea tus avances para que todos podamos aprender un poquito más  :mrgreen:


Un saludo desde Alicante.
Título: Re: Display gráfico 128x64
Publicado por: maunix en 07 de Mayo de 2007, 08:31:32
HOLA SERIA BUENO ASI COMO DICE AZICUETANO , QUE COLOCARAS UN EJEMPLITO PARA UN 16F877A Y PUES DICIENDO CON QUE COMPILADOR DE C, ESTARIA MUY AGRADECIDO YA QUE HACE MUCHISIMO TIEMPO HE QUE ESTADO TRABAJANDOLE A UNA GLCD Y LA HICE FUNCIONAR PERO PARA UNA SOLA IMAGEN GASTABA EL 25% DE MEMORIA DEL MICROCONTROLADOR. ANIMENSE GRACIAS

Trata de leer las reglas del foro, así evitas el uso de mayúsculas :)

Respecto al uso de la memoria, bueno, no todo es usar un compilador y ya, también saber cómo es la arquitectura y algo de assembler te puede ayudar a ahorrar mucho espacio.

Te tiro una ayudita: se me ocurre que usando el GLCD en modo de 6 bits, podrías abarcar con una posición de memoria (14bits) 12 bits de la pantalla, en vez de solo 8.

Saludos
Título: Re: Display gráfico 128x64
Publicado por: weborro en 26 de Enero de 2008, 14:21:47
Hola, me he bajado el programilla que comentaba Acicuetano. El de la pagina de hobbyPIC, y tengo como antivirus en NOD32, y me detecta el APP como troyano y lo elimina, ya que no puede desinfectarlo. ¿A que puede deberse?

Un saludo, Weborro.
Título: Re: Display gráfico 128x64
Publicado por: pocher en 28 de Enero de 2008, 04:35:39
Se te ha pasado esto: Adjunto a esta biblioteca podéis encontrar el GCLCD TODOPIC de Lager, como la herramienta para convertir las imágenes, y fuentes. Me han comentado varios usuarios que salta el antivirus con esta herramienta, estad tranquilos, se trata de una falsa alerta, aunque no suene muy convincente es cierto :)
Título: Re: Display gráfico 128x64
Publicado por: weborro en 28 de Enero de 2008, 14:07:02
Valla pues si se me ha pasado, eso me pasa por leer con las prisas.... Aunque lo probé en otro ordenador, y me convirtio las imagenes que necesitaba. Con el antivirus no me daba tiempo a nada, me lo borraba antes de darme cuenta...Lo desactivaré cada vez que lo necesite usar...

Un saludo, weborro
Título: Re: Display gráfico 128x64
Publicado por: tottitona en 27 de Julio de 2009, 08:42:19
amigos por favor les pido ayuda tengo una glcd winstar g12864a de 128x64 con controlador ks0108 necesito la rutina paso a paso sobre como inicializarla las sincronia que se le debe dar a las señales por que en los data sheet que e descargado
solo aparecen unos cuantos pines mencionados 
r/s =L
R/w=L
bus de datos=%0011111
y no consideran a E,CS1,CS2
y lo mismo sucede con las otras instrucciones las unicas que si aparecen bien especificadas son las rutinas de escritura y de lectura

ayuda por favor
Título: Re: Display gráfico 128x64
Publicado por: albermillan69 en 12 de Mayo de 2010, 22:59:19
Una pregunta azicuetano; veo que utilizas en tu programa una llamada a glcd_pixel, precedida de un bit_test que decide si encender o no.
Seguramente la comunicación entre el PIC y el gLCD se hará a nivel de Byte, y el compilador gastará un montón de ciclos en convertir un tratamiento de pixels en bytes para enviarlo.
¿Porqué no envías directamente los bytes completos?

Como quedaria el programa enviando en byte y no en bit????

El link del programa para generar el codigo no funciona!!! si lo pueden postear de nuevo!! MIL GRACIAS