Autor Tema: cargar imagen en lcd grafico  (Leído 3585 veces)

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

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
cargar imagen en lcd grafico
« en: 21 de Abril de 2015, 11:52:59 »
ayuda con este código no consigo hacerlo funcionar que estoy haciendo mal

                                      //
#use delay(clock=20000000)                                  //
#include <HDM64GS12.c>                                      //
#include <graphics.c>                                       //                                                          // --------Secuencia que convierte el valor del adc--------------------//


const unsigned char Diapositiva1 [64] [16] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x6F, 0xBF, 0xDF, 0xBF, 0xDF, 0xDF, 0xDF, 0xFF,
0xEF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFD,
0xEF, 0xEF, 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x77, 0xFF, 0xFD,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF

  
   char i,j;
   signed char k;
  
   if(diapositiva1==1){
      for( i = 0 ; i < 64 ; i ++ ){
         for( j = 0 ; j < 16 ; j ++){  
         for(k=7;k>-1;k--){    
         if( bit_test(diapositiva1[j] ,7-k ))
         glcd_pixel( j*8+k,i, ON );
         }
       }
      }
   }};




///////////////////////////////////////////////////////////////////////////////
// PRINCIPAL //////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

void main()
{

glcd_init(on);//Inicializa el LCD

   glcd_fillScreen (0); // Limpa pantalla inteiro
while(true){
glcd_diapositiva1(1);//Llamada a la función que pinta la imagen
delay_ms(3000);
glcd_fillscreen(0);
}
}


lo estoy armando asi y no logro hacer que funcione quien me puede ayudar
« Última modificación: 21 de Abril de 2015, 15:57:53 por callecuatro1976 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: cargar imagen en lcd grafico
« Respuesta #1 en: 22 de Abril de 2015, 09:04:12 »
Realmente no se por que hay una funcion dentro del array ese.
Con lo que probe yo es suele haber 2 o 1 array con todos los valores. Si hay 2 , uno es por las dimensiones del otro array. Si hay uno solo o se sabe previamente las dimensiones o estan incluidas en los primeros bytes.

Y luego es enviar los datos 1 por 1 al LCD, no tiene ninguna ciencia el envio, es mas ciencia crear el array con valores hexadecimales que lo demas.

Disculpa que no te pueda ser de ayuda pero jamas trabaje con esas librerias, normalmente las hice yo copiando de otros y aprendiendo en el proceso como lo hacian.

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
Re: cargar imagen en lcd grafico
« Respuesta #2 en: 22 de Abril de 2015, 18:53:50 »
no se porque no me reconoce el array me da error como puedo solucionar la carga de imagen me da error siempre o es el compilador uso el css

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
Re: cargar imagen en lcd grafico
« Respuesta #3 en: 22 de Abril de 2015, 18:57:11 »

#include <16F877.h>
#include "diapositiva1.c"                                        //
#use delay(clock=4000000)                                  //
#include <HDM64GS12.c>                                      //
#include <graphics.c>                                       //                                                          // --------Secuencia que convierte el valor del adc--------------------//
#include <math.h>
void glcd_draw_sprite(unsigned short x0, unsigned short y0,
     unsigned char *array, unsigned short NCOLS, unsigned short NFILS )
{
    unsigned short i,j;
    unsigned char y2;
    glcd_put_ptr(G_BASE, x0, y0);
    y2 = 0;
    for (j=0;j<NFILS;j++)
        {
        y2= y2 + NCOLS;
        for (i=0;i<NCOLS;i++)
            {
            dput(array[y2+i]);cput(0xc0);
            }
        }
}

void main(){

glcd_init(on);//Inicializa el LCD
glcd_draw_sprite(x0, y0,diapositiva1,Lx,Ly);
   glcd_fillScreen (0); // Limpa pantalla inteiro
while(true){

delay_ms(3000);
glcd_fillscreen(0);
}
}


probé asi y me tira errores por todos lados

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: cargar imagen en lcd grafico
« Respuesta #4 en: 22 de Abril de 2015, 23:20:22 »
No quiero que te lo tomes a mal.. no se si estas tirando funciones por tirar, y rogando que funcionen. Normalmente eso suele funcionar rara ves, para lo demas debes estudiar el codigo, aprender como funciona un LCD y fijarte si son correctas las funciones utilizadas

Errores que encuentro ahi en tu ultimo codigo:

glcd_draw_sprite(x0, y0,diapositiva1,Lx,Ly);

solo cambiaste el valor del array pero no tocaste o no veo definido x0,y0,Lx, o Ly, que serian las coordenadas iniciales de la imagen y el numero de columnas y filas. Ese es el error ahi. Pueden haber mas.
Luego puede existir errores en la inicializacion del GLCD (al ser otra controladora), puede haber errores en la escritura del LCD o en las funciones glcd_put_ptr() , dput(), cput().

