TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: bartox en 17 de Agosto de 2005, 14:31:00
-
Hola amigos, quiero poner un LCD Grafico a un proyecto que tengo entre manos pero lo veo un poco complicado el control.
Quería preguntar si alguien utiliza este tipo de LCD y si es muy complicado controlarla.
Para mas datos decir que hasta el momento tengo un LCD normal de caracteres y que el micro que utilizo es el 16F877.
Para el control seria mejor programarlo con el CCS C o con el PIC BASIC??????![Helado Helado]()
Gracias, un saludo.
-
Yo tb estoi muy interesado en trastear con estas maravillas, pero los precios son un poco abusivos ... ¿tienes alguna? ¿as visto precios?
-
dependiendo del controlador q tenga el LCD gráfico podras usar ya la librería que viene en CCS, si usa el KS0108 ... q suele ser bastante común creo q podras utilizar este programa sin ningun problema... en basic no te puedo ayudar, aunq estoy convencido que tb tendrá su librería correspondiente.
el uso es bastante sencillo, en CCS tienes un ejemplo de funcionamiento de un GLCD.
saludos!
-
Hola:
Yo he probado con proton+ y lo he simulado en proteus y fuinciona bien con el Tdodo Pic Generator desarrollado aqui en el foro, tambien genera para C aqui te paso el link:
http://miarroba.com/foros/ver.php?foroid=8826&temaid=2696883
-
J1M, he visto tb otros controladores, algun Sharp y un Hitachi tb para las lcd´s graficas, ¿como los ves? ¿tienen buen soporte para controlarlas con PICs? ¿hay informacion sobre estos?

