Autor Tema: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS  (Leído 15186 veces)

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

Desconectado Olinqui

  • PIC10
  • *
  • Mensajes: 19
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #15 en: 16 de Agosto de 2012, 04:18:38 »
Hola amigo falflores te cuento que también estoy haciendo pruebas con el 18F4550 pero me tira un error y no doy con el espero me puedas tirar un cable adjunto una captura del error y el código como lo tengo desde ya gracias.

Saludos cordiales.
Código: [Seleccionar]
/*****************************************************************
** Conexion del touchscreen resistivo de 4 hilos
** X+ = RA0/AN0
** Y+ = RA1/AN1
** X- = RA2/AN2
** Y- = RA3/AN3
*****************************************************************/

#include<18F4550.h>
#device adc=10
#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG
#use delay(clock=20MHz)

#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)
#use fast_io(E)

#include<glcd_160x80.h>

void configure()
{
   set_tris_A(0x00);
   set_tris_B(0x00);
   //set_tris_C(0x00);
   set_tris_D(0x00);
   output_A(0x00);
   output_B(0x00);
   //output_C(0x00);
   output_D(0x00);

   setup_adc_ports(AN0_TO_AN3);
      setup_adc(ADC_CLOCK_INTERNAL);
}

int16 tmp;
int16 y_min,y_max,x_min,x_max;
int16 y_loc,x_loc,y_rng,x_rng;
int1 flag_boton=0;
char boton[2];

const int8 imagen[80][20] = {   // imagen del teclado adaptada
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x07,0xFF,0xFF,0xE0,0xFF,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00},
{0x04,0x00,0x8C,0x00,0x80,0x11,0x00,0x30,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xC0,0x03,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0E,0x58,0x60,0x03,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0F,0x58,0x00,0x06,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x00,0x03,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x80,0x03,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x80,0x01,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xC0,0x00,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xC0,0x00,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xE0,0x07,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x00,0x58,0x00,0x00,0x0B,0x00,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x9C,0x00,0x80,0x13,0x00,0x70,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x0F,0xFF,0xFF,0xE1,0xFF,0x3F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF0,0xFF,0x07,0xFE,0xFF,0xC0,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x07,0xFF,0xFF,0xE0,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x8C,0x00,0x80,0x11,0x00,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x06,0x58,0xE0,0x03,0x0B,0x70,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x03,0x58,0x60,0x00,0x0B,0x18,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x03,0x58,0x60,0x00,0x0B,0x0C,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x03,0x58,0xE0,0x03,0x0B,0x7C,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x82,0x0D,0x58,0x00,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x82,0x0D,0x58,0x00,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x82,0x1F,0x58,0x00,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x00,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xE0,0x03,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x00,0x58,0x00,0x00,0x0B,0x00,0x60,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00},
{0x04,0x00,0x9C,0x00,0x80,0x13,0x00,0x70,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x0F,0xFF,0xFF,0xE1,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00},
{0xF0,0xFF,0x07,0xFE,0xFF,0xC0,0xFF,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x07,0xFF,0xFF,0xE0,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x8C,0x00,0x80,0x11,0x00,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x3F,0x58,0xC0,0x03,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1B,0x58,0x60,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x18,0x58,0x60,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x18,0x58,0xE0,0x07,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x18,0x58,0xE0,0x07,0x0B,0xF8,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x60,0x06,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x60,0x06,0x0B,0xE0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x60,0x06,0x0B,0x70,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xC0,0x03,0x0B,0x38,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x00,0x58,0x00,0x00,0x0B,0x00,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x9C,0x00,0x80,0x13,0x00,0x70,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x0F,0xFF,0xFF,0xE1,0xFF,0x3F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF0,0xFF,0x07,0xFE,0xFF,0xC0,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x8C,0x00,0x00,0x00,0x00,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1E,0x58,0x00,0x9F,0x81,0x0F,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1E,0x58,0x80,0x81,0x81,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x0F,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x0D,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x0D,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1E,0x58,0x80,0x81,0x81,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1E,0x58,0x00,0x9F,0x9F,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x00,0x58,0x00,0x00,0x00,0x00,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x9C,0x00,0x00,0x00,0x00,0x70,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0x3F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00},
{0xF0,0xFF,0x07,0xFE,0xFF,0xFF,0xFF,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,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,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,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,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,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,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,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,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},
};

/****************************************************************
*****   Rutina para mostrar la imagen del teclado             ***
****************************************************************/
void put_image()   // función para mostrar la imagen declara en el GLCD
{
   glcd_go_address(0);
   glcd_command_write();
   for(i=0;i<80;i++)
   {
      for(j=0;j<20;j++) glcd_send_byte(imagen[i][j]);
   }
}

/**************************************************
*******  Lee la coordenada y   ********************
**************************************************/
int16 y_pos(void)
{
   int16 result;
   set_tris_a(0x04);
   output_a(0x0A);      //Energize X plate, RA1 and RA3
   set_adc_channel(2);   //Set AN2 as input
   delay_us(10);
   result = read_adc(); //get Y axis value
   if (result != 0)
   {
      set_tris_a(0x01);
      set_adc_channel(0);
      delay_us(10);
      tmp = (1023 - read_adc());
      result = (result + tmp) >> 1;   
   }
   Return(result);
}

