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...