Gracias!!
-
la verdad esq nunca he probado un GLCD, y si te decides con alguno sea con el de este chip si te quieres ahorrar algun problema...
he visto que la libreria de CCS GLCD.C está programada para esto:
//// This file contains drivers for using a Hantronix HDM64GS12 with ////
//// an LED backlight. The HDM64GS12 is 128 pixles across and 64 ////
//// pixels down.
es decir para un 128x64 ... y digo yo, que si es como el del nokia que estuve haciendo (y en un vistazo por encima lo parece...) con retocar un poco el código se adaptará a display de tamaño superior... o inferior, eso sí mientras se mantenga el mismo chip o alguno compatible (creo q el hitachi ese q pones lo es)...cuestion d confirmarlo con el google.
saludos!
pd: tienes los GLCD del nokia 3100 que están dpm y son baratitos baratitos
-
La pantalla la he conseguido en el sitio donde trabajo de un equipo estropeado de los que reparo. He mirado pantallas parecidas y si que son bastante caras.
El que tengo yo es una pantalla de Powetip modelo PG 160160B y el controladore que lleva es Samsung.
He visto que en el foro hay programas de Proteus y uno que es para poner archivos .BMP en pantallas a color pero lo que necesito de momento es saber como funciona y conseguir por lo menos poner el mensage "Hola Mundo" en la pantalla.
En la conexion hay ciertas patillas que no se muy bien como funcionan y para que sirven son:
M
FLM
CL1
CL2
DISPOFF
¿alguien sabe para que son?¿que secuencia debo seguir?¿Como pongo por ejemplo "Hola Mundo" en el LCD?
Gracias a todos.
Un saludo.
-
Creo que te va a ser más complicado poner "Hola Mundo" que pintar unos pixeles, ya que estas pantallas no suelen tener mapa de caracteres. Para escribir una letra ay que dibujarla pixel por pixel.
Lo mejor es que envíes un patron del tipo 4 puntos ON, 4 puntos OFF, etc. Es lo que yo hice para empezar a controlar la pantalla del Nokia 3310.
La datasheet es esta:
http://www.powertip.com.tw/product/PG%20SERIES/PG%20160160-B.PDF
pero no he encontrado info sobre el controlador.
Dinos cual es la referencia del circuito samsung.
-
Si he estado mirando y es lo que tu dices hay que poner las cosas punto por punto, pero como hago eso jeejje ese es mi dilema.
No se que tipo de comunicacion utilizar que pines activar para escribir como el R/W en las LCD normales, vamos que no se como empezar.
Me podriais decir como hace por ejemplo escribir una linea entera con un punto encendido y otro apagado y asi sucesibamente, lo que necesito es un ejemplo de como utilizar la pantalla.
Muchas gracias y un saludo.
-
He estado modificando el mensaje anterior.
A ver si nos puedes poner la referencia del controlador Samsung.
-
El controlador es el S6B0086 de Samsung pero no me acabo de aclarar si conseguis sacar alguna informacion interesante me hariais un gran favor porque hasta ahora solo he conseguido que salgan lineas aleatoriamente sin encontrar nada interesante.
http://www.pacificdisplay.com/ics_app%20notes/samsung/S6B0086.pdf
Gracias antoniof por tu interes, un saludo.
-
Por lo que veo este controlador sólo tiene capacidad para controlar 80 líneas, por lo que debes tener 4 controladores en la placa del display no es cierto?
-
Exactamente, tiene 4 controladores
-
Bien, pues tu LCD tendrá una configuración parecida a la última figura del datasheet que me has pasado, con 4 controladores, 2 actuando como controladores de segmentos y los otros dos como controladores de comunes. La duda que tengo ahora es como están conectados entre sí.
Lo que tengo claro es que para que funcione, la señal DISPOFF debe estar a uno y la señal M debe ser alterna. Para conseguir la señal alterna, utiliza el pin OCS2/CLKOUT del PIC que estés utilizando.
Con respecto a las otras señales, los datos se introducen en serie por los pines D1~D4 utilizando la señal de reloj CL2 y se cargan en los registros (mostrandose en la pantalla) dando un pulso en la señal CL1. Los datos se van capturando por un controlador a otro mediante las señales ERB y EBL que son internas y que supongo están conectadas de tal forma que se puedan enviar los 160 + 160 píxeles directamente.
Podemos probar una cosa. Vamos a intentar encender un sólo pixel.
Para ello, enviaremos el primer dato D1 ~ D4 = 1000 y damos un pulso de reloj en CL2.
Después enviaremos a cero los 39 datos restantes: D1 ~ D4 = 0000 y 39 pulsos de reloj en CL2.
Con esto se supone que hemos enviado los 160 bits correspondientes a las columnas (por ejemplo). Como ves esto es mucho suponer y experimentar, pero qreo que vamos bien encaminados 
Después se repite para las filas: 1000, pulso de reloj en CL2, 0000, 39 pulsos de reloj en CL2.
Para terminar, envía un pulso de reloj por CL1.
Todo esto servirá para encender un sólo pixel en la pantalla
pero la misma operación cambiando los bits que se envían será necesaria para mostrar lo que quieras.
Pruebalo y a ver que sale, donde se enciende el pixel(si se enciende
), como se comporta la pantalla, cuando M es alterna, etc, etc.
Si no entiendes algo preguntalo.
-
Vas muy bien encaminado, con esto hemos conseguido encender las dos ultimas lineas quedando los primeros pixelex de cada una apagados.
No es exactamente lo que se pretendia pero algo es algo.
He observado que si voy dandole al reset la linea negra que sale va bajando.


-
y sin hacer inicialización ni nada se ha puesto a funcionar? :S
-
A ver envía sólo el primer dato 1000 y el resto a cero 0000 79 veces.
-
Si jim el controlador son registros de desplazamiento simplemente y utiliza la señal de reloj M para ir cambiando los voltajes. La interfaz no puede ser más fácil. La duda es cómo se interconectan los controladores, psara saber qué se envía primero si las filas, las columnas, si se activa por cero, por uno, etc.
Si tubiera el LCD en mis manos..
-
Ahora no se enciende nada.
J1M no se si hay que inicializarla, tu sabes algo, hemos conseguido que salga la linea tal y como ha explicado antoniof
Creo que puede ser problema de M no se si esta funcionando bien. Me lo voy a mirar, por hoy no puedo hacer mucho mas tengo un poco de prisa, pero seguire insistiendo hasta que funcione, mañana dire algo.
Muchas gracias antoniof creo que me has abierto el camino para continuar con esto, mañana dire como va la cosa. Hasta mañana
-
¿Alguien tiene algun programa en CCS escrito por él, sencillito, que gobierne una de estas gLCDs en proteus? Mucho estoy pidiendo ¿no?

