Sei sulla pagina 1di 12

lcd grafico

160x80 = 12800 datos (pixeles) = 1600 bytes

0x00,0x38,0x01,0x77,0X02,0X13,0X03,0X4F,0X04,0X07,0X08,0X00,0X09,0X00,0X0A,0X00, 0X0B,0X00,0X0C;0x00,0x38 1MS ENTRE CADA INSTRUCCION pinout conexion con 0x32 es modo grafico 0x38 texto se debe llenar el lcd con espacios y regresarlo a la posicion 0 despues de escribir los datos SE DEBE VOLVER A INICIALIZAR EL LCD 0X00,0X38

HACER UN RELOJ CON I2C GOOGLEAR GIOSYS

para el pic 18f4550 el puerto b comparte pines analogicos que pueden quedar como digitales desde los bits de configuracion si se deja con la opcion compartida analogica y se desean digitales entonces se debe modificar el registro ADCON1 para seleccionar que pines son analogicos y que pines son digitales El puerto b ademas comarte sus pines con comparadores analogicos qye si no se us an se deben desactivar mediante el registro CMCON en sis bits 2,1 y 0.(Se pone 111 en esos bits para desactivar los comparad ores) El puerto C no tiene implementado el bit 3, los bits 4 y 5 slo pueden usarse como entrada digital siempre y cuando se desactive el periferico USB mediante el registro UCON, poner 0 en UCON,3 (USBEN).

Este documento esta elaborado con la finalidad de proporcionar ayuda en el uso d e el display: DG-16080-11 (display grafico de 160x80 puntos). Recomendamos abrirlo con el block de notas y maximizar la ventana. Este texto se ira modificando y ampliando en funcion de las dudas que Uds nos ha gan saber, con el proposito de compartir dicha informacion ya que tambien puede ser util para otros. Este texto se llamara en adelante: AYUDA+ddmmaa.TXT (ultima fecha de actualizaci on) Descarga el siguiente archivo: DG-16080-11.PDF, este manual contiene los datos tc nicos de el display asi como las instrucciones para controlarlo.

Agradezco de antemano sus dudas y comentarios a nuestro mail: giosys@prodigy.net .mx

En el Demo se uso un PIC16F54 con el objeto de demostrar que este Display puede ser usado con un chip sumamente bsico. Sin embargo puedes conectarlo y usarlo con otro microcontrolador, tan avanzado c omo lo requieras o de otros fabricantes. Los datos fueron almacenados en una memoria 24LC256 para darle capacidad y poder poner todos los graficos y texto que estan en el demo. El uso de una memoria externa es opcional, aqui no explicamos su uso, solo nos c oncentraremos en el display. Las conexiones quedaron como sigue:

PINUOT DISPLAY 1.Vss 2.Vcc 3.Vadj 4.RS 5.R/W 6.E 7.D0 8.D1 9.D2 10.D3 11.D4 12.D5 13.D6 14.D7 15./CS 16./RST 17.Vlcd 18.Dsp OFF 19.EL 20.EL

CONEXION DEMO GND 0V vCC 5V pot 10k ver manual RA2 (PIC) GND RA3 (PIC) RB0 (PIC) RB1 (PIC) RB2 (PIC) RB3 (PIC) RB4 (PIC) RB5 (PIC) RB6 (PIC) RB7 (PIC) GND al Vcc atravez de un resistor de 10k pot 10k ver manual No Conectar alimentacion para el Backlight Electroluminiscente

El esquema queda asi:

24LC256 PIC Display ------------------------ +5v | | | | | | | | SDA|----|RA0 RB0 |-------|D0 Vcc|---| | SCL|----|RA1 RB1 |-------|D1 | \

| -----

| | | | | | | | | | | |

|-------|D2 | / |-------|D3 Vlcd|-->\ 10K |-------|D4 | / |-------|D5 Vadj|---| |-------|D6 | |-------|D7 | | | | | | | RA2 |-------|RS | RA3 |-------|E CS |---| | | R/W|---| | |--|Res Vss|---| ----------| ---------| | EL| |EL | +5v <--10K--| | | GND | | ----| | | |INV-TH-203(2) | | -----

RB2 RB3 RB4 RB5 RB6 RB7

