TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: falflores en 19 de Julio de 2012, 20:53:57

Título: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: falflores en 19 de Julio de 2012, 20:53:57
Hola amigos del foro, en esta ocasión comparto con ustedes una librería de mi propia creación, esta maneja un GLCD de 160x80 pixeles marca samsung, con controladores LC7981 marca Sanyo, es un GLCD excelente!, lo compre en México, en Republica del Salvador, para los que conozcan.

Les platico un poco acerca de este magnífico GLCD:

* Modo alfanumérico, como si fuera un LCD de 26x10 caracteres, un LCD tamaño monstruo!
* Modo gráfico, con 1600 pixeles, un tamaño de pantalla de 160 pixeles de ancho, por 80 pixeles de alto.
* Backlight electroluminiscente, este detalle no me agrado mucho, si bien la iluminación EL se ve mucho mejor, también es cierto que no es nada sencillo conectarle un circuito de control a la luz de fondo, aún no he conseguido el dichoso circuito que propone el comerciante de estos GLCD, así que agradecería si alguno pudiera hecharme un cable sobre este tema.
* Pantalla touchscreen resistiva de 4 hilos, desgraciadamente no he podido hechar a andar del todo bien este touch, si bien ya lo pude utilizar, lo cierto es que no he podido calibrarlo, por lo que me dibuja donde quiere. También agradecería muchísimo si alguien fuera tan amable de guiarme por el buen camino del touchscreen.

