# GLCD o LCD Gráficos - Resumen de datos y herramientas



## asherar (Nov 4, 2008)

Viendo el interés que está despertando el empleo de los displays gráficos de cuarzo líquido (GLCD) se me ocurrió abrir este tema *para reunir la información de una manera más ordenada* 
(hay abiertos varios temas parecidos).

La idea es que entre todos vayamos reuniendo los distintos aportes acerca de los GLCD, tanto nuevos como ya posteados en otros temas del foro. Cada tanto, iré reuniendo los enlaces a los diferentes posts en *este primer mensaje* para mayor rapidez de acceso del que entra por primera vez. 

Si alguien se quiere sumar a la tarea de recopilación puede auto-proponerse. Cualquier sugerencia será bienvenida, en especial las que ayuden a simplificar la tarea. 

Saludos y gracias por sumarse.


*Ediciones:*
*05-11-08* 
Siendo el tema de los LCD tan amplio pensé en limitar este hilo a los displays GRAFICOS. 
Por eso les pido que *lean el título del tema antes de postear*. 
Se trata principalmente de reunir información organizadamente, *no de postear cualquier cosa*. 
Por ejemplo, antes de subir un enlace, sería bueno fijarse que no haya sido subido antes. 

Información relacionada con LCD Gráficos

*Enlaces externos:*
T6963C, KS0108, ...  (WEB, en inglés)
KS0108, HD61202 y similares...  (WEB, en inglés)
Hoja de datos del SED1335  (PDF, en inglés)
Compatibilidad ente controladores de display
Compatibilidad ente controladores de display
Crystal Clear Tech. (WEB proveedor, en inglés)
LCDhype (Foro especializado en LCD, en inglés/alemán)

*Enlaces internos a forosdeelectronica:*
https://www.forosdeelectronica.com/f24/pantalla-lcd-grafica-320x240-16538/
https://www.forosdeelectronica.com/f24/inicializar-lcd-concontrolador-t6963c-11700/

*Herramientas, código, etc.*
Biblioteca y programa para manejar un T6963C desde la PC(240x64/128x128)  (Descarga)
Editor de bitmaps para algunos modelos de GLCD
Simulación de LCD en Proteus (Enlace)
LCD gráfico con un nokia 5125 (Enlace)

(Continuará)


----------



## §olace (Nov 4, 2008)

hola amigo yo soy nuevo manejando LCD con PIC16xxxx y hasta ahora entiendo qeu hay que crear librerias dentro de la programacion para que sea mas facil pero cunado voy a simular el programa, (usoroteus y mplab) no me funciona entonces no he podido entender muy bien el funcionamiento de los LCD hay alguien que tenga programas en assembler  que le haya funcionado en proteus?
gracias!


----------



## pepechip (Nov 4, 2008)

§olace dijo:
			
		

> hola amigo yo soy nuevo manejando LCD con PIC16xxxx y hasta ahora entiendo qeu hay que crear librerias dentro de la programacion para que sea mas facil pero cunado voy a simular el programa, (usoroteus y mplab) no me funciona entonces no he podido entender muy bien el funcionamiento de los LCD hay alguien que tenga programas en assembler  que le haya funcionado en proteus?
> gracias!



Visita esta pagina: http://www.pic16f84a.org/index.php?option=com_content&view=category&id=38&Itemid=60
en el enlace nº 16 encontraras la respuesta


----------



## §olace (Nov 5, 2008)

Gracias pepechip necesitaba información como esa!


----------



## Cabesao (Abr 2, 2009)

Hola,

haber si me podrias ayudar, estoy buscando un editor de imagenes para el glcd, pero que me haga el codigo en proton basic, ya que mikrobasic lo desconozco, y luego un editor de fuentes, ya que solo puedo utilizar la que me viene con el programa.

Salu2.


----------



## Moyano Jonathan (Abr 6, 2009)

Hay un dispositivo hardware que simula un GLCD usando el tele como pantalla.


----------



## jokelnice (Abr 23, 2009)

huy gracias colegas por la información lo del editor no lo habia conseguido


----------



## martin_sj (Jun 14, 2009)

hola ! yo utilizo micros motorola...me podrian decir como manejar un lcd grafico con un micro motorola ya q todos los ejemplos son con pic ....

Saludos


----------



## Chico3001 (Jun 14, 2009)

Mientras programes en C la compatibilidad no es (tanto) un problema, adaptar esta libreria es rapido para cualquier micro... 

http://www.ucontrol.com.ar/wiki/index.php/CCS_-_Libreria_de_gráficos_para_GLCD_K0108


----------



## Elvic (Jun 14, 2009)

saludos primero que nada  es un muy buen tema y muy buena información. que seria también, buena idea que la escribieras en  la wiki de forosdeelectronica, y el foro te sirviera de apoyo.

bueno les dejo un enlace a un foro

se trata de controlar los LCD  gráficos de distintas manera usan Puerto paralelo Pc , con USB , serial, en fin tiene buena información también este otro  foro;  tratan lo del algo llamado modding  
de este ultimo enlace ya estoy tratando de realizar uno igual, cuando pueda pongo una foto de como va. 

aunque creo que la idea va mas en conseguir información y diagramas de tiempo, para poder controlarlos con un micro_controlador, que seria algo un poco mas interesante...

bueno espero sirva de algo la información..    

edito: subir imagen


----------



## asherar (Sep 29, 2009)

Un enlace con herramientas para manejar GLCD usando AVR:  http://www.fastavr.com/
Ver "Downloads" y "Applications"


----------



## asherar (Oct 2, 2009)

HOLA: Esto es importante.

Como el servidor de Geocities cierraDEFINITIVAMENTEel 26 de octubre del 2009

algunos sitios desaparecerán.
ESTE QUE SEÑALOen particular tiene temas como:
Z80
LCD
PIC
8051
Opera
Python
Software
Files
Bookstore
LinksSugiero que lo revisen para bajar lo que les resulte interesante, antes 
que borren todo. 
Quedan pocos días. 

Saludos


----------



## asherar (Dic 9, 2009)

....

Otro PDF sobre el controlador TC6963C en castellano AQUÍ  (gracias a *danrod*)
...


----------



## Meta (Dic 10, 2009)

Nueva herramienta para el diseño de soluciones graficas de Microchip.












Sagitrón, distribuidor para España y Portugal de Microchip, anuncia la nueva herramienta de diseño de soluciones graficas utilizando la librería a tal efecto de Microchip, el GDD Graphics Display Designer.
El GDD queda instalado dentro del entorno MPLAB IDE, y a través de un interfaz de usuario muy sencillo se pueden poner imágenes, crear botones, y escribir texto como si se tratara de la propia pantalla.

El aspecto del GDD es una pantalla con resolución 320x240 y 65536 colores. El usuario puede colocar la imagen en cualquier parte de la pantalla, eliminando así la necesidad de calcular las coordenadas XY de posicionamiento. La conversión de imágenes se hace automáticamente al pulsar el botón de generación de código. Sólamente queda programar el Micro. Esta herramienta funciona con la nueva librería grafica 1.75b disponible en la pagina web de Microchip.

Con esta herramienta grafica, Microchip ayuda a sus clientes a poner en marcha de una forma sencilla y rápida una aplicación muy completa y profesional tanto para la presentación del producto como para la producción.


Fuente:
http://www.elektor.es/noticias/nuev..._source=ES&utm_medium=email&utm_campaign=news

Fuente 2 y programa:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en544475

PD: Por ahora no viene incluido en el MPLAB 8.40, deja ver si ya en las próximas actualizaciones ya viene junto.


----------



## asherar (Dic 11, 2009)

Está más que interesante. 

Y ya me lo instale !!! 

 Lo que veo es que se aplica a pic24, dsPic y pic32, para manejar displays color de 320x240. 
 Y si la foto de la propaganda no es "sólo ilustrativa", también sirve para manejo de "touch screen". 
 Los de la pantallitas verdes de 128x64 quedamos afuera. :enfadado:


----------



## Meta (Dic 11, 2009)

La pantalla verde no han quedado fuera, eso si,lo estará en unos años.


----------



## danrod (Dic 17, 2009)

Pero igual , las pantallas a color son mas costosas


----------



## axshaw (Ene 23, 2010)

me sirvio de mucho el pdf en español gracias. apenas estoy comenzando con esto


----------



## mecatrodatos (Ene 24, 2010)

que tal les dejo un documento de como programar pantallas graficas con pic basic


----------



## axshaw (Ene 25, 2010)

estoy intentando andar en proteus la pg160128a con un micro 18f452 utilizando lenguaje c, algo nuevo para mi ya q*UE* manejo muy bien el asembler, pero por lo q*UE* vi en unos ejemplos para este tipo de cosas facilita la operacion de pantallas y comunicacion i2c. maneje pantanllas lcd mas pequeñas, estoy intentando decodificar unos programas para ender mejor el funcionamiento y la secuencia de configuracion. si alguien me puede dar una orientacion se lo agradeceria..


----------



## snakewather (Feb 7, 2010)

oye Meta ese programa no lo habia visto lo voy a probar, exelente post alejandro sherar saludos y estamos en contacto.


----------



## leoregroso (Feb 17, 2010)

hola a todos los del foro yo tengo unos displays de celulares nokia 3220 y 5800 los tengo nuevos, los quiero controlar con un pic16f877a y agregarles una microSD para poder ver imagenes en ella pero no se nada sobre esos displays y en sr. google no aparece nada bueno espero que si alguien tiene alguna info que me sirba que no dude en postearla........


----------



## KIKE8507 (Feb 24, 2010)

Salodos a todos quiero programar *glcd* en *mplab* y no se como hacerlo ne sesito ayuda de dotos hay programas en los que es mas sencillo pero son demos y no admiten mas de 2k.....

espero su ayuda


----------



## Meta (Feb 24, 2010)

Nueva herramienta para el diseño de soluciones graficas de Microchip.