/**************************************************
*******  Lee la coordenada x   ********************
**************************************************/
int16 x_pos(void)
{
   int16 result;
   set_tris_a(0x02);
   output_a(0x05);      //Energize X plate, RA1 and RA3
   set_adc_channel(1);   //Set AN2 as input
   delay_us(10);
   result = read_adc(); //get Y axis value
   if (result != 0)
   {
      set_tris_a(0x08);
      set_adc_channel(3);
      delay_us(10);
      tmp = (1023 - read_adc());
      result = (result + tmp) >> 1;   
   }   
   Return(result);
}

/**************************************************
***  Funcion para determinar si la pantalla     ***
***  ha sido pulsada o no...                    ***
**************************************************/
int1 touch(void)
{
   int1 resp;
   int16 tmp,ty,tx;
   resp=false;
   ty = y_pos();
   if (ty > 0)
   {
      delay_ms(30);
      ty=y_pos();
      tx=x_pos();
      if (ty > y_min)
      {
         if(ty < y_max)
         {
            resp = true;
            tmp=(tx - x_min) << 7;
         
            x_loc =(int16)(tmp/x_rng);         
            if(x_loc > 127)  x_loc = 127;
            tmp = (ty - y_min) << 6;
            y_loc = (int16)(tmp/y_rng);
            if(y_loc > 63)   y_loc = 63;
         }
      }
   }
   return(resp);
}

/*************************************************************
*****  Rutina para calibrar la pantalla                *******
*************************************************************/
void calibracion()
{
   int1 sw;
   sw=1;
   while(x_pos()==0)
   {
      glcd_line(1,1,10,1,sw);
      glcd_line(1,1,1,10,sw);
      glcd_rect(1,1,5,5,YES,SW);
      delay_ms(150);
      sw=!sw;
   }
   delay_ms(30);
   y_min = y_pos();
   x_min = x_pos();
   glcd_fill_screen(OFF);
   while(x_pos() > 0);
   delay_ms(30);
   while(x_pos()==0)
   {
      glcd_line(128,64,128,54,sw);
      glcd_line(128,64,118,64,sw);
      glcd_rect(123,59,128,64,YES,SW);
      delay_ms(150);
      sw=!sw;
   }
   delay_ms(30);
   y_max = y_pos();
   x_max = x_pos();
   y_rng = y_max - y_min;
   x_rng = x_max - x_min;
   while(x_pos() > 0);
   glcd_fill_screen(OFF);
}

/*****************************************************************
******  Determina sobre que boton se ha pulsado            ********
*****************************************************************/
int8 boton_act(void)
{
   int8 button;
   if(((x_loc>2)&&(y_loc>2))&((x_loc<21)&&(y_loc<16)))    button = '1';
   if(((x_loc>23)&&(y_loc>2))&((x_loc<42)&&(y_loc<16)))    button = '2';
   if(((x_loc>44)&&(y_loc>2))&((x_loc<63)&&(y_loc<16)))    button = '3';
   if(((x_loc>2)&&(y_loc>18))&((x_loc<21)&&(y_loc<32)))    button = '4';
   if(((x_loc>23)&&(y_loc>18))&((x_loc<42)&&(y_loc<32)))    button = '5';
   if(((x_loc>44)&&(y_loc>18))&((x_loc<63)&&(y_loc<32)))    button = '6';
   if(((x_loc>2)&&(y_loc>34))&((x_loc<21)&&(y_loc<48)))    button = '7';
   if(((x_loc>23)&&(y_loc>34))&((x_loc<42)&&(y_loc<48)))    button = '8';
   if(((x_loc>44)&&(y_loc>34))&((x_loc<63)&&(y_loc<48)))    button = '9';
   if(((x_loc>2)&&(y_loc>50))&((x_loc<21)&&(y_loc<64)))    button = '0';
   if(((x_loc>23)&&(y_loc>50))&((x_loc<63)&&(y_loc<64)))    button = 'X';
   
   return(button);
}

void main()
{
   configure();
   glcd_init(GRAPHIC);
   calibracion();   //Calibra la pantalla
   put_image();     //muestra el teclado
   //glcd_init(CHARACTER);

   while(TRUE)
   {
      /*
      // Para ver los valores calibrados y sin calibrar, requiere el GLCD en
      // modo alfanumérico, comentar glcd_init(GRAPHIC) y put_image() y
      // descomentar glcd_init(CHARATER) arriba del while(TRUE)
      temp=touch();
      printf(glcd_putc,"\f\n\nSin calibrar: (%lu,%lu)\n",x_pos(),y_pos());
      printf(glcd_putc,"Calibrado:    (%lu,%lu)\n",x_loc,y_loc);
      delay_ms(50);
      */

      //------------------------------------------------------------------
     
      /*
      // dibujar en el GLCD
      if(touch()==true)
      {
         glcd_pixel(x_loc,y_loc,ON);
      }
      */
     
      //------------------------------------------------------------------------

      // teclado en pantalla con numeros del 1 al 0 y clear
      // el boton 1 prende un LED conectado en PIN_D0
      // el boton 2 apaga el LED conectado en PIN_D0
      if(touch()==true)
      {
         boton=boton_act();
         boton[1]='\0';
         if(boton[0]=='1'&&flag_boton==0)
         {
            flag_boton=1;
            output_high(PIN_D0);
         }
         if(boton[0]!='1'&&flag_boton==1) flag_boton=0;

         if(boton[0]=='2'&&flag_boton==0)
         {
            flag_boton=1;
            output_low(PIN_D0);
         }
         if(boton[0]!='2'&&flag_boton==1) flag_boton=0;

         
         if (boton[0]=='X')
            glcd_rect(91,9,100,22,YES,OFF); //Borra el numero mostrado
         
         if ((boton[0]>='0')&&(boton[0]<='9'))
         {
            glcd_rect(91,9,100,22,YES,OFF);  //Borra el numero mostrado antes de
            glcd_text57(91,9,boton,2,ON); //escribir uno nuevo..   
         }
      }   
   }
}
MENTE SOBRE MATERIA

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #16 en: 16 de Agosto de 2012, 16:32:16 »
Hola Olinqui, ya probé el código para el 18F4550, y resulta que a mi no me tira ningún error. Unicamente lo que te falta poner es el setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_PLL_OFF); dentro de la función configuration(), pero yo lo compilé sin esa instrucción y no me marca error alguno, si te sirve de algo, yo tengo la versión de MPLab 8.86, tal vez tu tengas otra que por algún motivo saca ese error.