En esta configuracion las terminales R/W,/CS, se conectaron a 0v dejando unicame nte Rs y E para controlarlo. OJO: El display tiene una bandera de espera (manual pag 13 y 14) la cual tiene q ue ser leida y comprobada antes de enviar el siguiente dato. para facilitar el aprendizaje no s la hemos saltado temporalmente evitando la lectura hacia el display y la rutin a de comprobacion, etc. con la siguiente condicion: el oscilador del micro lo tienes que poner a velocid ades bajas. Comprueba los tiempos de las instrucciones (ciclo interno) y de tu programa con los de el display (ver manual) el procesador no tiene que rebasarlos de lo contrario se perderian datos. Ya comprobamos que si funciona puesto que asi trabaja el demo que esta en las ti endas donde se venden estos displays. (con un cristal de 4MHz) Es por eso que la terminal R/W de el display la mandamos a 0v porque solo realiz amos ciclos de escritura utilizando unicamente la terminal E: RS=1: instruccion RS=0: datos E : habilita la funcion write durante la transicion de 1 a 0 (ver manual) Aqui se observa que para lograr comunicacion con el display solo tenemos que ind icar si vamos a enviar una instruccion o un dato (RS), luego poner el dato en D( 0-7), y despues generar la transicion de 1 a 0 en (E), para que el display acepte la i

nformacion, asi por cada dato o inst. que enviemos. Una vez conectado realiza un programa en C o en el lenguaje que uses y con el qu e estes familiarizado, para el chip que vayas a usar. Genera dos tablas de datos una de ellas sera la inicializacion de el DISPLAY y e n la otra los datos que quieras que aparezcan en el para iniciarlo en modo caracteres: 20char x 10 renglones (200chrs) la configurac ion es:

tabla1= 00,38,01,77,02,13,03,4F,04,07,08,00,09,00,0A,00,0B,00,0C datos TABLA1 RS 00 38 AR 01 77 rngl 02 13 03 4F 04 07 08 00 09 00 0A 00 0B 00 0C 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 INST: CHARACTER PITCH (-1) set: 8 bits vertical CHAR, 8 bits horizontal x CHR => 20 chr x 10 INST: NUM CHAR (-1) set: 20 char horizontalmente INST: DISPLAY DUTY (-1) Set: 80 (valor de puntos verticalmente) INST: CURSOR POsITION (-1) Set: en el bit 8 (vertical) INST: DSP START ADD LOWER Set: posicion 0 INST: DSP START ADD UPPER Set: posicion 0 INST: RAM ADD LOWER Set: posicion 0 INST: RAM ADD UPPER Set: posicion 0 INST: WRITE DATA TO RAM 1 0

Descripcion INST: MODE CONTROL Set: Dsp on,Master,cursor ON char BLink,Mode CHAR,Built-in ROM CH

Recuerda que los datos (SET) Estan menos UNO despues de cada instruccion sealada con (-1).

La secuencia es: coloca RS=1 y E=1,luego lee un dato de la TABLA1(8bits) y manda la al puerto (en el demo PIC-Puerto B) enseguida coloca E=0. En este momento el display recibe la instruccion.

Luego coloca RS=0 y E=1 manda el siguiente dato de la TABLA1 al puerto y luego c oloca E=0, en este instante el display recibe el SET para la instruccion anterior. Asi hasta terminar la primer tabla de datos, se observa que la instruccion WRITE DATA es la ultima, posteriormente coloca RS=0 y envia tu segunda tabla de datos sin modificar RS ya que apartir de aqui los datos entran en forma secuencial para llenar el display . La secuencia para la segunda tabla seria: ( E=1, Dato al display via puerto(PB), E=0) asi consecutivamente hasta terminar la tabla. recuerda no usar una misma instruccion en tu programa del uC, para los procesos de la secuencias esto con el proposito de generar los tiempos hacia el display y de ser necesario incluye alg una rutina de retardo entre las transiciones de E. En el demo no se usaron rutinas de retardo ya que las instrucciones para leer la memoria nos proporcionan dichos tiempos. La segunda tabla seria por ejemplo: datos TABLA2 RS 50 52 55 45 42 41 0 0 0 0 0 0

Descripcion "P" "R" "U" "E" "B" "A"

Entonces las secuencias quedarian como sigue: (no usamos un lenguaje de programacion en especifico, intentando sea lo mas gene rico posible, para que puedan usarlo con el micro que deseen y del fabricante que sea)