Sagitrón, distribuidor para España y Portugal de Microchip, anuncia la nueva herramienta de diseño de soluciones graficas utilizando la librería a tal efecto de Microchip, el GDD Graphics Display Designer.
El GDD queda instalado dentro del entorno MPLAB IDE, y a través de un interfaz de usuario muy sencillo se pueden poner imágenes, crear botones, y escribir texto como si se tratara de la propia pantalla.

El aspecto del GDD es una pantalla con resolución 320x240 y 65536 colores. El usuario puede colocar la imagen en cualquier parte de la pantalla, eliminando así la necesidad de calcular las coordenadas XY de posicionamiento. La conversión de imágenes se hace automáticamente al pulsar el botón de generación de código. Sólamente queda programar el Micro. Esta herramienta funciona con la nueva librería grafica 1.75b disponible en la pagina web de Microchip.

Con esta herramienta grafica, Microchip ayuda a sus clientes a poner en marcha de una forma sencilla y rápida una aplicación muy completa y profesional tanto para la presentación del producto como para la producción.


Fuente:
http://www.elektor.es/noticias/nuev..._source=ES&utm_medium=email&utm_campaign=news

Fuente 2 y programa:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en544475

PD: Por ahora no viene incluido en el MPLAB 8.46, deja ver si ya en las próximas actualizaciones ya viene junto.


----------



## asherar (Feb 25, 2010)

Ese fue un lapsus, amigo Meta. Ya lo habías posteado _acá_.


----------



## wilor8 (Feb 28, 2010)

Pero donde es posible simular o encotrar los glcd a color


----------



## Meta (Feb 28, 2010)




----------



## wilor8 (Mar 1, 2010)

La verdad en el último año he tenido una buena experiencia programando y simulando glcd de hasta 240x128 pixeles monocromaticos... pero la verdad no eh podido encontrar un simulador para glcd a color, es mas, no tengo idea de referencia de alguno de ellos:cabezon:

Si hay alguien que conozca de esto me haria un favor enorme si me lo indica


----------



## Otterstedt (Mar 2, 2010)

Hola amigos de este gran foro!
Les hago una consulta...

Soy nuevo en esto de los GLCD, y como desafio me propuse apreder a controlarlo para poder aplicarlo en futuros proyectos...
Se utilizar los LCD alfanuméricos, pero con los gráficos se complica bastante creo...
Como micro yo utilizo los HC08 de motorola, programando en assembler...

Estoy por adquirir el siguiente GLCD: FDCG 128x64K-FLYYBW-51TN...
Quisiera saber su opinion acerca del mismo...
Les adjunto la datasheet que me paso el vendedor...
Por lo que leí posee un controlador Toshiba...

Desde ya muchas gracias!


----------



## asherar (Mar 2, 2010)

Hola Otterstedt. 

Por lo que veo en la hoja de datos que subiste, el micro que controla tu display 
es muuuuy parecido al T6963. 

Fijate con más detalle las bibliotecas que se han posteado en mensajes anteriores 
y creo que ya empezás con mucho trabajo adelantado. 

Saludos y suerte.


----------



## Otterstedt (Mar 2, 2010)

Alejandro Sherar dijo:


> Hola Otterstedt.
> 
> Por lo que veo en la hoja de datos que subiste, el micro que controla tuy display
> es muuuuy parecido al T6963.
> ...



Gracias por tu respuesta Alejandro...
La verdad ahora me quedo en duda de si será el mismo controlador o no...
Por lo que estoy viendo, el manual que puse, con el del T6963 que esta posteado son parecidos...

Pero no se... Todavía no lo compre, por lo que tampoco podría probar...
Tengo miedo que no sea ese mismo...

Perdon por todas mis dudas jaja... Cuando empece con los LCD alfanuméricos, también me surgieron muchas dudas, fue solo al principio, una vez que le hagarras la mano es pan comido...

Pero aca la verdad que estoy perdido... No se por donde empezar jaja...

Saludos! y bueno compraré el GLCD a ver que puedo empezar a hacer...


----------



## asherar (Mar 3, 2010)

Bueno, al primero que compré, le conecté el patillaje con la hoja de datos equivocada. 
Le mandé -9V a una patilla de datos TTL y sonó el bus de datos para siempre. 
Desde entonces, a cada display que compro, le controlo la continuidad con el téster 
(hoja de datos del controlador en mano): desde el chip hasta el conector controlando 
cada patilla por separado. 
La paranoia al poder !!!


----------



## leonhar (Mar 11, 2010)

§olace dijo:


> hola amigo yo soy nuevo manejando LCD con PIC16xxxx y hasta ahora entiendo qeu hay que crear librerias dentro de la programacion para que sea mas facil pero cunado voy a simular el programa, (usoroteus y mplab) no me funciona entonces no he podido entender muy bien el funcionamiento de los LCD hay alguien que tenga programas en assembler  que le haya funcionado en proteus?
> gracias!



compañero te sugiero que inicies en el mundo de los microcontroladores con "pic simulator ide" es muy dinamico con esto aprendes rapido, sus librerias son un poco limitadas pero despues de que pueadas realizar programas con esto puedes subir nivel usando mikrobasic. ahora te explico proteus solo abre archivos en hexadecimal. con mplab u otro programa similar solo te generan este archivo con la licencia completa, pic simulator te generera este archivo de forma free pero te limita el numero de lineas por programa, pero si quieres el codigo en asembler este genera un archivo despes de compilarlo puedes guiarte en el programa que buscas con esto.


----------



## axshaw (Mar 21, 2010)

axshaw dijo:


> estoy intentando andar en proteus la pg160128a con un micro 18f452 utilizando lenguaje c, algo nuevo para mi ya q*UE* manejo muy bien el asembler, pero por lo q*UE* vi en unos ejemplos para este tipo de cosas facilita la operacion de pantallas y comunicacion i2c. maneje pantanllas lcd mas pequeñas, estoy intentando decodificar unos programas para ender mejor el funcionamiento y la secuencia de configuracion. si alguien me puede dar una orientacion se lo agradeceria..



 ya entendi como es que trabaja en el modo garfico y en el de texto.


----------



## Riandres (Abr 3, 2010)

Por casualidad me encontre esta pagina http://www.module.ro/lph7366.html donde desarrollaron una aplicacion para una pantalla que tiene 9 pines como la 4850057 pero no se si es la misma porfavor verifica esta informacion y respondeme para poder hacer un proyecto con esta pantalla


----------



## alpharsp (Abr 6, 2010)

alguno de ustedes ha tenido algun tipod experiencia con este modulo glc 128x64?
JHD529M1
lo que pasa es que la informacion del datasheet es muy limitada, la explicacion es algo pobre

en modo grafico:
por ejemplo dice que tiene 128 posibles combinacion para la direcciones verticales
pero en realidad solo se visualizan 32 de ellas, por este lado esta bien, como sea se cubre toda la parte vertical

pero horizontales dice que tiene 16 pero deberian ser 32 ya que divide al lcd en 2 partes, y se saltea una columna en medio

se que lo que acabo de describir es poco explicito, en resumen quisiera saber si alguien ha utilizado este glcd y sabe como esta organizada gdram en la pantalla, porque no encuentro como acceder a todos los muntos de ella, la mitad del lcd es inaccesible para mi


----------



## asherar (Abr 25, 2010)

Recién veo el rótulo "Destacado", no se desde cuándo esté. 
Como sea, en nombre de todos los que vamos haciendo aportes, 
mil gracias a los moderadores ya que esto favorece a la atención 
que se presta al tema.


----------



## axizhe (May 1, 2010)

Hola!. Que tal gente del foro?. Soy bastante novato.. Tengo el siguiente  problema:
Tengo un celular Motorola Rokr Z6 (RIZR), sin display, pero que funciona  el equipo. 
Falta, tanto el display como el flex que usa (Hydra flex, creo que se  llama), tambien tengo otros celulares motorola, un c650 y un w230,  ademas de un mp4 con display TFT bastante estandar, de los que usan el  AK1025.... Lo que quiero sabes es si alguien sabe mas datos acerca del  display original del Z6, o si se podria llegar a reemplazar el original  con alguno de los displays de los equipos esos... Llevo bastante leyendo  informacion. y recompile algunos datasheet, pero no encuentro el modelo  de display, o el pinout del mismo.... Gracias..


----------



## EME_JuanAndrade (Ago 23, 2010)

Saludos. Aca hay una pagina que tiene varios patillajes para LCD de celulares. Tal vez podamos ir formando una biblioteca de datasheets y ejemplos. Apenas voy a comprar un lcd de Nokia 2600 (creo) que es lo mas barato que consigo donde vivo (7-8dlls). Ahi les cuento.


----------



## sonemati (Ago 31, 2010)

Hola a todos, queria consultarles si hay algo de lcd a color, y consultarles si es muy dificil ponerlo en marcha, yo labure con uno comun de 2x16 y no fue tan dificil, pero algo de pantalla es complicado?


----------



## dragondgold (Oct 22, 2010)

Alguno sabe que controladora lleva el LCD Gráfico WO12864A de la marca Winstar y si se lo puedo controlar con las librerías que trae incorporadas el CCS?

gracias y saludos!!


----------



## jorge andrada (Nov 9, 2010)

Hola sonemati.   mira yo soy medio nuevo en esto de los lcd tambien pero si se algo.  si ya manejaste los 2x16 o 2x20, bueno ya tienes bastante idea y la base, pero yo creo que antes de trabajar con los glcd color, deberias de trabajar con los dispays graficos monocromo, por ejemplo un 128x64 monocromo.
si lo manejas a este GLCD te sera mas facil comprender los GLCD color. pero no un salto tan brusco desde y LCD de caracteres.


por otro lado dejo un mensaje a todos. no se alejen del foro, ya que hacer rato no retoman el tema, jeje estaria lindo poder comprender bien varias cositas.   