También puede ser que tu compilador enloquesca como me pasó a mi al declarar ese arreglo de 1600 bytes, me marcaba errores donde no los había, puedes intentar borrar temporalmente el arreglo, comentar donde se utiliza y compilar, tal vez el error te lo marque en otro lado, aunque como te digo, a mi no me marcó ninguno. Espero logres dar con el problema. Saludos!!
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado Olinqui

  • PIC10
  • *
  • Mensajes: 19
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #17 en: 17 de Agosto de 2012, 04:48:45 »
Hola falflores creo que este código es para C18 es así? por que lo estoy compilando en CCS 4.128 y creo que ese es el problema jeje me indicas que tienes el MPLAB 8.86 y ese es el compilador de MICROCHIP jeje y yo estoy usando CCS
MENTE SOBRE MATERIA

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #18 en: 17 de Agosto de 2012, 13:59:40 »
Hola falflores creo que este código es para C18 es así? por que lo estoy compilando en CCS 4.128 y creo que ese es el problema jeje me indicas que tienes el MPLAB 8.86 y ese es el compilador de MICROCHIP jeje y yo estoy usando CCS

Si, perdón, te dí la versión del IDE. Yo programo en CCS, pero con el plugin para usarlo desde MPLab, te anexo una captura de la versión del CCS que tengo:

Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado Olinqui

  • PIC10
  • *
  • Mensajes: 19
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #19 en: 18 de Agosto de 2012, 00:21:04 »
Hola de nuevo amigo falflores pues te comento que hice lo que me sugeriste de borrar y comentar para ver si se des atontaba el compilador pero nada me sigue dando el mismo error ya lo revise varias beses por si cometí un error en las modificaciones que hice esto fue cambiar las salidas analógicas para que se ajustaran a mi tarjeta ya que el código original esta así.

X+ RA0          y yo los tengo conectados así        X+ RA2
Y+ RA1                                                             Y+ RA0
X - RA2                                                             X - RA3
Y - RA3                                                             Y -  RA1

Y las salidas de los led´s las pase al puerto "B"

lo curioso es que si comento la linea " boton=boton_act(); " que es la que marca el error, ya me deja compilarlo incluso lo cargo al pic con el Bootloader pero solo se ve la imagen de los números pero no ase nada el touch pego el código como quedo a ver si puedes darle una miradita y compilarlo porfa así me saco la duda si es que tengo que cambiar a la versión anterior de CCS.

Código: [Seleccionar]
/*****************************************************************
** Conexion del touchscreen resistivo de 4 hilos
** X+ = RA0/AN0
** Y+ = RA1/AN1
** X- = RA2/AN2
** Y- = RA3/AN3
*****************************************************************/

 #include <18F4550.h>
 #device adc=10
 #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
 #use delay(clock=48MHz)
 #include "usb_bootloader.h"
 #include<glcd_160x80.h>

#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)
#use fast_io(E)

void configure()
{
   set_tris_A(0x00);
   set_tris_B(0x00);
   set_tris_C(0x00);
   set_tris_D(0x00);
   output_A(0x00);
   output_B(0x00);
   output_C(0x00);
   output_D(0x00);

   setup_adc_ports(AN0_TO_AN3);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_PLL_OFF);
}

int16 tmp;
int16 y_min,y_max,x_min,x_max;
int16 y_loc,x_loc,y_rng,x_rng;
int1 flag_boton=0;
char boton[2];

