0% encontró este documento útil (0 votos)
14 vistas24 páginas

Electronica Digital

El documento describe la familia de microcontroladores 51, enfocándose en el modelo 8052AH, que ofrece características como CPU de 8 bits, 8K de ROM y 256 bytes de RAM. Se detallan los puertos, la programación de EPROM y la organización de la memoria, así como los modos de direccionamiento y el conjunto de instrucciones. Además, se menciona la evolución de los microcontroladores PIC y su estructura de memoria en la gama media.

Cargado por

HENRYGALLEGOS
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas24 páginas

Electronica Digital

El documento describe la familia de microcontroladores 51, enfocándose en el modelo 8052AH, que ofrece características como CPU de 8 bits, 8K de ROM y 256 bytes de RAM. Se detallan los puertos, la programación de EPROM y la organización de la memoria, así como los modos de direccionamiento y el conjunto de instrucciones. Además, se menciona la evolución de los microcontroladores PIC y su estructura de memoria en la gama media.

Cargado por

HENRYGALLEGOS
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd

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.

También podría gustarte