Sunteți pe pagina 1din 6

Control de LCD en BASIC (MicroCode Studio).

Saludos a todos bueno en esta ocasin es una publicacin sobre LCD alfanumricos espero que les sea de gran
ayuda. Las LCD estn compuestos bsicamente por una pantalla de cristal lquido y un circuito microcontrolador
especializado el cual posee los circuitos y memorias de control necesarias para desplegar el conjunto de caracteres
ASCII, un conjunto bsico de caracteres japoneses, griegos y algunos smbolos matemticos por medio de un circuito
denominado generador de caracteres. La lgica de control se encarga de mantener la informacin en la pantalla
hasta que ella sea sobre escrita o borrada en la memoria RAM de datos.


Pantalla LCD de 2x16 (LM016L)


El compilador en BASIC permite definir los pines del microcontrolador que se conectan al LCD (pines tales como
datos, enable, escritura, etc.) usando la funcin DEFINE. Los parmetros disponibles para el manejo de LCD
alfanumricos son los siguientes:

- LCD_BITS: Define el nmero 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, 2 y 3) o 4 (para usar los pines 4, 5,
6 y 7). Por defecto se asume 4, y esta instruccin 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 mayora de los LCD funcionan bien con un valor de 2000, lo que hace ms
rpidos nuestros 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 inicializacin de la electrnica del LCD. Por defecto,
este valor es de 100.



DEFINE LCD_DREG PORTA 'Puerto de datos del LCD
DEFINE LCD_DBIT 0 'Inicio de datos del bit 0 o 4
DEFINE LCD_RSREG PORTA 'Seleccin del puerto del registro
DEFINE LCD_RSBIT 4 'Seleccin del bit de registro
DEFINE LCD_EREG PORTB 'Puerto del pin de habilitacin (enable)
DEFINE LCD_EBIT 3 'Pin de enable
DEFINE LCD_RWREG PORTE 'Puerto de Lectura y Escritura
DEFINE LCD_RWBIT 2 'Pin de Lectura y Escritura
DEFINE LCD_BITS 4 'Tamao del bus de datos: 4 o 8
DEFINE LCD_LINES 2 'Nmero de lneas del LCD
DEFINE LCD_COMMANDUS 2000 'Tiempo de retardo de comandos
DEFINE LCD_DATAUS 50 'Retardo de envo de datos

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. Usamos la funcin PAUSE.
A continuacin se muestra las sentencias para escritura del LCD, usando LCDOUT:

Comandos de escritura en el LCD:

Instruccin Funcin que realiza

$FE, 1 Borrar toda la pantalla del LCD
$FE, 2 Vuelve a inicio (comienzo de la primera lnea)
$FE, $0C Apaga cursor
$FE, $0E Subrayado del cursor activo (_)
$FE, $0F Parpadeo del cursor activo ( )
$FE, $10 Mueve el cursor una posicin hacia la izquierda
$FE, $14 Mueve el cursor una posicin hacia la derecha
$FE, $80 Mueve cursor al comienzo de la primer lnea
$FE, $C0 Mueve cursor al comienzo de la segunda lnea
$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

El cdigo de control del LCD con el PIC es el siguiente:

DEFINE LCD_DREG PORTB 'Utilizar 4 bits del puerto B para Tx de Datos
DEFINE LCD_DBIT 4 'Dese el bit B.4 al bit B.7
DEFINE LCD_RSREG PORTB 'Utilizar el registro de control/datos en el puerto B
DEFINE LCD_RSBIT 1 'En el bit B.1
DEFINE LCD_EREG PORTB 'Utilizar el Enable en el puerto B
DEFINE LCD_EBIT 2 'En el bit B.2

TRISB=0 'Establecer el puerto B como salida
PAUSE 500 'Pausa de medio segundo
LCDOUT $FE, 1 ' Limpiar LCD
LCDOUT $FE, 1, "POIO OF THE" 'Escribir en la primera lnea
LCDOUT $FE, $C0, "SIXTH" 'Escribir en la segunda lnea
LCDOUT $FE, $0C 'Apagar el cursor

Si se desea escribir en una posicin inicial especfica del LCD, se usa la siguiente tabla para determinar dicha
posicin:


Cdigo de direcciones de caracteres (valores hexadecimales)

Display Position

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DD RAM Address

80
81
82
83
84
85
86
87
88
89
8A
8B
8C
8D
8E
8F
DD RAM Address

C0
C1
C2
C3
C4
C5
C6
C7
C8
C9
CA
CB
CC
CD
CE
CF


Por ejemplo, para escribir desde la segunda celda de la segunda fila la palabra "TEXTO" se usa:

LCDOUT $FE,$C1,"TEXTO"

O bien se puede escribir la direccin de memoria en formato decimal, C1 hexadecimal es 193 decimal, por la tanto:

LCDOUT $FE,193,"TEXTO

Es equivalente a la funcin precedente. Fsicamente, el LCD de 16x2 se debe conectar como lo indica la siguiente
figura, para controlar el contraste de la pantalla:



Figura 2. Conexin del LCD junto al potencimetro de contraste.