tabla1= 00,38,01,77,02,13,03,4F,04,07,08,00,09,00,0A,00,0B,00,0C tabla2= 50,52,55,45,42,41 pone RS=0 variable X=13h (19 datos de la primer tabla) ciclo1 pone RS=RS xor 1 (*) Pone E=1 Lee dato de TABLA1 manda dato al puerto (display) pone E=0 rutina de retardo (opcional)

decrementa en uno a variable X si variable X es diferente de cero regresa a ciclo1 pone RS=0 variable X=06h (6 datos de la segunda tabla) ciclo2 pone E=1 Lee dato de TABLA2 manda dato al puerto (display) pone E=0 rutina de retardo (opcional) decrementa en uno a variable X si variable X es diferente de cero regresa a ciclo2 FIN de secuencias

(*) aqui tienes que ejecutar una funcion XOr entre el valor de el bit que hayas designado para RS y "1", Ej: RS = Ra2(pic) entonces Ra2=Ra2 [XOR] 04h (0000 0100). esto har que el valor se invierta en forma alternada y nos de los valores para (R S) conforme a la primer tabla, observa que se ha iniciado RS=0 para que en el primer ciclo e sta se convierta en "1" para la primer instruccion, posteriormente cambiara su valor alternando 0 ,1,0,1,etc. En el ciclo2 RS no cambia su valor de CERO ya que solo mandaremos DATOS al displ ay.

Si has tenido exito estaras viendo en el Display: PRUEBA

Para configurarlo en forma grafica solo cambia el SET de la primera instruccion a (32H) y usa el resto de la configuracion tal cual. 00 INST: MODE CONTROL 32 <-- SET para modo grafico 01 77 02 13 --- etc. la segunda tabla contendra entonces los datos bit a bit para el display Recuerda que el llenado en forma grafica es horizontal de IZQ a DER de ARRIBA a ABAJO, Entonces inicia en el angulo superior izquierdo. Byte 0 puntos 1 Byte 2 Byte 3 Byte 20 <--- renglon 1 <--- renglon 2 <--- 20bytes x 8 bits = 16

01234567 01234567 01234567 ............ 01234567 01234567 01234567 01234567 ............ 01234567

01234567 01234567 01234567 01234567 01234567 01234567 ---------------------------01234567 01234567

01234567 ............ 01234567 01234567 ............ 01234567 01234567 ............ 01234567

<--- renglon 3 <--- renglon 4 <--- renglon 5

01234567 ............ 01234567

<--- renglon 80

El Display no posee instruccion alguna para borrar el contenido de la memoria RA M por lo que despues del ciclo de inicializacion apareceran caracteres basura. por lo tanto habra que realizar un ciclo de borrado (clear screen): --------- este ciclo va despues de la inicializacion TABLA1 variable X=C8h (200 caracteres) ciclo3 pone E=1 manda 00 al puerto (display) pone E=0 rutina de tiempo decrementa en uno variable X si variable X es diferente de cero regresa a ciclo3 pone RS=1 pone E=1 manda 0A al puerto pone E=0 pone RS=0 pone E=1 manda XX al puerto pone E=0 pone RS=0

**

(instruccion RAM ADD LOWER)

(direccion 00 a C7)

------- aqui continua el ciclo2 que envia la TABLA2 al display

** Recuerda que al terminar la rutina de borrado el apuntador interno de el disp lay estara en 00C8 el cual seala una posicion de RAM fuera de el display, tienes que volver a mandar el SET para la instruccion: RAM ADD lower y upper ( instrucciones 8 y 9 en el manual) y juntas (16bits) forman la direccion para escribir en la memoria RAM destinada al display. En el ejemplo se configura el display a 20x10 caracteres, quedando la memoria de la siguiente manera (hexadecimal): 0000 0001 0002 0003 0004 0005 0006 ...... 0013 es renglon 1 0014 0015 0016 0017 0018 0019 001A ...... 0027 es renglon 2 ------------------00B4 00B5 00B6 00B7 00B8 00B9 00BA ...... 00C7 <--<--20 caracter 20 caracter

<---

20 caracter

es renglon 10

