TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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.
-
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
-
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...
-
Muchisimas gracias, su ayuda me sera de mucha utilidad, ya solo me queda trabajarle y les comentarde de mis resultados
-
:)en a sigiente direccion hay varios ejemplos en español y tambien el manejo del LCD a 8 y 4 bits :-/
-
cual?????
-
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.
-
Creo que no estan poniendo los Links OJO con eso