TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: sr_kzt en 10 de Octubre de 2006, 18:49:39

Título: Ayuda con LCD
Publicado por: sr_kzt en 10 de Octubre de 2006, 18:49:39
Es la primera vez que voy a usar un LCD con el pic16f877, solo quiero saber si basta con la libreria lcd.inc, que instrucciones necesito para mandar algun mensaje, cambiar de linea, etc.
Lo mas seguro es que maneje un lcd de 2*16 y cuantos pines debo utilizar para mandar la informacion a ella.
De antemano gracias.
Título: Re: Ayuda con LCD
Publicado por: microcom en 10 de Octubre de 2006, 21:37:04
la informacion la puedes enviar con a 4 bits o a 8bits

los mensajes que mandes puden ser instruccion o datos a visualizar.


LCDINI   MOVLW   B'00111000'     ;INTERFACE DE 8BITS 2 LINEAS
   CALL   INSTRUC
   MOVLW   B'00000110'     ;DIRECCION A LA DERECHA
   CALL   INSTRUC
   MOVLW   B'00001101'     ;PRENDE PANTALLA
   CALL   INSTRUC
   MOVLW   B'00000001'     ;LIMPIA PANTALLA
   CALL   INSTRUC
INSTRUC   
   BCF   PORTA,RS        ;COLOCA EN CERO RAO
   BSF   PORTA,E
   MOVWF   PORTD   
   CALL   RETARD
   BCF   PORTA,E
   RETURN

DATOS   
   BSF   PORTA,RS
   BSF   PORTA,E
   MOVWF   PORTD
   CALL   RETARDO
   BCF   PORTA,E
   RETURN


MOVLW   B'11000000'     ;EL PUNTERO SE UBICA EN LA SEGUNDA LINEA
CALL    INSTRUC2   

Título: Re: Ayuda con LCD
Publicado por: Dancrazy en 11 de Octubre de 2006, 11:53:47
Casualmente lo estoy haciendo....

Pero lo hice en el PIC C compiler...  en lenguaje C

fijate...

El LCD que mencionas, 16x2, generalmente (no siempre) tiene un controlador SAMSUNG KS00066U o uno compatible Hitashi...
primero...  si lo quieres hacer a pie, ya sea en asembler o en C tienes que tomar en cuenta lo siguiente...

Pin 1  --> Tierra (Referencia) 0V
Pin 2  --> Fuente TTL +5
Pin 3 -->  Ajuste de contraste
Pin 4 -->  RS (selector de registro)
Pin 5 -->  RW (leer/escribir)
Pin 6 -->  Enable
Pin 7 -->  DB0 (Data bit menos significativo  Bit 0)
...
Pin 14--> DB7 (Data bit mas significativo bit 7)
Pin 15--> A ( +tension (5V) para backlight o iluminacion de fondo (opcional))
Pin 16--> K  (referencia o tierra para backlight )

YO, lo hice asi conecté DB0 con Pin RB0 (puerto B pin 0 del PIC 16F877A) y asi hasta DB7 con RB7. luego Enable con RD7, RW con RD6 y RS con RD5.
1 y 2 con los pines de alimentacion respectivos y en mi caso A con RD3 y K con tierra de la alimentacion.

para Contraste (pin 3) seria asi

+5                                                Donde el valor del potenciometro
<----/\/\/\/\/\------|||  GND             daría el contraste de la pantalla
             |
             |
           (Pin 3)

una vez hechas las conecciones, la cosa funciona así
-->Si es un comando (escribir)
     colocar RW=0 (escribir)  RS=1 (Comando) y en el puerto Bel valor del comando tomado de la tabla de fabricante....
     (lo iba a anexar, pero pesa 700Kbytes y no cabe, busca en www.alldatasheet.com el  "KS0066U" que es el chip que controla la
      pantalla. no le pares al pinout de él, sino a la programacion)
     por ejemplo, limpiar pantalla es 01h =(00000001). una vez que esta todo establecido, subes y bajas la sñal de enable...  esto 
     representa el "ejecútese" para la pantalla.
-->Si es un caracter a escribir RW=0 (escribir) RS=0 (caracter) y en el puerto B el codigo ascii del caracter (por ejemplo
    "A"=41h=0x41=(01000001). una vez establecido, Enable sube y baja y se ejecuta
-->Si es leer la bandera de ocupado y leer la posicion a la que apunta el puntero que indica en donde se escribira
    el siguiente comando RW=1 (leer) RS=0 (comando) el codigo indicado en el puerto B (esta en la tabla) y subir y bajar Enable

OJO! la pantalla debe seguir un procedimiento para inicializarse
Esta indicado en el datasheet, pero es algo asi como
   1.- Esperas 30mseg
   2.- enviar comando de fijado de funciones
   3.- esperar 39useg
   4.- enviar comando de Modo de inicio del display
   5.- espera 39useg
   6.- enviar comando de Limpieza de la pantalla
   7.- esperar 1,6mseg
   8.- enviar comando de Modo de comportamiento al escribir
 Listo!!

¿por que conecte el backlight a un puerto? para poder encenderlo por programa desde el pic

En cuanto la conexion, yo conecte el bus de datos en 8 bits, pero podrias ahorrar puerto del pic conectando solo 4 bits del bus e indicandolo al LCD en el paso 2 de la inicializacion, entonces enviarias primero 1/2 comando (o medio caracter) y luego la otra mitad, al completar el comando (o caracter) es que el LCD lo ejecuta)...

de alli en adelante, el limite es la imaginacion...
crea tu propio archivo de cabecera, o en el mismo programa, procedimientos de inicializacion y de escritura en el LCD...
por ejemplo: en el TXT que te anexo,(en lenguaje C) luego de inicializar, espera caracteres recibidos via serial, y si no es un caracter especial [enter] [backspace] o [Escape] lo envia directo al LCD. como puedes ver, si identifica el codigo ASCII de alguno de los tres, envio un comando en vez de un caracter...

Espero haber ayudado...
Título: Re: Ayuda con LCD
Publicado por: sr_kzt en 11 de Octubre de 2006, 17:15:38
Muchisimas gracias, su ayuda me sera de mucha utilidad, ya solo me queda trabajarle y les comentarde de mis resultados
Título: Re: Ayuda con LCD
Publicado por: Diego Eduardo en 12 de Octubre de 2006, 15:12:21
 :)en a sigiente direccion hay varios ejemplos en español y tambien el manejo del LCD a 8 y 4 bits :-/
Título: Re: Ayuda con LCD
Publicado por: navaismo en 12 de Octubre de 2006, 16:36:53
cual?????
Título: Re: Ayuda con LCD
Publicado por: AABHGA en 13 de Octubre de 2006, 07:18:49
cual?????

Jajajaja

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

Ahora con respecto a la pregunta, mira en este enlace, está como conectar un lcd con un controlador hitachi o compatible, tiene el ejemplo en Basic de como hacerlo, y una explicación completa, ya con eso puedes conectar tu lcd al 877.

Nos vemos.
Título: Re: Ayuda con LCD
Publicado por: navaismo en 13 de Octubre de 2006, 12:15:03
Creo que no estan poniendo los Links OJO con eso