Eso me parece una libreria sacada de internet y codigos sacados de internet (Busque en el manual de CCS y no encuentro ninguna funcion que empieze con glcd o una libreria graphics.c). Vuelvo a recomendarte que aprendas realmente como funciona el LCD,
Si luego me decis yo tengo un LCD con una controladora XXXXXXX y tengo una funcion para enviar los datos pero no me lo envia, esta es la funcion: ...... ( Donde se vea exactamente cual es la funcion, es decir que hace ) Entonces tal ves sea posible ayudarte.

Acostumbrate de hacer tus librerias, CCS trae algunas librerias que te facilitan la programacion, pero cuando ocurren estos problemas hacen mas dificil encontrar la solucion.

Por ejemplo:

Tengo un TFT 320x240 con controladora HX8347 Y estoy intentando poner un grafico pequeño, para eso utilizo esta funcion:

Código: C++
  1. void LCDTFT::vLCDTFTDrawImage(unsigned short x,unsigned short y, unsigned short Width, unsigned short Heigh, unsigned int Lenght, const unsigned short *Imagen){
  2.  
  3.     vLCDTFTAddressSet(x,y,x+Width-1,y+Heigh-1);      
  4.     for(int i=0;i<Lenght;i++){
  5.         vLCDTFTWriteData(*Imagen++);                        
  6.     }
  7. }
PD: Libreria sacada de internet perteneciente a Suky

En el que vLCDTFTAddressSet Selecciona el rango de la  RAM a escribir del LCD
Y vLCDTFTWriteData Escribe el LCD, es decir maneja el puerto

Esas 2 funciones estan probadas ya que me permite escribir puntos o rellenar parte de la pantalla de un color.
Mi problema es cuando intento utilizar el codigo para mostrar una imagen, el error que me da es este:

xxxxxxxxx error. Linea xx - Metiste la pata en una parte o no tuviste precaucion

------------

Eso seria mas util que directamente dejar un codigo y tratar de entender que es lo que ocurre o no, cuando la persona que lo lee no conoce las librerias que tenes agregadas. Vuelvo a repetir todos pueden ayudarte, pero es dificil si no se presenta la duda o el problema con datos relevantes.
No manejo CCS, pero es C, tengo el manual para ayudar nomas, y no encuentro esas funciones, debo suponer que vos conoces y que esas funciones estan bien realizadas.
« Última modificación: 23 de Abril de 2015, 04:27:21 por KILLERJC »

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
Re: cargar imagen en lcd grafico
« Respuesta #5 en: 23 de Abril de 2015, 07:44:25 »
retirado saludos

es la librería grafic.c que esta en el css
« Última modificación: 23 de Abril de 2015, 10:16:27 por callecuatro1976 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: cargar imagen en lcd grafico
« Respuesta #6 en: 23 de Abril de 2015, 07:54:06 »
Edita el mensaje y por favor retira el codigo, por un tema de derechos


/////////////////////////////////////////////////////////////////////////
////        (C) Copyright 1996, 2004 Custom Computer Services        ////
//// This source code may only be used by licensed users of the CCS  ////
//// C compiler.  This source code may only be distributed to other  ////
//// licensed users of the CCS C compiler.  No other use,            ////
//// reproduction or distribution is permitted without written       ////
//// permission.  Derivative programs created using this software    ////
//// in object code form are not restricted in any way.              ////
/////////////////////////////////////////////////////////////////////////

Con respecto a la funcion es usar glcd_pixel(x,y,color) para escribir el GLCD, supongo que estara agregado en graphics.h

void dibujar() {
   char i,j;
   signed char k;
  
   for( i = 0 ; i < 64 ; i ++ ){
      for( j = 0 ; j < 16 ; j ++){  
         for(k=7;k>-1;k--){    
           if( bit_test(diapositiva1[j] ,7-k ))
               glcd_pixel( (j* 8 )+k,i, ON );
           }
       }
    }
}

Esa funcion como tenias seriviria, el tema es como esta compuesto ahora tu matriz hexadecimal.

si un 0xFF significa 8 pixels (en un LCD color normalmente eso significa un solo pixel o medio pixel segun los bits de cada color) entonces por como esta formulado en la funcion que pasaste primero quiere decir que tenes una imagen de 512x16 pixels esto es correcto ?
« Última modificación: 23 de Abril de 2015, 08:30:55 por KILLERJC »

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
Re: cargar imagen en lcd grafico
« Respuesta #7 en: 23 de Abril de 2015, 10:18:25 »
el array me lo da el lcd assistan y cuando lo cargo y compilo me da error en el  signo = y ahí en adelante con los hexadecimales

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: cargar imagen en lcd grafico
« Respuesta #8 en: 23 de Abril de 2015, 10:47:56 »
es que te deberia dar error...


