Autor Tema: Dudas con el GLCD 128x64  (Leído 2031 veces)

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

Desconectado Burzredion

  • PIC10
  • *
  • Mensajes: 28
    • Burz n' Bots
Dudas con el GLCD 128x64
« en: 19 de Abril de 2008, 16:49:46 »
Holas,

estoy utilizando un GLCD de 128x64 para un proyecto, quiero poner una imagen de un logo, estuve siguiendo el ejemplo que puso el amigo monopic en este tema, pero la imagen q obtengo me sale con una línea en mitad de la pantalla. La imagen la generé con el programita G.T.P_.
El código q estoy probando es el siguiente:

Código: [Seleccionar]
#include <18F452.h>
#device adc=8
#use delay(clock=4000000)
#include "glcd.c"
#include "math.h"
#use standard_io(B)
#use standard_io(C)
#use standard_io(D)

//Logo
//*************************************************************************
BYTE CONST datanet0 [255]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x7F,0x0F,0x0F,0xCF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0x0F,0x1F,0x7F,0x7F,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x07,0x00,0xE0,0xFC,0xFF,
0xFF,0x7F,0x0F,0x03,0xC1,0xF0,0xFF,0xFF,0xFF,0x7F,0x3F,
0x0F,0x9F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x9F,0x1F,0x3F,0xFF,0xFF,0xFF,0xF1,0xE1,0x83,0x0F,0x1F,
0xFF,0xFF,0xFF,0xF0,0x80,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF
};

BYTE CONST datanet1 [255]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,
0x00,0x00,0xFC,0xFF,0xFF,0x7F,0x07,0x00,0x00,0xFC,0xFF,
0xFF,0x3F,0x07,0x00,0x80,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,
0x7F,0x3F,0x1F,0x1F,0x1F,0x1F,0x03,0x03,0x03,0xF3,0xFF,
0xFF,0x3F,0x1F,0x1F,0x1F,0x1F,0x1F,0x3F,0x7F,0xFF,0x1F,
0x0F,0x07,0x07,0x07,0x1F,0xFF,0xFF,0x7F,0x3F,0x1F,0x1F,
0x1F,0x1F,0x1F,0x3F,0xFF,0xFF,0x1F,0x1F,0x1F,0x3F,0x3F,
0x1F,0x1F,0x1F,0x3F,0x3F,0xFF,0xFF,0x3F,0x3F,0x1F,0x1F,
0x1F,0x1F,0x3F,0x7F,0xFF,0x3F,0x0F,0x07,0x07,0x07,0x3F,
0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x01,
0x1F,0xFF,0xFF,0xFF,0xF0,0x00,0x01,0x1F,0xFF,0xFF,0xFF,
0xE0,0x00,0x01,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0xC0,0x00,0x00,0x08,0xFF,0xFF,0xFF,0xC0,0x00,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xC1,0x80,0x00,0x00,0x1E,
0x1F,0x0F,0x00,0x00,0x00,0xFF,0xFF,0x07,0x03,0x03,0x31,
0x31,0x00,0x00,0x00,0xE0,0xFF,0xFE,0x00,0x00,0x00,0x1E,
0x1E,0xFF,0x8F,0x07,0x03,0x03,0x31,0x31,0x00,0x00,0x00,
0xFF,0xFF,0x00,0x00,0x00,0xF8,0xFE,0xFE,0x00,0x00,0x00,
0x00,0xFF,0xC0,0x00,0x00,0x00,0x1B,0x3B,0x18,0x18,0xF8,
0xFF,0xFE,0x00,0x00,0x00,0x00,0x1E,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x80,0xFF,0xFF,0xFF,
0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
0xFF,0xFF,0xFF
};