const int8 imagen[80][20] = {   // imagen del teclado adaptada
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x07,0xFF,0xFF,0xE0,0xFF,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00},
{0x04,0x00,0x8C,0x00,0x80,0x11,0x00,0x30,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xC0,0x03,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0E,0x58,0x60,0x03,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0F,0x58,0x00,0x06,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x00,0x03,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x80,0x03,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x80,0x01,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xC0,0x00,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xC0,0x00,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xE0,0x07,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x00,0x58,0x00,0x00,0x0B,0x00,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x9C,0x00,0x80,0x13,0x00,0x70,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x0F,0xFF,0xFF,0xE1,0xFF,0x3F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF0,0xFF,0x07,0xFE,0xFF,0xC0,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x07,0xFF,0xFF,0xE0,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x8C,0x00,0x80,0x11,0x00,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x06,0x58,0xE0,0x03,0x0B,0x70,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x03,0x58,0x60,0x00,0x0B,0x18,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x03,0x58,0x60,0x00,0x0B,0x0C,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x03,0x58,0xE0,0x03,0x0B,0x7C,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x82,0x0D,0x58,0x00,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x82,0x0D,0x58,0x00,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x82,0x1F,0x58,0x00,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x00,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xE0,0x03,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x00,0x58,0x00,0x00,0x0B,0x00,0x60,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00},
{0x04,0x00,0x9C,0x00,0x80,0x13,0x00,0x70,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x0F,0xFF,0xFF,0xE1,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00},
{0xF0,0xFF,0x07,0xFE,0xFF,0xC0,0xFF,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x07,0xFF,0xFF,0xE0,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x8C,0x00,0x80,0x11,0x00,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x3F,0x58,0xC0,0x03,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1B,0x58,0x60,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x18,0x58,0x60,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x18,0x58,0xE0,0x07,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x18,0x58,0xE0,0x07,0x0B,0xF8,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x60,0x06,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x60,0x06,0x0B,0xE0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x60,0x06,0x0B,0x70,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xC0,0x03,0x0B,0x38,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x00,0x58,0x00,0x00,0x0B,0x00,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x9C,0x00,0x80,0x13,0x00,0x70,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x0F,0xFF,0xFF,0xE1,0xFF,0x3F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF0,0xFF,0x07,0xFE,0xFF,0xC0,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x8C,0x00,0x00,0x00,0x00,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1E,0x58,0x00,0x9F,0x81,0x0F,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1E,0x58,0x80,0x81,0x81,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x0F,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x0D,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x0D,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1E,0x58,0x80,0x81,0x81,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1E,0x58,0x00,0x9F,0x9F,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x00,0x58,0x00,0x00,0x00,0x00,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x9C,0x00,0x00,0x00,0x00,0x70,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0x3F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00},
{0xF0,0xFF,0x07,0xFE,0xFF,0xFF,0xFF,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,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,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,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,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,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,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,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,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},
};

/****************************************************************
*****   Rutina para mostrar la imagen del teclado             ***
****************************************************************/
void put_image()   // función para mostrar la imagen declara en el GLCD
{
   glcd_go_address(0);
   glcd_command_write();
   for(i=0;i<80;i++)
   {
      for(j=0;j<20;j++) glcd_send_byte(imagen[i][j]);
   }
}

/**************************************************
*******  Lee la coordenada Y   ********************
**************************************************/
int16 y_pos(void)
{
   int16 result;
//   set_tris_a(0x04);     //00000100 RA2 (X-)como entrada
   set_tris_a(0b00001000); //00001000 RA3 (X-)como entrada
//   output_a(0x0A);       //00001010 Energize placa Y, RA1(Y+) y RA3(Y-)
   output_a(0b00000011);   //00000011 Energize placa Y, RA0(Y+) y RA1(Y-)
//   set_adc_channel(2);   //Selecciono AN2(X-) como entrada analogica
   set_adc_channel(3);     //Selecciono AN3(X-) como entrada analogica
   delay_us(10);           //Espero 10 microsegundos
   result = read_adc();    //Obtener el valor del eje Y
   if (result != 0)
   {
//      set_tris_a(0x01);    //00000001 Pone RA0(X+) como entrada
    set_tris_a(0b00000100);  //00001000 Pone RA2(X+) como entrada
//      set_adc_channel(0);  //Selecciono AN0(X+) como entrada analogica
      set_adc_channel(2);    //Selecciono AN2(X+) como entrada analogica
      delay_us(10);
      tmp = (1023 - read_adc());
      result = (result + tmp) >> 1;   
   }
   Return(result);
}

/**************************************************
*******  Lee la coordenada x   ********************
**************************************************/
int16 x_pos(void)
{
   int16 result;
//   set_tris_a(0x02);     //00000010 RA1 (Y+)como entrada
   set_tris_a(0b00000001); //00000001 RA0 (Y+)como entrada
//   output_a(0x05);       //00000101 Energize placa X, RA0(X+) y RA2(X-)
   output_a(0b00001100);   //00001100 Energize placa X, RA2(X+) y RA3(X-)
//   set_adc_channel(1);   //Selecsiono AN1(Y+) como entrada analogica
   set_adc_channel(0);     //Selecsiono AN0(Y+) como entrada analogica
   delay_us(10);           //Espero 10 microsegundos
   result = read_adc();    //Obtener el valor del eje X
   if (result != 0)
   {
//      set_tris_a(0x08);    //00001000 Pone RA3(Y-) como entrada
    set_tris_a(0b00000010);  //00001000 Pone RA1(Y-) como entrada
//      set_adc_channel(3);  //Selecsiono AN3(Y-) como entrada analogica
    set_adc_channel(1);      //Selecsiono AN1(Y-) como entrada analogica
      delay_us(10);
      tmp = (1023 - read_adc());
      result = (result + tmp) >> 1;   
   }   
   Return(result);
}

/**************************************************
***  Funcion para determinar si la pantalla     ***
***  ha sido pulsada o no...                    ***
**************************************************/
int1 touch(void)
{
   int1 resp;
   int16 tmp,ty,tx;
   resp=false;
   ty = y_pos();
   if (ty > 0)
   {
      delay_ms(30);
      ty=y_pos();
      tx=x_pos();
      if (ty > y_min)
      {
         if(ty < y_max)
         {
            resp = true;
            tmp=(tx - x_min) << 7;
         
            x_loc =(int16)(tmp/x_rng);         
            if(x_loc > 127)  x_loc = 127;
            tmp = (ty - y_min) << 6;
            y_loc = (int16)(tmp/y_rng);
            if(y_loc > 63)   y_loc = 63;
         }
      }
   }
   return(resp);
}