El datasheet de este GLCD lo pueden hallar en: Datasheet GLCD 160x80 (http://www.infinitumpage.mx/GIOSYS/DG-16080-11.pdf)

Y en la página del comerciante, la cual es: http://www.infinitumpage.mx/GIOSYS/pagina2680.html (http://www.infinitumpage.mx/GIOSYS/pagina2680.html) pueden ver más información respecto al GLCD, el touchscreen y el backlight

Bueno, ahora pasemos a la librería.

Esta librería la he escrito yo mismo, en CCS, ya que tuve mucho tiempo parado mi GLCD por falta de una, y me di manos a la obra a escribirla, no es la mejor libreria que encontrarán, pero puede serles muy útil, la misma sirve para:

* Impresión de caracteres en modo alfanumerico al mismo estilo de putc("hola mundo"); para escribir en los LCD normales.
* Funciones para dibujar circulos, rectángulos, pixeles, barras y texto en modo gráfico, para estas funciones me apoye en la libreria ya existente para los GLCD de 128x64 que son más comunes.
* Dibujar imagenes completas de 160x80 pixeles, pasadas a monocromático y convertidas en código con el programa Image2Code, busquenlo por que es muy útil.
* Cuenta con un buffer interno que se puede activar en los PIC18, que son los que soportan arreglos de datos muy grandes, en este caso de 1600, y desactivar en el caso de PICs de gama media/baja, con este buffer se puede dibujar internamente a mayor velocidad y al final volcar su contenido en el GLCD para impresiones rápidas.

En fin, a grandes rasgos es lo que hace, a continuación les pongo un video que hice de la misma en funcionamiento:


Les anexo la libreria llamada glcd_160x80.h y el archivo de prueba, llamada main GLCD giosys.c, el cuál está hecho para un PIC16F877A, pero es facilmente transportable a otro pic, todas las funciones de usuario de la librería se encuentran detalladamente explicadas. Saludos y espero que le sirva a alguien.

Enlace rapidshare para descarga de libreria y programa de prueba: Libreria glcd_160x80 y programa de prueba (https://rapidshare.com/files/1278789599/GLCD 160x80 giosys.rar)
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: Nocturno en 20 de Julio de 2012, 01:40:32
Bonito trabajo te ha quedado, gracias por compartirla.
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: nietzche en 28 de Julio de 2012, 03:55:32
Amigo como le podria hacer para conectar el touch, osea si se donde van las patillas pero quiero que me responda al presionar la pantalla y me genere una interrupcion al tocarla por el pin INT0, la necesito usando solo los 4 pines A/D, alguna idea ??
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: AKENAFAB en 28 de Julio de 2012, 06:11:46
Te ha quedado muy bien!  ((:-))

Saludos!

Adjunto tu libreria al post por si se llega a caer el enlace.
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: Olinqui en 28 de Julio de 2012, 20:08:04
Hola amigo falflores excelente aporte yo igual estaba escribiendo una librería para este dispositivo pero es genial que te tomaras el tiempo de escribirla y la gentileza de compartirla aportaso amigo.

Saludos cordiales.
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: falflores en 30 de Julio de 2012, 02:00:14
Amigo como le podria hacer para conectar el touch, osea si se donde van las patillas pero quiero que me responda al presionar la pantalla y me genere una interrupcion al tocarla por el pin INT0, la necesito usando solo los 4 pines A/D, alguna idea ??

Si, de hecho ya lo hice con la ayuda de un amigo del foro, ahora no tengo acceso a mis archivos, pero mañana posteo algo respecto a eso. Saludos!
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: asd hernandez en 30 de Julio de 2012, 17:32:10
Hola amigo falflores gracias por el aporte de la libreria, quisiera saber si podrias dar un tip de image2code ya que las imagenes de 20X80 no se visualizan muy claras en la glcd, en tu demo la imagen del robot  se ve muy clara y checando el programa se que es de 20x80=1600 coincide con las imagenes que trato de convertir.
gracias de antemano
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: falflores en 30 de Julio de 2012, 19:53:15
Hola amigo falflores gracias por el aporte de la libreria, quisiera saber si podrias dar un tip de image2code ya que las imagenes de 20X80 no se visualizan muy claras en la glcd, en tu demo la imagen del robot  se ve muy clara y checando el programa se que es de 20x80=1600 coincide con las imagenes que trato de convertir.
gracias de antemano

No comprendo muy bien la idea en tu mensaje, una imagen cargada en el GLCD de 160x80 pixeles o se ve o no se ve, punto. Si los datos que componen la imagen están en el orden correcto, la imagen se ve bien, si no, simplemente la imagen se deforma, así que no comprendo a que te refieres cuando dices que la imagen no se ve muy clara.

La configuración que debe tener el image2code para generar el código en el orden correcto, según la libreria es como está en la imagen:

(http://img534.imageshack.us/img534/1430/configimage2code.png)

Espero que esta información te sirva. Saludos!
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: asd hernandez en 30 de Julio de 2012, 20:02:27
muchas gracias
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: falflores en 30 de Julio de 2012, 20:16:31
A todos los que tengan touch en este GLCD (que en general son todos XD), les informo que ya lo tengo calibrado y funcionando de 10!, solo hay un detalle, como me base en un código que el usuario Duende Azul escribió para un GLCD de 128x64, solamente puedo escribir en esa area de trabajo, los links correspondientes están más abajo. Así que agradecería profundamente si alguno de los que le heche un ojito al siguiente código me puediera ayudar a descifrar la parte donde hace la conversión de coordenadas, para poder adaptarla a este tamaño de GLCD.

Amigo como le podria hacer para conectar el touch, osea si se donde van las patillas pero quiero que me responda al presionar la pantalla y me genere una interrupcion al tocarla por el pin INT0, la necesito usando solo los 4 pines A/D, alguna idea ??

El siguiente código lo modifiqué del código del amigo Duende azul, muchas gracias a el, en un post que se encuentra aquí: http://www.todopic.com.ar/foros/index.php?topic=20029.0 (http://www.todopic.com.ar/foros/index.php?topic=20029.0)

En el mismo, Duende Azul comparte con nosotros su código para manejar el touchscreen de una GLCD de 128x64 pixeles, el mismo código lo adapté a mis necesidades, la imagen del teclado la hice para mostrarse en un GLCD de 160x80 pero al mismo tamaño de 128x64, compilé el código y funcionó estupendamente, lo único malo es que el touchscreen solamente funciona bien dentro del área de 128x64, fuera de ella no funciona. Ya traté de modificar el código para abarcar los 160x80, pero no basta con extender el tamaño, si no que hay que modificar algo en las fórmulas.

Te paso el código que tengo hasta ahora, para que pruebes en tu GLCD con la misma libreria que compartí:

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

#include<16F877A.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_AN1_AN2_AN3_AN4);
   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..    
}
}
}
}

