LA FAMILIA 51
Dentro de esta familia podemos encontrar los modelos de
microcontroladores 8XX1 y 8XX2 del cual hablaremos del
microcontrolador 8052AH
Características de la familia 51
Versión Versión Versión ROM RAM 16-bit Tecnologí
con ROM sin ROM con bytes bytes Timers a
EPROM
8051 8031 8751 4K 128 2 HMOS
8051AH 8031AH 8751H 4K 128 2 HMOS
8052AH 8032AH 8752BH 8K 256 3 HMOS
80C51BH 80C31BH 87C51 4K 128 2 CHMOS
Como se habrá observado, el 8052 presenta una mayor capacidad de
memoria y un Timer mas que el 8051, al margen de dichas
diferencias y de otras que resultan estas se puede afirmar que todo
programa que funcione en un 8051 lo hará en un 8052, pero no
siempre se puede decir lo mismo si se intercambia los nombres de
los dispositivos.
CARACTERÍSTICAS DE LOS MICROCONTROLADORES 8052
CPU de 8 bits
Procesador booleano (operaciones sobre bits).
256 bytes de memoria interna RAM util para el usuario y 384
bytes en total considerando el area de los registros especiales
(SFR).
8 Koctetos de ROM ( 8052 )
Espacio de memoria de 64K para programa externo.
Espacio de memoria de 64K para datos externos.
El 8052 contiene tres contadores – temporizadores (timers).
Comunicación asincrona full duplex.
6 fuentes de interrupciones con niveles de prioridad
oscilador interno
DESCRIPCIÓN DEL PATILLAJE DE LOS MICROCONTROLADORES 8052 /
8051
Vcc : alimentación positiva de +5v.
Vss : conexión a tierra (0 v).
Puertos : los microcontroladores tienen 4 puertos de 8 bits
bidireccionales(P1, P2, P3 y P4). Esto quiere decir que pueden
programarse como entrada o salida.
Para que los puertos actúen como entrada ses preciso escribir en los
Latch de cada pin un nivel de tensión alto(+5v).
Puerto 0 (P0) : multipleza en el tiempo por sus 8 lineas la parte baja
del bus de direcciones duante el acceso a la memoria externa de
programas y datos, y el bus de datos
Puerto 1 (P1) : tambien recibe la parte baja de direcciones, durante
la programación y verificacio de la memoria EPROM ; los bits P1.0 y
P1.1 tienen otra funcion especial, solo para el microcontrolador 8052.
P1.0 T2 (timer/contador 2 , entrada externa)
P1.0 T2EX (timer/contador 2 , captura e impulso de
recarga)
Puerto 2 (P2): el puerto 2 emite la parte alta del bus de direcciones
en los accesos a la memoria externa; el puerto 2 recibe la parte alta
de la dirección, durante la programación y verificación de la memoria
EPROM
Puerto 3 (P3) : este puerto tiene otras funciones como se muestra a
continuación
Pines Funcion alternativa
P3.0 RXD (entrada puerto serie)
P3.1 TXD (salida puerto serie
P3.2 IT0 (interrupcion 0, externa)
P3.3 INT1 (interrupcion 1, externa)
P3.4 T0 (entrada externa, Timer 0)
P3.5 T1 (entrada externa Timer 1)
P3.6 WR (autorización escritura en memoria de datos
P3.7 externa)
RD (autorización lectura en memoria de datos
externa)
ALE : (address Latch Enable) es un pulso que emite el
microcontrolador para enclavar el byte del bus de direcciones en el
acceso a la memoria externa. ALE se emite con una frecuencia de 1/6
de la fecuencia de emisión de reloj.
PSEN : (program store enable)es la señal de strobe para leer en la
memoria de programa exteno. La memoria externa tiene dos
modalidades, de programas y de datos, para diferenciarlas utiliza la
señal PSEN.
EA/VPP : (external acces) cuando se mantiene a nivel alto, se ejecuta
solo el programa de la ROM, a menos que el contador de programa
exeda los 8K. Si EA se mantiene a nivel bajo se ejecuta el programa
de la memoria externa independiente de la direccion del programa:
EA = 1 actua como microcontrolador.
EA = 0 actua como microprocesador.
VPP es la tensión de promgramacion de la EPROM.
T2 : (Timer 2) entrada externa del temporizador / contador
T2EX : captura y recarga de disparo.
WR : señal de escritura para dispositivos externos.
RD: señal de la lectura para dispositivos externos.
INT0 : entrada de la interrupcion externa 0
INY1 : entrada de la interrupcion externa 1
PROGRAMACION DE LA EPROM
Las operación que han de efectuarse son las siguientes :
aplicar una señal de reloj entre 4 y 6 MHz a los pines XTAL1 y
XTAL2.
Direccionar las posiciones de las memorias de la EPROM donde
va aser grabada la información par ello se utilizan el puerto 1 y
elos pines P2.0 a P2.4 del puerto P2.
Aplicar a los pines de control los niveles de tensión de 5 o 0
Disponer la información a grabar en el puerto P0
Enviar los pulsos de programacion a traves del pin ALE/PROG
Aplicar el pin EA/Vpp un tensión que oscila entre +5 y la tensión
de programación
ORGANIZACIÓN DE LA MEMORIA EN LOS
MICROCONTROLADORES
MEMORIA DE PROGRAMAS Y DATOS
Los microcontroladores tienen separados los espacios de direcciones
para memoria de programas y memoria de datos.
La memoria de programas solo puede ser leída y tiene como máximo
64K.
En el 8052 la memoria de programas interna es de 8K.
La señal de autorización de lectura en la memoria de programas
externa es PSEN.
Si el pin EA es puesto a Vcc indica que el programa busca direcciones
en la memoria interna y externa.
Si el pin EA es puesto a Css, la búsqueda de direcciones del programa
se dirige a la memoria externa den todo momento.
La memoria de datos puede ocupar, si desea, un espacio separado de
la memoria de programas.
La memoria de datos admite operaciones de lectura y escritura y
puede ser interna i externa y puede direccionar, como la memoria de
programas, hasta 64 K
El CPU genera las señales RD y WR para leer o escribir en la memoria
de datos externa.
8051 ROM/EPROM
OE\=OEbarra
PSENbarra D7-D0
P1
P0
Latch Endereços menos
significativo
Endereços mais
significativos
ALE GND
P3
P2
EAbarra
MEMORIA DE PROGRAMAS
En la parte baja de la memoria de programas se encuentran ciertas
posiciones de memoria especiales para el tratamiento de las
interrupciones, el intervalo fisico entre dos interrupciones es de 8
bytes, espacio capaz para albergar una pequeña rutina, pero si este
no fuera suficiente se desviaría el contador de programa mediante
una instrucción de salto a una zona amplia de la memoria de
programa capaz de contener dicha rutina.
Las 16 lineas de dirección corresponden al puerto 0 y al puerto 2, que
están dedicados al bus de direcciones; aun mas el puerto P0 sirve
como bus de direcciones y bus de datos, multiplexados en el tiempo,
esto se realiza de la forma siguiente
El puerto P0 emite el byte bajo de la palabra del contador de
programa , unaveza estabilizada la señal sobre P0, la señal ALE
(address latch enable) introduce esta dirección dentro del
dispositivo latch, que pasa a apuntar la dirección en la memoria
externa de programas. Al mismo tiempo que el
microcontrolador emite el PCL por P0, la parte alta del contador
de programa se emite por P2. Entonces PSEN autoriza la lectura
al microcontrolador del codigo de instrucción a traves del
puerto P0.
PROGRAMACIÓN DE LOS MICROCONROLADORES 8052
Modos de direccionamiento
Direccionamiento directo
EJEMPLO
ADD A, 3BH : es decir, suma (ADD) el contenido del acumulador
co el contenido de la posición de maemoria (3B):
A (A)+ 3B
Direccionamiento indirecto
ADD A, @R0 : Asi , si (R0) = 3BH la operación sera:
A (A)+ (3B)
Igual que en el ejemplo anterior
Direccionamiento inmediato
MOV A, #255 : carga en el acumulador el numero decimal
255
Generalmente se expresan en hexadecimal:
MOV A, #FFH
TIPOS DE INSTRUCCIONES
El set de instrucciones del 8052 se puede dividir según las
especialidades
Instrucciones aritméticas
Instrucciones logicas
Instrucciones de transferencias de datos
Instrucciones booleanas
Instrucciones de salto
RESUMEN DEL DOCUMENTO DESCARGADO DE
WWW.MICROCHIP.COM
En 1965 GI formó una división de microelectrónica, destinada a generar las
primeras arquitecturas viables de memoria EPROM y EEPROM. De forma
complementaria GI Microelectronics Division fué también responsable de desarrollar
una amplia variedad de funciones digitales y analógicas en las familias AY3-xxxx y
AY5-xxxx.
GI también creó un microprocesador de 16 bit, denominado CP1600, a principios de
los 70. Este fué un microprocesador razonable, pero no particularmente bueno
manejando puertos de e/s. Para algunas aplicaciones muy específicas GI diseñó un
Controlador de Interface Periférico (PIC) entorno a 1975. Fué diseñado para ser muy
rápido, además de ser un controlador de e/s para una
máquina de 16 bits pero sin necesitar una gran cantidad de funcionalidades, por lo
que su lista de instrucciones fué pequeño.
No es de extrañar que la estructura diseñada en 1975 es, sustancialmente, la
arquitectura del actual PIC16C5x.
Además, la versión de 1975 fué fabricada con tecnología NMOS y sólo estaba
disponible en versiones de ROM de máscara, pero seguía siendo un buen pequeño
microcontrolador.
El mercado, no obstante, no pensó así y el PIC quedó reducido a ser empleado por
grandes fabricantes únicamente.
Durante los 80, GI renovó su apariencia y se reestructuró, centrando su trabajo en
sus principales actividades, semiconductores de potencia esencialmente, lo cual
siguen haciendo actualmente con bastante éxito. GI Microelectronics Division
cambió a GI Microelectronics Inc (una especie de subsidiaria), la cual fué finalmente
vendida en 1985 a Venture Capital Investors, incluyendo la
fábrica en Chandler, Arizona. La gente de Ventura realizó una profunda revisión de
los productos en la compañia, desechando la mayoría de los componentes AY3, AY5
y otra serie de cosas, dejando sólo el negocio de los PIC y de las memorias EEPROM
y EPROM. Se tomó la decisión de
comenzar una nueva compañía, denominada Arizona Microchip Technology,
tomando como elemento diferenciador sus controladores integrados.
Adicionalmente existen otras familias derivadas, como los PIC16Fxx que emplean
memoria del tipo FLASH.
LOS REGISTROS DE LA GAMA MEDIA
1.- Organización de la memoria de datos
La ampliación de recursos en los PIC forzó en los catalogados como
de gama media una nueva estructura y la modificación de algunas
instrucciones (partiendo, claro está, de la gama baja). Una de las
diferencias fundamentales es, precisamente, la ampliación de
memoria de registros, a los que se unieron algunos nuevos de
sistema, y la accesibilidad a parte de los mismos que antes quedaban
ocultos, como OPTION o TRIS, de los que hablaremos a continuación.
De este modo se optó por dos bancos de registros de 128 posiciones
cada uno, la mayoría de los cuales son de propósito general. En el
siguiente esquema, que muestra esta organización, las direcciones
con casillas blancas muestran posiciones de registros específicos, y
las grises generales.
Dirección BANCO 0 BANCO 1 Dirección
00 INDF INDF 80
01 TMR0 OPTION 81
02 PCL PCL 82
03 STATUS STATUS 83
04 FSR FSR 84
05 PORT A TRIS A 85
06 PORT B TRIS B 86
07 87
08 88
09 89
0A PCLATH PCLATH 8A
0B INTCON INTCON 8B
0C PIR1 PIE1 8C
0D 8D
0E PCON 8E
0F 8F
10 90
11 91
12 92
13 93
14 94
15 95
16 96
17 97
18 98
19 99
Dirección BANCO 0 BANCO 1 Dirección
1A 9A
1B 9B
1C 9C
1D 9D
1E 9E
1F CMCON VRCON 9F
. Registros .
de Registros
. de .
Propósito Propósito
. General General .
7F FF
2.- Registros específicos
El PC. Direccionamiento del programa: El PC consta de 13 bits,
con lo que es posible direccionar hasta 8K palabras, separadas en
bancos de 2K. El byte de menos peso de la dirección se guarda en el
registro PCL, sito en la posición 0x02 del banco 0, mientras los 5 bits
de más peso se guardan en los 5 bits de menos peso del registro
PCLATH (dirección 0x08). Puesto que las instrucciones CALL y GOTO
sólo cuentan con 11 bits, sus saltos serán relativos a la página en la
que estemos. El cambio real de página se hará cambiando los bits
PCLATH.4 y PCLATH.3.
El STATUS. Registro de estado.
El OPTION. Registro de opciones
El INTCON. Registro de Interrupciones
El PCON. Registro identificador del reset
Los registros PIE1 y PIR1 están relacionados con el comparador, así
como CMCON y VRCON, y no serán explicados ya que el PIC16C84, en
el que se centra este estudio, carece de él. El registro FSR es utilizado
en la gama baja, por lo que tampoco nos ocuparemos de él.
Los registros TMR0, PORTA, PORTB, TRISA Y TRISB, serán, por
comodidad, estudiados en el apartado de programación, así como el
WDT.
JUEGO DE INSTRUCCIONES
1.- Características generales
Habiendo escogido los diseñadores de PIC la filosofía RISC, su juego
de instrucciones es reducido (33 instrucciones en la gama baja),
siendo éstas, además, sencillas y rápidas, puesto que casi todas se
ejecutan en un único ciclo de máquina (equivalente a 4 del reloj
principal). Sus operandos son de gran flexibilidad, pudiendo actuar
cualquier objeto como fuente y como destino.
Posee tres tipos bien diferenciados de direccionamiento, estos son:
1º Inmediato: El valor del dato está incluido en el propio código OP,
junto a la instrucción.
2º Directo: La dirección del dato está incluido en el propio código OP,
junto a la instrucción.
3º Indirecto: La dirección de la memoria de datos que guarda el
operando está contenida en un registro.
Nosotros nos centraremos en la gama media, que tiene 35
instrucciones. La mayoría son idénticas a las de la gama baja, si bien
las diferencias serán convenientemente explicadas.
2.- Definiciones y abreviaturas
Ante todo es conveniente que usted tenga clara la estructura interna
del micro, puesto que las instrucciones la referencian, y puesto que
en cualquier micro la comprensión de la nomenclatura de sus
componentes es esencial. De este modo hemos creado la siguiente
tabla para ayudarle a comprender las abreviaturas:
Abreviatura Descripción
PC Contador de Programa que direcciona la memoria de
instrucciones. Tiene un tamaño de 11 bits en la
gama baja, de los cuales los 8 de menos peso
configuran el registro PCL que ocupa el registro 0x02
del área de datos.
TOS Cima de la pila, con 2 niveles en la gama baja y 8 en
la media
WDT Perro guardián (Watchdog)
W Registro W, similar al acumulador
F Suele ser un campo de 5 bits (fffff) que contiene la
dirección del banco de registros, que ocupa el banco
0 del área de datos. Direcciona uno de esos
registros.
D Bit del código OP de la instrucción, que selecciona el
destino. Si d=0, el destino es W, y si d=1 el destino
es f.
Dest Destino (registro W o f)
TO Bit "Time Out" del registro de estado
PD Bit "Power Down" del registro de estado
b Suele ser un campo de 3 bits (bbb) que determinan
la posición de un bit dentro de un registro de 8 bits
Se trata, normalmente, de un campo de 8 bits
(kkkkkkkk) que representa un dato inmediato.
k También puede constar de 9 bits en las
instrucciones de salto que cargan al PC
x Valor indeterminado (puede ser un 0 o un 1). Para
mantener la compatibilidad con las herramientas
software de Microchip conviene hacer x = 0
label Nombre de la etiqueta
[] Opciones
() Contenido
Se asigna a
<> Campo de bits de un registro
Pertenece al conjunto
Z Señalizador de cero en W. Pertenece al registro de
estado
C Señalizador de acarreo en el octavo bit del W.
Pertenece al registro de estado
DC Señaliza el acarreo en el 4 bit del W. Pertenece al
registro de estado
Itálicas Términos definidos por el usuario
La gama media tiene un total de 35 instrucciones, cada una de las
cuales ocupan 14 bits.
La gama baja carece de 4 de las instrucciones de la gama media.
Estas son ADDLW, RETFIE, RETURN y SUBLW.
Otras diferencias fundamentales entre ambas gamas son, por
ejemplo, que en la baja el vector de reset (la primera línea que se
ejecuta tras un reset) es la última de la memoria correspondiente,
mientras que en la media es la 0x00. El vector de interrupción
(situado en la 0x04) no existe en la gama baja.
En la gama baja se necesita emplear los bits PA2-PA0 como parte alta
de la dirección de programa en las instrucciones CALL y GOTO.
Las páginas de la gama baja son más pequeñas, y se deben revisar
todas las escrituras de los registros OPTION, ESTADO y FSR en la
conversión del código.
Por tanto, fácilmente comprobamos que el código entre ambas gamas
no es 100% compatible.
PROGRAMACIÓN DE LOS CONTROLADORES PIC
Las herramientas MPLAB, MPASM y MPSIM para
programar el microcontrolador, se pueden encontrar y
bajar gratuitamente de internet en la dirección
www.microchip.com.
También puede utilizar compiladores de basic para
programar los PIC, son fáciles de utilizar y a la vez muy
potentes.
Para los más atrevidos, el compilador de C es el ideal.
Todas las recomendaciones anteriores las puede utilizar
en el entorno Windows.
5.2 Ejemplo de conexión con PIC
Conectar un display de siete segmentos:
Supongamos que deseamos sacar, de forma secuencial,
un número del 0 al 9 en un display de 7 segmentos
conectado a la puerta B, tal y como figura en el esquema
siguiente:
En
la siguiente tabla se puede comparar el código
hexagesimal y su equivalente en 7 segmentos:
H7
E-
XS
AE
GG
EM
SE
IN
MT
AO
LS
$$
03
0F
$$
00
16
$$
05
2B
$$
04
3F
$$
06
46
$$
06
5D
$$
07
6D
$$
00
77
$$
07
8F
$$
06
9F
GENERALIDADES SOBRE LAS INTERRUPCIONES
La interrupción es una técnica que coloca al programa
temporalmente en suspenso mientras el microcontrolador
ejecuta otro conjunto de instrucciones en respuesta a un
suceso. Las causas de una interrupción pueden ser
externas, como la activación de una patilla con el nivel
lógico apropiado, e internas, como las que pueden
producirse al desbordarse un temporizador como el TMR0.
Los sucesos internos capaces de producir una
interrupción más destacables son el desbordamiento del
temporizador TMR0, fin de la escritura de la EEPROM,
finalización de la conversión A/D. Los sucesos externos
principales son la activación del pin 0 de la puerta B
(PB0/INT), el cambio de estado en las patitas 4-7 de la
puerta B, y el desbordamiento del temporizador TMR0.
Cuando se produce una interrupción el procesador
ejecuta una Rutina de Servicio de Interrupción (RSI),
y, al terminar, el programa principal continúa donde fue
interrumpido. La dirección en la que se debe situar la
rutina de interrupción es la 0x04, y es recomendable,
para terminarla, usar la instrucción RETFIE, en lugar de
RETURN, puesto que, al activarse una interrupción, el
mecanismo de las mismas se deshabilita como medida de
seguridad. RETFIE sirve para rehabilitarlas.
Como las rutinas pueden modificar el contenido de los
registros del procesador, al iniciarlas conviene guardar en
la pila el valor de los mismos y restaurarlos antes del
RETURN. Antes de regresar la RSI debe determinar la
causa de la interrupción, borrar la bandera apropiada
antes de salir y, por supuesto, dar servicio a la
interrupción.
A primera vista, salvar y restaurar los registros sin
modificar sus contenidos no es una tarea fácil. El
contenido del registro W debe guardarse primero, junto
con todos los registros que han pasado por W para el
almacenamiento temporal de sus posiciones. El hecho de
mover W a otro registro corrompe la bandera Z,
modificando el registro de Estado. Microchip recomienda
una secuencia de código que permite salvar y restaurar
los registros sin modificarlos.
La instrucción SWAPF mueve los datos sin afectar a la
bandera Z del registro de ESTADO. Aunque los conjuntos
de 4 bits se invierten en el proceso, posteriormente son
restaurados en su situación inicial. Si se empleara la
instrucción MOVF se corrompería el bit Z.
REGISTROS DE INTERRUPCIÓN Y BANDERAS
Cada causa de interrupción actúa con dos señales. Una de
ellas actúa como señalizador o bandera que indica si se
ha producido o no la interrupción, mientras que la otra
funciona como permiso o prohibición de la interrupción en
sí. Los PIC 16C84 y 16C71 disponen de 4 fuentes de
interrupción válidas o no por la puesta a 1 de los
correspondientes bits del registro INTCON (0x0B ó 0x8B).
GIE EEIE/ADIE T0IE INTE RBIE T0IF INTF RBIF
Bit 7 registro INTCON Bit 0
El bit GIE (Global Interrupt Enable) habilita todas las interrupciones.
Cada tipo de interrupción tiene, a su vez, otro bit que la habilita o
deshabilita. Las interrupciones son capaces de despertar al chip de su
estado de reposo. El bit GIE se borra en cuanto se está atendiendo
una interrupción, para evitar que se atienda otra. Volverá a valer 1 si
se vuelve de la interrupción mediante RETFIE, como ya ha sido
explicado varias veces. Preferimos reiterarnos por ser motivo de
posibles problemas.
Todas las interrupciones saltan a la dirección 0x04, por lo que será
labor del programador identificar la causa de interrupción.
El bit RBIE habilita la interrupción RB, es decir, interrupción ante
cambios en las patas RB4-RB7. RBIF es la bandera que indica que se
ha producido esta interrupción.
El bit INTE activa la interrupción por la pata INT/RB0. El bit INTF es la
bandera que indica si se ha producido esta interrupción.
El bit T0IE habilita la interrupción por desbordamiento del TMR0. El
bit T0IF es la bandera que indica si se ha producido la interrupción.
El bit 6 del registro INTCON es distinto para el 16C71 (ADIE) y para el
16C84 (EEIE). En el 16C71 activa las interrupciones procedentes del
conversor A/D, y el 16C84 las procedentes de la E2PROM. Sus
respectivas banderas están en el registro ADCON1 ó EECON1.
EJEMPLO DEL MANEJO DE INTERRUPCIONES. EL TMR0.
Vamos a hacer en el programa parpadeo.asm que,
gracias a la interrupción del TMR0, que un LED parpadee
con una frecuencia de 200 ms. Una vez inicializadas las
puertas, el predivisor de TMR0 se carga con 78 y se
habilita la interrupción (GIE+T0IE)
El número de cuentas es FF-N, siendo N el número con el
que se carga TMR0. Como se carga con 78, N= 256-
78=178. Si ponemos el divisor de frecuencia del TMR0 a
128 (bit PS0, PS1 y PS2 del registro OPTION a 1 1 0) y con
un oscilador de 4 MHz, donde el ciclo de instrucción es de
un segundo, ocurre que...
Tiempo Total = N * valor predivisor * ciclo instrucción
Tiempo Total = 178 * 128 * 1 s = 9984 s = 9’98 ms
Mediante el programa principal comprobamos que el valor
del contador es 20 (200 ms). Si es así el LED es
conmutado, encendiéndolo o apagándolo según su estado
anterior.
No tenemos en cuenta el WatchDog, por lo que conviene
deshabilitarlo, y nos son indiferentes los valores del W en
todo momento, por lo que nos es igual guardar su valor o
no al saltar a la rutina de interrupción.
MANEJO DE UNA PANTALLA LCD. CREACIÓN DE UNA
LIBRERÍA.
Una LCD estándar es una pantalla de cristal líquido con
una matriz de 16, 32, 40 u 80 caracteres de 5x7 pixeles,
contando, además, con un microcontrolador
(generalmente el Hitachi 44780) que lo gobierna.
Normalmente cada línea contiene entre 8 y 80 caracteres,
y suelen ser capaces de mostrar caracteres ASCII,
japoneses, griegos...; o símbolos matemáticos. Su bus de
conexión puede ser de 4 u 8 bits.
El consumo de este tipo de módulos es muy bajo
(7’5mW), y, gracias a su sencillo manejo, son ideales para
dispositivos que requieren una visualización pequeña o
media.
Expondremos el uso de una librería, la LCD.LIB, preparada
para una pantalla de cristal líquido con dos líneas de 16
caracteres y una conexión de 8 bits.
ADAPTACIÓN DE UNA PANTALLA LCD
El módulo LCD que vamos a trabajar tiene 14 patillas,
cuya descripción se hace en la figura que sigue a este
párrafo. Su alimentación es de +5 V, y la regulación del
contraste se realiza dividiendo esos +5V mediante un
potenciometro de 10 k. Para el módulo de 8 bits
requeriremos 11 líneas (uno de 4 bits necesitaría sólo 7).
De ellas hay tres de control, que son EN (habilitación), I/D
(Instrucc
ión/Datos) y R/W (Lectura/Escritura). En un modo de 4 bits
usaríamos sólo las líneas DB4-DB7 de datos.
La activación de la
línea EN (habilitación)
es la que permite a la
LCD leer el resto de
líneas, es decir, si la
desactivamos no
reaccionará ante los
cambios en el resto de
líneas. La línea R/W se
conectará a masa,
para ahorrar una línea,
en todos los casos en
los que no sea
necesario el modo de
lectura.
Pin Nombre del pin Función del pin
01 Vss Masa
02 Vdd +5V
03 Vo ó Vee Ajuste de contraste
04 I/D ó RS Selección de modo
05 R/W Lectura / Escritura
06 E ó EN Validación (1) / Deshabilitación (0)
07 DB0 Línea de datos (bit de menos peso)
08 DB1 Línea de datos
09 DB2 Línea de datos
10 DB3 Línea de datos
11 DB4 Línea de datos
12 DB5 Línea de datos
13 DB6 Línea de datos
14 DB7 Línea de datos (bit de mas peso)
Habitualmente el puerto A del micro es utilizado para
manejar las líneas de control (en la LCD.LIB PORTA.2 se
conectará a EN, y habilitará la LCD, PORTA.1 manejará la
lectura/escritura, y, finalmente, la PORTA.0 se encargará
de la selección de modo), mientras la puerta B es
utilizada para datos.
La secuencia de escritura debe seguir los siguientes
pasos:
Línea I/D a 0 o a 1, según se trate de comandos o datos
Línea R/W a 0 (1 en caso de escritura)
Línea EN a 1 (se habilita la LCD)
Escritura de datos en el bus DB.
Línea EN a 0 (deshabilitación de la LCD)
La misma secuencia en un módulo de 4 bits cambiaría:
Línea I/D a 0 o a 1, según se trate de comandos o datos
Línea R/W a 0 (1 en caso de escritura)
Línea EN a 1 (se habilita la LCD)
Escritura en los 4 bits de mayor peso del DB de la LCD.
Línea EN = 0
Línea EN = 1
Escribir de nuevo los 4 bits de menor peso
Línea EN = 0 (deshabilitación de la LCD).
Las dos secuencias de 4 bits se concatenarían dentro del
LCD para formar 8 bits.
Al resetear una LCD o encenderla ésta se queda a la
espera de instrucciones. Usualmente se suele empezar
encendiendo la pantalla, colocando el cursor y
configurando la escritura de derecha a izquierda.
La LCD contiene una RAM propia en la que almacena los
datos, que se denomina DDRAM. Independientemente del
número de caracteres visibles, la DDRAM contará con 80
posiciones. Los caracteres no visibles se visualizarán
provocando un desplazamiento.
La utilización de la LCD es lenta. Una escritura o lectura
puede tardar entre 40 y 120 segundos; otras
instrucciones pueden llegar a los 5 ms. Para lograr que el
PIC no necesite esperar tiene una instrucción de 1 seg
que lee la dirección del contador y una bandera interior
de ocupado. Cuando la bandera de ocupado (BF) está a 1,
la LCD no puede leer ni escribir.