/*************************************************************
*****  Rutina para calibrar la pantalla                *******
*************************************************************/
void calibracion()
{
   int1 sw;
   sw=1;
   while(x_pos()==0)
   {
      glcd_line(1,1,10,1,sw);
      glcd_line(1,1,1,10,sw);
      glcd_rect(1,1,5,5,YES,SW);
      delay_ms(150);
      sw=!sw;
   }
   delay_ms(30);
   y_min = y_pos();
   x_min = x_pos();
   glcd_fill_screen(OFF);
   while(x_pos() > 0);
   delay_ms(30);
   while(x_pos()==0)
   {
      glcd_line(128,64,128,54,sw);
      glcd_line(128,64,118,64,sw);
      glcd_rect(123,59,128,64,YES,SW);
      delay_ms(150);
      sw=!sw;
   }
   delay_ms(30);
   y_max = y_pos();
   x_max = x_pos();
   y_rng = y_max - y_min;
   x_rng = x_max - x_min;
   while(x_pos() > 0);
   glcd_fill_screen(OFF);
}

/*****************************************************************
******  Determina sobre que boton se ha pulsado            ********
*****************************************************************/
int8 boton_act(void)
{
   int8 button;
   if(((x_loc>2)&&(y_loc>2))&((x_loc<21)&&(y_loc<16)))    button = '1';
   if(((x_loc>23)&&(y_loc>2))&((x_loc<42)&&(y_loc<16)))    button = '2';
   if(((x_loc>44)&&(y_loc>2))&((x_loc<63)&&(y_loc<16)))    button = '3';
   if(((x_loc>2)&&(y_loc>18))&((x_loc<21)&&(y_loc<32)))    button = '4';
   if(((x_loc>23)&&(y_loc>18))&((x_loc<42)&&(y_loc<32)))    button = '5';
   if(((x_loc>44)&&(y_loc>18))&((x_loc<63)&&(y_loc<32)))    button = '6';
   if(((x_loc>2)&&(y_loc>34))&((x_loc<21)&&(y_loc<48)))    button = '7';
   if(((x_loc>23)&&(y_loc>34))&((x_loc<42)&&(y_loc<48)))    button = '8';
   if(((x_loc>44)&&(y_loc>34))&((x_loc<63)&&(y_loc<48)))    button = '9';
   if(((x_loc>2)&&(y_loc>50))&((x_loc<21)&&(y_loc<64)))    button = '0';
   if(((x_loc>23)&&(y_loc>50))&((x_loc<63)&&(y_loc<64)))    button = 'X';
   
   return(button);
}

void main()
{
   configure();
   glcd_init(GRAPHIC);
   calibracion();   //Calibra la pantalla
   put_image();     //muestra el teclado
   //glcd_init(CHARACTER);

   while(TRUE)
   {
      /*
      // Para ver los valores calibrados y sin calibrar, requiere el GLCD en
      // modo alfanumérico, comentar glcd_init(GRAPHIC) y put_image() y
      // descomentar glcd_init(CHARATER) arriba del while(TRUE)
      temp=touch();
      printf(glcd_putc,"\f\n\nSin calibrar: (%lu,%lu)\n",x_pos(),y_pos());
      printf(glcd_putc,"Calibrado:    (%lu,%lu)\n",x_loc,y_loc);
      delay_ms(50);
      */

      //------------------------------------------------------------------
     
      /*
      // dibujar en el GLCD
      if(touch()==true)
      {
         glcd_pixel(x_loc,y_loc,ON);
      }
      */
     
      //------------------------------------------------------------------------

      // teclado en pantalla con numeros del 1 al 0 y clear
      // el boton 1 prende un LED conectado en PIN_B0 ****************
      // el boton 2 apaga el LED conectado en PIN_B0 ****************
      if(touch()==true)
      {
         boton=boton_act();         //**************Error************
         boton[1]='\0';
         if(boton[0]=='1'&&flag_boton==0)
         {
            flag_boton=1;
            output_high(PIN_B0);       //**************************
         }
         if(boton[0]!='1'&&flag_boton==1) flag_boton=0;

         if(boton[0]=='2'&&flag_boton==0)
         {
            flag_boton=1;
            output_low(PIN_B0);        //**************************
         }
         if(boton[0]!='2'&&flag_boton==1) flag_boton=0;

         
         if (boton[0]=='X')
            glcd_rect(91,9,100,22,YES,OFF); //Borra el numero mostrado
         
         if ((boton[0]>='0')&&(boton[0]<='9'))
         {
            glcd_rect(91,9,100,22,YES,OFF);  //Borra el numero mostrado antes de
            glcd_text57(91,9,boton,2,ON); //escribir uno nuevo..   
         }
      }   
   }
}

Desde ya gracias por la ayuda.

Saludos cordiales.
MENTE SOBRE MATERIA

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #20 en: 18 de Agosto de 2012, 15:34:59 »
Ya corregí el error, era en el arreglo llamado boton, no me había percatado de que al hacer la asignación a boton=boton_act(); lo que está haciendo el programa es tratar de guardar lo que regresa la funcion en la dirección de boton, lo cuál no se debe hacer.

el siguiente código ya te debería compilar sin problemas:

Código: [Seleccionar]
/*****************************************************************
** Conexion del touchscreen resistivo de 4 hilos
** X+ = RA0/AN0
** Y+ = RA1/AN1
** X- = RA2/AN2
** Y- = RA3/AN3
*****************************************************************/

 #include <18F4550.h>
 #device adc=10
 #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
 #use delay(clock=48MHz)
 #include "usb_bootloader.h"
 #include<glcd_160x80.h>