Seria de agradecer: the_radon@hotmail.com
-
hola, de momento he encontrado una de las causas por la que no iba, estaba usando el PICBasic para programar y he encontrado que esta instruccion no funciona PORTB = %1000 en el PORTB no sale reflejado el dato. lo he arreglado de manera cutre poniendo a nivel alto cada pin del portb por separado y se enciende la primera linea del LCD se va borrando hacia abajo hasta que desaparece. Cada vez que pulso el reset lo hace, sale la linea y se borra hacia abajo.
Este es el codigo de programa que llevo hasta ahora:
define OSC 20
M VAR PORTB.0
FLM VAR PORTB.1
CL1 VAR PORTB.2
CL2 VAR PORTB.3
D0 VAR PORTB.4
D1 VAR PORTB.5
D2 VAR PORTB.6
D3 VAR PORTB.7
DISPOFF VAR PORTC.5
X var word
Y var word
num var byte
high dispoff
low cl1
LOW CL2
""""""PORTB = %1000 asi no lo entiende
HIGH D0 """"asi si
LOW D1 """""es el equivalente
LOW D2 """""de
LOW D3 """""portb = %1000
HIGH CL2
for num = 0 to 79 step 1
LOW CL2
LOW D0
LOW D1
LOW D2
LOW D3
HIGH CL2
next
high cl1
low cl1
Voy a seguir probando. Quiero probar con el CCS tambien pero estoy un poco pegado en este, voy mas suelto con el PICBASIC y me va mejor para probar.
Un saludo
-
He estado mirando mensajes del foro y hay gente que en sus codigos de programa primero manda las porsiciones X Y y luego el dato a visualizar. ¿Seria esto lo que hay que hacer? no acabo de entender que enviando 1000 y luego todo 0000 se tenga que ver un punto.

-
Bartox, la diferencia entre comandar un gLCD de una u otra manera es que este incorpore un controlador o no.
Si tuviera por ejemplo un controlador como el SED1335 fíjate las cosas que se hacen con una librería en C fácil de usar:
http://www.ramtex.dk/glcd/glcd1335.htm
Pero si no tienes controlador, no queda más remedio que dibujar puntos sueltos a la frecuencia que la pantalla te especifique, mezclando las señales de control como dice el Datasheet.
-
nocturno66 la verdad es que esta muy bien la libreria que dices pero me encabezonado en hacer que funcione sin libreria, o almenos cuando sepa utilizar el LCD hacerme mi propia libreria, pero hasta el momento no va nada, a veces parece que he conseguido que aparezca una linea pero luego desaparece y tengo la cabeza hecha un lio.
Mi problema es que no tengo ni idea de como hacerla funcionar y no encuentro ningun ejemplo que utilice el controlador de mi LCD (S6B0086).
¿¿¿¿Crees que es muy complicado hacer que funcione el LCD????
no doy pie con bola 











-
Bueno llevo toda la tarde con la Pantallita
y lo unico que he conseguido es que no salgan las rayas aleatorias, eso es lo bueno, lo malo es que no se porque ya no salen jejej... (igual me he cargado el LCD, pero no creo)
Bien de momento las rutinas que utilizo son las siguientes:
define OSC 20
M VAR PORTB.0
FLM VAR PORTB.1
CL1 VAR PORTB.2
CL2 VAR PORTB.3
DATO VAR PORTB
DISPOFF VAR PORTC.5
X var word
Y var word
num var byte
TRISB = $00
high dispoff
LOW CL1
LOW CL2
DATO = %00010000
HIGH CL2
LOW CL2
for num = 0 to 78 step 1
DATO = %00000000
HIGH CL2
PAUSE 10
LOW CL2
next
high cl1
PAUSE 10
LOW CL1
me he vasado en la explicacion de antonio pero no se si es que no lo entiendo o es que no funciona.
Por otro lado Antonio, ablas de escribir en las columnas y en las filas pero ¿¿como le decimos al controlador que escriba en una columna o en una fila?? yo solo veo nibles para arriba y para abajo pero ¿¿a donde van a parar estos??
Bueno me he leido el datasheet unas cuantas veces pero no saco nada en claro. Estoy pensando en utilizar algun otro sistema de visualizacion.
Esta pantalla era para un proyecto que tengo entre manos de un GPS portatil, en la pantalla queria visualizar el recorrido y hacer algunas cosas graficas, pero me tendre que conformar con ver los datos en un LCD normal y señalar la direccion a tomar con leds que indiquen los puntos cardinales, o ya veremos como.
Es una pena que esto no funciones llevo 4 horas cada dia durante la semana y no he conseguido nada,,,,,,, FRUSTRANTE.



