CONTROL DE LCD EN BASIC UTILIZANDO MICROCODE MICROCODE STUDIO Y PBP PBP Las LCD están compuestos básicamente por una pantalla de cristal líquido y un circuito microcontrolador microcontrolador especializado el cual posee los circuitos y memorias de control necesarias para desplegar el conjunto de caracteres ASCII, un conjunto básico de caracteres japoneses, griegos y algunos símbolos matemáticos por medio de un circuito denominado generador de caracteres. La lógica de control se encarga de mantener la información en la pantalla hasta que ella sea sobrescrita o borrada en la memoria RAM de datos.
El compilador en BASIC permite definir los pines del microcontrolador que se conectan al LCD (pines tales como datos, enable, escritura, etc.) usando la función DEFINE. Los parámetros disponibles para el manejo de LCD alfanuméricos alfanuméricos son los siguientes:
LCD_BITS: Define el número de bits de la interfaz de datos. Se pueden asignar valores de 4 u 8, siendo 4 el valor por defecto.
LCD_DREG: Define a que puerto del PIC tenemos conectado el port de datos del LCD. Los valores permitidos son PORTA, PORTB, PORTC, etc. Por defecto se asume PORTB.
LCD_DBIT: Define cual es el primer pin del puerto que usamos para enviar los datos al LCD cuando seleccionamos un bus de 4 bits. Solo puede ser el 0 (para los pines el 0, 1,
1
Pedro Sánchez
[email protected]
http://electronicayrobotica.wordpress.com/
2 y 3) o 4 (para usar los pines 4, 5, 6 y 7). Por defecto se asume “4”, y esta instrucción se ignora para LCD_BITS = 8.
LCD_RSREG: Define a que puerto del PIC tenemos conectado el pin RS del LCD. Los valores permitidos son PORTA, PORTB, PORTC, etc. Por defecto se asume PORTB.
LCD_RSBIT: Define a que pin del puerto tenemos conectado el pin RS del LCD. Por defecto se asume “3”.
LCD_EREG: Define a que puerto del PIC tenemos conectado el pin E del LCD. Los valores permitidos son PORTA, PORTB, PORTC, etc. Por defecto se asume PORTB.
LCD_EBIT: Define a que pin del puerto tenemos conectado el pin E del LCD. Por defecto se asume “2”.
LCD_RWREG: Define a que puerto del PIC tenemos conectado el pin RW del LCD. Los valores permitidos son 0, PORTA, PORTB, PORTC, etc. Por defecto se asume “0”, que significa “no usamos el pin RW”.
LCD_RWBIT: Define a que pin del puerto tenemos conectado el pin RW del LCD. Por defecto se asume “0”, que significa “no usamos el pin RW”.
LCD_COMMANDUS: Define cuantos microsegundos demora la escritura de un comando en el display. Por defecto, este valor es de 5000. La mayoría de los LCD funcionan bien con un valor de 2000, lo que hace más rápidos nuest ros programas.
LCD_DATAUS: Define cuantos microsegundos demora la escritura de un dato en el LCD. Por defecto, este valor es de 100.
LCD_INITMS: Define cuantos microsegundos demora la inicialización inicialización de la electrónica del LCD. Por defecto, este valor es de 100.
Una vez definidos los puertos y los pines del LCD, es necesario realizar una pausa de medio segundo antes de enviar los datos al LCD, esto para que tenga tiempo de inicializar la memoria RAM el dispositivo. dispositivo. Usamos la función PAUSE.
2
Pedro Sánchez
[email protected]
http://electronicayrobotica.wordpress.com/
A continuación se muestra las sentencias para escritura del LCD, usando LCDOUT:
Comandos de escritura en el LCD Instrucción Función que realiza $FE, 1
Borrar toda la pantalla del LCD
$FE, 2
Vuelve a inicio (comienzo de la primera línea)
$FE, $0C
Apaga cursor
$FE, $0E
Subrayado del cursor activo (_)
$FE, $0F
Parpadeo del cursor activo ( )
$FE, $10
Mueve el cursor una posición hacia la izquierda
$FE, $14
Mueve el cursor una posición hacia la derecha
$FE, $80
Mueve cursor al comienzo de la primer línea
$FE, $C0
Mueve cursor al comienzo de la segunda línea
$FE, $7
Configura texto para movimiento a la izquierda
El pin RW va a tierra debido a que se solo escribirá datos en el LCD.
Para escribir un dato en el LCD se usan funciones como DEC, HEX, BIN, por ejemplo:
LCDOUT $FE, 1, DEC 38
LCDOUT $FE, $C0, BIN 38
Si se desea escribir en una posición inicial específica del LCD, se usa la siguiente tabla para determinar dicha posición:
3
Pedro Sánchez
[email protected]
http://electronicayrobotica.wordpress.com/
Código de direcciones de caracteres (valores hexadecimales) Display Position
1
2
DD RAM
80
C0
3
4
5
6
7
8
9
10
11
12
13
14
15
16
81 8 1 82
83
84
85
86
87
88
89
8A
8B
8C
8D
8E
8F
C1
C3
C4
C5
C6
C7
C8
C9
CA
CB
CC
CD
CE
CF
Address DD RAM
C2
Address
Por ejemplo, para escribir desde la tercera celda de la segunda fila la palabra "ELECTRONICA" "ELECTRONICA" se usa:
LCDOUT $FE,$C2,"ELECTRONICA" $FE,$C2,"ELECTRONICA"
O bien se puede escribir la dirección de memoria en formato decimal: C2 está en hexadecimal y es 194 en decimal, decimal, por la tanto:
LCDOUT $FE,194,"TEXTO"
Físicamente, el LCD de 16x2 se debe conectar como lo indica la siguiente figura, para controlar el contraste de la pantalla:
4
Pedro Sánchez
[email protected]
http://electronicayrobotica.wordpress.com/
Descripción y función de los pines de LCD.
Pin Símbolo Función que realiza
5
1
VSS
Tierra o masa
2
VDD
Alimentación al voltaje +5VDC
3
VEE
Voltaje de ajuste del contraste (5V no visible, 0V mas visible)
4
R/S
Selección de Dato / Comando
5
R/W
Lectura / Escritura
6
E
Habilitador
7
D0
Primera línea de datos
8
D1
Segunda línea de datos
9
D2
Tercera línea de datos
10
D3
Cuarta línea de datos
11
D4
Quinta línea de datos
12
D5
Sexta línea de datos
13
D6
Séptima línea de datos
14
D7
Octava línea de datos
15
A
Alimentación Blacklight +3.5V a 5V
16
K
GND del Blacklight
Pedro Sánchez
[email protected]
http://electronicayrobotica.wordpress.com/