yo estoy trabajando con un GLCD manejado con un microcontrolador HC908 de motorola, pero me gustaria ponerle un T6963c, pero nose bien como hacerlo, y el otro tema mio es que no lo consigo aqui en mi provincia.    yo soy de Tucuman Argentina.    otra cosa que quisiera saber hacerca del t6963c es si como tengo que hacer para trabajar por ejemplo con un GLCD de     320x320. desde ya gracias a todos por su colaboracion.


----------



## danrod (Nov 9, 2010)

.....mira compañero ..la Toshiba T6963c.... es de fácil manejo... una vez entendí las rutinas que muestra SHERAR en este post..pude manejarla completamente... descargalas y puebalas....Te recomiendo tambien que revies un documento en español ..un tutorial de esta pantalla que esta en este mismo post..
SALUDOS


----------



## paposstyler (Mar 23, 2011)

*Hola que tal ps yo tambien ando viendo sobre las glcd y espero q alguien me pueda ayudar en como controlarlar mediante un fpga (nexys 2 o basys) y si usa librerias o algo asi para poder programarla atraves de este lenguaje, espero que me puedan ayudar*


----------



## COSMICO (Mar 25, 2011)

Saludo amigos.
Hasta hoy me toco lcd grafico, y es de referencia YB12864ZB y controlador, ST 7920
Alguien sabe con que otro controlador es compatible este, y una libreria para usarlo
estoy loco con esto, pero recibo sugerencias.
Gracais y buena noche.


----------



## asherar (Mar 26, 2011)

COSMICO dijo:


> Saludo amigos.
> Hasta hoy me toco lcd grafico, y es de referencia YB12864ZB y controlador, ST 7920
> Alguien sabe con que otro controlador es compatible este, y una libreria para usarlo
> estoy loco con esto, pero recibo sugerencias.
> Gracais y buena noche.



Dejame adivinar: es de 128 x 64 pixels

Buscando en Google se resuelve tu problema. 
En un segundo encontré unos cuantos documentos, uno de ellos ESTE, de SiTronix.


----------



## COSMICO (Mar 26, 2011)

Gracias asherar.
Pero necesito mas especificamente saber si es compatible con el chip ks0108
para poder usar unas librerias del ccs c


----------



## asherar (Mar 26, 2011)

Fijate comparando los pinouts de ambas. El pinout al que me refiero es el del YB12864ZB y está ACÁ.   
Luego, adaptar las bibliotecas es cosa de un par de tardes. 
Si necesitás, yo del KS0108 creo que tengo todo lo necesario.

El doc que te enlacé antes se trata del circuito interno, para conectar el IC al LCD.


----------



## COSMICO (Mar 26, 2011)

ok gracias amigo, seria de gran ayuda la libreria.


----------



## asherar (Mar 26, 2011)

COSMICO dijo:


> ok gracias amigo, seria de gran ayuda la libreria.



Búscala en este tema: https://www.forosdeelectronica.com/f24/inicializar-lcd-concontrolador-t6963c-11700/.

Acá hay algo del ST7920, pero todavía no las han podido hacer andar: 
http://www.micropic.es/smf/index.php?topic=827.0

*Transcribo parte del primer mensaje*:


> Hola que tal hace poco me he echo de un glcd, azul con letras blancas  muy bonito la verdad, el lcd por la parte de atras esta rotulado como  JHD529M1 y en otro lado tiene 12864F por la poca informacion que he  encontrado al parecer cuenta con un controlador ST7920 segun el sig  documento http://www.willar.com/upload/shop/JHD529M1.pdf.
> 
> el  problema es que no he podido hacerlo funcionar y no he encontrado mas  informacion por ningun lado sobre el uso de esta glcd me he baxado en el  data del st7920 y modificando una libreria para el su control pero  nomas no kiere.
> 
> ...


Acá hay más código "encontrado por ahí":