Si podeis recomendadme algun LCD grafico facil de usar o que hayan ejemplos como el que decia nocturno66.
Bueno un saludo a todos y si hay algo nuevo decidlo porque me he quedado con la espina clabada.![Llorica Llorica]()
![Llorica Llorica]()
![Llorica Llorica]()
![Llorica Llorica]()
![Llorica Llorica]()
![Llorica Llorica]()
-
Bueno lo de los unos y ceros es porque según el datasheet, el controlador es un simple registro de desplazamiento. Los datos se van introduciendo de 4 en 4 y cada controlador tiene capacidad para 80 líneas, configurables como filas o columnas.
Si os fijais en el esquema que viene al final, hay 6 controladores conectados "en serie", tres para las columnas y 3 para las filas. Los datos se van cargando en cada controlador mediante las líneas D1 ~ D4 y la señal que carga estos datos es la CL2. Cada controlador sabe qué datos aaceptar en función de las señales ERB y EBL. Cuando todos los datos están cargados en el registro de desplazamiento, un pulso en la señal CL1 carga estos en otro registro que es el que activa la fila/columna correspondiente.
En función de la linea M, el controlador envía uno u otro voltage a las filas/columnas que deben activarse según el dato que hayamos cargado en el registro de desplazamiento.
Este es un control muy básico de la pantalla, pero yo he trabajado con controladores similares para pantallas VFD, y funcionan así. Una interfaz serial, con su reloj para desplazar los datos, su señal de carga en el registro pirncipal y una señal de reloj para cambiar los voltajes.
El caso es saber cómo están interconectados entre sí los controladores y cómo capturan los datos. No creo que sea tan complicado.
-
GENTE ESTO EMPIEZA A FUNCIONAR



















he conseguido hacer que salga una lines en la pantalla
Aqui esta el codigo:
define OSC 20
M VAR PORTB.0
FLM VAR PORTB.1
CL1 VAR PORTB.2
CL2 VAR PORTB.3
DATO VAR PORTB
DISPOFF VAR PORTC.5
num var byte
A VAR BYTE
TRISB = $00
high dispoff
HIGH FLM
HIGH M
PAUSE 100
FOR A = 1 TO 160 STEP 1
LOW CL1
DATO = %10000011
HIGH CL2
PAUSE 1
LOW CL2
FOR NUM = 2 TO 40 STEP 1
PAUSE 1
DATO = %00000011
HIGH CL2
PAUSE 1
LOW CL2
NEXT
HIGH CL1
PAUSE 1
NEXT
alomejor el codigo es un poco chapucero pero hay que mejorarlo.
Ahora mi reto es que salgan mensages, dibujos y todo lo que se pueda.
Un saludo a todos ire informando por si a alguien le interesa

P.D.: Gracias Antonio por guiarme en el camino
-
Te sale una linea al principio y otra en medio?
Horizontales o verticales?
Cuentanoss que estoy intrigado.
-
Antonio se que alomejor peco de no insistir mucho en el problema pero me di por vencido, dedicaba mucho tiempo a la pantalla sin mucho exito. Me decidi a buscar otros modelos de pantallas y vi que habian pantallas similares pero de manejo mas sencillo.
Buscando en este foro encontre gente que utilizaba la pantalla de un Nokia 3310 y daba la casualidad de que yo tenia uno para tirar. Me puse a ver si conseguia hacerlo funcionar y lo consegui en una tarde. En definitiva me cambio de LCD!! sigue siendo grafica pero de otro modelo.
Si a alguien le interesa el funcionamiento de la pantalla del Nokia que mire en el foro que hay bastante informacion o si lo preferis os paso el codigo o contesto cualquier duda.
Un saludo a todos.
P.D.: Antes de empezar un proyecto hay que buscar informacion de lo que se va a utilizar!! o por lo menos eso es lo que he aprendido yo jeje
-
OK. La pantalla del Nokia (48 X 84) es muyo mas pequeña que la tuya (160 X 160), pero mucho más sencilla de manejar.
Si necesitas algo, no dudes en preguntar, que esa pantalla se utiliza mucho por aqui.
-
Gracias por todo Antonio