#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)
#use fast_io(E)

void configure()
{
   set_tris_A(0x00);
   set_tris_B(0x00);
   set_tris_C(0x00);
   set_tris_D(0x00);
   output_A(0x00);
   output_B(0x00);
   output_C(0x00);
   output_D(0x00);

   setup_adc_ports(AN0_TO_AN3);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_PLL_OFF);
}

int16 tmp;
int16 y_min,y_max,x_min,x_max;
int16 y_loc,x_loc,y_rng,x_rng;
int1 flag_boton=0;
char boton[2];

const int8 imagen[80][20] = {   // imagen del teclado adaptada
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x07,0xFF,0xFF,0xE0,0xFF,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00},
{0x04,0x00,0x8C,0x00,0x80,0x11,0x00,0x30,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xC0,0x03,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0E,0x58,0x60,0x03,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0F,0x58,0x00,0x06,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x00,0x03,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x80,0x03,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x80,0x01,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xC0,0x00,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xC0,0x00,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xE0,0x07,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x00,0x58,0x00,0x00,0x0B,0x00,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x9C,0x00,0x80,0x13,0x00,0x70,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x0F,0xFF,0xFF,0xE1,0xFF,0x3F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF0,0xFF,0x07,0xFE,0xFF,0xC0,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x07,0xFF,0xFF,0xE0,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x8C,0x00,0x80,0x11,0x00,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x06,0x58,0xE0,0x03,0x0B,0x70,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x03,0x58,0x60,0x00,0x0B,0x18,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x03,0x58,0x60,0x00,0x0B,0x0C,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x03,0x58,0xE0,0x03,0x0B,0x7C,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x82,0x0D,0x58,0x00,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x82,0x0D,0x58,0x00,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x82,0x1F,0x58,0x00,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x00,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xE0,0x03,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x00,0x58,0x00,0x00,0x0B,0x00,0x60,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00},
{0x04,0x00,0x9C,0x00,0x80,0x13,0x00,0x70,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x0F,0xFF,0xFF,0xE1,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00},
{0xF0,0xFF,0x07,0xFE,0xFF,0xC0,0xFF,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x07,0xFF,0xFF,0xE0,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x8C,0x00,0x80,0x11,0x00,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x3F,0x58,0xC0,0x03,0x0B,0x78,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1B,0x58,0x60,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x18,0x58,0x60,0x06,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x18,0x58,0xE0,0x07,0x0B,0xCC,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x18,0x58,0xE0,0x07,0x0B,0xF8,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x60,0x06,0x0B,0xC0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x60,0x06,0x0B,0xE0,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0x60,0x06,0x0B,0x70,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x0C,0x58,0xC0,0x03,0x0B,0x38,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x00,0x58,0x00,0x00,0x0B,0x00,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x9C,0x00,0x80,0x13,0x00,0x70,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x0F,0xFF,0xFF,0xE1,0xFF,0x3F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF0,0xFF,0x07,0xFE,0xFF,0xC0,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x8C,0x00,0x00,0x00,0x00,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1E,0x58,0x00,0x9F,0x81,0x0F,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1E,0x58,0x80,0x81,0x81,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x0F,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x0D,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x33,0x58,0x80,0x81,0x81,0x0D,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1E,0x58,0x80,0x81,0x81,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x1E,0x58,0x00,0x9F,0x9F,0x19,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x02,0x00,0x58,0x00,0x00,0x00,0x00,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0x04,0x00,0x9C,0x00,0x00,0x00,0x00,0x70,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},
{0xF8,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0x3F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00},
{0xF0,0xFF,0x07,0xFE,0xFF,0xFF,0xFF,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,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,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,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,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,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,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,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,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},
};

/****************************************************************
*****   Rutina para mostrar la imagen del teclado             ***
****************************************************************/
void put_image()   // función para mostrar la imagen declara en el GLCD
{
   glcd_go_address(0);
   glcd_command_write();
   for(i=0;i<80;i++)
   {
      for(j=0;j<20;j++) glcd_send_byte(imagen[i][j]);
   }
}

/**************************************************
*******  Lee la coordenada Y   ********************
**************************************************/
int16 y_pos(void)
{
   int16 result;
//   set_tris_a(0x04);     //00000100 RA2 (X-)como entrada
   set_tris_a(0b00001000); //00001000 RA3 (X-)como entrada
//   output_a(0x0A);       //00001010 Energize placa Y, RA1(Y+) y RA3(Y-)
   output_a(0b00000011);   //00000011 Energize placa Y, RA0(Y+) y RA1(Y-)
//   set_adc_channel(2);   //Selecciono AN2(X-) como entrada analogica
   set_adc_channel(3);     //Selecciono AN3(X-) como entrada analogica
   delay_us(10);           //Espero 10 microsegundos
   result = read_adc();    //Obtener el valor del eje Y
   if (result != 0)
   {
//      set_tris_a(0x01);    //00000001 Pone RA0(X+) como entrada
    set_tris_a(0b00000100);  //00001000 Pone RA2(X+) como entrada
//      set_adc_channel(0);  //Selecciono AN0(X+) como entrada analogica
      set_adc_channel(2);    //Selecciono AN2(X+) como entrada analogica
      delay_us(10);
      tmp = (1023 - read_adc());
      result = (result + tmp) >> 1;   
   }
   Return(result);
}