> /*************************************************
> 名    称：LCD12864_ST7920并行测试程序
> 试验功能：测试基于ST7920控制芯片的LCD12864的显示
> 并行方式连接；晶振11.0592M
> ...


----------



## paposstyler (Mar 27, 2011)

Oie y como puedo inicializarla usando VHDL????


----------



## COSMICO (Mar 30, 2011)

Hola asherar.
Pues te cunto que no he podido ni comenzar con el tal lcd grafico ST7920
siempre uso las librerias existentes en ccs c, para simular , pero no se exactamente como
modificar una libreria de estas. lo de la iniciarlo, es lo de menos, lo de configurar los pines , es lo de menos tambien, configurarlo para modo paralelo o serial tambien se como hacerlo; pero para modificar las funciones como, dibujar circulo, rectangulo, rellenar etc
ahí quedo muerto, veo varios mapeados de memoria pero con direcciones en x e y pero no los entiendo mucho.
Por ejemplo, como hago para escribir "hola Mundo" en este lcd, si tener libreria, ¿sólo apunto a la direccion, por ejemplo 80 y envio el dato con sus respectivos bits de control?
Me tiene loco esto, hasta hoy me enfrento a una lcd grafica.


----------



## asherar (Mar 30, 2011)

COSMICO dijo:


> Hola asherar.
> Pues te cunto que no he podido ni comenzar con el tal lcd grafico ST7920
> ...
> Por ejemplo, como hago para escribir "hola Mundo" en este lcd, si tener libreria, ¿sólo apunto a la direccion, por ejemplo 80 y envio el dato con sus respectivos bits de control?
> Me tiene loco esto, hasta hoy me enfrento a una lcd grafica.


Por ahora no me puedo poner a estudiar la hoja de datos del 7920, pero todo depende de si tiene o no memoria dedicada a caracteres. 
En el caso del T6963C si, y entonces es como dices, direccionar y enviar.
En el KS0108 no, y entonces hay que cargar las cadenas de bits en la memoria del micro para copiarlas oportunamente.

En todo caso no queda más que probar. 
Por mandar el dato equivocado no vas a romper nada.


----------



## COSMICO (Mar 30, 2011)

asherar.
otra cosa, este codigo que esta arriba, el de letra azul ¿es C? que tipo de lenguaje o compilador es
un saludo.


----------



## asherar (Mar 30, 2011)

Sí, es C. .................


----------



## nicolas8702 (Abr 5, 2011)

hola a todos estuve mirando este foro y pense que me podrian ayudar. necesti controlar una lcd a color de un nokia 6100 con chip epson S1D15G10D08BE_TM_MF1493_03 la pantalla es de 128x128 el problema es que las librerias que encuentro no me han servido  y ya no doy mas y no me ha funcionado ni megrando las de avr  a pic les agradeceria una ayudita  je aqui les anexo el data sheet y la pagina donde compre la lcd gracias

http://www.sparkfun.com/products/9363

en esta pagina esta todo


----------



## haifer (Abr 14, 2011)

mecatrodatos dijo:


> que tal les dejo un documento de como programar pantallas graficas con pic basic[/QUO
> 
> Necesito que me ayuden con esta inquietud, necesito aprender a programar pantallas graficas con protón IDE..Nunca antes he programado una pantalla GLCD pero quisiera intentarlo con Protón IDE pues es una herramienta muy fácil de usar..
> 
> ...


----------



## nicolas8702 (Abr 17, 2011)

Hola que pantalla piensas programar ?
si es la que usa el chip ks0108 yo te podria ayudar


----------



## haifer (Abr 18, 2011)

nicolas8702 dijo:


> Hola que pantalla piensas programar ?
> si es la que usa el chip ks0108 yo te podria ayudar



La verdad es que estoy iniciando me con el manejo de GLCD y me gustaría aprender  con cualquier pantalla, así que si tú tienes o más bien sabes cómo hacerlo con la ks0108, me caería muy bien tu ayuda, Simplemente trabajaría con la pantalla que me sugeriste, mi interés es poder programar la en Protón IDE debido a que es la herramienta que estoy usando actual mente para programar pic's. 

De antemano muchas gracias, quedo atento.


----------



## Lengoni (Abr 19, 2011)

Hi alguien podria ayudarme con, poder hacer una grafica por decir de la temperatura en un LCD grafico, pero en basic, ya sea en proton o en mickrobasic. Muchas gracias


----------



## nicolas8702 (Abr 19, 2011)

ok   haifer  aqui te dejo la libreria de comandos para el chip ks0180  y para dibujar figuras , esta libreria es la que trae ccs por tanto esta escrita en c pero al pasarla abasic no encuentro mucha diferencia pero cualquier duda  pregunta y listo  aa otra cosa la libreria la modifique para poder utilizarla con cualquier pin de un pic espero que la entiendas


----------



## Gerardoadrian (Jul 12, 2011)

soy nuevo en esto de manejo de pantallas GLCD, manejo muy bien pantallas 2 * 16 pero para mi proyecto necesito ir un paso mas adelante en cuanto a manejo de pantallas
Voy a realizar un sistema de Tablero digital para moto con visualizacion en el casco y lo unico que me falta es la pantalla GLCD, ya que si le coloco una alfanumerica 2*16 no se verian las letras, por favor ayudenme


----------



## asherar (Jul 13, 2011)

Si le echas una ojada a todo este tema vas a tener un panorama bastante claro. 
En el primer post hay unas cuantas hojas técnicas como para elegir la pantalla, 
y también algunos códigos como para aprender a programarlas. 
Suerte.


----------



## haifer (Jul 13, 2011)

Gerardoadrian dijo:


> soy nuevo en esto de manejo de pantallas GLCD, manejo muy bien pantallas 2 * 16 pero para mi proyecto necesito ir un paso mas adelante en cuanto a manejo de pantallas
> Voy a realizar un sistema de Tablero digital para moto con visualizacion en el casco y lo unico que me falta es la pantalla GLCD, ya que si le coloco una alfanumerica 2*16 no se verian las letras, por favor ayudenme



Buenos dias mecatrodatos, nos suministro este tuto en otro tema, que me resulto muy completo si deseas programarla utilizando proton ide.


----------



## golumx (Jul 15, 2011)

Hola compañeros, me he leido el hilo entero y resulta interesante, pero en mi busqueda de informacion por el foro no he encontrado respuesta y yo me estoy volviendo loco, para programar el micro, un 18F4685, empleo MikrobasicPro, este trae una libreria para el manejo de los GLCD128x64 con chip KS107/108. Cuando simulo mi programa con Proteus, la cosa funciona perfectamente, pero una vez realizada la placa y cargado el programa en el micro sin problemas, no funciona, la mitada izquierda de la pantalla sale en blanco y en la derecha no sale nada. Cuando pongo el contraste al maximo se pone en blanco entera y cunado hago un reset en la parte derecha se aprecia moviento, pero nada paracido a lo que debia ser. Ya he repasado todas las conexiones, su continuidad y que realmente en los esquemas estan conectadas como deberia ser, igual que en la simulacion, he repasado la hoja de datos y todo parece correcto, y ya no se por donde seguir, no se si tengo dañado el GLCD, si la velocidad a la que envio datos es demasiado elevada o que es lo que ocurre, desde vuestra experiencia ¿a alguien le ha pasado algo parecido?¿Que era lo que ocurria y que solucion le dio? ya no se por donde seguir y me tiene muy frustrado.


----------



## nicolas8702 (Jul 15, 2011)

hola golumx depronto el problema con tu glcd es la velocidad a la cual esta trabajando el micro intenta probar la glcd con el micro corriendo a 1mhz , a mi me paso cuando intente usarla con un 18f4550 pero solo fue cuestion de ajustar los delays en la parte que escribe y lee un byte en la glcd mira bien esta parte claro esta yo te recomendaria que trabajaras mejor con  ccs que es mas optimizado que mikro basic igual yo tengo una libreria para el chip ks0180 pero esta en ccs o creo que por ahi la subi al foro  cualquier cosa comprarala con la que tienes


----------



## golumx (Jul 15, 2011)

Gracias nicolas8702, al principio creia que se trataba de eso que las instrucciones llegaban demasiado rapidas, pero he cambiado CS1 por CS2 y ahora me muestra el programa de forma correcta en la parte izquierda de la pantalla, una franja negra en medio y la parte derecha completamente en blanco, lo que me esta haciendo pensar en que la pantalla esta dañada.


----------



## golumx (Jul 16, 2011)

He cambiado la pantalla y funciona perfectamente, no se que le habra pasado a la otra ya que era nueva, lo que me tiene un poco desconcertado es que para que funcione el pin que tenia que ser CS1 hay que conectarlo a CS2 y viceversa, pero a excepcion de eso todo es correcto. Empleo Mikrobasic por su sencillez ya que tiene gran cantidad de librerias, incluidas para GLCD con micro KS107/108, T6963C , con comunicacion SPI y touch panel, lo cual simplifica mucho las cosas.


----------



## Gerardoadrian (Jul 16, 2011)

Alguien tiene el manual de mikrobasic en español para manejo de pantallas GLCD


----------



## dragondgold (Jul 16, 2011)

Podes leer en la ayuda te explica muy bien.  Doy un pequeño dato, no es un compilador muy eficientr,  yo lo he usado en 16 y 18F y CCS genera al menos un 80% menos código es increíble la cantidad de memoria que usa mikro sin mencionar la velocidad. Además CCS tiene muchas librerías también y hay muchas más en la red.

Saludos !!!!


----------



## nicolas8702 (Jul 16, 2011)

golumx me alegra que ya te funcione el  proyecto aa y respecto a que cambiaste cs1 por cs2 y viceverza no es que la pantalla funcione con los pines alrevez si no que cs1 y cs2 son activos en
un estado bajo entonces por eso se soluciona el problema cambiando el  orden de los pines
y respecto con dragondgold estoy deacuerdo con el , deberias probar con ccs ya que este posee una gran cantidad de librerias y ni hablar de la eficiencia del codigo  con respecto a mikronasic


----------



## golumx (Jul 19, 2011)

Ya pero lo que yo se es mikrobasic, el CCS ya se que es mucho mejor, pero a mi me resulta mucho mas complicado...... No entiendo lo de CS1 y CS2 ya que la libreria deberia tenerlo en consideracion. Un error muy importante es que tenia hecha la compilacion con un mikro de 20Mhz cuando en realidad trabaja a 8Mhz.


----------



## MerLiNz (Jul 20, 2011)

sin embargo el mikroC me parece mejor que el CSS, yo he trabajado con CSS y lo deje por mikroC, es cierto que el CSS trae muchas librerias y es mas sencillo entenderlo, pero consume muchas instrucciones, sin embargo el mikroC es lo mas cercano. Por ultimo me pase a C18, me parece mucho mejor, sin embargo es bastante mas lioso que estos ultimos, con el C18 he descubierto todo el potencial de los micros y poder manejarlo completamente yo.


----------



## dragondgold (Jul 20, 2011)

Si el C18 es otra cosa pero no tenes librerias ni nada. Probe muchos compiladores y la verdad he encontrado muchas criticas al CCS y no veo por qué, su código es muy pero muy eficiente en comparacion a otros compiladores, la programación es muy facil y posee muchas librerias que aceleran la labor, ni hablar del continuo desarrollo que se le hace y los bugs en dsPIC son cada vez menos, lo único que le falta es poder compilar para PIC32.

Saludos !!


----------



## MerLiNz (Jul 20, 2011)

Si tiene librerias, y muchas, aunque no esten incluidas con el mismo compilador te vas a la web de microchip y encuentras todas las librerias que quieras, desde sonidos, lcd, tactil, usb...

Es mas, yo me baje un archivo para el manejo por USB y te puedo decir que tiene como 50 ejemplos de USB, incluyendo las librerias para hacerlo por HID, COM, GENERICO....

Yo me cambie del CCS porque se me kedaba chico, si programas codigos importantes te daras cuenta de que te falta "algo mas", te falta mas control de los datos, nose, yo me quede estancado sin embargo con el mikroC segui en adelante, y ahora con el C18 me gusta bastante mas a pesar de que da muchos quebraderos de cabeza al hacer operaciones matematicas con distintas variables de distintos tamaños.


----------



## nicolas8702 (Jul 20, 2011)

bueno aunque yo recomende el ccs me ocurrio lo mismo  que a ustedes me cambie al c18  con la seguridad de que lo que se programa funciona

golumx ps lo de la lcd te lo digo por que ami me paso es me compre una lcd y resulta que  la pantalla me salia invertida y resulta que era que cs1 y cs2 venian para activarte con un 0 logico y no con un 1 logico como viene en la libreria


----------



## golumx (Jul 22, 2011)

menos mal que son mikros compatibles, ahora tengo que investigar a ver que le pasa a la primera que probe, pro que me parece que la cuestion va a estar en la compativilidad de los micros, que al final no va a ser tal..... gracias por las resuestas, pero me sigo quedando con el mikrobasic que para lo que yo hago me sobra.... pero mirare lo del C18 ya que el ser de microchip va a estar siempre actualizado y contara con muchisima informacion, ademas me perecio ver un manual en castellano por algun sitio


----------



## MerLiNz (Jul 24, 2011)

si, manual en español hay


----------



## COSMICO (Jul 25, 2011)

A proposito de todo.
Hay otros micros por ahy que maneja una empresa chilena, si no estoy mal
Denominados PSOC, y parece que prometen mucho; ademas tienen muy buena info en español, creo que estan mas cerca de los FPGA.
http://www.psoc-chile.es.tl/


----------



## MerLiNz (Jul 26, 2011)

Segun he visto PSOC es de USA, unicamente que han abierto una web en chile, pero tiene la misma info o menos que microchip y atmel, este foro es una prueba de ello, hay mil informacion de estas mcus en español.

Aun asi, no me parece tan cercano a los FPGA por lo que he podido apreciar (tampoco he mirado mucho) es como una MCU


----------



## COSMICO (Jul 26, 2011)

Lo digo, que es parecido, pues se puede crear un pic a la medida, segun he visto, pero sera ver que tal y como es..


----------



## Gerardoadrian (Ago 6, 2011)

necesito algun manual ren español de proton, mikrobasic o ccs compiler por favor urgente!!!


----------



## rockbrand (Ago 6, 2011)

Buenas señores como estan, estoy tratando de programar una LCD 2x16 en C18 pero tengo un pequeño problema con la lcd, ya que aunque quiero cambiar de texto en varias partes del programa esta siempre lo muestra y al instante muestra el texto inicial.

me explico: digamos que al comienzo escribo "buenas, para continuar presiones enter" y una vez se presiona enter sigue otro texto cualquiera que me debería permitir continuar con una serie de acciones para guardar o mostrar x dato... pero al presionar enter lo que consigo es que salga el otro texto pero al instante se regrese al "buenas, para continuar presiones enter"... tengo que habilitar algun comando para que la lcd o el programa no se reinicie en ese punto y me deje continuar con mi serie de instrucciones?...


----------



## MerLiNz (Ago 6, 2011)

creo que tu problema es error del codigo, seguramente no hayas puesto alguna variable para evitar escribir las 2 cosas, es decir:

menu=0;
if(!menu) muestra buenas;
if(menu==1) muestra otro texto;

y vas cambiando la variable menu por un numero para que solo se escriba lo que actualmente quieras.


----------



## rockbrand (Ago 6, 2011)

si, ya revisé y tienes toda la razón, pense trabajar la lcd de forma contínua y no fue posible, gracias por tu ayuda


----------



## Hectorpkmn (Dic 1, 2011)

Hola, soy nuevo en esto de los LCD Graficos y PICs, ya lei todo el tema de LCDs Graficos pero no he logrado avanzes por falta de bases y tengo que hacer un proyecto que requerira que use el display Nokia 5110 utilizando el Pic18F4550 y programandolo con el CCS C, les agradeceria mucho si me pudieran ayudar con algun tutorial que explicara practicamente desde cero o lo mas basico posible, he buscado mucho en internet pero no he encontrado mucho q entieda, cualquier ayuda o material se los agradeceria muchisimo


----------



## skalibur (Feb 2, 2012)

aun no hay mas info  encontre un nokia 5125 funcionando y lo quiero destripar, pero no veo nada claro


----------



## nicolas8702 (Feb 2, 2012)

ho hectorpkmn yo he trabajado con una pantalla lcd de nokia6100 perot te tengo una mala noticia esas pantallas trabajan por protocolo de comunicacion serial spi y te cuento que si quieres hacerla funcionar deberas implementar el spi por codigo ya que ccs tiene problemas con el modulo spi del pic18f4550 y pic18f2550 te lo digo por experiencia ese modulo no trabaja bien con ccs y si no hazlo con c18 que ahi si funciona


----------



## axshaw (Feb 2, 2012)

axshaw dijo:


> ya entendi como es que trabaja en el modo garfico y en el de texto.



Muchas gracias compañeros del foro, volvi a retomar la panalla y ya la hice funcionar en proteus, ahora requiero de ayuda para convertir esa tabla de datos para insertarla en un bin para programar la eeprom i2c.  Gracias


----------



## Hectorpkmn (Feb 7, 2012)

Gracias, ya heche a andar el display nokia 5110, encontre 2 librerias que me servian para ello y ambas funcionaron, una para el 3310 (lo probe y es compatible) y otra adaptada al 5110 que solo tuve q modificar un poco la inicializacion para que funcionara en fisico, dejo los enlaces para aportar al tema:

http://www.ccsinfo.com/forum/viewtopic.php?t=25571

http://know.plugandprogram.com/index.php?title=PIC32-MX_Firmware:_Nokia_5110

En lo personal me gustó mas la libreria del 3310 pero deje de usarla porque no encontre como imprimir en video inverso, si alguien sabe como hacerlo le agradeceria mucho.

La libreria del 5110 tiene esa opcion y por eso la estoy usando pero tengo problemas para imprimir numeros almacenados en una variable, igual la ayuda es bien recibida.


----------



## Hectorpkmn (Feb 8, 2012)

Ya resolvi lo de las variables en el 5110, era un error muy simple que por distraido no note


----------



## nietzche (Feb 21, 2012)

Una pregunta
para controlar una GLCD 160x80 la quiero compilar con el CCS pero me tira un error:

#include <18f4550.h>
#device adc=10
#fuses INTRC_IO,WDT,NOPROTECT,NOPUT, NOPBADEN, NOMCLR, LVP
#use delay (clock=4000000) //Fosc=4Mhz
#include <LC7981.C>
#include <GRAPHICS.C>

void main()
{

}

la libreria es la LC7981 que baje de la pagina de CCS, y al compilar me dice:
INVALID ORG RANGE y seÑala el error en:  "const int8 TEXT[51][5]"

al principio de la libreria, que sera?
mi micro es el PIC18F4550


----------



## Hectorpkmn (Feb 21, 2012)

nietzche dijo:


> la libreria es la LC7981 que baje de la pagina de CCS, y al compilar me dice:
> INVALID ORG RANGE y seÑala el error en:  "const int8 TEXT[51][5]"



Te marca error porque el rango final es mayor que el inicial, prueba invertir el [51] con el [5]


----------



## nietzche (Feb 21, 2012)

Pues ya lo hize y no funciono, dice que hay va el puntero de interrupcion,
en la pagina de CCS dice: "This also has some extra functions for using the  built-in character map that I found useful. I have a #ORG in there to  put the ascii map into ROM to save RAM. "
Asi que se lo quite y me tiro otro error:

UNDEFINER IDENTIFIER, con cada una de las variables, ya sea que ponga:

#include <GRAPHICS.C>
#include <LC7981.C>

o

#include <LC7981.C>
#include <GRAPHICS.C>


----------



## reico0329 (Abr 4, 2012)

hola como estan  un cordial saludo para todos , yo necesito que me ayuden con  poner una imagen  a una glcd ya la puedo ver en el programa para ponerla como mapa de bits pero en el momento de ponerla en   a simular en proteus me sale unas lineas  y por mas que le cambio datos al copilado no puedo lograr que salga por favor ayúdenme  yo uso el ccs


----------



## reico0329 (Abr 4, 2012)

mmm lo que yo creo es que es un error de porogramacion pero es que la verdad no entiendo la función para poner a correr la imagen  aquí les dejo la imagen de como me sale  y la imagen que es la que necesito y pos un poco  necesito sabes que le pongo para que corra normal mente


----------



## axshaw (Abr 5, 2012)

monta el programa para poder opinar respecto a el.  la verdad a mi me paso algo similar y era que   las direcciones en la ram de la glcd y los datos no eran los correctos.


----------



## reico0329 (Abr 5, 2012)

sabes que yo cero que es eso pero la verdad es que no entiendo bien lo de las dimensiones e agradeseria que me ayudaras mira este  es el copilado  te agradezco tu colaboración 



#include <18f4550.h>
#fuses XT,NOWDT
#use delay(clock=20000000)
#include <HDM64GS12.C>
#include <graphics.c> 


// ------------------------------------------------------  
// GLCD Picture name: Logo Medicina[1]~1.bmp            
// GLCD Model: KS0108 128x64            
// ------------------------------------------------------  

const int8 imagen[64][16] = {
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,128,128,128,128,128,128,128,128,128,128,128, 
 128,192,192,192,192,192,192,192,192,128,  0, 28, 62, 63,255,255, 
 255,255, 62, 30, 28,  0,128,192,192,192,192,192,192,192,192,128, 
 128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  1,  3,  3,  7,  7,  7,  3, 15, 15, 
  31, 31, 31, 31, 31, 63,127,127,127,127,127,127,127, 63,127,127, 
 255,255,255,255,255,255,255,255,255,255,255,255,255,  0,255,255, 
 255,255,  0,255,255,255,255,255,255,255,255,255,255,255,255,255, 
 127,127, 63,127,127,127,127,127,127,127, 63, 31, 31, 31, 31, 31, 
  15, 15,  3,  7,  7,  7,  3,  3,  1,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 96,240,248,248,252, 
 252,156,157, 29, 61, 61, 61, 61, 61, 61, 57, 48,  0,  0,255,255, 
 255,255,  0,  0, 48, 57,125,125,125, 61, 61, 61, 29,156,156,252, 
 248,248,248,240, 96,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  3,  3, 
   7,  7,199,231,247,243,251,251,252,252, 60, 60, 60, 62,254,222, 
 222,222, 30, 30, 30, 94,222,222,222,239,239,239,239,199,  7,  7, 
   3,  3,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  3,  7,  7,143,207,239,239,231,246,244,116,120,123,187, 
 187,189, 60,188,222,222,223,223,207,207,143,  7,  3,  1,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  3,  7, 15,143,223,239,239,246,244,112,119,251, 
 187,187,184,188,252,223,223,223, 15, 15,  7,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  3,  7, 55,123,251,255, 60, 93, 93, 
 255,190,239,239,239,247,119, 51,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  2,  2,  3, 11,253, 
 253, 61,  3,  2,  2,  6,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
};

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

         }  
      }
   }
}

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

         }  
      }
   }
}





void main() 
{

delay_ms(1000);

glcd_init(ON);   // iniciamos la lcd
glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA



while(TRUE){ 

            glcd_imagen();
            delay_ms(4000);
            glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA
            glcd_imagen_N();
            delay_ms(4000);
            glcd_fillScreen(0); //LIMPIAMOS LA PANTALLA            

          }


}_


----------



## gonpa (May 19, 2012)

Hola a todos, voy a compartir una librería completa para manejar el lcd grafico compatible con el controlador ks0108 (winstar -WG12864A es la que tengo yo). Es una librería muy completa....pero, siempre hay un pero no? ja las fuentes que trae son muy grandes, y me tome el trabajo de realizar las fuentes de 5x7 puntos y tratar de adaptarlas (esta el código de estas letras en un bloc de notas) para hacer un uso más cómodo en nuestras aplicaciones, pero no logro adaptarlas bien y me da unos errores, estaría bueno que entre todos nos ayudemos y solucionemos el pequeño problema.

-FUENTE5X7.h // es el archivo que cree yo en base al original
-arial_bold_14.h // es el archivo original
-ahora los códigos de las letras del archivo FUENTE5X7.h están en un bloc de notas hechos por un editor de fuentes para que puedan verlo mas comodo.
-compilador AVRSTUDIO 5


Tratemos de modificar las rutinas para graficar las letras y ver si podemos usarlas a estas más pequeñas.


Dejo todo la info que tengo en el rar. Espero que podamos resolver esto!

Muchas gracias!

Saludos.


----------



## nietzche (May 29, 2012)

Programe mi GLCD 160x80 touch pixeles en ensamblador para PIC's con un pic18f4550, trabajo en modo texto y modo grafico, alguien sabe como hacer figuras en esta glcd ?


----------



## night29 (Jun 17, 2012)

una pregunta, soy nuevo en esto de los lcd graficos, queria que me dijieran que programa es bueno para pasar una imagen BMP a codigo CCS le agradeceria su ayuda


----------



## asherar (Jun 17, 2012)

night29 dijo:


> una pregunta, soy nuevo en esto de los lcd graficos, queria que me dijieran que programa es bueno para pasar una imagen BMP a codigo CCS le agradeceria su ayuda



Hay varios programas en la web. 
Googlea "conversion bmp a glcd" o similar.

Probá con LCDAssistant

o bien con bitmap2lcd.com


----------



## night29 (Jun 18, 2012)

bueno es que estube probando el bitmap2lcd pero la verdad no le entendi muy bien como manejarlo aparte me dice que solo tengo 10 dias para utilizarlo, ya que es de evaluacion, donde puedo conseguirlo completo o un tutorial de como utilizarlo...


----------



## asherar (Jun 18, 2012)

En el primer post de este tema, puse este enlace para descargar un editor muy intuitivo, pero no se si se adapta a CCS. 
En una oportunidad desarrollé una especie de tutorial sobre cómo trabajar paso a paso.
El enlace es _este_, y ahí menciono un programa gratis (LCDassistant) para hacer la conversión.


----------



## night29 (Jun 18, 2012)

va muchas gragias ya logre utilizar tus consejos con el lcd grafico, por fin pude meterle una imagen cuidate y en verdad te lo agradezco


----------



## visual (Jun 20, 2012)

Este es un editor de imagenes para glcd es muy sencillo de usar y es la version completa



Disculpas es este


----------



## visual (Jun 29, 2012)

alguien sabe como presentar graficos  con texto al  en una sola imagen  en lcd 160x80


----------



## olinqui (Jul 11, 2012)

Hola a todos quiero comentarles mis avances en la programación del GLCD DG-16080-11 Chip Controlador: SANYO LC7981 en CCS compiler creo que serán útiles para otras personas interesadas en la programación de este dispositivo en este lenguaje he programado un PIC18F4550 para el control del GLCD con éxito parcial ya que en el modo texto parece no tener problemas con este código.


```
#include <18F4550.h> 
 #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN 
 #use delay(clock=48000000) 
 #include "usb_bootloader.h"
 //Referencia de asicnacion de Pines

 // RS  =RC0
 // R/W =RE0
 // E   =RE1
 // CS  =RC2
 // Res =RE2
//****************************************************************************

byte CONST Inicio[19] = {0x00 // INST: MODE CONTROL
                         0x38 // Set:  Dsp on,Master,cursor ON char BLink,Mode CHAR,Built-in ROM CHAR
                         0x01 // INST: CHARACTER PITCH (-1)
                         0x77 // Set:  8 bits vertical CHAR, 8 bits horizontal x CHR => 20 chr x 10 rngl
                         0x02 // INST: NUM CHAR (-1)
                         0x13 // Set:  20 char  horizontalmente
                         0x03 // INST: DISPLAY DUTY (-1)
                         0x4F // Set:  80 (valor de puntos verticalmente)
                         0x04 // INST: CURSOR POsITION (-1)
                         0x07 // Set:  en el bit 8 (vertical)
                         0x08 // INST: DSP START ADD LOWER
                         0x00 // Set:  posicion 0
                         0x09 // INST: DSP START ADD UPPER
                         0x00 // Set:  posicion 0
                         0x0A // INST: RAM ADD LOWER
                         0x00 // Set:  posicion 0
                         0x0B // INST: RAM ADD UPPER
                         0x00 // Set:  posicion 0
                         0x0C // INST: WRITE DATA TO RAM
                             };
  
byte int8 Puntero[19] = {0x00,0x38,0x01,0x77,0x02,0x13,0x03,0x4F,0x04,0x07
                           0x08,0x00,0x09,0x00,0x0A,0x53,0x0B,0x00,0x0C};  
//                                                  /\  
//                                              Modifica posicion del puntero.

byte CONST Texto[14] = {0x50,0x52,0x55,0x45,0x42,0x41,0x00,0x00,0x4D,0x45,0x52,0x4C,0x49,0x4E};
  
byte CONST Borrar[200] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};



 

void main(void)
{
 output_low(pin_E0);         // R/W apagar “RE0 a 0
 output_low(pin_C2);         // CS apagar “RC2 a 0
 output_high(pin_C0);         // RS encendido “RC0 a 1 

byte Var1=0;

 //////////////////Tabla  de inicialización////////////////////////////////////

      for (Var1=0;Var1<19;Var1++)
            {
         output_high(pin_E1);       // E  encender “RE1 a 1
         OUTPUT_D(Inicio[Var1]);     // Digito unidades envio al puerto B
         output_toggle(PIN_E1);     // E Cambia el estado y apagalo “RE1 a 0
         delay_ms(1);              // Retardo Para evitar Datos
         output_toggle(PIN_C0);     // RS cambia el estado del pin RC0 y lo apago
         output_toggle(PIN_E1);     // E Cambia el estado y enciendelo “RE1 a 1
               }
 
 output_low(pin_C0);         // Apaga RS “RC0 a 0
 
 //////////////////Tabla  de Borrado////////////////////////////////////
          
          
 for (Var1=0;Var1<200;Var1++)
            {
         output_high(pin_E1);       // E  encender “RE1 a 1
         OUTPUT_D(Borrar[Var1]);     // Digito unidades envio al puerto B
         output_toggle(PIN_E1);     // E Cambia el estado y apagalo “RE1 a 0
         delay_ms(1);              // Retardo Para evitar Datos
//         output_toggle(PIN_C0);     // RS cambia el estado del pin RC0 y lo apago
         output_toggle(PIN_E1);     // E Cambia el estado y enciendelo “RE1 a 1
            }
 
  output_low(pin_E1);         // apagar   E  “RE0 a 0 

//////////////////Tabla  de Puntero////////////////////////////////////

 output_high(pin_C0);         // RS encendido “RC0 a 1 
      for (Var1=0;Var1<19;Var1++)
            {
         output_high(pin_E1);       // E  encender “RE1 a 1
         OUTPUT_D(Puntero[Var1]);     // Digito unidades envio al puerto B
         output_toggle(PIN_E1);     // E Cambia el estado y apagalo “RE1 a 0
         delay_ms(1);              // Retardo Para evitar Datos
         output_toggle(PIN_C0);     // RS cambia el estado del pin RC0 y lo apago
         output_toggle(PIN_E1);     // E Cambia el estado y enciendelo “RE1 a 1
               }
 output_low(pin_C0);         // Apaga RS “RC0 a 0

//////////////////Tabla  de Texto////////////////////////////////////

for (Var1=0;Var1<14;Var1++)
            {
         output_high(pin_E1);       // E  encender “RE1 a 1
         OUTPUT_D(Texto[Var1]);     // Digito unidades envio al puerto B
         output_toggle(PIN_E1);     // E Cambia el estado y apagalo “RE1 a 0
         delay_ms(1);              // Retardo Para evitar Datos
         output_toggle(PIN_E1);     // E Cambia el estado y enciendelo “RE1 a 1
               }
 }
```


Pero el modo grafico me ha dado dolores de cabeza ya que el GLCD solo recibe los datos de 20 x 13 Byte´s  luego de estos se repite la información hasta llenar la pantalla quedando las otras 67 líneas de 20 Byte´s  sin ser reconocidas por la pantalla.
Para lograr que la imagen no se destruya tuve que hacer un dibujo de 160 X 13 pixeles y poniendo esa tabla en el código es como logre visualizarlo la razón de poner en el dibujo una secuencia numérica es para ver hasta qué punto se cortaba la imagen y continuaba en el siguiente renglón el dibujo pinta (1-2-3-4-5-6-7-8-9-10-11-12-13-14X) en la imagen se ve que la primer línea termina bien en X pero la segunda comienza en 5 lo que me lleva a pensar que cuando se repite la imagen se sale de la pantalla.


```
#include <18F4550.h> 
 #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN 
 #use delay(clock=48000000) 
 #include "usb_bootloader.h"
 //Referencia de asicnacion de Pines

 // RS  =RC0
 // R/W =RE0
 // E   =RE1
 // CS  =RC2
 // Res =RE2
//****************************************************************************

byte CONST Inicio[19] = {0x00 // INST: MODE CONTROL
                         0x32 // Set:  Dsp on,Master,cursor ON char BLink,Mode CHAR,Built-in ROM CHAR
                         0x01 // INST: CHARACTER PITCH (-1)
                         0x77 // Set:  8 bits vertical CHAR, 8 bits horizontal x CHR => 20 chr x 10 rngl
                         0x02 // INST: NUM CHAR (-1)
                         0x13 // Set:  20 char  horizontalmente
                         0x03 // INST: DISPLAY DUTY (-1)
                         0x4F // Set:  80 (valor de puntos verticalmente)
                         0x04 // INST: CURSOR POsITION (-1)
                         0x07 // Set:  en el bit 8 (vertical)
                         0x08 // INST: DSP START ADD LOWER
                         0x00 // Set:  posicion 0
                         0x09 // INST: DSP START ADD UPPER
                         0x00 // Set:  posicion 0
                         0x0A // INST: RAM ADD LOWER
                         0x00 // Set:  posicion 0
                         0x0B // INST: RAM ADD UPPER
                         0x00 // Set:  posicion 0
                         0x0C // INST: WRITE DATA TO RAM
                             };


byte CONST Grafico[1600] = {

 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xBF,0xCF,0xE7,0xE7
 0xF0,0xFC,0xFC,0x3F,0x1F,0x8F,0xCF,0x7F
 0xBE,0xFF,0x3D,0xFE,0x7B,0xF9,0xF7,0xBD
 0x9F,0xB7,0xDB,0xE3,0xFE,0xFB,0x7D,0xFE
 0xEF,0x77,0xB7,0x3F,0x9E,0x7E,0xDC,0xFD
 0xB9,0xF8,0xF3,0xDB,0xAF,0xBF,0xDF,0xF1
 0xF8,0x7F,0xBE,0xFE,0xEF,0x77,0xB3,0x5F
 0xAE,0xBE,0xFD,0x7D,0xFA,0xFC,0x75,0xE7
 0xBF,0xDF,0xE7,0xF4,0xF6,0x78,0x3F,0x7F
 0x1F,0x0F,0xBB,0x7F,0xBE,0xFF,0x7D,0xFE
 0x7B,0xFD,0x37,0xF7,0xDC,0x6E,0x1F,0x10
 0x87,0xC3,0xA3,0x70,0xE8,0x3C,0x3B,0xB8
 0xDF,0x71,0xBE,0xE1,0xFD,0xC4,0x3B,0xEB
 0xDF,0xF7,0xDD,0xFB,0xF7,0x7B,0xBF,0xBE
 0xEF,0xB7,0xDB,0xBF,0xDF,0x7F,0xDE,0xFD
 0xDD,0xFE,0xFB,0xCD,0xDF,0xC3,0xE3,0xFB
 0xF8,0xFC,0x7F,0xBF,0x1F,0xCF,0xE7,0xBF
 0xDF,0x7F,0x0E,0xFE,0x3D,0xFE,0xFB,0xDE
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 };
  

  

void main(void)
{
 output_low(pin_E0);                 // R/W apagar “RE0 a 0
 output_low(pin_C2);                 // CS apagar “RC2 a 0
 output_high(pin_C0);                // RS encendido “RC0 a 1 
byte Var1=0;

 //////////////////Tabla  de inicialización////////////////////////////////////

      for (Var1=0;Var1<19;Var1++)
            {
         output_high(pin_E1);         // E  encender “RE1 a 1
         OUTPUT_D(Inicio[Var1]);      // Digito unidades envio al puerto B
         output_toggle(PIN_E1);       // E Cambia el estado y apagalo “RE1 a 0
         delay_ms(1);                 // Retardo Para evitar Datos
         output_toggle(PIN_C0);       // RS cambia el estado del pin RC0 y lo apago
         output_toggle(PIN_E1);       // E Cambia el estado y enciendelo “RE1 a 1

 }
 
 output_low(pin_C0);                  // Apaga RS “RC0 a 0
 output_low(pin_E1);                  // Apaga E  “RE0 a 0  
 
 //////////////////Tabla  de Grafico////////////////////////////////////

for (Var1=0;Var1<1600;Var1++)
            {
         output_high(pin_E1);         // E  encender “RE1 a 1
         OUTPUT_D(Grafico[Var1]);     // Digito unidades envio al puerto B
         output_toggle(PIN_E1);       // E Cambia el estado y apagalo “RE1 a 0
         delay_ms(1);                 // Retardo Para evitar Datos
         output_toggle(PIN_E1);       // E Cambia el estado y enciendelo “RE1 a 1


 }


         }
```

Me pregunto si tendría que ver con la memoria interna de la pantalla ya que solo esta recibiendo datos en los primeros 2080 Pixeles de los 12800 de la pantalla.
Otra posibilidad que se me ocurre es que se tengan que mapear cada 2080 pixeles o cada 260Byte´s  un cambio de carro o puntero de tal forma que no se salga la información de la pantalla la verdad ya estoy un poco liado con esto y agradecería si me pudiesen tirar un cable.

Como comentario en la memoria del micro mi código solo consume el 6% de la ROM


Adjunto unas imágenes de la pantalla trabajando para que tengan una idea más clara de lo que intento explicar.

Agradezco de antemano su atención y ayuda.

P,D. si les interesa el PCB de la pantalla con gusto se lo subo.
P,D-2 El firware lo cargo al micro con el botlooader del CCS desde el Serial Port Monitor por USB

Saludos cordiales.


----------



## asherar (Jul 11, 2012)

olinqui dijo:


> Me pregunto si tendría que ver con la memoria interna de la pantalla ya que solo esta recibiendo datos en los primeros 2080 Pixeles de los 12800 de la pantalla.
> Otra posibilidad que se me ocurre es que se tengan que mapear cada 2080 pixeles o cada 260Byte´s  un cambio de carro o puntero de tal forma que no se salga la información de la pantalla la verdad ya estoy un poco liado con esto y agradecería si me pudiesen tirar un cable.
> 
> Como comentario en la memoria del micro mi código solo consume el 6% de la ROM
> ...



Estuve viendo en *este enlace* algunos datos de tu display, y hay una sola patilla /CS (chip select). Por lo tanto parece que el banco de memoria de destino se debe configurar enviando comandos. 

Fijate en la pagina 15 del pdf del controlador* AQUÍ*. 
Cada línea horizontal tiene 180 pixels, y se puede cubrir con 20 registros de 8 bits o con 
26 registros de 6 bits (igual se mandan 8, pero se utilizan 6). 
Multiplicando 80 líneas por 26 te da 2080 y por 20 te da 1600. 
O sea que para llenar la pantalla de 180 x 80 se requieren 2080/1600 direccionamientos 
según se utilicen 6/8 bits del registro enviado al display. 

Es solo una idea como para empezar a trabajar. 

Saludos de nuevo


----------



## asherar (Jul 13, 2012)

Resumiendo: 

1) Para mandar imágenes completas simplemente se direcciona  cada uno de los bytes 
al inicio de los 8 pixels horizontales que corresponden.

2) Para asignar el estado a un pixel en particular hay que direccionar al byte de pantalla 
que lo contiene. 
Luego se manda un byte con todo cero excepto en los bits correspondientes a los pixels 
que se desean cambiar, y se hace un XOR con el contenido existente en esa dirección. 

Recordar que: 1 XOR 0 = 1 y 1 XOR 1 = 0

De paso les dejo fotos de un control con display de 128x64 que estoy armando.


----------



## olinqui (Jul 17, 2012)

Hola asherar gracias por responder muy buena tu explicación ya me pongo a escribir código y te comento como me fue.

Saludos cordiales.


----------



## olinqui (Jul 18, 2012)

Hola de nuevo asherar se ve buena tu targeta pero me llama la atencion el conector BNC vas a hacer un osciloscopio?


----------



## asherar (Jul 18, 2012)

Sí, algo así. 
Ese conector es para una entrada genérica de señal ya amplificada. 
Otras dos entradas son para señal de audio, con su plaquita adaptadora de niveles y filtrado. 
El conector negro frontal me permite sacar hacia el lpt de la pc o una placa de memoria ram auxiliar, para lograr una velocidad de captura de 10 KSPS. Para procesar el habla humana sobra. 
Esto es indispensable ya que el pic tiene apenas unos 100 bytes contiguos a bordo. 
La idea es tener un display bastante versátil, que se pueda configurar desde su consola (de 2 botones) para entrar/salir con todo tipo de datos estándard serie/paralelo y poder mandarlo a gráficas y/o a la PC. 

Ya lo tengo todo probado y ahora estoy tratando de darle la forma final. 
Cuando lo tenga todo lindo subo más fotos ...


----------



## olinqui (Jul 19, 2012)

Venga ya que suena tu proyecto de lujo y multi funcional yo solo le puse a mi targeta un conector USB y RJ11 para conectar modulos en bus y que sea fasi la expancion del sistema, pero tu si que te estas volando la barrda jejeje.

Saludos.


----------



## asherar (Jul 21, 2012)

olinqui dijo:


> Venga ya que suena tu proyecto de lujo y multi funcional yo solo le puse a mi targeta un conector USB y RJ11 para conectar modulos en bus y que sea fasi la expancion del sistema, pero tu si que te estas volando la barrda jejeje.
> 
> Saludos.



Eso está bueno, porque usas estándares más modernos que yo. 
Ya llegará el tiempo de actualizar mi proyecto y te pediré auxilio. 
Saludos


----------



## deec75 (Jul 24, 2012)

Hectorpkmn dijo:


> Gracias, ya heche a andar el display nokia 5110, encontre 2 librerias que me servian para ello y ambas funcionaron, una para el 3310 (lo probe y es compatible) y otra adaptada al 5110 que solo tuve q modificar un poco la inicializacion para que funcionara en fisico, dejo los enlaces para aportar al tema:
> 
> http://www.ccsinfo.com/forum/viewtopic.php?t=25571
> 
> ...



Hola, que es lo que modificaste?, a mi no me ha funcionado


----------



## majecty (Jul 26, 2012)

hola bros. bueno soy nuevo en los GLCD y necesito de su iluminacion tengo un GLCD JHD529M y la verdad no tengo idea de como programarlo, ya busque su datasheet y no hay mucha informacion para programarlo. si me iluminan un poco hacerca de este GLCD se los agradecere mucho.


----------



## nietzche (Ago 1, 2012)

Es el lcd de 40 x 20 ? La rutina esta en picc creo, y ahí mismo dice como utilizarla


----------



## majecty (Ago 1, 2012)

es un GLCD de 128x64. JHD529


----------



## asherar (Ago 2, 2012)

Intercalo por acá esto que me pareció importante: 

*Mostrar caracteres personalizados en un GLCD en el modo alfanumérico* _-> ir al enlace _
por Daniel Meza


----------



## Azlan (Nov 14, 2013)

Hola he estado viendo todos los aporte que han dado, pero no he encontrado solución a un problema que tengo. Estoy tratando de utilizar una* GLCD LGM12864A-NSW-BBW*, pero físicamente no me funciona estoy utilizando el pic 16f877a y el csc compiler, en el programa estoy usando la librería HDM64GS12.c y la graphics.c en todos los ejemplos que he visto en internet utilizan estas mismas librerias, la simulación en proteus funciona bien pero en el  montaje fisico no, no se si se deba a que esa libreria no sea compatible con la GLCD que estoy usando, quisiera saber si alguien a utilizado un GLCD con esta refencia y si le ha funcionado fisicamente y con que libreria.
Aclaro ya hecho varios montajes con LCD, estoy teniendo en cuenta el cristal externo, estoy usando uno de 20MHz, y ya he trabajado con el pic 16f877a, lo que me da a pensar que el problema no es en el montaje fisico, si o tal ves la librería, aqui adjunto el codigo y la simulacion en proteus de como estoy conectando los pines.
Espero que me puedan ayudar porque me urge poner a funcionar esa GLCD para mi proyecto, de antemano muchas gracias


----------



## nicolas8702 (Nov 15, 2013)

Hola cuando yo inicie con las glcds tuve un problema parecido en proteus funcionaba pero en fisico no pero lo solucione primero prueba con un  cristal de 4Mhz esto es por que las lcds tienen unos tiempos para los comandos y puede que la libreria no respete esos tiempos asinproteus la corra bien , ya luego si te funciona asi debes mirar dentro de la tibreria y modificar a ensayo y error (a no ser que tengas el data sheet del lcd) los tiempos entre comandos e ir subiendo la velocidad


----------



## axshaw (May 10, 2014)

axshaw dijo:


> estoy intentando andar en proteus la pg160128a con un micro 18f452 utilizando lenguaje c, algo nuevo para mi ya q*UE* manejo muy bien el asembler, pero por lo q*UE* vi en unos ejemplos para este tipo de cosas facilita la operacion de pantallas y comunicacion i2c. maneje pantanllas lcd mas pequeñas, estoy intentando decodificar unos programas para ender mejor el funcionamiento y la secuencia de configuracion. si alguien me puede dar una orientacion se lo agradeceria..




al ver este mensaje me alegro ya que despues de mucho estudio logre realizar el proyecto, le dejo una pequeña demostracion de esto. disculpe el caos pero fue una prueba experimental.

https://www.youtube.com/watch?v=-TDeGJpgMUA}





nicolas8702 dijo:


> Hola cuando yo inicie con las glcds tuve un problema parecido en proteus funcionaba pero en fisico no pero lo solucione primero prueba con un  cristal de 4Mhz esto es por que las lcds tienen unos tiempos para los comandos y puede que la libreria no respete esos tiempos asinproteus la corra bien , ya luego si te funciona asi debes mirar dentro de la tibreria y modificar a ensayo y error (a no ser que tengas el data sheet del lcd) los tiempos entre comandos e ir subiendo la velocidad




Tienes mucha razón, proteus es "idealista", te recomiendo inicializar todas la variables, en lo posible el reset de la GlCD, tuve un problema al interactuar entre el modo texto y grafico de esta, revisa muy bien esta configuración.


----------



## nicolas8702 (May 11, 2014)

Hola 
ya tenia mucho sin participar del foro pero les cuento que todo con respecto a la glcd que utiliza el chip ks0108b de samsung es mucho lo que he logrado tanto que la he migrado a c30 y la utilizo con dspic30f6012 @ 128Mhz  o 32MIPS haciendo overclocking al dspic y consiguiendo la maxima velocidad de ejecucion que esta lcd nos puede ofrecer


----------



## rcarlos81 (Sep 25, 2014)

Azlan dijo:


> Hola he estado viendo todos los aporte que han dado, pero no he encontrado solución a un problema que tengo. Estoy tratando de utilizar una* GLCD LGM12864A-NSW-BBW*, pero físicamente no me funciona estoy utilizando el pic 16f877a y el csc compiler, en el programa estoy usando la librería HDM64GS12.c y la graphics.c en todos los ejemplos que he visto en internet utilizan estas mismas librerias, la simulación en proteus funciona bien pero en el  montaje fisico no, no se si se deba a que esa libreria no sea compatible con la GLCD que estoy usando, quisiera saber si alguien a utilizado un GLCD con esta refencia y si le ha funcionado fisicamente y con que libreria.
> Aclaro ya hecho varios montajes con LCD, estoy teniendo en cuenta el cristal externo, estoy usando uno de 20MHz, y ya he trabajado con el pic 16f877a, lo que me da a pensar que el problema no es en el montaje fisico, si o tal ves la librería, aqui adjunto el codigo y la simulacion en proteus de como estoy conectando los pines.
> Espero que me puedan ayudar porque me urge poner a funcionar esa GLCD para mi proyecto, de antemano muchas gracias




Hola Azlan Como solucionastes el problema ya que pretendo trabajar con el mismo display gracias


----------



## nicolas8702 (Sep 25, 2014)

Utiliza un cristal de 4MHz aveces la libreria no esta configurada para funcionar a 20 asi en proteus funcione


----------



## rcarlos81 (Sep 27, 2014)

nicolas8702 dijo:


> Utiliza un cristal de 4MHz aveces la libreria no esta configurada para funcionar a 20 asi en proteus funcione



Gracias los voy a realizar y luego publico los resultados


----------



## Lycan Steve (Nov 12, 2014)

EL problema de este proyecto es que la función glcd_image(); no esta definida en las librerías y no me la reconoce el compilador, así que quisiera saber como habilitarla.

```
#if defined(__PCH__)
#include <18f452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#define FAST_GLCD    
#endif
#include "1234.h"
#include "HDM64GS12.c"
#include "GRAPHICS.c"
 

void main()

{

glcd_init(ON);
delay_ms(100);
glcd_image(NO);

while(true)

{  
glcd_update();

}
```


----------



## axshaw (Ene 13, 2015)

ahora realice el siguiente programa para un oximetro de pulso. 










axshaw dijo:


> al ver este mensaje me alegro ya que despues de mucho estudio logre realizar el proyecto, le dejo una pequeña demostracion de esto. disculpe el caos pero fue una prueba experimental.
> 
> https://www.youtube.com/watch?v=-TDeGJpgMUA}
> 
> ...


----------



## callecuatro1976 (Abr 20, 2015)

Hola. ¿Hay algún tutorial que explique paso a paso cómo hacer para cargar una imagen al lcd?
Trato así y no me sale.


```
#include <16F877.h>                                         //
#use delay(clock=20000000)                                  //
#include <HDM64GS12.c>                                      //
#include <graphics.c>                                       //                                                          // --------Secuencia que convierte el valor del adc--------------------//
void main()
{

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

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




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



glcd_init(on);//Inicializa el LCD

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


----------



## callecuatro1976 (Abr 22, 2015)

Too many array subscripts

 me da siempre este error y no se como arreglarlo


----------



## asherar (Abr 27, 2015)

Yo hice un mini-tutorial de ejemplo hace un tiempo. Acá está: _ https://www.forosdeelectronica.com/posts/262473/ _
En los GLCD monocromos el valor de cada pixel se almacena en un bit. 
Cada número del arreglo codifica un tramo de 8 pixels en la pantalla. 
El T6963C codifica los pixels horizontalmente, el KS0108 verticalmente. 
Eso se tiene en cuenta al generar el arreglo del bmp en el lenguaje de programación 
y luego al leerlos con la subrutina del pic. 
Saludos y éxitos.


----------



## Miembro eliminado 356005 (Abr 27, 2015)

callecuatro1976 dijo:


> Too many array subscripts
> 
> Me da siempre este error y no se como arreglarlo



El error se refiere al array Diapositiva1.

Tienes declarado que hay 64 líneas, pero en realidad muestras 84.

Y además, te falta la llave de cierre.

Es mejor declararlo así:


```
const unsigned char Diapositiva1 [] [16] = {
    { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
    { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
...
```


----------



## callecuatro1976 (May 2, 2015)

No me funciona de ninguna manera con el tutorial, me da error en glc_put


```
#include <16F877.h>                                         //
#use delay(clock=20000000)                                  //
#include <HDM64GS12.c>                                      //
#include <graphics.c>                                       //                                                         
const unsigned char Diapositiva1 [] [16] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x6F, 0xBF, 0xDF, 0xBF, 0xDF, 0xDF, 0xDF, 0xFF,
0xEF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFD,
0xEF, 0xEF, 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x77, 0xFF, 0xFD,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
    
void glcd_draw_sprite(unsigned short x0, unsigned short y0,
     unsigned char *array, unsigned short NCOLS, unsigned short NFILS )
{
    unsigned short i,j;
    unsigned char y2;
    glcd_put_ptr(G_BASE, x0, y0);
    y2 = 0;
    for (j=0;j<NFILS;j++)
        {
        y2= y2 + NCOLS;
        for (i=0;i<NCOLS;i++)
            {
            dput(array[y2+i]);cput(0xc0);
            }
        }
}
 
   
  
 ///////////////////////////////////////////////////////////////////////////////
// PRINCIPAL //////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void main()
{
 
glcd_init(on);//Inicializa el LCD
    glcd_fillScreen (0); // Limpa pantalla inteiro
while(true){
glcd_draw_sprite(x0, y0,diapositiva1,Lx,Ly);
delay_ms(3000);
glcd_fillscreen(0);
}
}
```
*Nota del Moderador:*
*Por favor, utiliza las etiquetas adecuadas (# 
	
	




		Código:
	

 o [PHP]) para envolver el código.[/B][/CENTER]

*​


----------



## asherar (May 2, 2015)

Sacale ese [16] que está de gusto y probá así:


 unsigned char const  Diapositiva1 [] = {


----------



## callecuatro1976 (May 3, 2015)

me da errores
 glcd_draw_sprite(x0, y0,diapositiva1,Lx,Ly); en x0
     glcd_put_ptr(G_BASE, x0, y0); undefined indetifier glcd_dput
   dput(array[y2+i]);cput(0xc0);undefined indetifier cput


----------



## asherar (May 3, 2015)

callecuatro1976 dijo:


> me da errores
> glcd_draw_sprite(x0, y0,diapositiva1,Lx,Ly); en x0
> glcd_put_ptr(G_BASE, x0, y0); undefined indetifier glcd_dput
> dput(array[y2+i]);cput(0xc0);undefined indetifier cput



Según parece o no tenés bien definidas las rutinas dput y cput, o les llegan argumentos erróneos.

Fijate que el argumento lo pones en minúscula (diapositiva1) y el arreglo ha sido definido en mayúsculas (Diapositiva1). 

¿ Y cuánto valen los otros argumentos x0, y0, Lx y Ly ?
Fijate el "type" de las variables y el rango de valores que toman NCOL y NFIL. 
No sea cosa que excedan los máximos o sean incompatibles.


----------



## callecuatro1976 (May 7, 2015)

no encuentro manera de hacerlo funcionar , gracias


----------



## asherar (Nov 19, 2016)

Para los que usan GLCD esto les puede resolver más de un problema ...

http://www.mikroe.com/glcd-font-creator/






También se puede descargar a prueba por unos días esto: 

http://www.mikroe.com/visualglcd/





El primero me resultó muy útil ... el segundo lo estoy probando.


----------

