bueno gente.... como a lo mejor a alguien le interesa algo este tema.... pongo una modificacion de la libreria de Ucontrol para poder pintar el byte entero en vez de pixel por pixel...
asi se gana en pintar una imagen en el lcd 8 veces el tiempo... reduciendo el tiempo y evitando parpadeos.....
void GLCD_pintaByte(int8 x, int8 y,int8 dato_entrada,int8 tipo)
{
BYTE dato;
int1 lado = GLCD_lado_CS1; // Lado en que voy a dibujar.
if(x > 63) // Veo si cae del otro lado
{ x -= 64;
lado = GLCD_lado_CS2;}
output_low(GLCD_DI); // Modo instruccion
bit_clear(x,7); // Limpio bit MSB...
bit_set(x,6); // ...y pongo el bit 6 en 1
GLCD_enviaBYTE(lado, x); //Envio la dirección de la coordenada X
// Calculo en que pagina de las 8 cae...
GLCD_enviaBYTE(lado, (y/8 & 0xBF) | 0xB8);
output_high(GLCD_DI); // ...y paso a Modo datos
//Se necesitan dos lecturas para que devuelva el dato en la nueva direccion
GLCD_leeBYTE(lado);
dato = GLCD_leeBYTE(lado);
if(tipo==0)dato = dato_entrada;
if(tipo==1)dato = dato | dato_entrada;
output_low(GLCD_DI); // Modo instruccion
GLCD_enviaBYTE(lado, x); // Fijo el lado a escribir,
output_high(GLCD_DI); // pongo en Modo Datos y....
GLCD_enviaBYTE(lado, dato); // dibujo el pixel
}
este es una funcion para mostrar las imagenes....
void glcd_imagen (int x,int8 x_lim,int8 y,int8 y_lim,int screen,int8 tipo){
int8 j,o,x2;
long w=0;
--y_lim;
x2=x;
for(j=y;j<=y_lim+y;++j){
o=j*8;
do{
if(screen==1) glcd_pintabyte(x2,o,logotipo[w],tipo);
if(screen==2) glcd_pintaByte(x2,o,bateria[w],tipo);
if(screen==3) glcd_pintaByte(x2,o,valores_guardados[w],tipo);
if(screen==4) glcd_pintaByte(x2,o,ajustes_screen[w],tipo);
if(screen==5) glcd_pintaByte(x2,o,fecha_hora[w],tipo);
if(screen==6) glcd_pintaByte(x2,o,dos_puntos[w],tipo);
if(screen==7) glcd_pintaByte(x2,o,guion[w],tipo);
if(screen==8) glcd_pintaByte(x2,o,luz[w],tipo);
++x2;
++w;
}while(x2<x_lim+x);
x2=x;
}
}
decir que la coordenada y debe de ser multiplo de 8... la X puede ser la que sea..... lim_x el tamaño de la imagen(ancho) lim_y el tamaño de la imagen(alto)despues el dato tipo es para que pinte encima de la antigua imagen que estaba representando el glcd o que la respete y pinte los pixeles de la imagen nueva con los de la vieja....
comentar que las imagenes las cree con el FastLCD, que edite el .bas... copie y pegé....
#define logo 1
const int8 logotipo[746]={
0x18,0x1C,0x1C,0x1C,0x1C,0x1C,0xFC,0xFC,0xFC,0x1C,0x1C,0x1C,0x18,0x18,0x18,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0x70,0x78,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,
0x1C,0x38,0x78,0xF0,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,
0xFC,0xF8,0xE0,0xF0,0x78,0x38,0x1C,0x1C,0x1C,0xFC,0xF8,0xE0,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0x70,0x38,0x18,0x1C,0x1C,0x1C,0x1C,0x38,0x78,0xF0,0xE0,0x80,0x00,
0x00,0x00,0x80,0xE0,0xF0,0xF8,0x38,0x3C,0x1C,0x1C,0x1C,0x3C,0x78,0xF8,0xF0,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xFC,0xFF,
0x1F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xC0,0xC0,0x80,0x00,0x00,
0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0xFF,0xFF,
0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x03,0x00,
0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xC0,
0x80,0x80,0x80,0x80,0x80,0xC0,0xC0,0xF0,0xFF,0x7F,0x1F,0x00,0x00,0x00,0x1F,0x7F,
0xFF,0xE0,0xC0,0x80,0x80,0x80,0x80,0xC0,0xE0,0xFF,0x7F,0x1F,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x07,0x1F,0x7F,0xF8,0xE0,0xE0,0xC0,
0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0xC0,0xE0,0xF0,0x7C,0x3F,0x0F,0x07,0x00,0x00,
0x00,0x00,0xC0,0xC7,0x0F,0x0D,0x0C,0x0C,0x9C,0xF8,0xF0,0x00,0x00,0xFF,0xFF,0x00,
0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x03,0x03,0x01,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,
0x03,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,
0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x03,0x03,0x03,0x03,0x01,0x01,0x06,0x06,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xC0,0x30,0x08,0x04,0x04,0x04,0x0C,0x00,0x00,0xC0,0x20,0x20,0x20,0xC0,0x00,
0x00,0xE0,0x40,0x20,0xE0,0x40,0x20,0xC0,0x00,0x00,0xE0,0x20,0x20,0x20,0xC0,0x00,
0x00,0x80,0x40,0x20,0x20,0xE0,0x00,0x00,0xE0,0x40,0x20,0x20,0xC0,0x00,0x60,0x80,
0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x04,0x84,0x84,0x44,0x38,
0x00,0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,0x00,0x08,0xFC,0x00,0x00,0x00,0x00,
0x08,0x04,0x84,0x84,0x44,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x08,0x08,
0x08,0x08,0x08,0x04,0x00,0x00,0x07,0x08,0x08,0x08,0x07,0x00,0x00,0x0F,0x00,0x00,
0x0F,0x00,0x00,0x0F,0x00,0x00,0xFF,0x08,0x08,0x08,0x07,0x00,0x00,0x07,0x08,0x08,
0x08,0x07,0x08,0x00,0x0F,0x00,0x00,0x00,0x0F,0x00,0x00,0xC1,0x36,0x0E,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x09,0x08,0x08,0x08,0x08,0x00,0x00,0x03,0x04,
0x08,0x08,0x04,0x03,0x00,0x00,0x08,0x0F,0x08,0x00,0x00,0x00,0x0E,0x09,0x08,0x08,
0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
a ver si me animo y arreglo lo de la coordenada y para que no salte de 8 en 8 pixeles....
un saludo y suerte....