/**************************************************
*******  Lee la coordenada x   ********************
**************************************************/
int16 x_pos(void)
{
   int16 result;
//   set_tris_a(0x02);     //00000010 RA1 (Y+)como entrada
   set_tris_a(0b00000001); //00000001 RA0 (Y+)como entrada
//   output_a(0x05);       //00000101 Energize placa X, RA0(X+) y RA2(X-)
   output_a(0b00001100);   //00001100 Energize placa X, RA2(X+) y RA3(X-)
//   set_adc_channel(1);   //Selecsiono AN1(Y+) como entrada analogica
   set_adc_channel(0);     //Selecsiono AN0(Y+) como entrada analogica
   delay_us(10);           //Espero 10 microsegundos
   result = read_adc();    //Obtener el valor del eje X
   if (result != 0)
   {
//      set_tris_a(0x08);    //00001000 Pone RA3(Y-) como entrada
    set_tris_a(0b00000010);  //00001000 Pone RA1(Y-) como entrada
//      set_adc_channel(3);  //Selecsiono AN3(Y-) como entrada analogica
    set_adc_channel(1);      //Selecsiono AN1(Y-) como entrada analogica
      delay_us(10);
      tmp = (1023 - read_adc());
      result = (result + tmp) >> 1;   
   }   
   Return(result);
}

/**************************************************
***  Funcion para determinar si la pantalla     ***
***  ha sido pulsada o no...                    ***
**************************************************/
int1 touch(void)
{
   int1 resp;
   int16 tmp,ty,tx;
   resp=false;
   ty = y_pos();
   if (ty > 0)
   {
      delay_ms(30);
      ty=y_pos();
      tx=x_pos();
      if (ty > y_min)
      {
         if(ty < y_max)
         {
            resp = true;
            tmp=(tx - x_min) << 7;
         
            x_loc =(int16)(tmp/x_rng);         
            if(x_loc > 127)  x_loc = 127;
            tmp = (ty - y_min) << 6;
            y_loc = (int16)(tmp/y_rng);
            if(y_loc > 63)   y_loc = 63;
         }
      }
   }
   return(resp);
}

/*************************************************************
*****  Rutina para calibrar la pantalla                *******
*************************************************************/
void calibracion()
{
   int1 sw;
   sw=1;
   while(x_pos()==0)
   {
      glcd_line(1,1,10,1,sw);
      glcd_line(1,1,1,10,sw);
      glcd_rect(1,1,5,5,YES,SW);
      delay_ms(150);
      sw=!sw;
   }
   delay_ms(30);
   y_min = y_pos();
   x_min = x_pos();
   glcd_fill_screen(OFF);
   while(x_pos() > 0);
   delay_ms(30);
   while(x_pos()==0)
   {
      glcd_line(128,64,128,54,sw);
      glcd_line(128,64,118,64,sw);
      glcd_rect(123,59,128,64,YES,SW);
      delay_ms(150);
      sw=!sw;
   }
   delay_ms(30);
   y_max = y_pos();
   x_max = x_pos();
   y_rng = y_max - y_min;
   x_rng = x_max - x_min;
   while(x_pos() > 0);
   glcd_fill_screen(OFF);
}

/*****************************************************************
******  Determina sobre que boton se ha pulsado            ********
*****************************************************************/
int8 boton_act(void)
{
   int8 button;
   if(((x_loc>2)&&(y_loc>2))&((x_loc<21)&&(y_loc<16)))    button = '1';
   if(((x_loc>23)&&(y_loc>2))&((x_loc<42)&&(y_loc<16)))    button = '2';
   if(((x_loc>44)&&(y_loc>2))&((x_loc<63)&&(y_loc<16)))    button = '3';
   if(((x_loc>2)&&(y_loc>18))&((x_loc<21)&&(y_loc<32)))    button = '4';
   if(((x_loc>23)&&(y_loc>18))&((x_loc<42)&&(y_loc<32)))    button = '5';
   if(((x_loc>44)&&(y_loc>18))&((x_loc<63)&&(y_loc<32)))    button = '6';
   if(((x_loc>2)&&(y_loc>34))&((x_loc<21)&&(y_loc<48)))    button = '7';
   if(((x_loc>23)&&(y_loc>34))&((x_loc<42)&&(y_loc<48)))    button = '8';
   if(((x_loc>44)&&(y_loc>34))&((x_loc<63)&&(y_loc<48)))    button = '9';
   if(((x_loc>2)&&(y_loc>50))&((x_loc<21)&&(y_loc<64)))    button = '0';
   if(((x_loc>23)&&(y_loc>50))&((x_loc<63)&&(y_loc<64)))    button = 'X';
   
   return(button);
}