BYTE CONST datanet2 [255]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF0,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFC,0x00,0x00,
0x1F,0xFF,0xFF,0xFF,0xFC,0xE0,0xC0,0x03,0x0F,0x3F,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFE,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFE,0xFE,0x7E,0xBE,0xBF,0xBF,0xBF,0xBF,0xBE,0xBF,0xBF,
0xBF,0xBF,0xBF,0xBF,0xBF,0xBE,0xBE,0xBF,0xBF,0xBF,0xBF,
0xBE,0xBE,0xBE,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBE,
0xBE,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x0F,0x01,
0xE0,0xF8,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0xC0,0xFE,0xFF,
0xFF,0xFF,0x0F,0x00,0x80,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xF0,
0x80,0x03,0x0F,0x7F,0xFF,0xFF,0xFC,0xF0,0xC1,0x07,0x9F,
0xFF,0xFF,0xFF,0xFE,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x1F,0x0F,0x4F,0x0F,0x1F,0xFF,0x0F,
0xAF,0x8F,0xFF,0x1F,0x0F,0xCF,0xFF,0x0F,0x0F,0x7B,0x0D,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0x8F,
0x87,0xE0,0xF8,0xFE,0xFF,0xFF,0x7F,0x0F,0x03,0xE0,0xF0,
0xFF,0xFF,0xFF,0xFF
};

BYTE CONST datanet3 [255]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xF0,0xE0,0xE1,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE0,0xDF,0xBF,0xBF,0xBF,0xBF,0xBF,0xB0,
0xB0,0xBE,0xBE,0xBF,0xBF,0xBE,0xBE,0xBE,0xBF,0xBE,0xBE,
0xBF,0xBF,0xBE,0xBE,0xBE,0xBE,0xBF,0xBF,0xBF,0xBF,0xBF,
0xBF,0xBF,0xBF,0xDF,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF1,0xF0,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF
};

BYTE CONST datanet4 [4]={
0xFF,0xFF,0xFF,0xFF
};

//*************************************************************************

void main()
{
   glcd_init(ON);          //inicio de glcd
   glcd_fillScreen(OFF);   //limpieza de pantalla glcd

   while(TRUE)
   {
      glcd_pixel(0,0,off) ;
      for (a=1;a<=63;a++){glcd_writeByte(GLCD_CS1,datanet0[a]);}

      glcd_pixel(64,0,off) ;
      for (a=65;a<=128;a++){glcd_writeByte(GLCD_CS2,datanet0[a]);}

      glcd_pixel(0,8,off) ;
      for (a=129;a<=191;a++){glcd_writeByte(GLCD_CS1,datanet0[a]);}

      glcd_pixel(64,8,off) ;
      for (a=193;a<=254;a++){glcd_writeByte(GLCD_CS2,datanet0[a]);}
      glcd_writeByte(GLCD_CS2,tanque20[0]);


      //muestra toda la linea 1
      glcd_pixel(0,16,off) ;
      for (a=2;a<=64;a++){glcd_writeByte(GLCD_CS1,datanet1[a]);}

      glcd_pixel(64,16,off) ;
      for (a=66;a<=128;a++){glcd_writeByte(GLCD_CS2,datanet1[a]);}

      glcd_pixel(0,24,off) ;
      for (a=130;a<=192;a++){glcd_writeByte(GLCD_CS1,datanet1[a]);}

      glcd_pixel(64,24,off) ;
      for (a=194;a<=254;a++){glcd_writeByte(GLCD_CS2,tanque21[a]);}
      glcd_writeByte(GLCD_CS2,datanet1[0]);
      glcd_writeByte(GLCD_CS2,datanet2[1]);

      //muestra toda la linea 2
      glcd_pixel(0,32,off) ;
      for (a=3;a<=65;a++){glcd_writeByte(GLCD_CS1,datanet2[a]);}

      glcd_pixel(64,32,off) ;
      for (a=67;a<=129;a++){glcd_writeByte(GLCD_CS2,datanet2[a]);}

      glcd_pixel(0,40,off) ;
      for (a=131;a<=193;a++){glcd_writeByte(GLCD_CS1,datanet2[a]);}

      glcd_pixel(64,40,off) ;
      for (a=195;a<=254;a++){glcd_writeByte(GLCD_CS2,datanet2[a]);}
      glcd_writeByte(GLCD_CS2,datanet3[0]);
      glcd_writeByte(GLCD_CS2,datanet3[1]);
      glcd_writeByte(GLCD_CS2,datanet3[2]);

      //muestra toda la linea 3
      glcd_pixel(0,48,off) ;
      for (a=4;a<=66;a++){glcd_writeByte(GLCD_CS1,datanet3[a]);}

      glcd_pixel(64,48,off) ;
      for (a=68;a<=130;a++){glcd_writeByte(GLCD_CS2,datanet3[a]);}

      glcd_pixel(0,56,off) ;
      for (a=132;a<=194;a++){glcd_writeByte(GLCD_CS1,datanet3[a]);}

      glcd_pixel(64,56,off) ;
      for (a=196;a<=254;a++){glcd_writeByte(GLCD_CS2,datanet3[a]);}
      for (a=0;a<=3;a++){glcd_writeByte(GLCD_CS2,datanet4[a]);}
   }
}