Un ejemplo de aplicacin se muestra a continuacin:

' DEFINICIN DE REGISTROS PARA EL LCD
DEFINE LCD_DREG PORTB 'UTILIZAR 4 BITS DEL PUERTO B PARA TX DE DATOS
DEFINE LCD_DBIT 4 'DESDE EL BIT B.4 AL BIT B.7
DEFINE LCD_RSREG PORTB'SELECCIN DEL PUERTO DEL REGISTRO
DEFINE LCD_RSBIT 1 'EN EL BIT B.1
DEFINE LCD_EREG PORTB 'UTILIZAR EL ENABLE EN EL PUERTO B
DEFINE LCD_EBIT 2 'EN EL BIT B.2
' ESTABLECER EL PUERTO B COMO SALIDA
TRISB=0
' TAMAO DE VARIABLES DEL CONTADOR
B0 VAR BYTE
B1 VAR BYTE
' PAUSA DE INICIO DEL LCD
PAUSE 500
'--------------------------------------------------------
LCDOUT $FE, 1 ' LIMPIAR LCD
LCDOUT $FE, 1, "POIO OF THE" 'ESCRIBIR EN LA PRIMERA LNEA
LCDOUT $FE, $C0, "SIXTH" 'ESCRIBIR EN LA SEGUNDA LNEA
PAUSE 1000
' MOSTRAR DATOS DECIMALES Y BINARIOS
LCDOUT $FE, 1, DEC 25
LCDOUT $FE, $C0, BIN 25
'--------------------------------------------------------
'MOSTRAR LETRA POR LETRA
PAUSE 500
LCDOUT $FE, 1 ' LIMPIAR LCD
FOR B0 = 0 TO 13
LOOKUP B0,["POIO OF THE"],B1
LCDOUT $FE,$0C,B1
PAUSE 500
NEXT

LCDOUT $FE, $C0 'COLOCAR EL CURSOR EN LA SEG LNEA
FOR B0 = 0 TO 13
LOOKUP B0,["SIXTH"],B1
LCDOUT $FE,$0C,B1
PAUSE 500
NEXT
'--------------------------------------------------------
'DESPLAZAMIENTO DE TEXTO EN LCD
FOR B0 = 144 TO 128 STEP -1
LCDOUT $FE, 1 ' LIMPIAR LCD
LCDOUT $FE,B0,"POIO OF THE SIXTH"
PAUSE 200
NEXT

END












HEXA CARACTER
0 ||
1 ||
2 |||
3 |||
4 ||
5 ||
6 |||
7 |||
8 ||
9 ||
A |||
B |||
C ||
D ||
E |||
F |||
10
11
12 I
13 /,
14 |
15
16 |
17 )
18
19
1A ~
1B (
1C =
1D ~
1E
2
1F
3

20
21 !
22
23 #
24 $
25 %
26 &
27 '
28 (
29 )
2A *
2B +
2C ,
2D -
2E .
2F /
30 0
31 1
32 2
33 3
34 4
35 5
36 6
HEXA CARACTER
37 7
38 8
39 9
3A :
3B ;
3C <
3D =
3E >
3F ?
40 @
41 A
42 B
43 C
44 D
45 E
46 F
47 G
48 H
49 I
4A J
4B K
4C L
4D M
4E N
4F O
50 P
51 Q
52 R
53 S
54 T
55 U
56 V
57 W
58 X
59 Y
5A Z
5B [
5C \
5D ]
5E ^
5F _
60 `
61 a
62 b
63 c
64 d
65 e
66 f
67 g
68 h
69 i
6A j
6B k
6C l
6D m
6E n
HEXA CARACTER
6F o
70 p
71 q
72 r
73 s
74 t
75 u
76 v
77 w
78 x
79 y
7A z
7B {
7C |
7D }
7E ~
7F
80
81
82
83
84
85
86
87
88
89
8A
8B
8C
8D
8E
8F
90
91
92
93
94
95
96
97
98
99
9A
9B
9C
9D
9E
9F
A0
A1
A2
A3
A4 C
A5
A6
HEXA CARACTER
A7 P
t

A8
A9
AA
AB
AC
AD
AE
AF
B0
B1
B2
B3
B4
B5
B6
B7
B8
B9
BA
BB
BC
BD
BE
BF
C0 (
C1 ]
C2
C3 V (rotado arriba)
C4 .
C5 |
C6 +
C7
C8
C9
CA (
CB
CC
CD
CE
CF
D0 '
D1
D2
D3
D4 I
D5 V (rotado abajo)
D6 u
D7 A
D8
D9 H
DA E
DB T
DC u
DD +
HEXA CARACTER
DE O
DF o
E0 |
E1 Y
E2 o
E3 c
E4 ,
E5 q
E6 u
E7 i
E8 k
E9
EA
EB v
EC
ED t
EE
EF o
F0 t
F1 u
F2
F3
F4 e
F5
F6
F7
F8 R
F9
FA F
FB
FC
FD --
FE Cosas Raras
FF P(Negativo)

S-ar putea să vă placă și