void main()
{
   configure();
   glcd_init(GRAPHIC);
   calibracion();   //Calibra la pantalla
   put_image();     //muestra el teclado
   //glcd_init(CHARACTER);

   while(TRUE)
   {
      /*
      // Para ver los valores calibrados y sin calibrar, requiere el GLCD en
      // modo alfanumérico, comentar glcd_init(GRAPHIC) y put_image() y
      // descomentar glcd_init(CHARATER) arriba del while(TRUE)
      temp=touch();
      printf(glcd_putc,"\f\n\nSin calibrar: (%lu,%lu)\n",x_pos(),y_pos());
      printf(glcd_putc,"Calibrado:    (%lu,%lu)\n",x_loc,y_loc);
      delay_ms(50);
      */

      //------------------------------------------------------------------
     
      /*
      // dibujar en el GLCD
      if(touch()==true)
      {
         glcd_pixel(x_loc,y_loc,ON);
      }
      */
     
      //------------------------------------------------------------------------

      // teclado en pantalla con numeros del 1 al 0 y clear
      // el boton 1 prende un LED conectado en PIN_B0 ****************
      // el boton 2 apaga el LED conectado en PIN_B0 ****************
      if(touch()==true)
      {
         boton[0]=boton_act();  //****Ya no debe generar el error*******
         boton[1]='\0';
         if(boton[0]=='1'&&flag_boton==0)
         {
            flag_boton=1;
            output_high(PIN_B0);       //**************************
         }
         if(boton[0]!='1'&&flag_boton==1) flag_boton=0;

         if(boton[0]=='2'&&flag_boton==0)
         {
            flag_boton=1;
            output_low(PIN_B0);        //**************************
         }
         if(boton[0]!='2'&&flag_boton==1) flag_boton=0;

         
         if (boton[0]=='X')
            glcd_rect(91,9,100,22,YES,OFF); //Borra el numero mostrado
         
         if ((boton[0]>='0')&&(boton[0]<='9'))
         {
            glcd_rect(91,9,100,22,YES,OFF);  //Borra el numero mostrado antes de
            glcd_text57(91,9,boton,2,ON); //escribir uno nuevo..   
         }
      }   
   }
}

Espero que se soluciones el problema, saludos!!!
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado Olinqui

  • PIC10
  • *
  • Mensajes: 19
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #21 en: 22 de Agosto de 2012, 05:16:19 »
Hola muchas gracias por la ayuda en la corrección de código pero aún no logro hacer que funcione mi tarjeta me di cuenta que no puse las resistencias de pull-down le puse unas de 10 K pero sigue sin funcionar las que tu utilizaste de que valor son ?
MENTE SOBRE MATERIA

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #22 en: 29 de Agosto de 2012, 16:57:47 »
Perdón por no responder antes, no se a qué resistencias de pull down te refieres, a la del master Clear?
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado Olinqui

  • PIC10
  • *
  • Mensajes: 19
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #23 en: 29 de Agosto de 2012, 17:27:58 »
Hola no son las resistencias que van a los pines analógicos y a masa en el panel resistivo touch las resistencias que utilice son de 10K pero creo que son demasiado altas
MENTE SOBRE MATERIA

Desconectado asd hernandez

  • PIC10
  • *
  • Mensajes: 3
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #24 en: 28 de Diciembre de 2012, 18:01:49 »
Hola amigo falflores queria saber como puedo modificar el programa para usar el touch screen en el glcd que cubra los 160X80, otra cosa no he logrado encender la luz de fondo del glcd, por que no se si es como si fuera como los lcd normales de led o use un circuito especial para eso. gracias saludos.

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #25 en: 02 de Enero de 2013, 21:20:16 »
Hola amigo falflores queria saber como puedo modificar el programa para usar el touch screen en el glcd que cubra los 160X80, otra cosa no he logrado encender la luz de fondo del glcd, por que no se si es como si fuera como los lcd normales de led o use un circuito especial para eso. gracias saludos.

Hola que tal, pues fíjate que la misma pregunta me he hecho durante bastante tiempo, no he encontrado la forma de agrandar el área de detección. con respecto a la luz de fondo, no es LED, es electroluminicente, por lo que necesitas unos 220 volts a 400 Hertz para encenderlo, algo que puedes hacer es alimentarlo desde un transformador o con un integrado dedicado. Saludos
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado mikipic

  • PIC10
  • *
  • Mensajes: 19
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #26 en: 17 de Julio de 2013, 11:49:20 »
woww excelente trabajo...alguno por casualidad tendra el modelo de dicho GLCD en proteus???.... sucede que demorara en llegarme ese glcd y quisiera ir probando antes.

Desconectado Olinqui

  • PIC10
  • *
  • Mensajes: 19
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #27 en: 27 de Julio de 2013, 01:57:27 »
Hola mikipic que yo sepa no existe ese modelo para simulación  lo que te puedo decir es que la librería de el buen amigo falflores la e probado y es excelente creo que no quedara más que esperar a que te llegue pero te será muy divertido jugar con el jaja

Saludos cordiales. 
MENTE SOBRE MATERIA

Desconectado rotting79

  • PIC12
  • **
  • Mensajes: 91
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #28 en: 29 de Julio de 2014, 00:46:48 »
hey there

I'm about to give up this circuit...
that's the second fail circuit, and still don't get it run, the first one just 24vpp-207Hz, and the second one nothing at the outputs...

Hola

Estoy a punto de renunciar a este circuito ...
esa es la segunda falla de circuito, y aún así no consigue que funcione, el primero acaba 24Vpp-207Hz, y el segundo, nada en las salidas ...




the circuit is a AC boost converter, pretty straight forward, for the backlight of the screen, but still NOTHING!!!

el circuito es un convertidor AC impulso, bastante sencillo, para la luz de fondo de la pantalla, pero todavía no hay nada!

« Última modificación: 05 de Agosto de 2014, 11:13:28 por rotting79 »
...On November 2nd, a PIC10 became self-aware and decided our fate in __delay_us ( 1 ); ...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
« Respuesta #29 en: 29 de Julio de 2014, 01:47:56 »
¿El primero funciona y el segundo no?, ¿significa eso que has montado dos unidades y no funcionan de la misma forma?


 

anything