Se observa que los 8 bits de la izq (upper) siempre estan en cero, entonces si q uieres "escribir" en el display desde el principio (angulo superior izq) solamente tienes que mandar el set para LOWER=cero. si prefieres puedes ponerlo en cualquier valor de 00h a C7h. esto seria como un goto(xy) Ej: si quieres poner "HOLA" al centro (aprox) de la pantalla el valor para LOWER seria 58h. De esta manera indicas donde vas a empezar a "escribir" en la pantalla. En el modo grafico es lo mismo pero serian 1600 bytes (20 bytes x 80 renglones), los que ocupa el display de RAM, entonces se modifican los 16 bits de direccion : lower y upper.

Como crear imagenes para el modo grafico:

Gracias al valioso aporte de un buen electrnico y lector de este texto, incluimos la siguiente liga: (http://bitmap2lcd.com/pages/download.html) este programa es una excelente herramienta para la creacion de imagenes para LCD

De todas formas dejo el texto que se habia escrito originalmete para aquellos qu e les gusta experimentar:

Para editar las imagenes de una forma "rapida" he utilizado el programa PAINT de Windows: Ir al menu IMAGEN y dentro de el a ATRIBUTOS se abrira una pequea ventana, modifi quen el ancho a: 160 y el alto a: 80, ahi mismo seleccionen PIXELES y BLANCO Y N EGRO. De esta forma tendran ya la plantilla de 160x80 a un bit x pixel (B/N). A partir de aqui pueden escribir (modifiquen el tamao y tipo de letra adecuado a la plantilla) copiar alguna imagen o dibujo, solo recuerden que debe ser en ByN y que no se salga de la plantilla sino recortenlo. Pueden trabajar primero en las imagenes por separado. mas a delante explico como editar, fotos, etc. si quieren dibujar punto a punto denle al zomm personalizado y selecccionen 600% y ahi mismo en ZOOM seleccionen MOSTRAR CUADRICULA, de esta forma es mas facil trabajar.

una vez terminado denle en IMAGEN -> VOLTEAR/GIRAR -> VOLTEAR VERTICALMENTE; Nue stra imagen esta ahora de cabeza, luego denle nuevamente en IMAGEN -> INVERTIR C OLORES; Nuestra imagen queda como un negativo y asi la almacenamos con el nombre que sea .BMP Nota: durante la edicion puede cambiar de B/N a colores sin darnos cuenta, asegurense de que su dibujo este en B/N antes de almacenarlo. Posteriormente necesitamos quitarle el encabezado BMP y hacer una conversion de bytes para generar el archivo .bin con los datos de nuestro dibujo, como no he encontrado ningun programa que haga eso, modifique un programa viejit o que habia hecho en pascal para hacer esa tarea el cual lo encuentran en la pag ina como "bmp2bin.ZIP" este corre en DOS pero no se preocupen windows lo reconoce, a si que funciona de la siguiente manera: El programa debe estar en la misma carpeta donde esta su dibujo.BMP El nombre que le den a su dibujo no debe ser mayor de ocho caracteres (por el f ormato viejito) con el explorador de windows pueden ejecutar el programa o bien crear un acceso directo. (no es necesario ir a DOS) una vez puesto en marcha el programa pregunta por el nombre de el archivo BMP Escribir el nombre de el archivo solamente, SIN la extension BMP y dar (ENTER) el programa ejecuta la conversion y se cierra automaticamente. Una vez realizado esto, en la carpeta aparece un archivo con el mismo nombre per o de tipo BIN, el cual ya esta listo para usarlo en su micro y transferirlo al d isplay de manera secuencial. Conversion de fotos o dibujos: Si van a convertir alguna imagen en color o algun otro dibujo ya existente, toma en cuenta que el display es de 160 x 80 monocromatico por lo que la conversion tendra que reducirlo dependiendo que tan grande este y talvez se pierda mucha ca lidad, es recomendable que las fotos o imagenes sean de baja resolucion, para evitar la perdida. si ya tienes la imagen editala por ejemplo en corel photo-paint (te da mejores r esultados que paint de windows): 1 Cargalo en baja resolucion ahi te da la opcion de definir el tamao de la ima gen, colocalo a 160 de ancho, si esta activado la autoproporcion, la altura la d a automaticamente. 2 primero conviertelo a tonos grises (8bits), cambia el brillo y contraste, t ratando de obtener una imagen con menos grises y mas blancos y negros, esto ayud ara en la siguiente conversion. (este paso es opcional con la practica te daras cuenta que imagenes lo necesitan). 3 luego conviertela en Blanco y negro ahi te pregunta el algoritmo de convers ion de inicio te da la de medios tonos, cambiala seleccionando FLOYD-STEINBERG. 4 recortala y almacenala en formato BMP. Posteriormente cargala en paint y anexale texto o lo que necesites ahi es mas fa

cil darle el terminado que necesitamos descrito anteriormente. Con la practica te daras cuenta que es muy sencillo, ademas puedes importar a tr avez del portapapeles iconos, dibujos de power point, de la web y convertirlos, algunos ya vienen en blanco y negro.

TOUCHSCREEN Bien para el Touch screen describire brevemente el conexionado y la tcnica para s ensarlo, mas sin embargo, es necesario desarrollar algoritmos de calibrado, presion y que eliminen las lecturas por capacitancia parasita, etc. d eberan de leer un poco de la teoria con respecto a los Touch screen de 4 terminales, en la pagina he subido dos archivos PDF con algo d e teoria ojala les sean utiles. Fisicamente es facil identificar las cuatro barras en la periferia de el touch-P ANEL llamaremos IZQ,DER= X+,X- y ARR,ABA= Y+,Y-

Y+ | R | R | X+ --R--R---R--R-- X| R | R | YVisto de frente el display, tenemos a la derecha la conexion del PANEL con cuatr o terminales nombrados de arriba -> abajo quedan como sigue:

-------------------| | | | | | | | | | | | | |-----|-----|-----|-----| | |

display

1 2 3 4

Y+ YX+ X-

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

||||||||||||| 1 PINOUT 20 En la siguiente tabla se resume cual es el metodo para dar lectura al panel: Escaneo Stand By Coord X Coord Y X+ GND GND Hi-Z XHi-Z Vcc ADC Y+ Y-

Hi-Z Int** Hi-Z ADC GND Vcc

Entonces la lectura se da de la siguiente manera: Stand BY: X+ lo colocamos a GND y la terminal Y- a la interrupcion y a su vez a Vcc atravez de un resistor, cuando tocamos el PANEL obtendremos una transicion de 1 a 0 la cual es usada para indicar que el touch-screen ha sido pr esionado. **(Int) en seguida vamos a "leer" el valor de "X" , para lo cual conectamos X+=GND y X-= Vcc y usamos Y- para tomar la lectura atravez de un ADC (10bits de preferencia) Y+ no se conecta. posteriormente tomamos la lectura de "Y" conectando Y+=GDN y Y-=Vcc y tomamos la lectura en X- con el ADC, X+ no se conecta. Estas lecturas deben ser tomadas rapidamente para evitar que cambien los valores de X y Y. Un buen algoritmo seria una rutina donde se toman varias lecturas de "X" y "Y" r apidamente (escaneo) hasta el momento que deja de presionar el PANEL, hay que tomar en cuenta que al momento de presionar el PANEL, las lecturas no s on absolutas, si las graficaramos obtendriamos algo asi como una campana. Posteriormente aplicar algun algoritmo para desechar los valores que estan fuera del promedio y poder definir cual es el valor exacto donde se presiono. Tambien es importante tomar en cuenta que hay que aplicar un algoritmo para dete rminar cual fue la presion que se ejercio en el PANEL ya que tambien depende de eso el valor resultante, esto es: si tocamos el panel en un mismo pun to con diferente presion obtendremos lecturas diferentes. Usando un PIc con ADC resulta muy facil ya que el PANEL puede conectarse directa mente, y atravez del programa generar todos los switcheos que se necesitan entre las cuatro terminales, para lo cual tambien usaremos el voltaje de referencia y GND internos, ver el manual de el chip que vayan a usar para determinar entre que terminales(pins) les permite cambiar est os valores y el ADC. tambien he subido un pequeo esquema electronico para quienes quieran practicar c on un ADC independiente. Analizandolo se ve la aplicaccion de la tecnica que estamos usando.

BACKLIGHT En el demo utilizamos el: INV-TH-203(2), es un inversor destinado para EL's Pronto subire un esquema para conectar el Backlight Electroluminiscente. recuerden que este se alimenta con 100 VCA rms a 400Hz. subi un hoja tecnica de uno de los tantos chips que se usan en los PDAs, celurar es, etc. como referencia para aquellos que les gusta experimentar.

Potrebbero piacerti anche