Código: C
  1. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
  2.  
  3.    
  4.    char i,j;
  5.    signed char k;
  6.    
  7.    if(diapositiva1==1){
  8.       for( i = 0 ; i < 64 ; i ++ ){
  9.          for( j = 0 ; j < 16 ; j ++){  
  10.          for(k=7;k>-1;k--){    
  11.          if( bit_test(diapositiva1[j] ,7-k ))
  12.          glcd_pixel( j*8+k,i, ON );
  13.          }
  14.        }
  15.       }
  16.    }};


Fijate que tenes una funcion declarada dentro del array.la funcion podria estar fuera del array. para mi que hay algo mal, y como te digo esta funcion en realidad estaria haciedno algo de 64*8 =512 y 16 pixels de alto

No se si esas seran las dimensiones de tu LCD. Es un LCD color?, es un LCD grafico en el que solo prendes un punto ?. que controladora tiene?

Ese programa creo que no esta ayudando a darte la matrix que buscas.
« Última modificación: 23 de Abril de 2015, 10:50:47 por KILLERJC »

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: cargar imagen en lcd grafico
« Respuesta #9 en: 23 de Abril de 2015, 10:53:50 »
Todos los errores que te están dando es por eso, muchos compiladores si encuentran un fallo todo lo que esta por debajo te lo marca como errores.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
Re: cargar imagen en lcd grafico
« Respuesta #10 en: 23 de Abril de 2015, 12:15:10 »
tengo un lcd gmd12864h de xiamen ocular ahora como llamas ala función del array ??

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
Re: cargar imagen en lcd grafico
« Respuesta #11 en: 23 de Abril de 2015, 12:18:25 »
#include <16F877.h>
#include "diapositiva1.c"                                        //
#use delay(clock=4000000)
                                //
#include <HDM64GS12.c>                                      //
#include <graphics.c>
                                    //                                                          // --------Secuencia que convierte el valor del adc--------------------//
#include <math.h>

void dibujar() {
   char i,j;
   signed char k;
  
   for( i = 0 ; i < 64 ; i ++ ){
      for( j = 0 ; j < 16 ; j ++){  
         for(k=7;k>-1;k--){    
           if( bit_test(diapositiva1[j] ,7-k ))
               glcd_pixel( (j* 8 )+k,i, ON );
           }
       }
    }
}

void main(){

glcd_init(on);//Inicializa el LCD
delay_ms(200);

 
while(true){

delay_ms(3000);
glcd_fillscreen(0);
}
}

asi no me da error pero en la pantalla no se ve nada
« Última modificación: 23 de Abril de 2015, 12:29:03 por callecuatro1976 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: cargar imagen en lcd grafico
« Respuesta #12 en: 23 de Abril de 2015, 21:38:37 »
SI Y SOLO SI (debo de remarcarlo)

Funciona la libreria grafica de CCS para ese LCD haciendo estos cambios deberia andar:

El final de tu array:
Citar
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x6F, 0xBF, 0xDF, 0xBF, 0xDF, 0xDF, 0xDF, 0xFF,
0xEF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFD,
0xEF, 0xEF, 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x77, 0xFF, 0xFD,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}};


Citar
void dibujar() {
   char i,j;
   signed char k;
  
   for( i = 0 ; i < 64 ; i ++ ){
      for( j = 0 ; j < 16 ; j ++){  
         for(k=7;k>-1;k--){    
           if( bit_test(diapositiva1[j] ,7-k ))
               glcd_pixel( (j* 8 )+k,i, ON );
           }
       }
    }
}

void main(){

glcd_init(on);//Inicializa el LCD
delay_ms(200);
glcd_fillscreen(0);
delay_ms(3000);
dibujar();
while(true);

}


SI eso no anda entonces voy a realizar una sola preguntas mas:

Pudiste hacer aunque sea una linea con la funcion de esa libreria grafica?
Si la respuesta es si, entonces deebria funcionar. Sino ->

Si realmente no pudiste hacer una linea con esa libreria entonces la libreria no funciona. Por lo tanto vas a tener que buscar el controlador, leerte el datasheet, o buscar una libreria de ese controlador por internet (y adaptarla al PIC ), de todas vas a tener que buscar el controlador del GLCD y mirarlo.
Parece ademas tambien que estas teniendo problemas con C, lo cual una leida a un tutorial de C podria servir.

Datasheet del controlador:
http://www.mikroe.com/downloads/get/1909/nt7108c_spec.pdf

Aca unos ejemplos de librerias que puede requerir algun cambio:
http://embedded-lab.com/blog/?p=2398
http://www.microchipc.com/sourcecode/#samsung_ks0713

Ya no me queda mas que decirte.
« Última modificación: 23 de Abril de 2015, 22:10:35 por KILLERJC »

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
Re: cargar imagen en lcd grafico
« Respuesta #13 en: 24 de Abril de 2015, 07:34:28 »
con el cogigo que me pasaste lo único que hace son varias rayas en el lcd y nada mas no consigo hacer lo que esta en el array hay algo que le falta