Con este código puedes probar el touch, fijate en las conexiones del mismo, si no funciona o funciona mal, puede ser por la conexión, copia este código y anexa la libreria, debería funcinar.

En el código hay tres partes distintas a probar, tal como está comentado, genera el teclado en pantalla, otra forma de probarlo es comentar antes del while(TRUE) la función put_image() para que no ponga el teclado, y descomentar la parte para dibujar en el GLCD, o si no, hacer lo que dice en el codigo para ver las coordenadas del touchscreen en modo alfanumérico.

Si te funciona, a ver si me puedes ayudar a modificarlo para que abarque los 160x80 de nuestros GLCD. Espero te sirva. Saludos!!


Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: falflores en 30 de Julio de 2012, 20:31:26
Hola amigo falflores excelente aporte yo igual estaba escribiendo una librería para este dispositivo pero es genial que te tomaras el tiempo de escribirla y la gentileza de compartirla aportaso amigo.

Saludos cordiales.

Bonito trabajo te ha quedado, gracias por compartirla.

Muchas gracias por las buenas palabras!

Te ha quedado muy bien!  ((:-))

Saludos!

Adjunto tu libreria al post por si se llega a caer el enlace.

Muchas gracias por tomarte la molestia!
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: nietzche en 31 de Julio de 2012, 01:55:30

Si te funciona, a ver si me puedes ayudar a modificarlo para que abarque los 160x80 de nuestros GLCD. Espero te sirva. Saludos!!




Gracias muchas gracias por el codigo, pero ahora ando bajo de recursos y estoy con el PIC18F4550 y no para comprar un 16F,  lo adapte cambiando toda la cabezera y usando mi reloj interno de  4Mhz, y me sale un error:
Expecting LVALUE such as a variable name or *expression
Hay un prblema con la variable: boton pero no se cual es.
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: falflores en 31 de Julio de 2012, 04:16:12
Gracias muchas gracias por el codigo, pero ahora ando bajo de recursos y estoy con el PIC18F4550 y no para comprar un 16F,  lo adapte cambiando toda la cabezera y usando mi reloj interno de  4Mhz, y me sale un error:
Expecting LVALUE such as a variable name or *expression
Hay un prblema con la variable: boton pero no se cual es.

PARA LOS QUE QUIERAN MIGRARLO A UN 18F4550

Ya lo revise, cambie todo lo necesario para que trabaje con el 18F4550, lo compilé y funciona. Esto es lo que hay que modificar:

Con oscilador interno a 8 MHz
Código: [Seleccionar]
#include<18F4550.h>
#device adc=10
#fuses INTRC,MCLR,NOPROTECT,NOWDT,NOBROWNOUT,PUT,NODEBUG,NOVREGEN,
#use delay(clock=8MHz)

y dentro del main, llamas a la función:

Código: [Seleccionar]
setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_PLL_OFF);
y para configurar el ADC es:

Código: [Seleccionar]
setup_adc_ports(AN0_TO_AN3);en lugar de setup_adc_ports(AN0_AN1_AN2_AN3_AN4);

y listo! con eso me funciona a mi. Todo lo demás es exactamente igual. Espero te sirva.
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: nietzche en 31 de Julio de 2012, 16:17:52
Hola, fijate que mi error es el de la imagen, no se si sea yo o que es lo que pasa, en la parte de configuracion de    setup_adc_ports(AN0_AN1_AN2_AN3_AN4); la cambie a setup_adc_ports(AN0_TO_AN4), y voy a ver bien el codigo para ayudar a adaptarlo a la glcd, gracias.
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: falflores en 31 de Julio de 2012, 17:10:29
Cierto, se me pasaba que el setup_adc_ports también va distinto, aunque no es necesario ponerlo hasta AN4, solamente hasta AN3, ya lo modifiqué en el mensaje anterior para que si alguien más lo ve, no se confunda.

A mi me pasa algo muy curioso con este codigo en CCS, resulta que al declarar una arreglo en la memoria de programa con const, cuando se genera un error, el compilador me lo marca en donde se le da la gana, lo que hago yo cuando hay un error y no se donde está, es borrar temporalmente el arreglo de datos de la imagen, lo compilo, obviamente me tira el error de variable no declarada, pero el error original ya me lo marca donde debe ser, yo pienso que ese es el caso, por que el error que te da no se ve que tenga relación con esa línea de código, haz esto y me cuentas si pudiste identificar el error.
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: Olinqui 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..   
         }
      }   
   }
}
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: falflores 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!!
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: Olinqui 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
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: falflores 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:

(http://img577.imageshack.us/img577/4391/versionpicc.png)
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: Olinqui 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.
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: falflores 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!!!
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: Olinqui 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 ?
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: falflores 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?
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: Olinqui 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
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: asd hernandez 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.
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: falflores 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
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: mikipic 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.
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: Olinqui 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. 
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: rotting79 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 ...


(http://lh3.googleusercontent.com/ecg-jCXQXcqLpQDAciJrLChClprDMKwcWwFfzZxWzBg=w747-h577-no)

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!

(http://lh4.googleusercontent.com/-ChrKtAcSdqI/U-DmRZIsxSI/AAAAAAAABJg/ICZlWclnNcE/w769-h577-no/DSC02843.JPG)
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: Nocturno 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?
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: rotting79 en 29 de Julio de 2014, 15:13:42
hey there

pretty much that's it, the first one barelly worked, but the second one no even a single volt at the output


I'm on the office (sadly i got a real job), so at night I think i'll be doing  a boost converter

Hola
más o menos eso es todo, la primera de ellas apenas funcionaba, pero el segundo no incluso un solo voltios en la salida
Estoy en la oficina (por desgracia tengo un trabajo de verdad), por lo que en la noche creo que voy a estar haciendo un convertidor elevador
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: Nocturno en 29 de Julio de 2014, 15:22:43
Bueno, si uno funciona y el otro no debe ser un problema de montaje o que algún componente está defectuoso. Seguro que dedicándole un rato encuentras la solución. Suerte.
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: rotting79 en 29 de Julio de 2014, 21:17:41
hello there

maybe i didn't explain myself, in order to making work this EL (electroluminescent) BackLight, u need at least 100VAC @ 200Hz, so I follow the HV857L datasheets to drive this circuit, but no success twice, as I said before. here are the both of them...

Hola

tal vez no me explico a mí mismo, con el fin de hacer que el trabajo de este EL (electroluminiscente) Luz de fondo, u necesidad de, al menos, 100VAC @ 200Hz, así que siga las hojas de datos HV857L para conducir este circuito, pero sin éxito dos veces, como he dicho antes. aquí están los dos de ellos ...


(http://lh3.googleusercontent.com/-QVU3jD65Usw/U9g2AXmdJxI/AAAAAAAAAb4/STKsSYdXxl4/w702-h527-no/DSC02853.JPG)


So last night, about 1:00AM, I just plug the main directly, that's right 120vac @60Hz, good did't blow up, but the brightness was so shame, so here are two pictures of it, the first one with 120vac @ 60 and the second one without it

Así que ayer por la noche, alrededor de la 1:00 de la mañana, yo sólo conecto el principal directamente, es cierto 120VAC @ 60Hz, bueno no volar, pero el brillo era tan vergüenza, así que aquí están dos fotos de ella, la primera con 120VAC @ 60 y el segundo uno sin él

(http://lh6.googleusercontent.com/-DyZVl4BBMsY/U9g5MiATZAI/AAAAAAAAAcc/cEx6hKfILnU/w702-h527-no/DSC02851.JPG)

(http://lh5.googleusercontent.com/-fDPGyncEa0E/U9g5O3MBsNI/AAAAAAAAAck/puer56w7OpY/w702-h527-no/DSC02854.JPG)
Título: Re: Libreria para GLCD 160x80 pixeles, modelo LJ41-00192B marca Samsung en CCS
Publicado por: rotting79 en 17 de Agosto de 2014, 21:11:23
So finally, here a small video from the GLCD 160x80 library, original from  fabian alfonso (namesake of mine)

Así que finalmente, aquí un pequeño vídeo de la biblioteca GLCD 160x80, original de fabian alfonso (tocayo mío)


the main goal was to translate it to XC8 compiler

el principal objetivo fue traducir al compilador XC8

still working in the damn EL light driver circuit!!!!