a que puede deberse q aparezca dicha línea¿? Respecto al código, ¿por qué hay algunos puntos q no se toman en cuenta? es decir, todas las líneas no deberían tener esta sintaxis:

Código: [Seleccionar]
glcd_pixel(0,0,off) ;
      for (a=0;a<=63;a++){glcd_writeByte(GLCD_CS1,datanet0[a]);}

      glcd_pixel(64,0,off) ;
      for (a=64;a<=127;a++){glcd_writeByte(GLCD_CS2,datanet0[a]);}

      glcd_pixel(0,8,off) ;
      for (a=128;a<=191;a++){glcd_writeByte(GLCD_CS1,datanet0[a]);}

      glcd_pixel(64,8,off) ;
      for (a=192;a<=254;a++){glcd_writeByte(GLCD_CS2,datanet0[a]);}

Probé de esa forma pero el logo me sale movido  :(

Alguna sugerencia?
Si lo escuchamos, lo olvidamos; si lo vemos, lo recordamos; si lo hacemos, lo entendemos. (Proverbio)





Saludos desde Lima-Perú

Desconectado Burzredion

  • PIC10
  • *
  • Mensajes: 28
    • Burz n' Bots
Re: Dudas con el GLCD 128x64
« Respuesta #1 en: 19 de Abril de 2008, 19:09:01 »
Bueno, he modificado el código de esta manera:

Código: [Seleccionar]
   //muestra toda la linea 0
   glcd_pixel(0,0,off) ;
   for (a=1;a<=63;a++){glcd_writeByte(GLCD_CS1,datanet0[a]);}

   glcd_pixel(64,0,off) ;
   for (a=64;a<=127;a++){glcd_writeByte(GLCD_CS2,datanet0[a]);}

   glcd_pixel(0,8,off) ;
   for (a=128;a<=190;a++){glcd_writeByte(GLCD_CS1,datanet0[a]);}

   glcd_pixel(64,8,off) ;
   for (a=191;a<=254;a++){glcd_writeByte(GLCD_CS2,datanet0[a]);}

   //muestra toda la linea 1
   glcd_pixel(0,16,off) ;
   for (a=1;a<=63;a++){glcd_writeByte(GLCD_CS1,datanet1[a]);}

   glcd_pixel(64,16,off) ;
   for (a=64;a<=127;a++){glcd_writeByte(GLCD_CS2,datanet1[a]);}

   glcd_pixel(0,24,off) ;
   for (a=128;a<=190;a++){glcd_writeByte(GLCD_CS1,datanet1[a]);}

   glcd_pixel(64,24,off) ;
   for (a=191;a<=254;a++){glcd_writeByte(GLCD_CS2,datanet1[a]);}

   //muestra toda la linea 2
   glcd_pixel(0,32,off) ;
   for (a=1;a<=63;a++){glcd_writeByte(GLCD_CS1,datanet2[a]);}

   glcd_pixel(64,32,off) ;
   for (a=64;a<=127;a++){glcd_writeByte(GLCD_CS2,datanet2[a]);}

   glcd_pixel(0,40,off) ;
   for (a=128;a<=190;a++){glcd_writeByte(GLCD_CS1,datanet2[a]);}

   glcd_pixel(64,40,off) ;
   for (a=191;a<=254;a++){glcd_writeByte(GLCD_CS2,datanet2[a]);}

   //muestra toda la linea 3
   glcd_pixel(0,48,off) ;
   for (a=1;a<=63;a++){glcd_writeByte(GLCD_CS1,datanet3[a]);}

   glcd_pixel(64,48,off) ;
   for (a=64;a<=127;a++){glcd_writeByte(GLCD_CS2,datanet3[a]);}

   glcd_pixel(0,56,off) ;
   for (a=128;a<=190;a++){glcd_writeByte(GLCD_CS1,datanet3[a]);}

   glcd_pixel(64,56,off) ;
   for (a=191;a<=254;a++){glcd_writeByte(GLCD_CS2,datanet3[a]);}
     
   glcd_pixel(0,64,off) ;
   for (a=1;a<=3;a++){glcd_writeByte(GLCD_CS1,datanet4[a]);}

por algún motivo aparece una línea clara q es como si dividiera la pantalla en 2, el GLCD_CS1 y el GLCD_CS2, por lo menos no se ve tan mal ahora.

Respecto al código me refería a los for :
Código: [Seleccionar]
for (a=1;a<=63;a++)
for (a=64;a<=127;a++)
for (a=128;a<=190;a++)
for (a=191;a<=254;a++)

Alguien q tenga más experiencia con los GLCD podría explicar si esto es normal, o estoy obviando algo, o quizás estoy dando mal las coordenadas.

Agradeceré cualquier comentario.
Si lo escuchamos, lo olvidamos; si lo vemos, lo recordamos; si lo hacemos, lo entendemos. (Proverbio)





Saludos desde Lima-Perú

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: Dudas con el GLCD 128x64
« Respuesta #2 en: 20 de Abril de 2008, 08:14:34 »
Hola Burzredion,

Has visto este post?

http://www.todopic.com.ar/foros/index.php?topic=15750.msg100839#msg100839

A ver si te sirve de ayuda.



Un saludo desde Alicante.

Desconectado Burzredion

  • PIC10
  • *
  • Mensajes: 28
    • Burz n' Bots
Re: Dudas con el GLCD 128x64
« Respuesta #3 en: 21 de Abril de 2008, 17:20:21 »
Hola Azicuetano,

ya había visto ese post, pero no lo había probado  :roll:, estuve intentando hacerlo con la sintaxis q usa monopic, voy a probar con tu sintaxis, claro que el tamaño de la constante es diferente al que men genera el software, supongo que debo tomarlo de 64 en 64 bytes.

Otra consulta, ¿cómo manejo los textos generados por el G.T.P._? la librería glcd.c tiene una función para visualizar textos, glcd_text57(), pero quiero usar otro tipo de letra, según veo, cada caracter es de 5bytes en dicha librería, pero las que me genera el G.T.P._ son variables, dependiendo del tamaño, un caracter puede contener 10, 12, etc bytes. Por ejemplo:

Código: [Seleccionar]
STATIC CONST UNSIGNED INT8 Times_New_Roma8 []={
0x08,0x0E,0x00,0xC4,0x00,0xC7,0xE0,0xC5,0x18,0xC1,0xE0,0xC5,
0x00,0xC7,0x00,0xC4,0x00,0xC0
}; //Para la letra A

Entonces como es de más de 5bytes usé el método q vengo usando para hacer las gráficas:
Código: [Seleccionar]
glcd_pixel(0,0,off) ;
for (a=0;a<=6;a++){glcd_writeByte(GLCD_CS1,Times_New_Roma8[a]);}
glcd_pixel(0,0,off) ;
for (a=7;a<=13;a++){glcd_writeByte(GLCD_CS1,Times_New_Roma8[a]);}
glcd_pixel(0,0,off) ;
for (a=14;a<=17;a++){glcd_writeByte(GLCD_CS1,Times_New_Roma8[a]);}

y no obtengo la letra A :( voy a probar haciéndolo con tu sintaxis haber que resultados obtengo, es un dolor de cabeza usar estas librerías, pero no me daré por vencido.

gracias por responder mi consulta.
Si lo escuchamos, lo olvidamos; si lo vemos, lo recordamos; si lo hacemos, lo entendemos. (Proverbio)





Saludos desde Lima-Perú


 

anything