Está en la página 1de 0

Elaboracin de Mdulos Didcticos Basados en

Microprocesadores











AUTOR: Antonio Miguel Zaplana Alcaraz
DIRECTOR: Jos Lus Ramrez Falo


FECHA: Septiembre / 2002.
2
ndice

MEMORIA DESCRIPTIVA 5
1. Objeto del Proyecto 6
2. Titular 6
3. Antecedentes 6
4. Posibles Soluciones y Solucin Adoptada 7
4.1 Mdulo 1: Control de un Display LCD 7
4.2 Mdulo 2: Control de Temperatura 7
4.3 Prctica de Controlador de Teclado 9
5. Descripcin de la Solucin Adoptada 10
5.1 Mdulo 1: Control de un Display LCD 10
5.1.1 Objetivo Didctico del Mdulo 10
5.1.2 Planificacin de la Prctica 11
5.1.3 Conocimientos Adquiridos 11
5.1.4 Descripcin del Hardware 11
5.2 Mdulo 2: Control de Temperatura 15
5.2.1 Objetivo Didctico del Mdulo 15
5.2.2 Planificacin de la Prctica 16
5.2.2.1 Prctica de Control de Temperatura con Lectura de 8 bits 16
5.2.2.2 Prctica de Control de Temperatura con Lectura de 10 bits 17
5.2.2.3 Prctica de Conversin A / D y Visualizacin en 7 Segmentos 18
5.2.3 Descripcin del Hardware 19
5.2.3.1 Medicin de Temperatura 22
5.2.3.2 Conversin Analgico Digital 23
5.2.3.3 Visualizacin en 7 Segmentos 25
5.2.3.4 Conversin Digital Analgico 26
5.2.3.5 Conexin con el Microinstructor TM-683 27
5.2.3.6 Mdulo de Calor 28
5.2.3.7 Programador PIC16F873 28
5.2.3.7.1 Software de Programacin del PIC16F873 30
5.2.4 Descripcin del Software 31


3
5.3 Prctica de Controlador de Teclado 33
5.3.1 Objetivo Didctico del Mdulo 33
5.3.2 Planificacin de la Prctica 33
5.3.3 Descripcin del Hardware 34
5.3.3.1 Funcionamiento del Teclado 36
5.3.3.1.1 Cdigos de Rastreo del Teclado 36
5.3.3.2 Programacin de la DUART 37
6. Resumen del Presupuesto 37

PLANOS 38
Plano N1: Mdulo Control LCD. Esquema Elctrico
Plano N2: Mdulo Control LCD. Situacin de Componentes
Plano N3: Mdulo Control LCD. Fotolitos
Plano N4: Mdulo Control de Temperatura. Esquema Elctrico
Plano N5: Mdulo Control de Temperatura. Situacin de Componentes
Plano N6: Mdulo Control de Temperatura. Fotolito Cara Superior
Plano N7: Mdulo Control de Temperatura. Fotolito Cara Inferior
Plano N8: Controlador de Teclado. Esquema Elctrico

PRESUPUESTO 39
1. Mdulo de Control LCD 40
1.1 Cuadro de Precios 40
1.2 Aplicacin de Precios 41
1.3 Resumen del Presupuesto 41
2. Mdulo de Control de Temperatura 42
2.1 Cuadro de Precios 42
2.2 Aplicacin de Precios 43
2.3 Resumen del Presupuesto 44
3. Prctica de Controlador de Teclado 45
3.1 Cuadro de Precios 45
3.2 Aplicacin de Precios 45
3.3 Resumen del Presupuesto 46
4. Resumen Total del Presupuesto 46


4
ANEXOS 47
ANEXO 1: Mdulo de Control LCD. Informacin para el Alumno 48
ANEXO 2: Mdulo de Control LCD. Solucin de la Prctica 56
ANEXO 3: Guin de la Prctica Control de Temperatura con Lectura de 8 bits 73
ANEXO 4: Guin de la Prctica Control de Temperatura con Lectura de 10 bits 79
ANEXO 5: Guin de la Prctica Conversin A/D y Visualizacin en 7 segmentos 87
ANEXO 6: Mdulo Control de Temperatura. Solucin de las Prcticas 99
ANEXO 7: Mdulo Control de Temperatura. Programa Residente en el
Microcontrolador
132
ANEXO 8: Prctica Controlador de Teclado. Informacin para el Alumno 140
ANEXO 9: Prctica Controlador de Teclado. Solucin de la Prctica 146

Referencias 155



















MEMORIA
DESCRIPTIVA

MEMORIA DESCRIPTIVA
6
MEMORIA DESCRIPTIVA

1. Objeto del Proyecto:

El presente proyecto tiene como objetivo la elaboracin de mdulos didcticos para la
realizacin de prcticas de programacin. Estos mdulos estn propuestos para
asignaturas sobre sistemas digitales con microprocesadores y microcontroladores. Como
por ejemplo, las asignaturas de Sistemas Digitales II y Sistemas Electrnicos con
Microcontroladores, del primer ciclo de Ingeniera Tcnica Industrial, especialidad en
Electrnica Industrial y, la asignatura de Sistemas Electrnicos Digitales del segundo
ciclo de la carrera de Ingeniera en Automtica y Electrnica Industrial.

Los mdulos y prcticas que se proponen en este proyecto pretenden ofrecer al alumno
la oportunidad de afianzar sus conocimientos, sobre el temario correspondiente a los
dispositivos de entrada-salida de acceso programado y control digital. Ayudar al alumno
a entender el entorno hardware y software del microprocesador MC68000. Permitir al
alumno conocer el diseo de circuitos electrnicos basados en microcontroladores y
microprocesadores, los recursos que ofrecen estos dispositivos y optimizar su uso.
Programar estructuradamente aplicaciones. Introducirle en los microcontroladores PIC y
hacerle ver los problemas de hardware y software que surgen en los sistemas digitales.

2. Titular:

El promotor de este proyecto es el Departamento de Ingeniera Elctrica, Electrnica y
Automtica (DEEEA), de la Escuela Tcnica Superior de Ingeniera de la Universidad
Rovira i Virgili con direccin: Campus Sescelades, avenida Pasos Catalans, 26. C.P.:
43007 Tarragona. Y en su nombre el seor Don Jos Lus Ramrez Falo.

3. Antecedentes:

En el segundo curso de la enseanza de Ingeniera Tcnica Industrial, Especialidad en
Electrnica Industrial, se realiza la asignatura obligatoria de Sistemas Digitales II.
Los objetivos de esta asignatura son: el anlisis y uso eficaz de sistemas basados en
microprocesadores, estudiando el entorno hardware y software del MC68000 de
Motorola. El programa de la asignatura incluye el estudio de cada una de las partes que
componen un sistema basado en microprocesadores, as como la programacin en
lenguaje ensamblador de stos.

Para ayudar al alumno a entender mejor todos los conceptos expuestos en las clases
tericas, se realizan una serie de prcticas de programacin sobre el microinstructor
TM-683 de Promax. Este dispositivo incluye un microprocesador MC68000 lo que lo
hace idneo para esta asignatura. En total se realizan dos prcticas, la primera de
carcter introductorio y la segunda con la ayuda de mdulos de aplicacin. Estos
mdulos se conectan a las diferentes puertas de entrada-salida que dispone el
microinstructor. Simulan aparatos o procesos reales que el alumno debe controlar
mediante la programacin en ensamblador. Los mdulos descritos en este proyecto
estn destinados a la realizacin de la segunda prctica de la asignatura.


MEMORIA DESCRIPTIVA
7
Adems, proporcionan al alumno un mejor conocimiento sobre dispositivos digitales
que, por falta de tiempo, se ven de una forma muy general en las clases tericas, como
son los dispositivos de entrada-salida de acceso programado.

Estos mdulos estn formados por nuevos elementos muy utilizados actualmente, como
las pantallas de cristal lquido y los microcontroladores PIC

de MICROCHIP

.


4. Posibles Soluciones y Solucin Adoptada:

4.1 Mdulo 1: Control de un Display LCD

Dado que el mdulo est formado bsicamente por un display LCD tenemos las
siguientes posibilidades:

a) Display LCD de siete segmentos
b) Mdulo de display LCD alfanumrico de matriz de puntos.

Los mdulos LCD de siete segmentos disponen de un gran nmero de lneas a controlar.
Esto hace que sea bastante difcil su control mediante los conectores de aplicacin del
microinstructor TM-683. El principal inconveniente de esta solucin es que disponen de
muy pocos dgitos con los que no es posible presentar mensajes de texto.

La segunda opcin es la solucin adoptada. Los mdulos alfanumricos disponen de
una matriz de 8, 16, 20, 32, 40, etc. caracteres, e incluso disponen de 1, 2, 4 o ms
lneas. Son capaces de visualizar caracteres, nmeros y smbolos. Estn gobernados por
un microcontrolador incluido en el mdulo capaz de generar los caracteres y funciones
especiales y se controlan mediante 14 lneas, lo que es idneo para ser conectado al
microinstructor TM-683.

4.2 Mdulo 2: Control de Temperatura:

El mdulo de control de temperatura est formado bsicamente por cuatro bloques:
medicin de temperatura y acondicionamiento de la seal, conversin analgico
digital, conversin digital analgico, resistencia de calentamiento.

Como elementos de medicin de temperaturas tenemos los siguientes:

- Termopares: el rango de temperaturas que ofrecen es bastante amplio, aunque la
circuitera necesaria hace que sea algo complicado su uso. Adems, se necesita otro
elemento sensor para compensar el efecto producido por la unin fra. El precio de
estos sensores es de unos 9 aproximadamente.


- PT100: Detector de pelcula de platino. Ofrecen tambin un amplio rango de
temperaturas y en precio es bastante aproximado al de los termopares. Para su
correcta medicin se puede utilizar un puente linealizador con resistencias de baja
tolerancia y un amplificador de instrumentacin.

MEMORIA DESCRIPTIVA
8
- PRC100: Es una alternativa de bajo coste al sensor de resistencia de hilo arrollado
de platino. Tiene una resistencia a temperatura cero de 100 y presenta un
comportamiento lineal con sensibilidad media de 0.00385/C, en el margen de
temperaturas de -40C a 150C. El precio es de unos 9 aproximadamente. La
circuitera adicional para la medicin sera la misma que para una PT100.

- C.I. LM35: es un circuito integrado sensor de temperatura con tres terminales, que
proporciona una salida lineal de tensin de 10mV/C. Es el elemento ms
econmico (4 aprox.) y ms fcil de usar. El rango de temperaturas va de 0C a
100C y tiene una precisin de aproximadamente 1C.

Para la realizacin del mdulo no se requiere que el sensor tenga un amplio rango de
temperaturas, ni tampoco demasiada precisin. Por este motivo se considera que la
opcin ms indicada es la del C.I. LM35.

Independientemente del elemento utilizado como sensor de temperatura, podemos tener
ms o menos prestaciones segn la conversin de la seal analgica a digital se haga
mediante un chip conversor o utilizando un microcontrolador con conversor A / D
incluido.

En el primer caso, el mdulo dispone de una circuitera de adaptacin de la seal
analgica para ser introducida en el conversor A / D. El resultado de la conversin se
enva al microinstructor mediante uno de los dos puertos disponibles en la VIA
(Versatile Interface Adapter, en adelante VIA). El puerto restante de la VIA se conecta a
un conversor digital - analgico cuya salida est a su vez conectada con la resistencia de
calentamiento mediante un transistor de potencia.

Por otro lado, si utilizamos un microcontrolador, las funciones del mdulo se ven muy
incrementadas. Se puede utilizar un microcontrolador de la clase PIC con conversor
analgico digital. De esta forma podemos realizar las mismas funciones que con el caso
anterior. Tambin podemos conectar uno de los puertos de entrada - salida del PIC a un
display de tres dgitos de siete segmentos, para visualizar el valor de la temperatura.

Adems, incluyendo en el mdulo un conector DB25 junto con una circuitera simple es
posible realizar la programacin del PIC en el propio mdulo, sin tener que quitar el
microcontrolador y sin utilizar grabadores adicionales.

Todo este conjunto sera de una gran utilidad didctica, no slo para la asignatura de
Sistemas Digitales - II, sino tambin, para la asignatura de Sistemas Electrnicos con
Microcontroladores y, en definitiva, para cualquier asignatura que pueda tener prcticas
sobre microcontroladores, con la particularidad aadida del tratamiento digital de
seales analgicas como el de la medicin de temperatura.

Existe una amplia gama de microcontroladores PIC que nos permiten seleccionar el ms
conveniente para nuestro proyecto. MICROCHIP dispone de cuatro familias de
microcontroladores de ocho bits: la gama enana de ocho pins (PIC12C(F)XXX), la
gama baja con instrucciones de 12 bits (PIC16C5X), la gama media con instrucciones
de 14 bits (PIC16C(F)XXX) y, la gama alta con instrucciones de 16 bits
(PIC17CXXX). De las cuatro gamas anteriores, la gama enana y la gama baja no se
adaptan a nuestras necesidades, ya que tienen menos lneas de entrada salida de las
MEMORIA DESCRIPTIVA
9
que necesitamos. Los microcontroladores de la gama alta tienen unas caractersticas
demasiado potentes e incrementaran el precio final del proyecto innecesariamente. La
gama media de microcontroladores PIC es la que mejor se ajusta a nuestras necesidades.
En esta gama disponemos de microcontroladores con conversor analgico digital, que
es la principal caracterstica que necesitamos. Se podra utilizar el PIC16F73, el cual
dispone de 22 lneas de E / S, conversor A / D de 8 bits y 5 canales, 3 temporizadores y
memoria flash; la cual es idnea para la realizacin de las prcticas puesto que se puede
grabar y borrar mediante un software adecuado muchas veces. El precio de este
microcontrolador es de 6,66 (segn catlogo de FARNELL, nmero de producto:
3529137). Tambin se puede utilizar el microcontrolador PIC16F873, que tiene las
mismas caractersticas que el anterior pero con un conversor A / D de 10 bits. Adems,
este microcontrolador es ms fcil de conseguir.

El precio de un conversor analgico - digital simple, de 8 bits se encuentra a partir de 5
(segn catlogo de RS - COMPONENTS: ADC0804LCN, RS #:411-674, precio:
5,48). Por lo tanto, se pueden aumentar considerablemente las prestaciones y
funcionalidad del mdulo incluyendo en l, un microcontrolador para realizar las tareas
del tratamiento de la seal analgica.


4.3 Prctica de Controlador de Teclado

Para la realizacin de esta prctica existen dos posibles alternativas:
La primera de ellas es proporcionar al alumno de un mdulo de aplicacin ya montado y
verificado, sobre el que slo tendra que realizar su programacin.

La segunda alternativa es proporcionar al alumno el esquema elctrico del mdulo y que
l mismo realizase el montaje, verificacin y, seguidamente, programacin del circuito.

Para cada una de las soluciones anteriores se plantean otras dos posibles alternativas. La
primera consiste en realizar este mdulo con un microcontrolador como elemento de
comunicacin con el teclado y, un visualizador LCD para presentar los caracteres.

La segunda opcin consiste en aprovechar el conector del canal A disponible en el
microinstructor TM-683 para conectar el teclado.

De entre estas alternativas expuestas, la solucin adoptada para la realizacin de la
prctica es, proporcionar al alumno el esquema elctrico del mdulo para que lo monte
y utilizar el microinstructor como comunicacin con el teclado.

Los motivos que nos han llevado a esta eleccin son, en primer lugar, hacer que el
alumno realice un montaje de un sistema digital con sus propias manos para conocer
ms en detalle al problema que se enfrenta y, para que no se centre exclusivamente en la
programacin. Se ha elegido tambin utilizar el microinstructor TM-683 porque el
alumno no tendra tiempo de asimilar los conceptos necesarios que supone aprender a
programar un dispositivo que no se haba visto antes. Ya que segn la cronologa de las
asignaturas de Ingeniera Tcnica Industrial, Especialidad en Electrnica Industrial, el
tema de microcontroladores no se ve hasta tercer curso. La asignatura de Sistemas
Digitales II, del segundo cuatrimestre del segundo curso, es la que trata ms a fondo el
tema de los microprocesadores. Debido a que en esta asignatura slo se disponen de
MEMORIA DESCRIPTIVA
10
quince horas de prcticas, que corresponden a siete sesiones para realizar dos prcticas,
en cuatro sesiones de prcticas el alumno no tendra el suficiente tiempo para realizarla.


5. Descripcin de la Solucin Adoptada:

5.1 Mdulo 1: Control de un Display LCD:

5.1.1 Objetivo Didctico del Mdulo

El principal objetivo del mdulo de Control LCD es dar a conocer a los alumnos el
funcionamiento de los dispositivos de salida de acceso programado, ya que se pueden
encontrar en muchos de los aparatos electrnicos del mercado, y tambin, que el alumno
adquiera experiencia en la programacin de microprocesadores en lenguaje
ensamblador.

Para llevar a cabo este cometido se ha diseado un guin de prctica que consta de las
siguientes partes:

En primer lugar, el alumno estudiar la composicin y funcionamiento de una pantalla
de cristal lquido mediante el anlisis de sus hojas de caractersticas. Una vez se
entienda el funcionamiento de la misma, los alumnos respondern un cuestionario a
modo de estudio previo a la prctica para comprobar sus conocimientos. Este
cuestionario se encuentra en el Captulo de Anexos con el ttulo de Anexo 1:
Documentacin para el alumno.

Una vez realizado el estudio previo indicado anteriormente, el alumno est ya preparado
para afrontar la prctica. Con la ayuda de las hojas de caractersticas del visualizador
LCD y los conocimientos de programacin adquiridos en las clases de teora de la
asignatura, debe realizar una librera de funciones bsicas de manejo de la LCD tales
como: enviar un comando, enviar un dato, configuracin, etc.

Finalmente, para evaluar la capacidad de diseo y estructuracin en la programacin en
ensamblador del alumno, ste deber programar una aplicacin utilizando las funciones
de librera que cre anteriormente. Como ejemplo prctico, se propone que el alumno
programe un marcador de un estadio de ftbol, en el que se visualicen los nombres de
los equipos que juegan, junto con sus respectivos goles marcados. Los pulsadores
disponibles en el mdulo se pueden utilizar para ir incrementando cada uno de los
marcadores, borrarlos, etc.

En el captulo de Anexos, con el nombre Anexo 2, se encuentra la solucin a la prctica
del marcador de estadio de ftbol, el cdigo del programa de ejemplo, as como el
cdigo de las funciones de librera de manejo de la LCD.

MEMORIA DESCRIPTIVA
11
5.1.2 Planificacin de la Prctica

En el diagrama siguiente se puede ver la planificacin de cada una de las tareas
necesarias para la realizacin de esta prctica, considerando que el alumno dispone de
cuatro sesiones de laboratorio de dos horas por sesin.

HORAS TAREAS
1 2 3 4 5 6 7 8
Programacin de la librera de funciones bsicas
Programacin de la aplicacin

Teniendo en cuenta que el alumno debe realizar el estudio previo de la prctica antes de
la primera sesin y, segn el diagrama anterior, se establece un reparto de horas de tal
forma que: la primera sesin de prcticas y la primera hora de la segunda, se dedican a
la programacin de la librera de funciones bsicas de manejo de la LCD. El resto de la
segunda sesin, la tercera y la cuarta se dedican a la programacin de la aplicacin.

5.1.3 Conocimientos Adquiridos

Con la realizacin de esta prctica el alumno aprender el funcionamiento de un mdulo
LCD, as como el funcionamiento de la comunicacin paralela con dispositivos de
entrada salida. Aprender a crear temporizadores y comprobar la necesidad del uso de
los tiempos de espera en el tratamiento de dispositivos lentos. Tambin aprender a
dividir un problema para llegar a su solucin con ms facilidad.


5.1.4 Descripcin del Hardware

Tal y como se puede apreciar en el esquema de bloques de la Figura 1, este mdulo est
basado en un display LCD. Una LCD estndar es una pantalla de cristal lquido con una
matriz de 8, 16, 32, 40, etc. caracteres de 5x7 puntos. La LCD del mdulo es una LCD
estndar (Powetip PC-1602) de 16 caracteres y 2 lneas (16x2). Estos mdulos
contienen adems un controlador que las gobierna, generalmente el HITACHI
HD44780.

Figura 1. Esquema de bloques del Mdulo de Control LCD.
MEMORIA DESCRIPTIVA
12
La LCD del mdulo tiene 14 patillas, se alimenta con una tensin de +5V y es posible
regular el contraste de la pantalla mediante un potencimetro. De estas 14 patillas, 8 son
para el bus de datos (D0 - D7) y 3 de control, que son EN (habilitacin), RS (Selector
de registros, instruccin o datos) y R / W (Lectura / Escritura).

El esquema elctrico se encuentra en el captulo de Planos sealado con el nmero de
plano 1. En l se pueden observar cada una de las partes que forman este mdulo de
aplicacin, las cuales se describen a continuacin:

El mdulo se comunica con el conector de aplicacin del microinstructor TM-683
mediante el conector CN1
1
de cincuenta contactos. La relacin de los contactos del
conector CN1 con las seales de la VIA se muestran en la Tabla 1.


CN1 VIA
1,2 Vcc
3,4,5,6 GND
7,8 PB0
9,10 PB1
11,12 PB2
13,14 PB3
15,16 PB4
17,18 PB5
19,20 PB6
21,22 PB7
23,24 CA1
25,26 CA2
27,28 PA0
29,30 PA1
31,32 PA2
33,34 PA3
35,36 PA4
37,38 PA5
39,40 PA6
41,42 PA7
43 a 50 GND

Tabla 1. Equivalencia entre las seales del conector CN1
del mdulo y las de la VIA

El circuito integrado U1 es del tipo 74LS245. Son ocho amplificadores de corriente
bidireccionales conectados al puerto B de la VIA. Puesto que es bidireccional,
controlamos la direccin de los datos mediante la lnea R / W que est conectada a la
patilla DIR del integrado, segn se quiera leer o escribir en la LCD.

1
NOTA IMPORTANTE: En el conector de aplicacin del microinstructor tenemos que el pin 1 es GND
mientras que en el conector CN1 del mdulo es Vcc. Lo mismo ocurre con el conector de alimentacin.
Todos los mdulos de aplicacin PROMAX tienen esta caracterstica. Por lo tanto, hay que poner especial
cuidado en no cortocircuitar estas seales. Para evitar esto se deben usar cables planos con los conectores
cruzados.

MEMORIA DESCRIPTIVA
13

El circuito integrado U2 es del tipo 74LS04. Son seis inversores que hacen la funcin de
amplificadores de corriente de las tres lneas de control de la LCD (EN, RS, R/W) ya
que las lneas de salida de la VIA del microinstructor no proporcionan la suficiente
corriente. La lnea RS se controla mediante los inversores U2A y U2B, conectados a la
lnea PA0 de la VIA. La lnea R / W se controla mediante los inversores U2C y U2D,
conectados a la lnea PA1 de la VIA. La lnea EN se controla mediante los inversores
U2E y U2F, conectados a la lnea PA2 de la VIA.

Las 14 patillas de la LCD estn disponibles en un conector de cable plano de 16 pins
designado en el esquema elctrico con el nombre de LCD1. Este conector sigue la
misma numeracin que las lneas de la LCD, su correspondencia con las lneas de sta
se muestran en la Tabla 2.


La explicacin de cada una de las lneas de la LCD, as como su manejo se puede
observar detenidamente en la hoja de caractersticas.

LCD1 LCD
1 Vss
2 Vcc
3 Vo (Alimentacin Driver)
4 RS (Selector de Registro)
5 R/W (Lectura / Escritura)
6 EN (Habilitacin)
7 D0
8 D1
9 D2
10 D3
11 D4
12 D5
13 D6
14 D7
15 No utilizado
16 No utilizado
Tabla 2. Correspondencia entre el conector LCD1 y
las lneas del display LCD.

El mdulo de aplicacin se alimenta mediante el conector CN2 que est unido a la
fuente de alimentacin MM-600. La relacin de las tensiones de la fuente con las
patillas del conector se muestra en la Tabla 3:

CN2
1,3,4,5,7,9 GND
10 +5V
8 +15V
6 -15V
2 +30V

Tabla 3. Voltages del conector de alimentacin CN2
MEMORIA DESCRIPTIVA
14
Por ltimo el mdulo dispone de 5 pulsadores de propsito general conectados al puerto
A de la VIA. Estos pulsadores disponen de un filtro paso bajo formado por una red RC
para eliminar los rebotes en el contacto.

Al pulsar el pulsador se detecta un nivel lgico "0" mientras que en reposo se detecta un
nivel lgico "1".

En la Tabla 4 se puede observar la correspondencia entre cada una de las lneas de la
VIA y las lneas de la LCD y los pulsadores.


VIA
PB0 D0
PB1 D1
PB2 D2
PB3 D3
PB4 D4
PB5 D5
PB6 D6
PB7 D7
PA0 RS
PA1 R / W
PA2 EN
PA3 SW1
PA4 SW2
PA5 SW3
PA6 SW4
PA7 SW5
Tabla 4. Correspondencia entre las lneas de la VIA
y las lneas de control y datos del mdulo


En la Tabla 5 se puede observar la lista de todos los componentes que forman el mdulo
de aplicacin.

Cdigo Descripcin
U1 C.I. octal bus bidireccional 3 estados 74LS245
U2 C.I. inversores 74LS04
C1 Condensador plaqueta 220 nF/100V
C2 Condensador plaqueta 220 nF/100V
C3 Condensador plaqueta 220 nF/100V
C4 Condensador plaqueta 220 nF/100V
C5 Condensador plaqueta 220 nF/100V
R1 Potencimetro 10k
R2 Resistencia 12k 5% 1/4W
R3 Resistencia 12k 5% 1/4W
R4 Resistencia 12k 5% 1/4W
R5 Resistencia 12k 5% 1/4W
R6 Resistencia 12k 5% 1/4W
MEMORIA DESCRIPTIVA
15
Cdigo Descripcin
R7 Resistencia 100 5% 1/4W
R8 Resistencia 100 5% 1/4W
R9 Resistencia 100 5% 1/4W
R10 Resistencia 100 5% 1/4W
R11 Resistencia 100 5% 1/4W
SW1 Pulsador para PCB
SW2 Pulsador para PCB
SW3 Pulsador para PCB
SW4 Pulsador para PCB
SW5 Pulsador para PCB
CN1 Conector macho acodado 50 pins
LCD1 Conector macho recto 16 pins
CN2 Conector macho acodado 10 pins

Tabla 5. Componentes del mdulo de Control de una LCD


El tipo de mdulo LCD elegido es de diecisis caracteres y dos lneas, a pesar de esto
se pueden colocar otros tipos de mdulos como los de 8x2, 12x2, 16x1, 20x1, 16x4,
20x2, 20x4, 24x2 y 40x2. En efecto, es posible conectar cualquier mdulo alfanumrico
de pantalla de cristal lquido que tenga la misma descripcin de patillaje que el mdulo
elegido.

En el captulo de Planos, adems del esquema elctrico sealado con el plano nmero 1,
se encuentran tambin los diseos del circuito impreso, situacin de componentes
(plano nmero 2) y fotolitos de la placa (plano nmero 3).


5.2 Mdulo 2: Control de Temperatura:

5.2.1 Objetivo Didctico del mdulo

Como se explic anteriormente, este mdulo dispone de unas prestaciones bastante
elevadas, lo que hace que tenga diversos usos didcticos. Su utilizacin va ms all de
la asignatura de Sistemas Digitales II, ya que tambin puede ser utilizado en otras
asignaturas de la carrera como Sistemas Electrnicos con Microcontroladores e incluso,
en asignaturas de la carrera de segundo ciclo, Ingeniera en Automtica y Electrnica
Industrial como Sistemas Electrnicos Digitales.

En la asignatura de Sistemas Digitales II se puede utilizar este mdulo para practicar
los temas de interrupciones, as como controles digitales. Para esta asignatura se han
diseado dos prcticas con diferente nivel de dificultad. La primera y ms sencilla de
ellas trata del control de temperatura de un aparato calefactor, como por ejemplo un
horno, basado en la adquisicin del valor de la temperatura de ocho bits mediante
interrupciones.



MEMORIA DESCRIPTIVA
16
La segunda de las prcticas es un poco ms compleja ya que la adquisicin del dato se
realiza con una precisin de diez bits. Adems provoca una interrupcin por cada dato
que enva al microinstructor, de forma que se obtiene un valor de conversin cada dos
interrupciones.

Para la asignatura de Sistemas Electrnicos con Microcontroladores se ha diseado una
prctica con el objetivo de procesar digitalmente seales analgicas y presentar el
resultado en un visualizador de siete segmentos.

Tambin es til este mdulo para realizar prcticas en la asignatura de Sistemas
Electrnicos Digitales, proporcionando al alumno un mejor conocimiento sobre los
temas del programa de la asignatura que tratan sobre los dispositivos microprocesadores
y microcontroladores y, en el tema de problemas y limitaciones del hardware en la
implementacin de sistemas digitales.


5.2.2 Planificacin de la Prctica

5.2.2.1 Prctica de Control de Temperatura con Lectura de Ocho Bits

Con esta prctica el alumno aprender el manejo de las interrupciones y tambin a
procesar el resultado de una conversin analgicodigital para realizar un control
digital.

Para llevar a cabo estos objetivos se ha preparado un guin de prcticas que se
encuentra en el Anexo 3 del captulo de Anexos.

La prctica se ha dividido en tres partes:

a) Estudio Previo de la prctica: con este estudio previo se introducir al alumno al
tema del procesado digital de seales analgicas y a los controladores digitales.
El alumno deber estudiar la informacin tcnica de la placa y responder a un
cuestionario para comprobar sus conocimientos.

b) Adquisicin y Procesado de la Seal: En este apartado el alumno deber adquirir
el valor de la conversin analgicodigital de la temperatura utilizando
interrupciones. Posteriormente, el valor adquirido debe ser procesado para
obtener el valor real de la temperatura.

c) Controlador Digital: El alumno deber escoger entre uno de los siguientes
controles, los cuales estn ordenados de menor a mayor dificultad de
programacin:

- Todo Nada
- Todo Nada con Histresis
- Proporcional (P)
- Proporcional Integral (PI)
- Proporcional, Integral y Derivativo (PID)

MEMORIA DESCRIPTIVA
17
Una vez elegido el control y argumentada su eleccin, deber programarlo para hacer
que el valor de la temperatura medida siga a un valor de consigna dado.

En el diagrama siguiente se puede ver la planificacin de cada una de las tareas
necesarias para la realizacin de esta prctica, considerando que el alumno dispone de
cuatro sesiones de laboratorio de dos horas por sesin.

HORAS TAREAS
1 2 3 4 5 6 7 8
Adquisicin y procesado de la seal
Programacin del control digital


Teniendo en cuenta que el alumno debe realizar el estudio previo de la prctica antes de
la primera sesin y, segn el diagrama anterior, se establece un reparto de horas de tal
forma que: las dos primeras sesiones de prcticas se dedican a la programacin del
microinstructor para adquirir y procesar el resultado de la conversin analgico-digital.
Las dos siguientes sesiones se dedican a la programacin del control digital.


5.2.2.2 Prctica de Control de Temperatura con Lectura de Diez Bits

Con esta prctica el alumno aprender el manejo de interrupciones para la adquisicin
de un dato de diez bits dividido en dos bytes (5 + 5) multiplexados en tiempo. Tambin
aprender a reconstruir y procesar este dato para hacer un control digital de una
magnitud fsica.

Para llevar a cabo estos objetivos se ha preparado un guin de prcticas que se
encuentra en el Anexo 4 del captulo de Anexos.

Esta prctica est dividida en tres partes, que son:

a) Estudio Previo: El alumno har un estudio del sistema mediante la lectura de la
informacin tcnica del mdulo para ver la relacin entre la variable que se
quiere medir y el resultado de la conversin. Tambin responder un
cuestionario para comprobar sus conocimientos adquiridos.

b) Adquisicin y Procesado de la Seal: En este apartado, el alumno deber
adquirir el valor de la conversin analgico digital en dos veces utilizando las
interrupciones. Posteriormente deber procesar el dato adquirido para reconstruir
y obtener el valor real de la temperatura.

d) Controlador Digital: El alumno deber escoger uno de los siguientes controles,
los cuales estn ordenados de menor a mayor dificultad de programacin:

- Todo Nada
- Todo Nada con Histresis
- Proporcional (P)
- Proporcional Integral (PI)
- Proporcional, Integral y Derivativo (PID)
MEMORIA DESCRIPTIVA
18

Una vez elegido segn su criterio uno de los controles, argumentando la eleccin,
deber programarlo para que el valor de la temperatura medida siga a un valor de
consigna dado.

En el diagrama siguiente se puede ver la planificacin de cada una de las tareas
necesarias para la realizacin de esta prctica, considerando que el alumno dispone de
cuatro sesiones de laboratorio de dos horas por sesin.

HORAS TAREAS
1 2 3 4 5 6 7 8
Adquisicin y procesado de la seal
Programacin del control digital


Teniendo en cuenta que el alumno debe realizar el estudio previo de la prctica antes de
la primera sesin y, segn el diagrama anterior, se establece un reparto de horas de tal
forma que: las dos primeras sesiones de prcticas se dedican a la programacin del
microinstructor para adquirir y procesar el resultado de la conversin analgico-digital.
Las dos siguientes sesiones se dedican a la programacin del control digital.


5.2.2.3 Prctica de Conversin A / D y Visualizacin en Display de Siete Segmentos

Esta prctica est enfocada para la asignatura de Sistemas Electrnicos con
Microcontroladores. Tiene como objetivos que el alumno aprenda a programar un
microcontrolador para que realice la conversin analgico digital de una seal.
Aprender a procesar el dato obtenido y a visualizar el resultado en un display de siete
segmentos. Tambin aprender el uso de las interrupciones y a crear tablas de datos.

Para alcanzar estos objetivos se ha preparado un guin de prcticas que se encuentra en
el Anexo 5 del captulo de Anexos.

Esta prctica se ha dividido en tres partes, que son las siguientes:

a) Estudio Previo: El alumno deber estudiar la informacin tcnica de la placa y
responder a un cuestionario para comprobar sus conocimientos.

b) Conversin A / D: En este apartado el alumno deber programar el
microcontrolador de la placa para que realice la conversin analgico digital
de la seal analgica procedente del sensor de temperatura, utilizando las
interrupciones.

c) Procesado y Visualizacin: El alumno deber procesar el dato obtenido de la
conversin para obtener el valor real de la temperatura. Tambin tendr que
visualizar el valor calculado en un display de siete segmentos.

En el diagrama siguiente se puede ver la planificacin de cada una de las tareas
necesarias para la realizacin de esta prctica, considerando que el alumno dispone de
cuatro sesiones de laboratorio de dos horas por sesin.
MEMORIA DESCRIPTIVA
19

HORAS TAREAS
1 2 3 4 5 6 7 8
Conversin Analgico Digital
Procesado y Visualizacin

Teniendo en cuenta que el alumno debe realizar el estudio previo de la prctica antes de
la primera sesin y, segn el diagrama anterior, se establece un reparto de horas de tal
forma que: la primera sesin de prcticas se dedica a la programacin del
microcontrolador para que realice la conversin analgico - digital. El resto de las
sesiones se dedican al procesado digital de la seal analgica y visualizacin del
resultado en el display de siete segmentos.


5.2.3 Descripcin del Hardware


Este mdulo est formado por un elemento sensor de temperatura cuya salida est
acondicionada por un circuito analgico. Posteriormente la salida acondicionada se
muestrea mediante el conversor analgico digital disponible en el microcontrolador
PIC16F873. La seal muestreada se trata mediante un programa que se ejecuta en el
microcontrolador. Mediante uno de los puertos de sus entrada salidas se enva el
valor de la conversin al puerto A de la VIA, para su tratamiento en el programa de
control que se ejecuta en el microinstructor TM-683. Mediante otro puerto del
microcontrolador se visualiza la temperatura medida en un visualizador de siete
segmentos formado por tres mdulos de ctodo comn.

El programa de control genera un valor digital que es convertido, mediante un conversor
digitalanalgico, a una seal analgica. Esta seal es la encargada de excitar un
transistor de potencia, que regula la corriente que pasa por la resistencia de
calentamiento. Y, por consiguiente, controla la potencia disipada por la resistencia cuya
temperatura queremos controlar.

El mdulo dispone de un circuito de programacin en serie del PIC16F873 mediante un
conector de 25 pins conectado al puerto paralelo de un PC.

El esquema elctrico del mdulo de control de temperatura se encuentra en el captulo
de Planos sealado con el nmero 4.

En la Figura 2 se puede ver el diagrama de bloques del mdulo de control de
temperatura.

MEMORIA DESCRIPTIVA
20


Figura 2. Diagrama de Bloques del Mdulo de Control de Temperatura

En la Tabla 6 se muestra una lista de todos los componentes utilizados para el montaje
del mdulo de control de temperatura.

Cdigo Descripcin
CN1 Conector macho 10 pins recto cable plano
CN2 Conector DB25 macho acodado
CN3 Conector macho 50 pins recto cable plano
C1 Condensador 330 pF
C2 Condensador electroltico 470uF
C3 Condensador electroltico 10uF
C4 Condensador electroltico 10uF
C5 Condensador 27pF
C6 Condensador 27pF
C7 Condensador 0.01uF
C8 Condensador 0.1uF
C9 Condensador 0.1uF
DIG2 Dgito LED de 7 segmentos de ctodo comn
DIG1 Dgito LED de 7 segmentos de ctodo comn
DIG0 Dgito LED de 7 segmentos de ctodo comn
D1 Diodo 1N4004
D2 Diodo 1N4004
D3 Diodo 1N4004
D4 Diodo LED 3mm rojo
D5 Diodo LED 3mm rojo
D6 Diodo LED 3mm verde
IC1 Sensor de Temperatura LM35DZ
IC2 Amplificador Operacional OP07
MEMORIA DESCRIPTIVA
21
Cdigo Descripcin
IC3 Amplificador Operacional OP07
IC4 Amplificador Operacional OP07
IC5 Regulador de Tensin L7812
IC6 Regulador de Tensin L7810
IC7 CI 74LS06
IC8 Microcontrolador PIC16F873
IC9 CI 74LS139
IC10 Conversor Digital Analgico DAC08C
IC11 Amplificador Operacional OP07
J1 Puente de configuracin
Q1 Transistor PNP BC557
Q2 Transistor PNP BC557
Q3 Transistor PNP BC557
Q4 Transistor NPN BD139
R1 Resistor 39k 1% W
R2 Resistor 10k 1% W
R3 Resistor 10k 5% W
R4 Resistor 10k 5% W
R5 Resistor 4k7 5% W
R6 Resistor 4k7 5% W
R7 Resistor 4k7 5% W
R8 Resistor 4k7 5% W
R9 Resistor 4k7 5% W
R10 Resistor 4k7 5% W
R11 Resistor 1k 5% W
R12 Resistor 680 5% W
R13 Resistor 10k 5% W
R14 Resistor 10k 5% W
R15 Resistor 5k 5% W
R16 Resistor 5k 5% W
R17 Resistor 5k 5% W
R18 Resistor 100 5% W
R19 Resistor de potencia 10 15 W
R20 Red de 8 resistencias individuales en encapsulado DIL de
270
R21 Resistor 10k 5% W
SW1 Pulsador cuadrado para circuito impreso
SW2 7 Microinterruptores de configuracin
Y1 Cristal de cuarzo de 4MHz

Tabla 6. Componentes del Mdulo de Control de Temperatura


MEMORIA DESCRIPTIVA
22
5.2.3.1. Medicin de Temperatura:

El elemento sensor de temperatura IC1, es un circuito integrado tipo LM35, el cual
dispone de tres terminales y proporciona una salida lineal de tensin de 10mV/C. El
rango de temperatura es de 0C a 100C, aproximadamente. Las c aractersticas tcnicas
de este circuito se pueden ver en la Tabla 7:

Factor de escala lineal +10mV/C
Precisin a 25C 0.5C
Alimentacin 4 a 30V
No linealidad
C
Impedancia de salida baja 0.1 para una carga de 1mA.

Tabla 7. Caractersticas tcnicas del CI. LM35DZ


Tal y como muestra el esquema de bloques de la Figura 3, el sensor de temperatura
reacciona ante el calor emitido por la resistencia de potencia, produciendo una
diferencia de tensin, proporcional a la temperatura de la resistencia, entre su salida y el
nodo de referencia.


Figura 3. Esquema de la medicin de temperatura


La salida del sensor de temperatura se introduce en el circuito de acondicionamiento de
seal por medio del integrado IC2, que es un amplificador operacional tipo OP07 en
configuracin de seguidor de tensin. La salida de esta etapa seguidora se introduce en
IC3, que es un amplificador de ganancia 5, realizado tambin con un amplificador
operacional OP07, en configuracin no inversora. Las resistencias utilizadas son de baja
tolerancia para respetar al mximo la seal del sensor.
Posteriormente, la salida del amplificador de tensin, se introduce en otra etapa
separadora IC4, formada tambin por un amplificador operacional tipo OP07 de la
misma forma que IC2. Por ltimo, la seal de salida se introduce a uno de los canales
analgicos del microcontrolador, concretamente, a la entrada AN0.

MEMORIA DESCRIPTIVA
23
5.2.3.2. Conversin Analgico Digital:

El microcontrolador utilizado en el mdulo, dispone de un conversor analgico-digital
con una resolucin de 10 bits. Este mdulo se ha diseado para medir temperaturas
dentro de un rango de 0 a 100 C. Tal y como se vio en el apartado anterior, el sensor
de temperatura proporciona una salida lineal de tensin de 10mV/C que es
proporcional a la temperatura a la que est sometido. Estos datos se representan en el
Grfico 1, que relaciona la tensin de salida del sensor con la temperatura.



Grfico 1. Tensin de salida del sensor Vs. Temperatura



La salida del sensor de temperatura se acondiciona por medio de un circuito analgico,
consistente en un amplificador de tensin con ganancia cinco. Por lo tanto, la relacin
existente entre la tensin de entrada al conversor analgico-digital y la temperatura es la
que se muestra en el Grafico 2.

MEMORIA DESCRIPTIVA
24

Grafico 2. Tensin de entrada al conversor A/D Vs. Temperatura


El conversor analgico-digital est configurado con unas tensiones de referencia de 0V
y 5V. Con esta configuracin, para una entrada de 0V se obtiene el valor digital
0000000000
2
y, para una entrada de 5V se obtiene el valor digital 1111111111
2
(1023).
El Grfico 3 muestra la relacin entre el valor digital obtenido respecto a la
temperatura.


Grafico 3. Valor Digital Vs. Temperatura

MEMORIA DESCRIPTIVA
25
Como se ha indicado previamente, la conversin analgico digital de la seal se hace
mediante el microcontrolador IC8 del tipo PIC16F873 fabricado por MICROCHIP, el
cual dispone de un conversor analgico digital (ADC) de 10 bits y cinco canales. Este
microcontrolador dispone, adems, de 22 lneas de entrada salida capaces de entregar
una corriente mxima de 25mA por lnea, 7168 bytes de memoria FLASH, 192 bytes de
memoria RAM, 128 bytes de memoria EEPROM, dos mdulos de modulacin de
anchura de pulsos (PWM) con una precisin de 10 bits, un temporizador de 16 bits, dos
temporizadores de 8 bits, un temporizador de perro guardin (WDT), mdulo universal
de transmisin / recepcin sncrona / asncrona de datos va serie (USART), bus IC
(Inter-Integrated Circuit Bus), interfase serie de perifricos (SPI), todo ello en un
encapsulado de 28 pins tipo SP (Lead Skinny PDIP).
El microcontrolador funciona con una seal de reloj de 4MHz procedente del cristal de
cuarzo Y1.

5.2.3.3. Visualizador de 7 Segmentos:

La visualizacin de la temperatura se realiza mediante tres mdulos de siete segmentos
LED de ctodo comn tipo ELS-511IDB de color rojo y frontal negro. Los segmentos
tienen una altura de 7.62mm y estn dispuestos en encapsulados de 10 pines. Estos
displays estn diseados para dar un ptimo contraste entre encendido / apagado. La
versin de ctodo comn dispone de un punto decimal. Las caractersticas tcnicas de
estos mdulos se pueden observar en la Tabla 8:

Tensin directa nominal 1.6V
Nominal 10mA Corriente directa
Mxima 30mA
Intensidad luminosa nominal por dgito 2.5mcd
Tensin inversa mxima 6V
ngulo de visin 75
Potencia mxima disipada por segmento 60mW
Temperatura de funcionamiento De 40C a +85C
Tabla 8. Caractersticas tcnicas del mdulo de 7 segmentos.

Cada uno de los segmentos del display est conectado a una lnea del puerto C del
microcontrolador mediante resistencia limitadoras de corriente. La relacin entre los
segmentos del display y las lneas del puerto C del microcontrolador se encuentra en la
Tabla 9:
SEGMENTO PUERTO C
A RC6
B RC5
C RC4
D RC3
E RC2
F RC1
G RC0
Punto decimal RC7
Tabla 9. Relacin entre los segmentos y sus lneas de datos
MEMORIA DESCRIPTIVA
26

En la figura 4 siguiente se muestra la posicin de cada segmento:


Figura 4. Posicin de los segmentos
en el display

Como se ha indicado antes, los dgitos del display son de ctodo comn. El ctodo de
cada dgito est conectado a una salida del decodificador IC9 del tipo 74LS139. El
circuito IC9 es un decodificador 2 a 4 cuyas entradas son las lneas RA4 y RA5 del PIC.
En la Tabla 10 se detallan los estados de cada una estas seales para activar los digitos.

RA4 RA5 DIGITO
0 0 DIG0
0 1 DIG1
1 0 DIG2
1 1 No utilizado

Tabla 10. Seleccin de los dgitos de 7 segmentos

5.2.3.4. Conversor Digital Analgico:

La conversin digital analgico se realiza mediante el circuito integrado IC10 tipo
DAC08CN. Es un circuito integrado con tecnologa CMOS en un encapsulado de 16
pins tipo DIL. Las caractersticas tcnicas se presentan en la Tabla 11:

Resolucin 8 bits
Datos Paralelo
Tiempo de conversin 1s
Alimentacin 18V (mx)
Error de ganancia 1%
Canales 2

Tabla 11. Caractersticas del conversor DAC08CN

El conversor DAC est polarizado con una corriente de 2mA, resultado de aplicar una
tensin de 10 voltios, procedente de un regulador lineal de tensin IC6 tipo 7810, a una
resistencia de polarizacin de 5k. La salida analgica del conversor se introduce en
IC11 que es un amplificador operacional tipo OP07 realimentado con una resistencia de
5k, para producir una tensin de salida entre 0V y 10V.

MEMORIA DESCRIPTIVA
27
5.2.3.5. Conexin con el Microinstructor TM-683:

En el microinstructor TM-683 estn disponibles dos conectores de aplicacin
(Aplicacin 1 y Aplicacin 2) con dos puertos de 8 bits cada uno (puerto A y puerto B).
En el microcontrolador disponemos de tres puertos de entrada-salida. De estos tres
puertos, slo dos de ellos (puerto B y puerto C) disponen de ocho lneas de datos. El
puerto A del microcontrolador slo dispone de cinco lneas de datos.

El microinstructor TM-683 se conecta al mdulo de aplicacin mediante el conector de
aplicacin CN3. En este conector estn disponibles las seales de la VIA. El puerto A
(PA0 PA7) de la VIA est conectado al puerto B (RB0 RB7) del microcontrolador;
mientras que el puerto B (PB0 PB7) de la VIA est conectado a las entradas digitales
del conversor DAC. Por el puerto A de la VIA, el microcontrolador enva al
microinstructor el valor de la conversin analgico digital de la temperatura.

La seal RA1 del microcontrolador est conectado a un interruptor de configuracin. Si
el estado lgico del interruptor es 1, el microcontrolador enva al microinstructor un
valor de 8 bits correspondientes a los ocho bits ms significativos de la conversin.
Cuando el estado lgico del interruptor es 0, el microcontrolador enva los 10 bits de
la conversin multiplexados en tiempo con el siguiente formato:


MSB LSB
0 0 0 X X X X X
Byte Bajo

MSB LSB
1 0 0 X X X X X
Byte Alto

En ambos casos, el microcontrolador provoca un flanco descendente en su lnea RA3,
que est conectada a la lnea CA1 del microinstructor, indicando que en el puerto A hay
un valor de conversin.

El valor de la conversin, se enva al puerto A de la VIA porque en el conector de
aplicacin slo estn disponibles las seales de control del puerto A. Estas seales de
control son necesarias para realizar una peticin de interrupcin y para el
reconocimiento de la interrupcin por parte del microcontrolador. Programando
debidamente el microinstructor, un flanco de bajada en la lnea CA1 sera motivo de
interrupcin externa.

La lnea RA2 del microcontrolador est conectada a la lnea CA2 de la VIA. El
programa de control del microinstructor debe programar los registros de la VIA para
que al leer el dato de la conversin del puerto A, la lnea CA2 baje a nivel lgico 0,
hecho que el microcontrolador interpreta como que se ha recibido el dato de la
conversin y puede enviar el siguiente.


MEMORIA DESCRIPTIVA
28
En el Grfico 4 se representa la variacin de las lneas de datos y control (CA1 y CA2)
cuando el microcontrolador enva un dato a la VIA del microinstructor.


Grafico 4. Comportamiento de las lneas que intervienen en el envo de un dato a la VIA.


5.2.3.6. Mdulo de Calor:

La salida procedente del conversor DAC junto con el amplificador operacional, se
conectan a la base del transistor de potencia Q4 tipo DB139. El colector del transistor
est conectado a la tensin de alimentacin de la fuente de +15V y, el emisor est
conectado a la resistencia de potencia R19 de 10 y 15W. Segn pase ms o menos
corriente por el transistor, el conjunto transistor resistencia de potencia se calentar
ms o menos. Esta corriente se controla con la tensin de salida del DAC. Hay que tener
en cuenta a la hora de realizar el control digital de la temperatura, que la resistencia de
potencia presenta una gran inercia, es decir, la variacin de la temperatura no es
instantnea, sino que tarda un tiempo en llegar a la temperatura deseada. En el control
digital de la temperatura no slo intervienen las caractersticas elctricas del resistor de
potencia, sino que tambin influyen considerablemente otros aspectos como la
temperatura ambiental que no podemos controlar.

5.2.3.7. Programador PI C16F873:

El circuito de programacin es muy sencillo pero mantiene un nivel de prestaciones alto
y cumple las especificaciones de MICROCHIP como programador ICSP (In Circuit
Serial Programmer) de desarrollo.

Se conecta al puerto paralelo del PC mediante el conector CN2 y necesita, adems, una
alimentacin continua comprendida entre 15V y 30V. El consumo de corriente del
programador es inferior a 100mA.

Este montaje es capaz de leer, verificar, programar y comparar los PIC sin ninguna
restriccin, lo mismo que puede leer y programar sus fusibles de configuracin.

Los microcontroladores PIC de MICROCHIP estn todos provistos de memoria de
acceso serie. Tres de las patillas del encapsulado cambian momentneamente de funcin
durante la fase de programacin para dar acceso a la memoria de programa interna; este
cambio se desencadena simplemente aplicando una tensin 13.8V (tensin alta de
programacin) en la patilla VPP.

Aunque las memorias PIC se programan en serie, el programador se conecta al puerto
paralelo del PC. En efecto, por una parte este puerto se puede controlar muy fcilmente
por software y, por otra parte, suministra niveles TTL directamente utilizables. Adems,
MEMORIA DESCRIPTIVA
29
debemos disponer de algunas lneas de control para conmutar las diversas
alimentaciones del microcontrolador en el curso de la programacin.

Las seales del puerto paralelo son seales TTL bastante deterioradas por el cable de
conexin. Por este motivo se restauran por medio de los inversores contenidos en el
circuito IC7 tipo 74LS06. Este circuito dispone de salidas de colector abierto, lo cual
permite controlar fcilmente los transistores Q1, Q2 y Q3. Q2 y Q3 permiten aplicar la
tensin alta de programacin VPP a las patillas adecuadas. El transistor Q1 gobierna la
tensin normal de alimentacin VDD y permite no alimentar el circuito a programar
ms que cuando es verdaderamente necesario acceder a l.


Figura 5. Esquema elctrico del programador del PIC16F873

Para indicar la aplicacin o no de estas tensiones, se utilizan dos LED rojos, D4 y D5,
gobernados por las dos tensiones VPP. En cuanto al diodo D6, se enciende simplemente
cuando el programador est bajo tensin, con el fin de sealar el buen funcionamiento
de la alimentacin.

Los datos a programar en el circuito transitan por la puerta IC7a, pasando por IC7b en
caso de una segunda lectura del circuito. En cuanto al reloj de programacin pasa por
IC7c.

El programador se alimenta mediante la fuente de alimentacin MM-600, comn a
todos los mdulos de aplicacin del microinstructor TM-683. La salida de +15V pasa a
travs del regulador lineal de tensin IC5 tipo 7812, el cual tiene en su patilla comn
tres diodos (D1, D2, D3, tipo 1N4004) conectados en serie que elevan la tensin de
salida a 13.8V.

El programador dispone tambin de 5 microinterruptores disponibles en SW2 cuya
funcin es la de dejar las seales del programador en circuito abierto en caso de que no
se tenga que programar y se est en fase de ejecucin.
MEMORIA DESCRIPTIVA
30

En la Figura 6 se puede ver la posicin de los siete microinterruptores disponibles en
SW2 cuando se est en fase de grabacin del PIC16F873 y cuando se est ejecutando el
programa.

Cuando se est en fase de programacin (ver Figura 6a), cerramos los interruptores 1 a
5 de forma que por el primer microinterruptor se gobierna la tensin alta de
programacin, por el tercer microinterruptor se gobierna la tensin de alimentacin del
chip, por el cuarto transita el reloj de programacin; y por el quinto transitan los datos a
programar. Los microinterruptores 6 y 7 deben estar abiertos ya que el 6 gobierna la
tensin del chip en la fase de ejecucin y el microinterruptor 7 indica la longitud del
dato de conversin A / D que se enva al microinstructor TM-683.


Figura 6. Posicin de los microinterruptores para (a) programacin,
o (b) ejecucin

5.2.3.7.1 Software de Programacin del PI C16F873

Numerosos programas disponibles en Internet pueden utilizarse con el programador que
incorpora el mdulo de Control de Temperatura. Se ha elegido el programa P16Pro de
Bojan Dobaj. Este software se adapta perfectamente al montaje del programador.

Antes de ejecutar el programa se deben poner los interruptores de configuracin tal y
como indica la Figura 6a. Con el mdulo apagado, conectar el programador al puerto
paralelo del PC.

Una vez alimentado el mdulo, comprobar que el LED verde est encendido. Los LEDs
rojos pueden estar encendidos o apagados segn el estado del puerto paralelo del PC.

Ejecutar entonces el programa P16PRO. Tratndose de un programa DOS se ejecuta
bajo MS-DOS, en modo MS-DOS si se trabaja con Windows 9x.

Cualquiera que sea el modo de ejecucin se accede a una pantalla principal. En la parte
superior izquierda de la pantalla se encuentran accesibles dos mens desplegables
pulsando la tecla Alt. Estos mens dan acceso a todo lo concerniente a los ficheros
(men FILE) y a la configuracin hardware (men SETTINGS).

La primera operacin a realizar consiste en configurar los parmetros del programador.
Para esto, vaya al men Settings y sitese en Other por medio de las teclas de
desplazamiento del cursor. Entonces puede seleccionar el puerto paralelo al cual se
MEMORIA DESCRIPTIVA
31
encuentra conectado el mdulo. Una vez hecho esto ir al men Settings y situarse en
Hardware.

Para que el programador funcione se debe configurar de la siguiente forma:

OutData D0 Neg
Clock D1 Neg
Vdd D2 -
Vpp D3 -
Vpp1 D4 -
Data In ACK Neg

A continuacin ir al men Settings y situarse en Device. Aparece una pantalla en la que
debemos escribir el nmero 9 (PIC16F873) y pulsar ENTER.

Entonces se debe elegir el fichero con extensin .HEX a programar en el men FILE-
>Open Program. Para programar el microcontrolador basta con pulsar la tecla F4.


5.2.4 Descripcin del Software

Para realizar las prcticas de la asignatura de Sistemas Digitales II, es necesario
programar el microcontrolador PIC16F873 de la placa con el programa que se encuentra
en el Anexo 7 del captulo de Anexos. A continuacin se describe el funcionamiento de
dicho programa.

El cdigo del programa est dividido en dos archivos:

a) Fichero TEMP.ASM: contiene el cdigo principal del programa

b) Fichero TEMP.INC: contiene la implementacin de las funciones utilizadas.

Cuando el programa empieza a ejecutarse, inicializa todas las posiciones de memoria
que se usan como variables. Seguidamente, se configuran los puertos de entrada salida
del microcontrolador, el conversor analgico digital y las interrupciones.

Cuando el conversor analgico digital termina una conversin, provoca una
interrupcin al microcontrolador, cuya rutina de servicio guarda los valores de la
conversin en la memoria para ser procesados posteriormente por las funciones del
programa.

Mientras no llega ninguna interrupcin, el microcontrolador decodifica el resultado de
la conversin analgico digital guardado en memoria y enva el resultado de la
conversin al microinstructor provocndole una interrupcin. Seguidamente, convierte
el resultado de la decodificacin en tres dgitos BCD, los cuales son convertidos de
nuevo mediante una tabla para ser visualizados en el display de siete segmentos.
A continuacin, se describe el funcionamiento de las dos funciones ms importantes
utilizadas.

MEMORIA DESCRIPTIVA
32
La primera de ellas (DEC_ADRES) se encarga de decodificar el resultado de la
conversin analgico digital. Para ello divide el valor de la conversin por diez. Esto
es as porque el margen de temperaturas que queremos medir es de 0C a 100C. Para
este margen, el sensor de temperatura proporciona una salida de entre 0V y 1V.

Como el amplificador conectado a la salida del sensor tiene ganancia 5, en la entrada
analgica del microcontrolador tendremos un margen de 0V a 5V para un margen de
temperaturas de 0C a 100C.

La precisin del conversor analgico digital del microcontrolador PIC16F873 es de
diez bits, por lo tanto, tenemos 1024 posibles estados. Si programamos el
microcontrolador para que el conversor analgico digital tenga un margen de tensin
de referencia entre 0V y 5V, obtendremos una precisin en la conversin analgico
digital de:

estado
C
estado
C
estados
C

1 . 0

097656 . 0
1024
100
= (1)

Por lo tanto, la expresin que relaciona la temperatura real con el resultado de la
conversin es:

10
ADRES
T
real
= (2)

Donde ADRES es el resultado de la conversin analgico digital.

Entonces, para obtener el valor de la temperatura, basta con dividir el resultado de la
conversin analgico digital por diez.


La siguiente funcin (ADRES_VIA) se encarga de enviar el resultado de la conversin
por la VIA del microinstructor provocndole una interrupcin.

Si el interruptor nmero siete de configuracin de la placa est abierto (estado lgico
1) entonces, colocar en el puerto de entrada salida del microcontrolador los ocho
bits ms significativos de la conversin, despreciando los dos bits menos significativos
y, provocando posteriormente una interrupcin al microinstructor con un flanco
descendente en la lnea CA1.

Finalmente, si por el contrario el interruptor de configuracin de la placa est cerrado
(estado lgico 0), enviar los diez bits de la conversin analgico digital en dos
paquetes de cinco bits. Primero enviar los cinco bits menos significativos seguidos de
una interrupcin. Cuando el microinstructor acepte la interrupcin y lea el dato que se le
ha enviado (lnea CA2 = 0), el microcontrolador enviar el segundo paquete con los
cinco bits ms significativos provocando otra interrupcin.


MEMORIA DESCRIPTIVA
33
En el captulo de Planos, se encuentra, adems del esquema elctrico del mdulo, un
plano con la situacin de los componentes en el circuito impreso (Plano N 5) y los
planos con los fotolitos del circuito impreso de las caras superior e inferior (Planos N 6
y N 7, respectivamente).


5.3 Prctica de Controlador de Teclado

5.3.1 Objetivo Didctico del mdulo

El objetivo de esta prctica es dar una visin prctica al alumno en el tema de las
comunicaciones serie, coincidiendo con el Captulo 5 Entrada / Salida del programa
de la asignatura de Sistemas Digitales II. Y ms concretamente, estudiando uno de los
protocolos ms utilizados en la comunicacin serie, el RS232.

Con esta prctica el alumno aprender cuales son los parmetros que definen un
protocolo. Adems, aprender tambin a controlar un dispositivo digital de entrada de
acceso programado, el teclado.


5.3.2 Planificacin de la Prctica

Para llevar a cabo los objetivos descritos en el apartado anterior, se ha diseado un
guin de prcticas para el alumno que se encuentra en el Anexo 8 del captulo Anexos.
La prctica se ha dividido en tres partes con el fin de guiar al alumno en todo el proceso.
Las partes de las que se compone la prctica son las siguientes:

a) Estudio Previo. Consta de una serie de recomendaciones que debe seguir el
alumno para realizar con xito la prctica. Tambin dispone de una serie de
preguntas a las que debe responder antes de la realizacin de la prctica.

b) Montaje y Verificacin del Circuito. En este apartado el alumno montar un
sencillo circuito de adaptacin de seales para conectar el teclado de un
ordenador personal (PC) al conector del Canal A del microinstructor TM-
683.

c) Programacin del Controlador de Teclado. El alumno deber crear un
programa en ensamblador que sea capaz de identificar las teclas pulsadas en
el teclado y presentarlas en la pantalla del ordenador.

En el diagrama siguiente se puede ver la planificacin de cada una de las tareas
necesarias para la realizacin de esta prctica, considerando que el alumno dispone de
cuatro sesiones de laboratorio de dos horas por sesin.

HORAS TAREAS
1 2 3 4 5 6 7 8
Montaje y Verificacin del Circuito
Programacin del Controlador de Teclado

MEMORIA DESCRIPTIVA
34
Teniendo en cuenta que el alumno debe realizar el estudio previo de la prctica antes de
la primera sesin y, segn el diagrama anterior, se establece un reparto de horas de tal
forma que: la primera sesin de prcticas se dedica al montaje del circuito y a su
posterior verificacin. El resto de las sesiones se dedican a la programacin del
controlador del teclado.


5.3.3 Descripcin del Hardware

El esquema elctrico del circuito que tiene que montar el alumno se encuentra en el
Plano N 8 del captulo de Planos. En l se pueden observar las siguientes partes:

En primer lugar, un conector tipo DIN hembra de cinco contactos para la conexin del
teclado. En la Figura 7 se puede observar el aspecto de este conector.


Figura 7. Conector DIN 5

En la Tabla 12 se explican las funciones de cada uno de los contactos del conector DIN
de cinco contactos.

Pin Seal
1 Reloj
2 Datos
3 Reset
4 Masa
5 Vcc (+5V)

Tabla 12. Seales del conector
DIN 5

Por los contactos 1 y 2 circulan las seales de reloj y datos respectivamente. Estas dos
lneas son bidireccionales de colector abierto y niveles TTL. En nuestro caso la
comunicacin ser asncrona por lo que la lnea de reloj no se conectar.
Por la lnea de datos, el teclado enva los cdigos de exploracin de las teclas pulsadas
con el siguiente formato:

- Un bit de inicio
- Ocho bits de datos correspondientes al cdigo de exploracin de la tecla pulsada
empezando por el bit menos significativo.
- Un bit de paridad impar
- Un bit de parada.

La lnea nmero tres corresponde a la seal de RESET, la cual tampoco conectaremos.
Finalmente las lneas cuatro y cinco son para la conexin del nodo de referencia y
alimentacin, respectivamente.
MEMORIA DESCRIPTIVA
35

En segundo lugar, tenemos un conector hembra de 25 contactos tipo DB25 para la
conexin del circuito de adaptacin al conector del Canal A del microinstructor.

El significado de cada uno de los contactos del conector se encuentra en la Tabla 13.

Pin Seal Canal A
1 GND
2 TxA
3 RxA
4 RTSA
5 CTSA
6 DSRA
7 GND
8 CDA
9 19 No conectadas
20 DTRA
21 25 No conectadas

Tabla 13. Seales del conector serie DB25

De los veinticinco contactos disponibles, slo se utilizan dos; el contacto nmero tres
para la recepcin de datos del teclado y, el contacto nmero siete para la conexin al
nodo de referencia.


Por ltimo, tenemos un circuito integrado tipo MAX232 cuya funcin es la de adaptar la
seal de datos enviada por el teclado con niveles TTL, al nivel de tensin que define el
protocolo RS-232, que es el usado por el micoinstructor para comunicaciones serie. Este
protocolo define los niveles de tensiones descritos en la Tabla 14.


0 Lgico +5V a +15V 0 Lgico +3V a +25V
1 Lgico -5V a -15V 1 Lgico -3V a 25V
(a) (b)

Tabla 14. Niveles lgicos RS-232, (a) para las salidas, (b) para las entradas


El circuito integrado MAX232 se caracteriza por tener dos transmisores y dos
receptores, se alimenta con una tensin de +5V y necesita cuatro condensadores
electrolticos de un microfaradio.
La solucin de la prctica del Controlador de Teclado se encuentra en el Anexo 9 del
captulo de Anexos.

MEMORIA DESCRIPTIVA
36
5.3.3.1. Funcionamiento del Teclado

A continuacin se explica el funcionamiento del teclado utilizado para la realizacin de
este mdulo. Los cdigos generados por el teclado pueden variar en funcin de la clase
de teclado. Slo se consideran para esta prctica la utilizacin de las teclas de caracteres
y nmeros del teclado normal. No se ha considerado la pulsacin de las teclas de
funcin, las teclas extendidas ni las teclas del teclado numrico.

Cuando se pulsa una tecla, el teclado enva un cdigo que identifica la tecla pulsada,
estos cdigos se conocen con el nombre de cdigos de exploracin del teclado. Al soltar
la tecla, el teclado enva dos cdigos: el primer cdigo, llamado cdigo BREAK, es el
0xF0. El segundo cdigo es el mismo cdigo de exploracin que envi al pulsar la tecla.
Por ejemplo, cuando se pulsa la tecla de la letra R, el teclado enva el cdigo 0x2D.
Al soltar la tecla, enva los cdigos 0xF0 seguido del cdigo 0x2D.

5.3.3.1.1. Cdigos de Rastreo del Teclado

En la Tabla 15 se presentan los cdigos de rastreo de las teclas correspondientes al
teclado utilizado. Como se ha indicado anteriormente, estos cdigos pueden variar
segn el teclado utilizado.

Cdigo Cdigo Cdigo
Hex. Dec.
Tecla
Hex. Dec.
Tecla
Hex. Dec.
Tecla
0D 13 TAB 2B 43 F 42 66 K
15 21 Q 2C 44 T 43 67 I
16 22 1 2D 45 R 44 68 O
1A 26 Z 2E 46 5 45 69 0
1B 27 S 31 49 N 46 70 9
1C 28 A 32 50 B 49 73 .:
1D 29 W 33 51 H 4A 74 -_
1E 30 2 34 52 G 4B 75 L
21 33 C 35 53 Y 4C 76
22 34 X 36 54 6 4D 77 P
23 35 D 3 58 M 4E 78 ?
24 36 E 3B 59 J 5A 90 INTRO
25 37 4 3C 60 U 5D 93
26 38 3 3D 61 7 76 118 ESCAPE
29 41 ESPACIO 3E 62 8
2A 42 V 41 65 ,;

Tabla 15. Cdigos de Exploracin del Teclado.
MEMORIA DESCRIPTIVA
37
5.3.3.2 Programacin de la DUART

En este apartado se explica como debe ser programado el chip de comunicaciones serie
que lleva incorporado el microinstructor, DUART (Dual Universal Asynchronous
Receiver Transmitter). De la misma forma que se indic en el apartado anterior respecto
de los cdigos de exploracin del teclado, la programacin de la DUART puede variar
segn el teclado, ya que la velocidad de transmisin de los datos puede ser diferente.

Para que el microinstructor pueda recibir los cdigos de exploracin de las teclas
pulsadas, el canal A de la DUART debe ser programado de la siguiente forma:

- Paridad Impar
- Ocho bits por carcter
- Un bit de parada
- Control de RxRTS = NO
- Seleccin de RxINT por RxRDY
- Modo de error por carcter
- Modo de canal normal
- Control de RxRTS = NO
- Control de Tx por CTS = NO
- Modo y reloj del Timer = TIMER (X1/CLK)
- Interrupciones generadas por cambio en IP3, IP2, IP1, IP0 = NO
- Valor de inicio del Timer = 0x0009
- Velocidad de recepcin por Timer
- Interrupciones habilitadas: RxRDYA



6. Resumen del Presupuesto

El precio total de ejecucin de este proyecto de elaboracin de mdulos didcticos
basados en microprocesadores es de CUATRO MIL OCHOCIENTOS SIETE EUROS
con NOVENTA Y SIETE CNTIMOS.





Tarragona, 30 de agosto de 2002








Antonio Miguel Zaplana Alcaraz
Ingeniero Tcnico.






PLANOS





PRESUPUESTO
PRESUPUESTO
40
PRESUPUESTO

1 Mdulo Control LCD

1.1 Cuadro de Precios



N Descripcin Precio
1 Display, LCD, inteligente, alfanumrico,
matriz de puntos, PowerTip 16x2 TN
14,60 Catorce euros con sesenta
cntimos
2 Placa de circuito impreso, fibra de vidrio 3,00 Tres euros
3 Conector macho recto 50 pins 0,76 Setenta y seis cntimos de
euro
4 Conector macho recto 10 pins 0,20 Veinte cntimos de euro
5 Conector macho recto 16 pins 0,35 Treinta y cinco cntimos
de euro
6 Circuito integrado SN 74HC245 0,31 Treinta y un cntimos de
euro
7 Circuito integrado 74HC04N 0,36 Treinta y seis cntimos de
euro
8 Zcalo para circuito integrado 14 pins 0,08 Ocho cntimos de euro
9 Zcalo para circuito integrado 20 pins 0,14 Catorce cntimos de euro
10 Pulsador para PCB plstico cuadrado 0,47 Cuarenta y siete cntimos
de euro
11 Condensador de polister 220nF 100V 0,22 Veintids cntimos de
euro
12 Resistencia de carbn 1/4W 5% 0,02 Dos cntimos de euro
13 Conector hembra cable plano 16 pins 0,37 Treinta y siete cntimos de
euro
14 Patas de soporte de circuito impreso, latn,
roscado con tornillo prisionero
0,15 Quince cntimos de euro
15 Potencimetro de 1 vuelta vertical 10k 0,27 Veintisiete cntimos de
euro
16 Mano de obra diseo 15,02/h Quince euros con 2
cntimos de euro la hora
17 Mano de obra fabricacin y montaje 12,00/h Doce euros la hora

PRESUPUESTO
41

1.2 Aplicacin de Precios


N Descripcin Cantidad Precio Total
1 Display, LCD, inteligente, alfanumrico, matriz de
puntos, PowerTip 16x2 TN
1 14,60 14,60
2 Placa de circuito impreso, fibra de vidrio 1 3,00 3,00
3 Conector macho recto 50 pins 1 0,76 0,76
4 Conector macho recto 10 pins 1 0,20 0,20
5 Conector macho recto 16 pins 2 0,35 0,70
6 Circuito integrado SN 74HC245 1 0,31 0,31
7 Circuito integrado 74HC04N 1 0,36 0,36
8 Zcalo para circuito integrado 14 pins 1 0,08 0,08
9 Zcalo para circuito integrado 20 pins 1 0,14 0,14
10 Pulsador para PCB plstico cuadrado 5 0,47 2,35
11 Condensador de polister 220nF 100V 5 0,22 1,10
12 Resistencia de carbn 1/4W 5% 10 0,02 0,20
13 Conector hembra cable plano 16 pins 2 0,37 0,74
14 Patas de soporte de circuito impreso, latn, roscado
con tornillo prisionero
4 0,15 0,60
15 Potencimetro de 1 vuelta vertical 10k 1 0,27 0,27
16 Mano de obra diseo 48 h 15,02/h 720,96
17 Mano de obra fabricacin y montaje 4 h 12,00/h 48,00
TOTAL: 794,37


1.3 Resumen del Presupuesto

El presupuesto de ejecucin material del mdulo de control LCD asciende a la cantidad
de SETECIENTOS NOVENTA Y CUATRO EUROS con TREINTA Y SIETE
CNTIMOS.

Presupuesto de Ejecucin Material 794,37
Gastos Generales (13%) 103,27
Presupuesto de Ejecucin por Contrato 897,64
I.V.A. (16%) 143,62
TOTAL: 1041,26

El presupuesto final del mdulo de control LCD asciende a la cantidad de MIL
CUARENTA Y UN EUROS con VEINTISIS CNTIMOS.

PRESUPUESTO
42
2 Mdulo Control de Temperatura

2.1 Cuadro de Precios


N Descripcin Precio
1 Conector macho recto 50 pins 0,76 Setenta y seis cntimos de
euro
2 Conector macho recto 10 pins 0,20 Veinte cntimos de euro
3 Conector macho DB25 acodado 2,00 Dos euros
4 Condensador de disco 330pF 500V 0,11 Once cntimos de euro
5 Condensador electroltico radial 470F
63V
0,61 Sesenta y un cntimos de euro
6 Condensador electroltico radial 10F
35V
0,14 Catorce cntimos de euro
7 Condensador de disco 27pF 500V 0,14 Catorce cntimos de euro
8 Condensador MKT 0,01F 100V 0,08 Ocho cntimos de euro
9 Condensador MKT 0,1F 100V 0,13 Trece cntimos de euro
10 Dgito LED 0,5 7 segmentos con punto
decimal, ctodo comn
1,05 Un euro con cinco cntimos
de euro
11 Diodo 1N4004 0,02 Dos cntimos de euro
12 Diodo LED rojo 3mm 0,06 Seis cntimos de euro
13 Diodo LED verde 3mm 0,08 Ocho cntimos de euro
14 Circuito Integrado sensor de temperatura
LM35DZ
3,86 Tres euros con ochenta y seis
cntimos de euro
15 Circuito Integrado OP07C 0,61 Sesenta y un cntimos de euro
16 Circuito Integrado L7812CV 0,27 Veintisiete cntimos de euro
17 Circuito Integrado L7810CV 0,47 Cuarenta y siete cntimos de
euro
18 Circuito Integrado 74LS06 0,39 Treinta y nueve cntimos de
euro
19 Circuito Integrado PIC16F873-04/SP 7,33 Siete euros con treinta y tres
cntimos de euro
20 Circuito Integrado 74LS139 0,30 Treinta cntimos de euro
21 Circuito Integrado DAC08C 2,31 Dos euros con treinta y un
cntimos de euro
22 Puente de configuracin 0,01 Un cntimo de euro
23 Transistor PNP BC557 0,06 Seis cntimos de euro
24 Transistor NPN BD139 0,20 Veinte cntimos de euro
25 Resistencia de pelcula metlica 1/4W
1%
0,08 Ocho cntimos de euro
26 Resistencia de pelcula de carbn 1/4W
5%
0,02 Dos cntimos de euro
27 Resistencia bobinada axial BC 15W dh
10R
0,80 Ochenta cntimos de euro
28 Red de ocho resistencias individuales en
encapsulado DIL
0,90 Noventa cntimos de euro
29 Pulsador para PCB plstico cuadrado 0,47 Cuarenta y siete cntimos de
euro
PRESUPUESTO
43
N Descripcin Precio
30 Conmutador SWITCH 7 contactos 1,17 Un euro con diecisiete
cntimos de euro
31 Cristal de cuarzo FY 4.0000MHz 0,47 Cuarenta y siete cntimos de
euro
32 Zcalo de circuito integrado 8 pins 0,04 Cuatro cntimos de euro
33 Zcalo de circuito integrado 14 pins 0,08 Ocho cntimos de euro
34 Zcalo de circuito integrado 16 pins 0,10 Diez cntimos de euro
35 Zcalo de circuito integrado 28 pins 0,27 Veintisiete cntimos de euro
36 Placa de circuito impreso fibra de vidrio 3,00 Tres euros
37 Mano de obra diseo 15,02/h Quince euros con 2 cntimos
de euro la hora
38 Mano de obra fabricacin y montaje 12,00/h Doce euros la hora


2.2 Aplicacin de Precios


N Descripcin Cantidad Precio Total
1 Conector macho recto 50 pins 1 0,76 0,76
2 Conector macho recto 10 pins 1 0,20 0,20
3 Conector macho DB25 acodado 1 2,00 2,00
4 Condensador de disco 330pF 500V 1 0,11 0,11
5 Condensador electroltico radial 470F 63V 1 0,61 0,61
6 Condensador electroltico radial 10F 35V 2 0,14 0,28
7 Condensador de disco 27pF 500V 2 0,14 0,28
8 Condensador MKT 0,01F 100V 1 0,08 0,08
9 Condensador MKT 0,1F 100V 2 0,13 0,26
10 Dgito LED 0,5 7 segmentos con punto decimal,
ctodo comn
3 1,05 3,15
11 Diodo 1N4004 3 0,02 0,06
12 Diodo LED rojo 3mm 2 0,06 0,12
13 Diodo LED verde 3mm 1 0,08 0,08
14 Circuito Integrado sensor de temperatura
LM35DZ
1 3,86 3,86
15 Circuito Integrado OP07C 4 0,61 2,44
16 Circuito Integrado L7812CV 1 0,27 0,27
17 Circuito Integrado L7810CV 1 0,47 0,47
18 Circuito Integrado 74LS06 1 0,39 0,39
19 Circuito Integrado PIC16F873-04/SP 1 7,33 7,33
20 Circuito Integrado 74LS139 1 0,30 0,30
21 Circuito Integrado DAC08C 1 2,31 2,31
22 Puente de configuracin 1 0,01 0,01
23 Transistor PNP BC557 3 0,06 0,18
24 Transistor NPN BD139 1 0,20 0,20
25 Resistencia de pelcula metlica 1/4W 1% 2 0,08 0,16
26 Resistencia de pelcula de carbn 1/4W 5% 17 0,02 0,34
27 Resistencia bobinada axial BC 15W dh 10R 1 0,80 0,80
PRESUPUESTO
44
N Descripcin Cantidad Precio Total
28 Red de ocho resistencias individuales en
encapsulado DIL
1 0,90 0,90
29 Pulsador para PCB plstico cuadrado 1 0,47 0,47
30 Conmutador SWITCH 7 contactos 1 1,17 1,17
31 Cristal de cuarzo FY 4.0000MHz 1 0,47 0,47
32 Zcalo de circuito integrado 8 pins 4 0,04 0,16
33 Zcalo de circuito integrado 14 pins 1 0,08 0,08
34 Zcalo de circuito integrado 16 pins 2 0,10 0,20
35 Zcalo de circuito integrado 28 pins 1 0,27 0,27
36 Placa de circuito impreso fibra de vidrio 1 3,00 3,00
37 Mano de obra diseo 150 h 15,02/h 2253,00
38 Mano de obra fabricacin y montaje 10 h 12,00/h 120,00
TOTAL: 2406,77


2.3 Resumen del Presupuesto

El presupuesto de ejecucin material del mdulo de control de temperatura asciende a la
cantidad de TREINTA Y TRES EUROS con SETENTA Y SIETE CNTIMOS.

Presupuesto de Ejecucin Material 2046,77
Gastos Generales (13%) 312,78
Presupuesto de Ejecucin por Contrato 2719,55
I.V.A. (16%) 435,13
TOTAL: 3154,68

El presupuesto final del mdulo de control de temperatura asciende a la cantidad de
TRES MIL CIENTO CINCUENTA Y CUATRO EUROS con SESENTA Y OCHO
CNTIMOS.

PRESUPUESTO
45
3 Prctica Controlador de Teclado
1


3.1 Cuadro de Precios


N Descripcin Precio
1 Placa de montaje de circuitos por
insercin (protoboard)
12,00 Doce euros
2 Conector hembra DB25 areo 1,50 Un euro con cincuenta cntimos
de euro
3 Conector DIN 5 contactos hembra
chasis
0,91 Noventa y un cntimos de euro
4 Condensador electroltico radial 1uF
63V
0,05 Cinco cntimos de euro
5 Circuito Integrado MAX232 1,70 Un euro con setenta cntimos de
euro
6 Mano de obra diseo 15,02/h Quince euros con dos cntimos
de euro la hora

3.2 Aplicacin de Precios


N Descripcin Cantidad Precio Total
1 Placa de montaje de circuitos por insercin
(protoboard)
1 12,00 12,00
2 Conector hembra DB25 areo 1 1,50 1,50
3 Conector DIN 5 contactos hembra chasis 1 0,91 0,91
4 Condensador electroltico radial 1uF 63V 4 0,05 0,20
5 Circuito Integrado MAX232 1 1,70 1,70
6 Mano de obra diseo 30 h 15,02/h 450,60
TOTAL: 466,91



1
No se ha incluido en el presupuesto el teclado necesario para realizar la prctica, ya que se le
proporcionar al alumno uno de los teclados del almancn procedentes de la renovacin de equipos
informticos.
PRESUPUESTO
46
3.3 Resumen del Presupuesto

El presupuesto de ejecucin material del mdulo del controlador de teclado asciende a
la cantidad de CUATROCIENTOS SESENTA Y SEIS EUROS con NOVENTA Y UN
CNTIMOS.

Presupuesto de Ejecucin Material 466,91
Gastos Generales (13%) 60,70
Presupuesto de Ejecucin por Contrato 527,61
I.V.A. (16%) 84,42
TOTAL: 612,03

El presupuesto final del mdulo del controlador de teclado asciende a la cantidad de
SEISCIENTOS DOCE EUROS con TRES CNTIMOS.


4 Resumen Total del Presupuesto
2


Mdulo Precio
Mdulo de Control LCD 1041,26
Mdulo de Control de Temperatura 3154,68
Mdulo de Controlador de Teclado 612,03
TOTAL: 4807,97

El presupuesto total para la elaboracin de todos los mdulos descritos en este proyecto
con ttulo Elaboracin de Mdulos Didcticos Basados en Microprocesadores es de
CUATRO MIL OCHOCIENTOS SIETE EUROS con NOVENTA Y SIETE
CNTIMOS.



Tarragona, 30 de agosto de 2002








Antonio Miguel Zaplana Alcaraz
Ingeniero Tcnico.


2
Los precios de este presupuesto estn calculados para el montaje de una unidad.





ANEXOS
ANEXO 1: MDULO DE CONTROL DE UNA LCD
INFORMACIN PARA EL ALUMNO
48
Anexo 1:
Mdulo Control LCD
(Informacin para el alumno)

1 Enunciado de la Prctica:
El objetivo de la prctica es controlar un display LCD de cristal lquido y visualizar
mensajes en l, para ello se propone simular el marcador de un estadio de ftbol, tal y
como se muestra en la Figura 1 :


M a n c h e s t e r 0 0
L i v e r p o o l 0 0

Figura 1. Marcador de un Estadio de Ftbol

Para conseguir este propsito vamos a dividir la prctica en tres partes. La primera
consiste en realizar un estudio previo estudiando las hojas de caractersticas de la LCD y
respondiendo las preguntas del cuestionario. La segunda parte trata de crear unas
funciones de librera para el manejo de la LCD. Finalmente, se crear la aplicacin del
marcador de un estadio de ftbol utilizando las funciones de la librera creada.

2 Informacin Tcnica:

Para entender cul es el funcionamiento del display LCD es muy recomendable leer las
hojas de caractersticas, donde se detallan cada una de las funciones y el procedimiento
de uso de la LCD. A continuacin se presenta un resumen del funcionamiento de dicho
display, as como informacin tcnica acerca del mdulo que se va a usar.

Una LCD estndar es una pantalla de cristal lquido con una matriz de 16, 32, 40 u 80
caracteres de 5x7 pxeles, contando, adems, con un microcontrolador (generalmente el
HITACHI HD44780) que lo gobierna. Normalmente cada lnea contiene entre 8 y 80
caracteres y, suelen ser capaces de mostrar caracteres ASCII, japoneses, griegos ...; o
smbolos matemticos. Su bus de conexin puede ser de 4 u 8 bits.

El consumo de este tipo de mdulos es muy bajo (7,5mW) y, gracias a su sencillo
manejo, son ideales para dispositivos que requieren una visualizacin pequea o media.

El mdulo LCD sobre el que vamos a trabajar tiene 14 patillas. Su alimentacin es de
+5V, y la regulacin del contraste se realiza dividiendo esos +5V mediante un
potencimetro de 10k conectado a la patilla Vo. Para el modo de 8 bits se requieren
11 lneas (en el modo de 4 bits slo se necesitan 7). De ellas hay tres de control, que son
EN (habilitacin), I/D (Instruccin / Datos) y R/W (Lectura / Escritura).
ANEXO 1: MDULO DE CONTROL DE UNA LCD
INFORMACIN PARA EL ALUMNO
49

PIN NOMBRE FUNCIN
1 Vss Masa
2 Vdd +5V
3 Vo Vee Ajuste del contraste
4 I/D RS Seleccin de modo
5 R/W Lectura / Escritura
6 E EN Validacin (1) / Deshabilitacin (0)
7 14 DB Lneas de datos
Tabla 1. Seales de la LCD

La activacin de la lnea EN (Habilitacin) es la que permite a la LCD leer el resto de
las lneas, es decir, si la desactivamos no reaccionar ante los cambios en el resto de las
lneas.

La lnea I/D selecciona entre el modo de comando si vale 0, o el modo de datos si es 1.

Debemos recordar que la lnea R/W es la que determina si se lee o escribe, debiendo
estar debidamente activada segn nuestros deseos antes de cualquier intento de acceso a
la LCD.

Los comandos de una LCD estndar se presentan en la Tabla 2:

Comando RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Borra Pantalla
0 0 0 0 0 0 0 0 0 1
Cursor a Inicio
0 0 0 0 0 0 0 0 1 *
Modo
Introduccin
0 0 0 0 0 0 0 1 I/D S
Pantalla On/Off
0 0 0 0 0 0 1 D C B
Modo
Desplazamiento
0 0 0 0 0 1 S/C R/L * *
Funcin
0 0 0 0 1 DL N F * *
Direccin
CGRAM
0 0 0 1 Direccin CGRAM
Direccin
DDRAM
0 0 1 Direccin DDRAM
Lectura
ocupado y
direccin
contador
0 1 BF Direccin AC
Escribe RAM
1 0 Dato a escribir
Lee RAM
1 1 Dato a leer
Tabla 2. Comandos de la LCD
ANEXO 1: MDULO DE CONTROL DE UNA LCD
INFORMACIN PARA EL ALUMNO
50

- Borra Pantalla: Borra el contenido de la memoria de la LCD y sita el cursor
en la posicin 0.
- Cursor a Inicio: El cursor va a la posicin 0.
- Modo Instruccin: Configura la direccin del cursor. Cuando I/D = 1
incrementa la posicin del cursor automticamente, cuando I/D = 0 la
decrementa. Cuando S = 1 significa que hay desplazamiento en la pantalla.
- Pantalla On / Off: Si D = 1 enciende la pantalla, D = 0 apaga la pantalla. C = 1
visualiza el cursor, C = 0 no lo visualiza. B = 1 hace parpadear el cursor.
- Modo Desplazamiento: S/C = 1 indica movimiento de la pantalla completa.
S/C = 0 indica movimiento del cursor. R/L = 1 indica movimiento hacia la
derecha, R/L = 0 indica movimiento a la izquierda.
- Funcin: DL = 1 indica interfaz de 8 bits, DL = 0 indica interfaz de 4 bits. N =
1 indica 2 lneas visibles, N = 0 indica 1 lnea visible. F = 1 indica una fuente de
5x10 pxeles, F = 0 indica una fuente de 5x7 pxeles.
- Direccin CGRAM: Coloca el dato enviado en la direccin CGRAM indicada
despus de este comando.
- Direccin DDRAM: Coloca el dato enviado en la direccin DDRAM indicada
despus de este comando.
- Lectura ocupado y direccin del contador: Si BF = 1 la LCD est ocupada,
BF = 0 la LCD est libre. Tambin lee el contenido del contador de direcciones
AC.
- Escribe RAM: Escribe un dato en la RAM.
- Lee RAM: Lee datos de la RAM.

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 una escritura de izquierda a derecha.

La LCD contiene una RAM propia en la que almacena los datos, que se denomina
DDRAM. Independientemente del nmero de caracteres visibles, la DDRAM contar
con 80 posiciones. Los caracteres no visibles se visualizarn provocando un
desplazamiento. La RAM de una LCD no tiene direccionamiento continuo y lineal, pues
el mapa depende de los caracteres y lneas que tenga el mdulo. En la Tabla 3 se puede
ver el direccionamiento de las primeras posiciones visibles:

Visible Tamao Pantalla
Posicin Carcter Direccin DDRAM
1x8 00 07 0x00 0x07
1x16 00 15 0x00 0x0F
1x20 00 19 0x00 0x13
1x24 00 23 0x00 0x17
1x32 00 31 0x00 0x1F
1x40 00 39 0x00 0x27
2x16 00 15 0x00 0x0F + 0x40 0x4F
2x20 00 19 0x00 0x13 + 0x40 0x53
2x24 00 23 0x00 0x17 + 0x40 0x57
2x32 00 31 0x00 0x1F + 0x40 0x5F
2x40 00 39 0x00 0x27 + 0x40 0x67
Tabla 3. Direccionamiento de la memoria DDRAM
ANEXO 1: MDULO DE CONTROL DE UNA LCD
INFORMACIN PARA EL ALUMNO
51
Ejemplo de acceso visualizacin de un carcter en una posicin
determinada del display:

Como ejemplo, para visualizar la letra A en el carcter nmero 5 de la segunda lnea,
se seguira una secuencia como la siguiente:

BCLR #RS,PORTA ;LCD en modo comando
BCLR #RW,PORTA ;LCD en modo escritura
MOVE.B #%11000100,PORTB ;Carcter 5, Lnea 2
JSR LCD_COMMAND ;Ejecuta el comando
BSET #RS,PORTA ;LCD en modo datos
MOVE.B #$41,PORTB ;Enva el carcter A
JSR LCD_DATA ;Visualiza el carcter


La utilizacin de una LCD es lenta, comparada con la velocidad de ejecucin de
instrucciones del microprocesador MC68000 (0.5s de la ms rpida y 3s de la ms
lenta). Una escritura o lectura en la LCD puede tardar entre 40 y 120 microsegundos,
otras instrucciones pueden llegar a los 5 milisegundos.

Todas las lneas de datos y control del mdulo LCD son accesibles por el
microinstructor mediante el conector de aplicacin de la VIA. La correspondencia entre
las seales de los puertos A y B de la VIA con las seales de la LCD se muestran en la
Tabla 4:

VIA LCD
PB0 D0
PB1 D1
PB2 D2
PB3 D3
PB4 D4
PB5 D5
PB6 D6
PB7 D7
PA0 RS
PA1 R/W
PA2 EN
Tabla 4. Correspondencia entre VIA y LCD

Adems, el mdulo contiene cinco pulsadores conectados a las lneas PA3 a PA7 de la
VIA. En reposo se lee un 1 mientras que cuando se ha pulsado se lee un 0.

ANEXO 1: MDULO DE CONTROL DE UNA LCD
INFORMACIN PARA EL ALUMNO
52
3 Estudio Previo:

Para entender el funcionamiento de la LCD es necesario leer con detenimiento sus hojas
de caractersticas. Por este motivo se deben leer los documentos relacionados con un
mdulo LCD de 16x2 caracteres as como las hojas de caractersticas del controlador de
HITACHI HD44780U disponible en la pgina web del fabricante.

Una vez ledos estos documentos, y entendidos sus contenidos, responded al siguiente
cuestionario:

1) Qu se puede visualizar en un mdulo LCD alfanumrico de matriz de puntos?

a) Slo nmeros porque la visualizacin es de 7 segmentos.
b) Slo letras
c) Todos los caracteres ASCII
d) Los caracteres que pueden ser generados por el generador de caracteres

2) Cul es el tamao del bus de datos de la LCD?

a) 16 bits
b) 4 bits
c) 4 u 8 bits
d) 8 bits

3) Qu byte se debe enviar para configurar la LCD con 2 lneas, interfase de 8 bits
y una fuente de 5x7 puntos?

a) 00111000
b) 00011000
c) 10111000
d) 01010101

4) Cuntos caracteres puede almacenar la LCD?

a) 16
b) 32
c) 80
d) 64

5) En qu estado tienen que estar las lneas de control para enviar un carcter a la
memoria de la LCD?

a) RS=0; RW=0; E=0
b) RS=1; RW=0; E=1
c) RS=1; RW=1; E=1
d) RS=0; RW=1; E=1
ANEXO 1: MDULO DE CONTROL DE UNA LCD
INFORMACIN PARA EL ALUMNO
53

6) Qu byte debo enviar a la LCD para visualizar la letra ?

a) 11101110
b) 11100000
c) 00011000
d) 11101111

7) Cul es el tiempo mnimo del pulso de habilitacin?

a) 100ns
b) 1ms
c) 500ns
d) 500ms

8) En la direccin de memoria 0x10 est guardada la letra A pero la ltima
posicin visible es la 0x0F. Qu se debe hacer para ver la letra A de la
direccin 0x10 en la primera posicin visible?

a) Hacer un shift de la pantalla de 8 caracteres hacia la derecha
b) Hacer un shift de la pantalla de 16 caracteres hacia la izquierda
c) Hacer un shift de la pantalla de 16 caracteres hacia la derecha
d) Hacer un shift de la pantalla de 8 caracteres hacia la izquierda

4 Creacin de una Librera de Funciones:

A continuacin se indican los pasos a seguir para crear una serie de rutinas generales
para controlar el uso de una pantalla LCD. Las rutinas a implementar son las siguientes:

LCD_FIRST:

Deshabilitar la LCD y dejarla en modo escritura y de espera de comandos.

LCD_INI:

Secuencia de inicializacin de la LCD:
- Esperar 20ms
- Configurar una interfaz de 8 bits y 1 lnea
- Generar un pulso de activacin de la lnea EN.
- Esperar 5ms.
- Repetir las tres lneas anteriores tres veces.
- Programar un incremento automtico de AC.
- Esperar 5ms.
- Configurar una interfaz de 8 bits y 2 lneas.
- Configurar un incremento automtico de AC.
- Apagar la pantalla.
- Borrar el contenido de la memoria de la LCD.

ANEXO 1: MDULO DE CONTROL DE UNA LCD
INFORMACIN PARA EL ALUMNO
54
LCD_ENABLE:

Genera un pulso de activacin de la EN.
- Habilitar la LCD.
- Esperar 5ms.
- Deshabilitar la LCD.
- Esperar 5ms.

LCD_DATA:

Enva un dato a la LCD.
- Colocar el dato en D0 a D7.
- LCD en modo datos.
- Pulso de activacin.
- LCD en modo comandos.

LCD_COMMAND:

Enva un comando a la LCD.
- LCD en modo comando.
- Colocar el comando en D0 a D7.
- Pulso de activacin.

DELAY: Realiza una espera de 5ms.

5 Creacin de la Aplicacin:
En primer lugar la aplicacin debe realizar las secuencias de inicializacin de los
puertos de entrada / salida del microprocesador, as como tambin de la LCD.

A continuacin se deben visualizar en la LCD los nombres de los equipos local y
visitante que juegan el partido, as como sus marcadores inicializados a cero. Para esto
hay dos opciones:

a) Insertar los nombres de los equipos en el cdigo del programa, de manera
que cada vez que se quiera cambiar un nombre el programa debe ser editado
y, posteriormente, compilado y lincado.

b) Introducir los nombres de los equipos mediante el teclado del ordenador en
tiempo de ejecucin de la aplicacin.

A continuacin se deben rastrear los pulsadores de forma que, el pulsador 1 incremente
el marcador del equipo local, el pulsador 2 incremente el marcador del equipo visitante,
el pulsador 3 borre el marcador del equipo local, el pulsador 4 borre el marcador del
equipo visitante y el pulsador 5 finalice el partido y tambin la aplicacin.

Opcionalmente, se pueden incluir rutinas que visualicen la palabra GOL parpadeando en
la LCD cada vez que se pulsen los pulsadores 1 o 2. Tambin se puede incluir otra
rutina que indique cual ha sido el equipo ganador o si el resultado ha sido empate.

ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
56
Anexo 2:
Mdulo Control LCD
Solucin de la Prctica

1 Solucin del Cuestionario del Estudio Previo

Las soluciones a las preguntas del cuestionario se encuentran sealadas en color rojo,
estilo cursiva y subrayadas.

- Qu se puede visualizar en un mdulo LCD alfanumrico de matriz de puntos?

a) Slo nmeros porque la visualizacin es de 7 segmentos.
b) Slo letras
c) Todos los caracteres ASCII
d) Los caracteres que pueden ser generados por el generador de caracteres

- Cul es el tamao del bus de datos de la LCD?

a) 16 bits
b) 4 bits
c) 4 u 8 bits
d) 8 bits

- Qu byte se debe enviar para configurar la LCD con 2 lneas, interfase de 8 bits
y una fuente de 5x7 puntos?

a) 00111000
b) 00011000
c) 10111000
d) 01010101

- Cuntos caracteres puede almacenar la LCD?

a) 16
b) 32
c) 80
d) 64

- En qu estado tienen que estar las lneas de control para enviar un carcter a la
memoria de la LCD?

a) RS=0; RW=0; E=0
b) RS=1; RW=0; E=1
c) RS=1; RW=1; E=1
d) RS=0; RW=1; E=1
ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
57

- Qu byte debo enviar a la LCD para visualizar la letra ?

a) 11101110
b) 11100000
c) 00011000
d) 11101111

- Cul es el tiempo mnimo del pulso de habilitacin?

a) 100ns
b) 1ms
c) 500ns
d) 500ms

- En la direccin de memoria 0x10 est guardada la letra A pero la ltima
posicin visible es la 0x0F. Qu se debe hacer para ver la letra A de la
direccin 0x10 en la primera posicin visible?

a) Hacer un shift de la pantalla de 8 caracteres hacia la derecha
b) Hacer un shift de la pantalla de 16 caracteres hacia la izquierda
c) Hacer un shift de la pantalla de 16 caracteres hacia la derecha
d) Hacer un shift de la pantalla de 8 caracteres hacia la izquierda


2 Cdigo de la Librera de Funciones


;*********************************************************************
;*********************************************************************
; LIBRERIA DE UTILIZACION DE LA LCD: Rutinas de Uso General
;*********************************************************************
;*********************************************************************
;--------------------------------------------------------------
;LCD_FIRST: Deshabilita la LCD y la deja en modo de espera de comandos
;--------------------------------------------------------------

LCD_FIRST:
BCLR #EN,PORTA ;Deshabilita la LCD
BCLR #RS,PORTA ;Modo Comandos
BCLR #RW,PORTA ;Modo Escritura

RTS ;Final de la subrutina



ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
58
;--------------------------------------------------------------
;LCD_INI: Inicializa la LCD para empezar a trabajar
;--------------------------------------------------------------

LCD_INI:
;Esperamos 20ms
JSR DELAY
JSR DELAY
JSR DELAY
JSR DELAY

MOVE.B #$30,PORTB ;Configuracion de interfase de 8 bits,
;1 linea
JSR LCD_ENABLE ;Habilita la LCD
JSR DELAY ;Espera 5ms

MOVE.B #$30,PORTB ;Configuracion de interfase de 8 bits,
;1 linea
JSR LCD_ENABLE ;Habilita la LCD
JSR DELAY ;Espera 5ms

MOVE.B #$30,PORTB ;Configuracion de interfase de 8 bits,
;1 linea
JSR LCD_ENABLE ;Habilita la LCD
JSR DELAY ;Espera 5ms

MOVE.B #LCDINC,PORTB ;Incremento automatico de AC
JSR LCD_ENABLE ;Habilita la LCD
JSR DELAY ;Espera 5ms

MOVE.B #LCDFUNCION,D0 ;Configuracion de interfase de 8
;bits, 2 lineas
JSR LCD_COMMAND

MOVE.B #LCDINC,D0 ;Incremento automatico del AC
JSR LCD_COMMAND

MOVE.B #LCDOFF,D0 ;Apaga LCD
JSR LCD_COMMAND

MOVE.B #LCDCLR,D0 ;Borra LCD
JSR LCD_COMMAND

RTS ;Fin de la subrutina



;--------------------------------------------------------------
;LCD_ENABLE: Realiza un pulso de activacion de la LCD
;de como minimo 500ns para activarla
;--------------------------------------------------------------

LCD_ENABLE:
BSET #EN,PORTA ;Habilita la LCD
JSR DELAY ;Espera 5ms
BCLR #EN,PORTA ;Deshabilita la LCD
JSR DELAY ;Espera 5ms
RTS ;Fin de la Subrutina



ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
59
;--------------------------------------------------------------
;LCD_DATA: Envia el dato almacenado en D0 a la LCD
;para presentarlo en la pantalla
;--------------------------------------------------------------

LCD_DATA:
MOVE.B D0,PORTB ;Envia el dato a la LCD
BSET #RS,PORTA ;LCD en modo Datos
JSR LCD_ENABLE ;Realiza el pulso de activacion para
;que acepte el dato.
BCLR #RS,PORTA ;LCD en modo Comandos
RTS ;Fin de la subrutina

;--------------------------------------------------------------
;LCD_COMMAND: Envia el comando almacenado en D0
;a la LCD para configurarla
;--------------------------------------------------------------

LCD_COMMAND:
BCLR #RS,PORTA ;LCD en modo Comando
MOVE.B D0,PORTB ;Envia el comando a la LCD
JSR LCD_ENABLE ;Realiza el pulso de activacin para
;que acepte el comando.

RTS ;Fin de la subrutina


;--------------------------------------------------------------
;DELAY: Realiza una temporizacion de 5ms
;Esta temporizacin se realiza utilizando el timer 2 de la VIA
;Como el reloj de la VIA es de 800kHz (8MHz/10) el valor
;a cargar en el temporizador es $0FA0
;--------------------------------------------------------------

DELAY:

BSET #7,IER ;Activa interrupciones sealadas con 1
BCLR #5,IER ;Desactiva interrupciones del timer 2

MOVE.B #$00,ACR ;Programa T2 en modo temporizador
MOVE.B #CONT_L,T2C_L ;Carga byte bajo del contador
MOVE.B #CONT_H,T2C_H ;Carga byte alto del contador.
;Inicia la cuenta
L1:
BTST #5,IFR ;Mira si el flag T2=1
BEQ L1

RTS ;Fin de la subrutina




Cdigo 1. Funciones de uso general para el manejo de una LCD

ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
60
3 Cdigo de la Aplicacin de Marcador de un Estadio de Ftbol

;*********************************************************************
; PFC: ELABORACION DE MODULOS DIDACTICOS PARA MICROPROCESADORES
; MODULO 1: Control de un Display LCD.
; APLICACION: Marcador de un estadio de Futbol
;
; REALIZADO POR: Antonio Miguel Zaplana Alcaraz
; DIRECTOR: Jose Luis Ramirez Falo
;*********************************************************************
ABSOLUTE
ORG $25000

;********** MACROS UTILIZADAS EN LA LIBRERIA *****************

CONT_L EQU $A0 ;Byte bajo del contador
CONT_H EQU $0F ;Byte alto del contador

;********** COMANDOS DE LA LCD *******************************

LCDLINEA1 EQU $80 ;Situa el cursor en la posicion 1, linea 1
LCDLINEA2 EQU $C0 ;Situa el cursor en la posicion 1, linea 2
LCDLIN1_PAN2 EQU $90 ;Situa el cursor en la posicion 17, linea 1
LCDLIN2_PAN2 EQU $D0 ;Situa el cursor en la posicion 17, linea 2
LCDCLR EQU $01 ;Borra Pantalla + LCDLINEA1
LCDHOME EQU $02 ;Equivalente a LCDLINEA1
LCDINC EQU $06 ;Incrementa la posicion del cursor despus
;de cada caracter
LCDDEC EQU $04 ;Decrementa la posicion del cursor despus
;de cada caracter
LCDON EQU $0C ;Enciende la pantalla de la LCD
LCDOFF EQU $08 ;Apaga la pantalla de la LCD
CURSOFF EQU $0C ;Enciende la pantalla y apaga el cursor
CURSON EQU $0E ;Enciende la pantalla y el cursor
CURSBLINK EQU $0F ;Enciende la pantalla, el cursor y el
;parpadeo
LCDIZDA EQU $18 ;Desplaza los caracteres hacia la
;izquierda
LCDDCHA EQU $1C ;Desplaza los caracteres hacia la derecha
CURSIZDA EQU $10 ;Desplaza el cursor una posicion a la
;izquierda
CURSDCHA EQU $14 ;Desplaza el cursor una posicion a la
;derecha
LCDFUNCION EQU $38 ;Programa una interfase de 8 bits,
;pantalla 2 lineas y fuente 5x7 pixeles

;********* REGISTROS DE LA VIA *******************************
VIA EQU $60021 ;Direccion base de la VIA
PORTB EQU VIA+0 ;Puerto B
PORTA EQU VIA+2 ;Puerto A
DDRB EQU VIA+4 ;Registro de configuracion de la direccion
;del puerto B
DDRA EQU VIA+6 ;Registro de configuracion de la direccion
;del puerto A
T2C_L EQU VIA+16 ;Byte Bajo del Timer 2
T2C_H EQU VIA+18 ;Byte Alto del Timer 2
ACR EQU VIA+22 ;Registro Auxiliar de Control
PCR EQU VIA+24 ;Registro de Control de Perifericos
IFR EQU VIA+26 ;Registro de Banderas de Interrupciones
IER EQU VIA+28 ;Registro de Habilitacion de Interrupciones
ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
61
;********* CONSTANTES UTILIZADAS EN LA APLICACION *************

EQ1DECP EQU $8E ;Direccion de la LCD para visualizar
;las decenas del marcador del equipo 1
EQ2DECP EQU $CE ;Direccion de la LCD para visualizar
;las decenas del marcador del equipo 2

SW1 EQU 3 ;Pulsador 1
SW2 EQU 4 ;Pulsador 2
SW3 EQU 5 ;Pulsador 3
SW4 EQU 6 ;Pulsador 4
SW5 EQU 7 ;Pulsador 5

;********** CONSTANTES UTILIZADAS EN LA LIBRERIA *****************

EN EQU 2 ;Habilitacion (EN=1)
;Deshabilitacion (EN=0) de la LCD
RW EQU 1 ;Modo Lectura (R/W=1). Modo Escritura (R/W=0)
RS EQU 0 ;Modo Datos (RS=1). Modo Comandos (RS=0)

;********* VARIABLES DEL PROGRAMA *****************************

;El registro D6 contiene el valor de los goles
;marcados por el equipo 1
;El registro D7 contiene el valor de los goles
;marcados por el equipo 2

VARIABLES EQU $28000
EQ_1_ASCII EQU VARIABLES+0 ;Valor ASCII de los goles
;marcados por el equipo 1
EQ_2_ASCII EQU VARIABLES+8 ;Valor ASCII de los goles
;marcados por el equipo 2
EQUIPO1 EQU VARIABLES+12 ;String que contiene el nombre
;del equipo 1
EQUIPO2 EQU VARIABLES+30 ;String que contiene el nombre
;del equipo 2

;**************************************************************
; INICIO DEL PROGRAMA
;**************************************************************

;Inicializar las variables

MOVE.L #$0,D6 ;Inicializa el marcador del equipo 1
MOVE.L #$0,D7 ;Inicializa el marcador del equipo 2
MOVE.L #$29000,A7 ;Inicializa la pila


;Inicializar los puertos de E / S

MOVE.B #$FF,DDRB ;Configuramos el puerto B como Salidas
MOVE.B #$07,DDRA ;Configuramos de PA0 a PA2 como Salidas
;y las restantes como entradas




ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
62
;Inicializar la LCD

JSR LCD_FIRST
JSR LCD_INI

MOVE.B #LCDLINEA1,D0 ;Mueve el cursor a la
;posicion 1 de la linea 1
JSR LCD_COMMAND


;Visualizamos en la pantalla del ordenador la cabecera

PEA CABECERA
MOVE.L #25,D0 ;Funcion PUTS() del monitor
TRAP #0
ADDA.L #4,A7

;Preguntamos al usuario el nombre del equipo local

PEA PREG_1
MOVE.L #25,D0 ;Funcion PUTS() del monitor
TRAP #0
ADDA.L #4,A7

;Espera una respuesta del usuario

MOVE.L #13,-(A7)
MOVE.L #EQUIPO1,-(A7) ;Funcion CGETS() del monitor
MOVE.L #26,D0
TRAP #0
ADDA.L #8,A7

;Preguntamos al usuario el nombre del equipo Visitante

PEA PREG_2
MOVE.L #25,D0 ;Funcion PUTS() del monitor
TRAP #0
ADDA.L #4,A7

;Espera una respuesta del usuario

MOVE.L #13,-(A7)
MOVE.L #EQUIPO2,-(A7)
MOVE.L #26,D0 ;Funcion CGETS() del monitor
TRAP #0
ADDA.L #8,A7

PEA TEXT9
MOVE.L #25,D0 ;Funcion PUTS() del monitor
TRAP #0
ADDA.L #4,A7

;Enviamos los datos iniciales que se tienen que visualizar en la LCD

LEA EQUIPO1,A1 ;Escribe en la LCD el nombre
;del primer equipo
JSR ENVIA_TEXTO

MOVE.B #LCDLINEA2,D0 ;Situa el cursor en el
;caracter 1 de la linea 2
JSR LCD_COMMAND
ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
63

LEA EQUIPO2,A1 ;Escribe en la LCD el nombre
;del segundo equipo
JSR ENVIA_TEXTO

JSR ACT_MARCA ;Escribe en la LCD el num. de goles que
;lleva cada equipo

;Graba en la memoria de la LCD la palabra GOOL
MOVE.B #LCDLIN1_PAN2,D0 ;En la linea 1
JSR LCD_COMMAND

LEA GOOL,A1
JSR ENVIA_TEXTO

MOVE.B #LCDLIN2_PAN2,D0 ;En la linea 2
JSR LCD_COMMAND

LEA GOOL,A1
JSR ENVIA_TEXTO

MOVE.B #LCDLINEA1,D0 ;Situa el cursor al principio
JSR LCD_COMMAND

MOVE.B #LCDON,D0 ;Enciende la pantalla de la LCD
JSR LCD_COMMAND

;Escaneamos los pulsadores

INICIO:
BTST #SW1,PORTA
BEQ GOL_EQ_1

BTST #SW2,PORTA
BEQ GOL_EQ_2

BTST #SW3,PORTA
BEQ BORRA_EQ_1

BTST #SW4,PORTA
BEQ BORRA_EQ_2

BTST #SW5,PORTA
BEQ ACABA

JMP INICIO

GOL_EQ_1:
JSR T20MS ;Espera 20ms para eliminar los rebotes

BTST #SW1,PORTA
BEQ INICIO

JSR GOL ;El equipo 1 ha marcado gol

JSR BIP ;Hace pitar el altavoz
ADDQ.L #1,D6 ;Se incrementa el contador del equipo 1
JSR ACT_MARCA ;Actualizamos los marcadores
JMP INICIO


ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
64
GOL_EQ_2:
JSR T20MS ;Espera 20ms para eliminar los rebotes

BTST #SW2,PORTA
BEQ INICIO

JSR GOL ;El equipo 2 ha marcado gol

JSR BIP ;Hace pitar el altavoz
ADDQ.L #1,D7 ;Se incrementa el contador del equipo 2
JSR ACT_MARCA ;Actualizamos los marcadores
JMP INICIO

BORRA_EQ_1:
JSR T20MS ;Espera 20ms para eliminar los rebotes

BTST #SW3,PORTA
BEQ INICIO

CLR.L D6 ;Pone a 0 el marcador del equipo 1
JSR ACT_MARCA ;Actualizamos los marcadores
JMP INICIO

BORRA_EQ_2:
JSR T20MS ;Espera 20ms para eliminar los rebotes

BTST #SW4,PORTA
BEQ INICIO

CLR.L D7 ;Pone a 0 el marcador del equipo 2
JSR ACT_MARCA ;Actualizamos los marcadores
JMP INICIO

ACABA:
JSR T20MS ;Espera 20ms para eliminar los rebotes

BTST #SW5,PORTA
BEQ INICIO

JSR FINAL ;Calcula el resultado del partido

PEA TEXT5 ;Indica que el partido ha terminado
MOVE.L #25,D0
TRAP #0 ;Funcin PUTS() del monitor
ADDA.L #4,A7

JSR BLINK ;Parpadea el display LCD

MOVE.B #LCDON,D0 ;Deja el display encendido
JSR LCD_COMMAND

MOVE.L #29,d0 ;Espera a que se pulse una tecla
TRAP #0 ;Funcion TECLA() del monitor

MOVE.B #LCDOFF,D0 ;Apaga el display LCD
JSR LCD_COMMAND

TRAP #5 ;Fin del programa
;**************************************************************
; FIN DEL PROGRAMA
;**************************************************************
ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
65

;**************************************************************
; SUBRUTINAS UTILIZADAS EN LA APLICACIN
;**************************************************************

;**************************************************************
;Subrutina que realiza una espera de 20ms con la base de tiempos
;de 5ms de la rutina DELAY para eliminar los rebotes en los
;pulsadores
;**************************************************************
T20MS:
MOVE.L #$3,D3
T1:
JSR DELAY
DBF D3,T1

RTS

;**************************************************************
;Desplaza la LCD 16 caracteres hacia la izquierda y hace que la
;palabra GOOL parpadee en la pantalla
;**************************************************************

GOL:
MOVE.B #LCDOFF,D0 ;Apaga el display
JSR LCD_COMMAND

MOVE.L #$0F,D2 ;Numero de caracteres a desplazar
S1:
MOVE.B #LCDIZDA,D0 ;Desplazamiento hacia la izquierda
JSR LCD_COMMAND
DBF D2,S1

JSR BLINK ;Hace que parpadee GOOL

MOVE.B #LCDOFF,D0 ;Apaga el display
JSR LCD_COMMAND

MOVE.L #$0F,D2 ;Numero de caracteres a desplazar
S2:
MOVE.B #LCDDCHA,D0 ;Desplazamiento hacia la derecha
JSR LCD_COMMAND
DBF D2,S2

MOVE.B #LCDON,D0 ;Enciende el display
JSR LCD_COMMAND

RTS

;**************************************************************
;La rutina BLINK hace que el contenido del display parpadee
;controlando el tiempo que esta encendido y apagado
;**************************************************************

BLINK:
MOVE.L #$2,D4 ;Numero de veces que parpadea
NEXT:
MOVE.B #LCDON,D0 ;Enciende la pantalla de la LCD
JSR LCD_COMMAND

MOVE.L #$63,D3 ;Espera 500ms (T=k*5ms)
ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
66
TIME1:
JSR DELAY
DBF D3,TIME1

MOVE.B #LCDOFF,D0 ;Apaga la pantalla de la LCD
JSR LCD_COMMAND

MOVE.L #$63,D3 ;Espera 500ms
TIME2:
JSR DELAY
DBF D3,TIME2

DBF D4,NEXT
RTS

;**************************************************************
;FINAL: Escribe en la pantalla el resultado final del partido
;**************************************************************

FINAL:
CMP D6,D7 ;Calcula el resultado del partido
BEQ IGUALES ;El resultado es empate
BLT WIN_EQ1 ;Ganador el equipo 1
BGT WIN_EQ2 ;Ganador el equipo 2
RTS

IGUALES:
;Visualiza en la pantalla del ordenador el resultado
PEA EMPATE
MOVE.L #25,D0 ;Funcion PUTS() del monitor
TRAP #0
ADDA.L #4,A7

MOVE.B #LCDCLR,D0 ;Borra el contenido de la LCD
JSR LCD_COMMAND

LEA TEXT10,A1 ;Envia a la LCD el resultado
JSR ENVIA_TEXTO

MOVE.B #LCDLINEA2,D0
JSR LCD_COMMAND

LEA TEXT11,A1
JSR ENVIA_TEXTO

MOVE.B #LCDON,D0 ;Enciende el display LCD
JSR LCD_COMMAND

RTS

WIN_EQ1:
;Visualiza en la pantalla del ordenador el resultado
PEA GANA
MOVE.L #25,D0
TRAP #0
ADDA.L #4,A7
PEA EQUIPO1
MOVE.L #25,D0
TRAP #0
ADDA.L #4,A7

ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
67
MOVE.B #LCDCLR,D0 ;Borra el contenido de la LCD
JSR LCD_COMMAND

LEA TEXT12,A1 ;Envia a la LCD el resultado
JSR ENVIA_TEXTO

MOVE.B #LCDLINEA2,D0
JSR LCD_COMMAND

LEA EQUIPO1,A1
JSR ENVIA_TEXTO

MOVE.B #LCDON,D0 ;Enciende el display LCD
JSR LCD_COMMAND
RTS

WIN_EQ2:
;Visualiza en la pantalla del ordenador el resultado
PEA GANA
MOVE.L #25,D0
TRAP #0
ADDA.L #4,A7
PEA EQUIPO2
MOVE.L #25,D0
TRAP #0
ADDA.L #4,A7

MOVE.B #LCDCLR,D0 ;Borra el contenido de la LCD
JSR LCD_COMMAND

LEA TEXT12,A1 ;Envia a la LCD el resultado
JSR ENVIA_TEXTO

MOVE.B #LCDLINEA2,D0
JSR LCD_COMMAND

LEA EQUIPO2,A1
JSR ENVIA_TEXTO

MOVE.B #LCDON,D0 ;Enciende el display LCD
JSR LCD_COMMAND
RTS


;--------------------------------------------------------------
;ENVIA_TEXTO: Envia a la LCD los caracteres ASCII que se encuentran
;en la direccion apuntada por el registro A1. El texto debe finalizar
;con un byte igual a $00
;--------------------------------------------------------------

ENVIA_TEXTO:
CMPI.B #$0,(A1) ;Mira si es el final del texto
BEQ FIN_CHAR

MOVE.B (A1)+,D0
JSR LCD_DATA ;Envia el codigo ASCII a la LCD
JMP ENVIA_TEXTO

FIN_CHAR:
RTS ;Fin de la subrutina

ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
68

;--------------------------------------------------------------
;ACT_MARCA: Convierte el numero de goles de cada equipo
;a codigos ASCII y los envia a la LCD para ser visualizados y
;a la pantalla del ordenador
;--------------------------------------------------------------

ACT_MARCA:

;Convierte el marcador del EQUIPO 1

MOVE.L #10,-(A7)
MOVE.L #EQ_1_ASCII,-(A7)
MOVE.L D6,-(A7)
MOVE.L #19,D0 ;Funcion ITOSTR() del monitor
TRAP #0
ADDA.L #12,A7

;Convierte el marcador del EQUIPO 2

MOVE.L #10,-(A7)
MOVE.L #EQ_2_ASCII,-(A7)
MOVE.L D7,-(A7)
MOVE.L #19,D0 ;Funcion ITOSTR() del monitor
TRAP #0
ADDA.L #12,A7

;Presenta por la pantalla del ordenador los marcadores

PEA TEXT6
MOVE.L #25,D0
TRAP #0
ADDA.L #4,A7

PEA TEXT7
MOVE.L #25,D0
TRAP #0
ADDA.L #4,A7

PEA EQ_1_ASCII ;Escribe el marcador del equipo 1
MOVE.L #25,D0
TRAP #0
ADDA.L #4,A7

PEA TEXT7
MOVE.L #25,D0
TRAP #0
ADDA.L #4,A7

PEA TEXT7
MOVE.L #25,D0
TRAP #0
ADDA.L #4,A7

PEA EQ_2_ASCII ;Escribe el marcador del equipo 2
MOVE.L #25,D0
TRAP #0
ADDA.L #4,A7
PEA TEXT7
MOVE.L #25,D0
TRAP #0
ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
69
ADDA.L #4,A7

;Envia el resultado del EQUIPO 1 a la LCD

CMPI.L #$0A,D6 ;Comprueba si es mayor que 10
BLT UNI_1

;El marcador es mayor que 10

MOVE.B #EQ1DECP,D0 ;Desplaza el cursor a la posicion
;donde estan las decenas del marcador 1
JSR LCD_COMMAND

MOVE.B (EQ_1_ASCII),D0 ;Envia a la LCD el codigo ASCII
;de las decenas
JSR LCD_DATA

MOVE.B (EQ_1_ASCII+1),D0 ;Envia a la LCD el codigo
;ASCII de las unidades
JSR LCD_DATA
JMP EQ2 ;Salto a visualizar el marcador del equipo 2

;El marcador es menor que 10

UNI_1:
MOVE.B #EQ1DECP,D0 ;Desplaza el cursor a la
;posicion donde estan
JSR LCD_COMMAND ;las decenas del marcador 1

MOVE.B #$20,D0 ;Envia un espacio en blanco
JSR LCD_DATA
MOVE.B (EQ_1_ASCII),D0 ;Envia a la LCD el codigo ASCII
JSR LCD_DATA

;Envia el resultado del EQUIPO 2

EQ2:
CMPI.L #$0A,D7 ;Comprueba si es mayor que 10
BLT UNI_2

;El resultado es mayor que 10

MOVE.B #EQ2DECP,D0 ;Desplaza el cursor a la
;posicion donde estan
JSR LCD_COMMAND ;las decenas del marcador 2

MOVE.B (EQ_2_ASCII),D0 ;Envia a la LCD el codigo
;ASCII de las decenas
JSR LCD_DATA
MOVE.B (EQ_2_ASCII+1),D0 ;Envia a la LCD el codigo
;ASCII de las unidades
JSR LCD_DATA
JMP FACT ;Salto a fin de la actualizacion de marcadores

;El resultado es menor que 10
UNI_2:
MOVE.B #EQ2DECP,D0 ;Desplaza el cursor a la
;posicion donde estan
JSR LCD_COMMAND ;las decenas del marcador 2
MOVE.B #$20,D0 ;Envia un espacio en blanco
JSR LCD_DATA
ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
70

MOVE.B (EQ_2_ASCII),D0 ;Envia a la LCD el codigo ASCII
JSR LCD_DATA

FACT:
RTS ;Fin de la Subrutina

;--------------------------------------------------------------
;Subrutina que hace que el altavoz pite
;--------------------------------------------------------------

BIP:
MOVE.L #GOL_BEEP,-(A7)
MOVE.L #25,D0 ;Funcion PUTS() del monitor
TRAP #0
ADDA.L #4,A7

RTS ;Fin de la Subrutina


;*********************************************************************
;*********************************************************************
; LIBRERIA DE UTILIZACION DE LA LCD: Rutinas de Uso General
;*********************************************************************
;*********************************************************************
;--------------------------------------------------------------
;LCD_FIRST: Deshabilita la LCD y la deja en modo de espera de comandos
;--------------------------------------------------------------

LCD_FIRST:
BCLR #EN,PORTA ;Deshabilita la LCD
BCLR #RS,PORTA ;Modo Comandos
BCLR #RW,PORTA ;Modo Escritura

RTS ;Final de la subrutina


;--------------------------------------------------------------
;LCD_INI: Inicializa la LCD para empezar a trabajar
;--------------------------------------------------------------

LCD_INI:
;Esperamos 20ms
JSR DELAY
JSR DELAY
JSR DELAY
JSR DELAY

MOVE.B #$30,PORTB ;Configuracion de interfase de 8 bits,
;1 linea
JSR LCD_ENABLE ;Habilita la LCD
JSR DELAY ;Espera 5ms

MOVE.B #$30,PORTB ;Configuracion de interfase de 8 bits,
;1 linea
JSR LCD_ENABLE ;Habilita la LCD
JSR DELAY ;Espera 5ms

MOVE.B #$30,PORTB ;Configuracion de interfase de 8 bits,
;1 linea
JSR LCD_ENABLE ;Habilita la LCD
ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
71
JSR DELAY ;Espera 5ms

MOVE.B #LCDINC,PORTB ;Incremento automatico de AC
JSR LCD_ENABLE ;Habilita la LCD
JSR DELAY ;Espera 5ms

MOVE.B #LCDFUNCION,D0 ;Configuracion de interfase de 8
;bits, 2 lineas
JSR LCD_COMMAND

MOVE.B #LCDINC,D0 ;Incremento automatico del AC
JSR LCD_COMMAND

MOVE.B #LCDOFF,D0 ;Apaga LCD
JSR LCD_COMMAND

MOVE.B #LCDCLR,D0 ;Borra LCD
JSR LCD_COMMAND

RTS ;Fin de la subrutina

;--------------------------------------------------------------
;LCD_ENABLE: Realiza un pulso de activacion de la LCD
;de como minimo 500ns para activarla
;--------------------------------------------------------------

LCD_ENABLE:
BSET #EN,PORTA ;Habilita la LCD
JSR DELAY ;Espera 5ms
BCLR #EN,PORTA ;Deshabilita la LCD
JSR DELAY ;Espera 5ms
RTS ;Fin de la Subrutina

;--------------------------------------------------------------
;LCD_DATA: Envia el dato almacenado en D0 a la LCD
;para presentarlo en la pantalla
;--------------------------------------------------------------

LCD_DATA:
MOVE.B D0,PORTB ;Envia el dato a la LCD
BSET #RS,PORTA ;LCD en modo Datos
JSR LCD_ENABLE ;Realiza el pulso de activacion para
;que acepte el dato.
BCLR #RS,PORTA ;LCD en modo Comandos
RTS ;Fin de la subrutina

;--------------------------------------------------------------
;LCD_COMMAND: Envia el comando almacenado en D0
;a la LCD para configurarla
;--------------------------------------------------------------

LCD_COMMAND:
BCLR #RS,PORTA ;LCD en modo Comando
MOVE.B D0,PORTB ;Envia el comando a la LCD
JSR LCD_ENABLE ;Realiza el pulso de activacin para
;que acepte el comando.

RTS ;Fin de la subrutina



ANEXO 2: MODULO DE CONTROL DE UNA LCD
SOLUCIN DE LA PRCTICA
72
;--------------------------------------------------------------
;DELAY: Realiza una temporizacion de 5ms
;Esta temporizacin se realiza utilizando el timer 2 de la VIA
;Como el reloj de la VIA es de 800kHz (8MHz/10) el valor
;a cargar en el temporizador es $0FA0
;--------------------------------------------------------------

DELAY:

BSET #7,IER ;Activa interrupciones sealadas con 1
BCLR #5,IER ;Desactiva interrupciones del timer 2

MOVE.B #$00,ACR ;Programa T2 en modo temporizador
MOVE.B #CONT_L,T2C_L ;Carga byte bajo del contador
MOVE.B #CONT_H,T2C_H ;Carga byte alto del contador.
;Inicia la cuenta
L1:
BTST #5,IFR ;Mira si el flag T2=1
BEQ L1

RTS ;Fin de la subrutina



;********** CADENAS DE TEXTO UTILIZADAS EN LA APLICACION ******

CABECERA DB $0d,$0a,$07,'MARCADOR DE UN ESTADIO DE
FUTBOL',$0d,$0a,'Por: Antonio M. Zaplana',$0
PREG_1 DB $0d,$0a,'Nombre del equipo Local: ',$0
PREG_2 DB $0d,$0a,'Nombre del equipo Visitante: ',$0
GOOL DB '* * * GOOL * * *',$0
GOL_BEEP DB $07,$0
TEXT5 DB $07,$07,$0d,$0a,$0a,$0a,'Fin del programa',$0
TEXT6 DB $08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,
$08,$08,$08,$08,$08,$08,$08,$08,$09,$09,$0
TEXT7 DB ' ',$0
TEXT8 DB $0D,$0A,$0
TEXT9 DB $0D,$0A,'Resultado: ',$0D,$0A,$0
TEXT10 DB 'Resultado:',$0
TEXT11 DB ' EMPATE ',$0
TEXT12 DB 'Ha ganado el:',$0
EMPATE DB $0D,$0A,'Fin del Partido, el resultado
ha sido empate',$0
GANA DB $0D,$0A,'Fin del Partido, ha ganado el ',$0


END

Cdigo 2. Cdigo fuente de la aplicacin Marcador de un Estadio de Ftbol

ANEXO 3: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
73
Anexo 3:
Prctica de Control de Temperatura con Lectura de
Ocho Bits


1 Enunciado de la Prctica

El mdulo de control de temperatura funciona como un horno elctrico. Esta prctica
tiene como objetivo realizar un control de temperatura del horno con la ayuda del
microinstructor del 68000.

Para conseguir este propsito, hemos dividido la prctica en tres partes. La primera
consiste en realizar un estudio previo estudiando la informacin tcnica del mdulo que
se va a usar. Esta documentacin est disponible en el siguiente captulo. El alumno
debe responder las preguntas del cuestionario del estudio previo antes de la primera
sesin de prcticas. La segunda parte de la prctica consiste en realizar la adquisicin de
la conversin analgico digital de la salida del sensor de temperatura. Finalmente, la
tercera parte de la prctica consiste en programar un control digital para que la
temperatura del horno sea la que nosotros queremos.


2 Informacin Tcnica

Este mdulo est formado por un elemento sensor de temperatura cuya salida est
acondicionada por un circuito analgico. Posteriormente la salida acondicionada se
muestrea mediante el conversor analgico digital disponible en el microcontrolador
PIC16F873. La seal muestreada se trata mediante un programa que se ejecuta en el
microcontrolador. Mediante uno de los puertos de entrada salida de ste se enva el
valor de la conversin al puerto A de la VIA para su tratamiento en el programa de
control que se ejecuta en el microinstructor TM-683. Mediante otro puerto del
microcontrolador se visualiza la temperatura medida en un visualizador de tres dgitos
de siete segmentos.

El programa de control tiene que generar una seal, que convertida mediante un
conversor digital analgico ser la encargada de excitar un transistor de potencia. Este
transistor regula la corriente que pasa por la resistencia de calentamiento. De esta forma
se controla la potencia disipada por la resistencia, cuya temperatura es la que se quiere
controlar. Para este motivo se pueden programar varios tipos de control: todo nada,
todo nada con histresis, control proporcional e incluso un control PID.

El esquema elctrico del mdulo de control de temperatura se encuentra al final de este
documento.
ANEXO 3: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
74
En la Figura 1 se puede ver el diagrama de bloques del mdulo de control de
temperatura.



Figura 1. Diagrama de Bloques del Mdulo de Control de Temperatura

2.1 Medicin de Temperatura

El elemento sensor de temperatura IC1, es un circuito integrado tipo LM35, el cual
dispone de tres terminales y proporciona una salida lineal de tensin de 10mV/C. El
rango de temperatura es de 0C a 100C, aproximadamente. Las caractersticas tcnicas
de este circuito se pueden ver en la Tabla 1:

Factor de escala lineal +10mV/C
Precisin a 25C 0.5C
Alimentacin 4 a 30V
No linealidad
C
Impedancia de salida baja 0.1 para una carga de 1mA.
Tabla 1. Caractersticas tcnicas del CI. LM35DZ


Tal y como muestra el esquema de bloques de la Figura 2, el sensor de temperatura
reacciona ante el calor emitido por la resistencia de potencia, produciendo una
diferencia de tensin, proporcional a la temperatura de la resistencia, entre su salida y el
nodo de referencia.

ANEXO 3: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
75

Figura 2. Esquema de la medicin de temperatura


La salida del sensor de temperatura se introduce en el circuito de acondicionamiento de
seal por medio del integrado IC2, que es un amplificador operacional tipo OP07 en
configuracin de seguidor de tensin. La salida de esta etapa seguidora se introduce en
IC3, que es un amplificador de ganancia 5, realizado tambin con un amplificador
operacional OP07, en configuracin no inversora. Las resistencias utilizadas son de baja
tolerancia para respetar al mximo la seal del sensor.
Posteriormente, la salida del amplificador de tensin, se introduce en otra etapa
separadora IC4, formada tambin por un amplificador operacional tipo OP07 de la
misma forma que IC2. Por ltimo, la seal de salida se introduce a uno de los canales
analgicos del microcontrolador, concretamente, a la entrada AN0.


2.2 Conversor Digital Analgico

La conversin digital analgico se realiza mediante el circuito integrado IC10 tipo
DAC08CN. Es un circuito integrado con tecnologa CMOS en un encapsulado de 16
pins tipo DIL. Las caractersticas tcnicas se encuentran en la Tabla 2:

Resolucin 8 bits
Datos Paralelo
Tiempo de conversin 1s
Alimentacin 18V (mx)
Error de ganancia 1%
Canales 2
Tabla 2. Caractersticas del DAC08CN


El conversor DAC est polarizado con una corriente de 2mA, resultado de aplicar una
tensin de 10 voltios, procedente de un regulador lineal de tensin IC6 tipo 7810, a una
resistencia de polarizacin de 5k. La salida analgica del conversor se introduce en
IC11 que es un amplificador operacional tipo OP07 realimentado con una resistencia de
5k, para producir una tensin de salida entre 0V y 10V.


ANEXO 3: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
76
2.3 Conexin con el Microinstructor TM-683

En el microinstructor TM-683 estn disponibles dos conectores de aplicacin
(Aplicacin 1 y Aplicacin 2) con dos puertos de 8 bits cada uno (puerto A y puerto B).
En el microcontrolador disponemos de tres puertos de entrada-salida. De estos tres
puertos, slo dos de ellos (puerto B y puerto C) disponen de ocho lneas de datos. El
puerto A del microcontrolador slo dispone de cinco lneas de datos.

El microinstructor TM-683 se conecta al mdulo de aplicacin mediante el conector de
aplicacin CN3. En este conector estn disponibles las seales de la VIA. El puerto A
(PA0 PA7) de la VIA est conectado al puerto B (RB0 RB7) del microcontrolador;
mientras que el puerto B (PB0 PB7) de la VIA est conectado a las entradas digitales
del conversor DAC. Por el puerto A de la VIA, el microcontrolador enva al
microinstructor el valor de la conversin analgico digital de la temperatura.

La seal RA1 del microcontrolador est conectado a un interruptor de configuracin.
Para la realizacin de esta prctica, el interruptor de configuracin del mdulo (SW7)
debe estar en estado lgico 1. En este caso el microcontrolador enva al
microinstructor un valor de 8 bits correspondientes a los ocho bits ms significativos de
la conversin.

Cuando el microcontrolador tiene un nuevo valor de conversin para enviar, provoca un
flanco descendente en su lnea RA3, que est conectada a la lnea CA1 del
microinstructor, indicando que en el puerto A hay un valor de conversin. Programando
debidamente el microinstructor, este hecho puede servir de interrupcin externa.

2.4 Mdulo de Calor

La salida procedente del conversor DAC junto con el amplificador operacional, se
conectan a la base del transistor de potencia Q4 tipo DB139. El colector del transistor
est conectado a la tensin de alimentacin de la fuente de +15V y, el emisor est
conectado a la resistencia de potencia R19 de 10 y 15W. Segn pase ms o menos
corriente por el transistor, el conjunto transistor resistencia de potencia se calentar
ms o menos. Esta corriente se controla con la tensin de salida del DAC.


3 Estudio Previo

Una vez leda y entendida la informacin tcnica del apartado 2, responder a las
siguientes cuestiones, argumentando las respuestas.

a) Obtener la expresin que relaciona la temperatura de la resistencia con el valor
de la conversin analgico digital, suponiendo que tenemos un conversor A /
D de 8 bits y que sus tensiones de referencia son: V
max
= 5V y V
min
= 0V para un
rango de temperaturas de 0C a 100C.

b) Si el resultado de la conversin analgico digital es 136 (88h), cul es la
temperatura de la resistencia?

c) Cul es la resolucin de la conversin en C / cuenta?
ANEXO 3: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
77

d) Calcula la expresin que relaciona el dato digital de la entrada del conversor
digital analgico con la tensin de salida del mismo.

e) Qu tensin de salida corresponder con un valor digital en la entrada de 58
(3Ah)?


4 Adquisicin y Procesado del Dato

En este apartado se debe crear un programa para adquirir el resultado de la conversin
analgico digital y, procesarlo para obtener en una posicin de memoria el valor de la
temperatura de la resistencia.

Para realizar este apartado, el interruptor de configuracin nmero 7 tiene que estar
abierto (estado lgico 1).

Programar la rutina de atencin a la interrupcin, que ha sido generada por un flanco
descendente en la lnea CA1, para que lea del puerto A de la VIA los 8 bits del resultado
de la conversin analgico digital.

Fuera de la interrupcin, operar con el dato ledo para obtener la temperatura de la
resistencia.


5 Control Digital

Programar un algoritmo de control que compare la temperatura obtenida con la
temperatura deseada y, acte en consecuencia para que la temperatura de la resistencia
sea lo ms similar posible a la temperatura deseada.

Se puede elegir uno de los siguientes algoritmos de control:

- Todo / Nada
- Todo / Nada con Histresis
- Proporcional (P)
- Proporcional Integral (PI)
- Proporcional, Integral y Derivativo (PID)

En la eleccin del tipo de control, se debe tener muy en cuenta la gran inercia que
presenta el sistema. Los procesos de calentamiento y enfriamiento de la resistencia de
potencia son lentos.

Razona el porqu de tu eleccin.

ANEXO 4: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
79
Anexo 4:
Prctica de Control de Temperatura con Lectura de
Diez Bits


1 Enunciado de la Prctica

El mdulo de control de temperatura funciona como un horno elctrico. Esta prctica
tiene como objetivo realizar un control de temperatura del horno con la ayuda del
microinstructor del 68000.

Para conseguir este propsito hemos dividido la prctica en tres partes. La primera
consiste en realizar un estudio previo estudiando la informacin tcnica del mdulo que
se va a usar, disponible en el siguiente captulo y, responder las preguntas del
cuestionario. La segunda parte de la prctica consiste en realizar la adquisicin de la
conversin analgico digital de la salida del sensor de temperatura. Finalmente, la
tercera parte de la prctica consiste en programar un controlador digital para que la
temperatura del horno sea la que nosotros queremos.


2 Informacin Tcnica

Este mdulo est formado por un elemento sensor de temperatura cuya salida est
acondicionada por un circuito analgico. Posteriormente la salida acondicionada se
muestrea mediante el conversor analgico digital disponible en el microcontrolador
PIC16F873. La seal muestreada se trata mediante un programa que se ejecuta en el
microcontrolador. Mediante uno de los puertos de entrada salida de ste se enva el
valor de la conversin al puerto A de la VIA para su tratamiento en el programa de
control que se ejecuta en el microinstructor TM-683. Mediante otro puerto del
microcontrolador se visualiza la temperatura medida en un visualizador de siete
segmentos formado por tres mdulos de ctodo comn.

El programa de control genera una seal que es convertida mediante un conversor
digital analgico que es el encargado de excitar un transistor de potencia, el cual
regula la corriente que pasa por la resistencia de calentamiento, y por consiguiente,
controla la potencia disipada por la resistencia cuya temperatura es la que se quiere
controlar. Para este motivo se pueden programar varios tipos de control: todo nada,
todo nada con histresis, control proporcional e incluso un control PID.

El esquema elctrico del mdulo de control de temperatura se encuentra al final de este
documento.
ANEXO 4: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
80
En la Figura 1 se puede ver el diagrama de bloques del mdulo de control de
temperatura.



Figura 1. Diagrama de Bloques del Mdulo de Control de Temperatura

2.1 Medicin de Temperatura

El elemento sensor de temperatura IC1, es un circuito integrado tipo LM35, el cual
dispone de tres terminales y proporciona una salida lineal de tensin de 10mV/C. El
rango de temperatura es de 0C a 100C, aproximadamente. Las caractersticas tcnicas
de este circuito se pueden ver en la Tabla 1:

Factor de escala lineal +10mV/C
Precisin a 25C 0.5C
Alimentacin 4 a 30V
No linealidad
C
Impedancia de salida baja 0.1 para una carga de 1mA.

Tabla 1. Caractersticas tcnicas del CI. LM35DZ


Tal y como muestra el esquema de bloques de la Figura 2, el sensor de temperatura
reacciona ante el calor emitido por la resistencia de potencia, produciendo una
diferencia de tensin, proporcional a la temperatura de la resistencia, entre su salida y el
nodo de referencia.

ANEXO 4: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
81

Figura 2. Esquema de la medicin de temperatura


La salida del sensor de temperatura se introduce en el circuito de acondicionamiento de
seal por medio del integrado IC2, que es un amplificador operacional tipo OP07 en
configuracin de seguidor de tensin. La salida de esta etapa seguidora se introduce en
IC3, que es un amplificador de ganancia 5, realizado tambin con un amplificador
operacional OP07, en configuracin no inversora. Las resistencias utilizadas son de baja
tolerancia para respetar al mximo la seal del sensor.
Posteriormente, la salida del amplificador de tensin, se introduce en otra etapa
separadora IC4, formada tambin por un amplificador operacional tipo OP07 de la
misma forma que IC2. Por ltimo, la seal de salida se introduce a uno de los canales
analgicos del microcontrolador, concretamente, a la entrada AN0.


2.2 Conversor Digital Analgico

La conversin digital analgico se realiza mediante el circuito integrado IC10 tipo
DAC08CN. Es un circuito integrado con tecnologa CMOS en un encapsulado de 16
pins tipo DIL. Las caractersticas tcnicas se encuentran en la Tabla 2:

Resolucin 8 bits
Datos Paralelo
Tiempo de conversin 1s
Alimentacin 18V (mx)
Error de ganancia 1%
Canales 2

Tabla 2. Caractersticas del DAC08CN


El conversor DAC est polarizado con una corriente de 2mA, resultado de aplicar una
tensin de 10 voltios, procedente de un regulador lineal de tensin IC6 tipo 7810, a una
resistencia de polarizacin de 5k. La salida analgica del conversor se introduce en
IC11 que es un amplificador operacional tipo OP07 realimentado con una resistencia de
5k, para producir una tensin de salida entre 0V y 10V.


ANEXO 4: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
82
2.3 Conexin con el Microinstructor TM-683

En el microinstructor TM-683 estn disponibles dos conectores de aplicacin
(Aplicacin 1 y Aplicacin 2) con dos puertos de 8 bits cada uno (puerto A y puerto B).
En el microcontrolador disponemos de tres puertos de entrada-salida. De estos tres
puertos, slo dos de ellos (puerto B y puerto C) disponen de ocho lneas de datos. El
puerto A del microcontrolador slo dispone de cinco lneas de datos.

El microinstructor TM-683 se conecta al mdulo de aplicacin mediante el conector de
aplicacin CN3. En este conector estn disponibles las seales de la VIA. El puerto A
(PA0 PA7) de la VIA est conectado al puerto B (RB0 RB7) del microcontrolador;
mientras que el puerto B (PB0 PB7) de la VIA est conectado a las entradas digitales
del conversor DAC. Por el puerto A de la VIA, el microcontrolador enva al
microinstructor el valor de la conversin analgico digital de la temperatura.

La seal RA1 del microcontrolador est conectado a un interruptor de configuracin. Si
el estado lgico del interruptor es 1, el microcontrolador enva al microinstructor un
valor de 8 bits correspondientes a los ocho bits ms significativos de la conversin.
Cuando el estado lgico del interruptor es 0, el microcontrolador enva los 10 bits de
la conversin multiplexados en tiempo con el siguiente formato:

MSB LSB
0 0 0 X X X X X
Byte Bajo

MSB LSB
1 0 0 X X X X X
Byte Alto

En ambos casos, el microcontrolador provoca un flanco descendente en su lnea RA3,
que est conectada a la lnea CA1 del microinstructor, indicando que en el puerto A hay
un valor de conversin.

El valor de la conversin, se enva al puerto A de la VIA porque en el conector de
aplicacin slo estn disponibles las seales de control del puerto A. Estas seales de
control son necesarias para realizar una peticin de interrupcin y para el
reconocimiento de la interrupcin por parte del microcontrolador. Programando
debidamente el microinstructor, un flanco de bajada en la lnea CA1 sera motivo de
interrupcin externa.

La lnea RA2 del microcontrolador est conectada a la lnea CA2 de la VIA. El
programa de control del microinstructor debe programar los registros de la VIA para
que al leer el dato de la conversin del puerto A, la lnea CA2 baje a nivel lgico 0,
hecho que el microcontrolador interpreta como que se ha recibido el dato de la
conversin y puede enviar el siguiente.

En el Grfico 1 se representa la variacin de las lneas de datos y control (CA1 y CA2)
cuando el microcontrolador enva un dato a la VIA del microinstructor.

ANEXO 4: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
83

Grafico 1. Comportamiento de las lneas que intervienen en el envo de un dato a la VIA.


2.4 Mdulo de Calor

La salida procedente del conversor DAC junto con el amplificador operacional, se
conectan a la base del transistor de potencia Q4 tipo DB139. El colector del transistor
est conectado a la tensin de alimentacin de la fuente de +15V y, el emisor est
conectado a la resistencia de potencia R19 de 10 y 15W. Segn pase ms o menos
corriente por el transistor, el conjunto transistor resistencia de potencia se calentar
ms o menos. Esta corriente se controla con la tensin de salida del DAC.


ANEXO 4: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
84
3 Estudio Previo

Una vez leda y entendida la informacin tcnica del apartado 2, responder a las
siguientes cuestiones, argumentando las respuestas.

a) Obtener la expresin que relaciona la temperatura de la resistencia con el valor
de la conversin analgico digital, suponiendo que tenemos un conversor A /
D de 10 bits y que sus tensiones de referencia son: V
max
= 5V y V
min
= 0V para
un rango de temperaturas de 0C a 100C.

b) Si el resultado de la conversin analgico digital es 136 (88h), cul es la
temperatura de la resistencia?

c) Segn lo explicado en el Apartado 2.3, describe el proceso a seguir para obtener
en un registro de datos del 68000 (D0 D7) el valor completo de la conversin
analgico-digital.

d) Calcula la expresin que relaciona el dato digital de la entrada del conversor
digital analgico con la tensin de salida del mismo.

e) Qu tensin de salida corresponder con un valor digital en la entrada de 58
(3Ah)?


4 Adquisicin y Procesado del Dato

En este apartado se debe crear un programa para adquirir el resultado de la conversin
analgico digital y, procesarlo para obtener en una posicin de memoria el valor de la
temperatura de la resistencia.

Para realizar este apartado, el interruptor de configuracin nmero 7 tiene que estar
cerrado (estado lgico 0).

Programar la rutina de atencin a la interrupcin generada por un flanco descendente en
la lnea CA1, para que lea del puerto A de la VIA los 10 bits del resultado de la
conversin analgico digital.

Fuera de la interrupcin, operar con el dato ledo para obtener la temperatura de la
resistencia.


ANEXO 4: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
85
5 Control Digital

Programar un algoritmo de control que compare la temperatura obtenida con la
temperatura deseada y, acte en consecuencia para que la temperatura de la resistencia
sea lo ms similar posible a la temperatura deseada.

Se puede elegir uno de los siguientes algoritmos de control:

- Todo / Nada
- Todo / Nada con Histresis
- Proporcional (P)
- Proporcional Integral (PI)
- Proporcional, Integral y Derivativo (PID)

En la eleccin del tipo de control, se debe tener muy en cuenta la gran inercia que
presenta el sistema. Los procesos de calentamiento y enfriamiento de la resistencia de
potencia son lentos.

Razona el porqu de tu eleccin.

ANEXO 5: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
87
Anexo 5:
Prctica de Conversin A/D y Visualizacin en Display
de Siete Segmentos


1 Enunciado de la Prctica

El mdulo de control de temperatura funciona como un horno elctrico. Esta prctica
tiene como objetivo realizar la medicin de la temperatura de calentamiento del horno
mediante un conversor analgico digital y visualizar en un display con tres dgitos de
siete segmentos dicha temperatura.

Para conseguir este propsito hemos dividido la prctica en tres partes. La primera
consiste en realizar un estudio previo estudiando la informacin tcnica del mdulo que
se va a usar, disponible en el siguiente captulo y, responder las preguntas del
cuestionario. La segunda parte de la prctica consiste en programar el microcontrolador
PIC16F873 de la placa para que realice la conversin analgico digital de la salida del
sensor de temperatura. Finalmente, la tercera parte de la prctica consiste en procesar el
dato obtenido de la conversin analgico digital y visualizar el valor de la temperatura
en el display.

2 Informacin Tcnica

Este mdulo est formado por un elemento sensor de temperatura cuya salida est
acondicionada por un circuito analgico. Posteriormente la salida acondicionada se
muestrea mediante el conversor analgico digital disponible en el microcontrolador
PIC16F873. La seal muestreada se trata mediante un programa que se ejecuta en el
microcontrolador. Mediante uno de los puertos de entrada salida de ste se visualiza
la temperatura medida en un visualizador de siete segmentos formado por tres dgitos de
ctodo comn.

El esquema elctrico del mdulo de control de temperatura se encuentra al final de este
documento.
ANEXO 5: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
88
En la Figura 1 se puede ver el diagrama de bloques del mdulo de control de
temperatura.



Figura 1. Diagrama de Bloques del Mdulo de Control de Temperatura

2.1 Medicin de Temperatura

El elemento sensor de temperatura IC1, es un circuito integrado tipo LM35, el cual
dispone de tres terminales y proporciona una salida lineal de tensin de 10mV/C. El
rango de temperatura es de 0C a 100C, aproximadamente. Las caractersticas tcnicas
de este circuito se pueden ver en la Tabla 1:

Factor de escala lineal +10mV/C
Precisin a 25C 0.5C
Alimentacin 4 a 30V
No linealidad
C
Impedancia de salida baja 0.1 para una carga de 1mA.
Tabla 1. Caractersticas tcnicas del CI. LM35DZ


Tal y como muestra el esquema de bloques de la Figura 2, el sensor de temperatura
reacciona ante el calor emitido por la resistencia de potencia, produciendo una
diferencia de tensin, proporcional a la temperatura de la resistencia, entre su salida y el
nodo de referencia.

ANEXO 5: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
89

Figura 2. Esquema de la medicin de temperatura


La salida del sensor de temperatura se introduce en el circuito de acondicionamiento de
seal por medio del integrado IC2, que es un amplificador operacional tipo OP07 en
configuracin de seguidor de tensin. La salida de esta etapa seguidora se introduce en
IC3, que es un amplificador de ganancia 5, realizado tambin con un amplificador
operacional OP07, en configuracin no inversora. Las resistencias utilizadas son de baja
tolerancia para respetar al mximo la seal del sensor.
Posteriormente, la salida del amplificador de tensin, se introduce en otra etapa
separadora IC4, formada tambin por un amplificador operacional tipo OP07 de la
misma forma que IC2. Por ltimo, la seal de salida se introduce a uno de los canales
analgicos del microcontrolador, concretamente, a la entrada AN0.


2.2 Conversin Analgico Digital

El microcontrolador utilizado en el mdulo, dispone de un conversor analgico-digital
con una resolucin de 10 bits. Este mdulo se ha diseado para medir temperaturas
dentro de un rango de 0 a 100 C. Tal y como se vio en el apartado anterior, el sensor
de temperatura proporciona una salida lineal de tensin de 10mV/C que es
proporcional a la temperatura a la que est sometido. Estos datos se representan en el
Grfico 1, que relaciona la tensin de salida del sensor con la temperatura.


ANEXO 5: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
90

Grfico 1. Tensin de salida del sensor Vs. Temperatura



La salida del sensor de temperatura se acondiciona por medio de un circuito analgico,
consistente en un amplificador de tensin con ganancia cinco. Por lo tanto, la relacin
existente entre la tensin de entrada al conversor analgico-digital y la temperatura es la
que se muestra en el Grafico 2.


Grafico 2. Tensin de entrada al conversor A/D Vs. Temperatura
ANEXO 5: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
91


El conversor analgico-digital est configurado con unas tensiones de referencia de 0V
y 5V. Con esta configuracin, para una entrada de 0V se obtiene el valor digital
0000000000
2
y, para una entrada de 5V se obtiene el valor digital 1111111111
2
(1023).
El Grfico 3 muestra la relacin entre el valor digital obtenido respecto a la
temperatura.


Grafico 3. Valor Digital Vs. Temperatura

Como se ha indicado previamente, la conversin analgico digital de la seal se hace
mediante el microcontrolador IC8 del tipo PIC16F873 fabricado por MICROCHIP, el
cual dispone de un conversor analgico digital (ADC) de 10 bits y cinco canales. Este
microcontrolador dispone, adems, de 22 lneas de entrada salida capaces de entregar
una corriente mxima de 25mA por lnea, 7168 bytes de memoria FLASH, 192 bytes de
memoria RAM, 128 bytes de memoria EEPROM, dos mdulos de modulacin de
anchura de pulsos (PWM) con una precisin de 10 bits, un temporizador de 16 bits, dos
temporizadores de 8 bits, un temporizador de perro guardin (WDT), mdulo universal
de transmisin / recepcin sncrona / asncrona de datos va serie (USART), bus IC
(Inter-Integrated Circuit Bus), interfase serie de perifricos (SPI), todo ello en un
encapsulado de 28 pins tipo SP (Lead Skinny PDIP).
El microcontrolador funciona con una seal de reloj de 4MHz procedente del cristal de
cuarzo Y1.


ANEXO 5: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
92
2.3 Visualizador de Siete Segmentos

La visualizacin de la temperatura se realiza mediante tres mdulos de siete segmentos
LED de ctodo comn tipo MAN74A de color rojo y frontal rojo. Los segmentos tienen
una altura de 7.62mm y estn dispuestos en encapsulados de 10 pines. Estos displays
estn diseados para dar un ptimo contraste entre encendido / apagado. La versin de
ctodo comn dispone de un punto decimal en el lado derecho. Las caractersticas
tcnicas de estos mdulos se pueden observar en la Tabla 2:

Tensin directa nominal 1.6V
Nominal 10mA Corriente directa
Mxima 30mA
Intensidad luminosa nominal por dgito 2.5mcd
Tensin inversa mxima 6V
ngulo de visin 75
Potencia mxima disipada por segmento 60mW
Temperatura de funcionamiento De 40C a +85C

Tabla 2. Caractersticas tcnicas del mdulo de 7 segmentos.

Cada uno de los segmentos del display est conectado a una lnea del puerto C del
microcontrolador mediante resistencia limitadoras de corriente. La relacin entre los
segmentos del display y las lneas del puerto C del microcontrolador se encuentra en la
Tabla 3:

SEGMENTO PUERTO C
A RC6
B RC5
C RC4
D RC3
E RC2
F RC1
G RC0
Punto decimal RC7

Tabla 3. Relacin entre los segmentos y sus lneas de datos

ANEXO 5: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
93
En la Figura 3 se muestra la posicin de cada segmento:


Figura 3. Posicin de los segmentos
en el display


Como se ha indicado antes, los dgitos del display son de ctodo comn. El ctodo de
cada dgito est conectado a una salida del decodificador IC9 del tipo 74LS139. El
circuito IC9 es un decodificador 2 a 4 cuyas entradas son las lneas RA4 y RA5 del PIC.

En la Tabla 4 se detallan los estados de cada una estas seales para activar los digitos.

RA4 RA5 DIGITO
0 0 DIG0
0 1 DIG1
1 0 DIG2
1 1 No utilizado

Tabla 4. Seleccin de los dgitos de 7 segmentos

2.4 Programador PIC16F873

Se conecta al puerto paralelo del PC mediante el conector CN2 y necesita, adems, una
alimentacin continua comprendida entre 15V y 30V. El consumo de corriente del
programador es inferior a 100mA.

Este montaje es capaz de leer, verificar, programar y comparar los PIC sin ninguna
restriccin, lo mismo que puede leer y programar sus fusibles de configuracin.

Los microcontroladores PIC de MICROCHIP estn todos provistos de memoria de
acceso serie. Tres de las patillas del encapsulado cambian momentneamente de funcin
durante la fase de programacin para dar acceso a la memoria de programa interna; este
cambio se desencadena simplemente aplicando una tensin 13.8V (tensin alta de
programacin) en la patilla VPP.

Aunque las memorias PIC se programan en serie, el programador se conecta al puerto
paralelo del PC. En efecto, por una parte este puerto se puede controlar muy fcilmente
por software y, por otra parte, suministra niveles TTL directamente utilizables. Adems,
debemos disponer de algunas lneas de control para conmutar las diversas
alimentaciones del microcontrolador en el curso de la programacin.

ANEXO 5: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
94
Las seales del puerto paralelo son seales TTL bastante deterioradas por el cable de
conexin. Por este motivo se restauran por medio de los inversores contenidos en el
circuito IC7 tipo 74LS06. Este circuito dispone de salidas de colector abierto, lo cual
permite controlar fcilmente los transistores Q1, Q2 y Q3. Q2 y Q3 permiten aplicar la
tensin alta de programacin VPP a las patillas adecuadas. El transistor Q1 gobierna la
tensin normal de alimentacin VDD y permite no alimentar el circuito a programar
ms que cuando es verdaderamente necesario acceder a l.

Para indicar la aplicacin o no de estas tensiones, se utilizan dos LED rojos, D4 y D5,
gobernados por las dos tensiones VPP. En cuanto al diodo D6, se enciende simplemente
cuando el programador est bajo tensin, con el fin de sealar el buen funcionamiento
de la alimentacin.

Los datos a programar en el circuito transitan por la puerta IC7a, pasando por IC7b en
caso de una segunda lectura del circuito. En cuanto al reloj de programacin pasa por
IC7c.

El programador se alimenta mediante la fuente de alimentacin MM-600, comn a
todos los mdulos de aplicacin del microinstructor TM-683. La salida de +15V pasa a
travs del regulador lineal de tensin IC5 tipo 7812, el cual tiene en su patilla comn
tres diodos (D1, D2, D3, tipo 1N4004) conectados en serie que elevan la tensin de
salida a 13.8V.

El programador dispone tambin de 5 microinterruptores disponibles en SW2 cuya
funcin es la de dejar las seales del programador en circuito abierto en caso de que no
se tenga que programar y se est en fase de ejecucin.

En la Figura 4 se puede ver la posicin de los siete microinterruptores disponibles en
SW2 cuando se est en fase de grabacin del PIC16F873 y cuando se est ejecutando el
programa.

Cuando se est en fase de programacin (ver Figura 4a), cerramos los interruptores 1 a
5 de forma que por el primer microinterruptor se gobierna la tensin alta de
programacin, por el tercer microinterruptor se gobierna la tensin de alimentacin del
chip, por el cuarto transita el reloj de programacin; y por el quinto transitan los datos a
programar. Los microinterruptores 6 y 7 deben estar abiertos ya que el 6 gobierna la
tensin del chip en la fase de ejecucin y el microinterruptor 7 indica la longitud del
dato de conversin A / D que se enva al microinstructor TM-683.


Figura 4. Posicin de los microinterruptores para (a) programacin,
o (b) ejecucin
ANEXO 5: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
95

2.4.1 Software de Programacin del PI C16F873

Numerosos programas disponibles en internet pueden utilizarse con el programador que
incorpora el mdulo de Control de Temperatura. Se ha elegido el programa P16Pro de
Bojan Dobaj. Este software se adapta perfectamente al montaje del programador.

Antes de ejecutar el programa se deben poner los interruptores de configuracin tal y
como indica la Figura 4a. Con el mdulo apagado, conectar el programador al puerto
paralelo del PC.

Una vez alimentado el mdulo, comprobar que el led verde est encendido. Los leds
rojos pueden estar encendidos o apagados segn el estado del puerto paralelo del PC.

Ejecutar entonces el programa P16PRO. Tratndose de un programa DOS se ejecuta
bajo MS-DOS, en modo MS-DOS si se trabaja con Windows 9x.

Cualquiera que sea el modo de ejecucin se accede a una pantalla principal. En la parte
superior izquierda de la pantalla se encuentran accesibles dos mens desplegables
pulsando la tecla Alt. Estos mens dan acceso a todo lo concerniente a los ficheros
(men FILE) y a la configuracin hardware.

La primera operacin a realizar consiste en configurar los parmetros del programador.
Para esto, vaya al men Settings y sitese en Other por medio de las teclas de
desplazamiento del cursor. Entonces puede seleccionar el puerto paralelo al cual se
encuentra conectado el mdulo. Una vez hecho esto ir al men Settings y situarse en
Hardware. Para que el programa funcione se debe configurar de la siguiente forma:

OutData D0 Neg
Clock D1 Neg
Vdd D2 -
Vpp D3 -
Vpp1 D4 -
Data In ACK Neg

A continuacin ir al men Settings y situarse en Device. Aparece una pantalla en la que
debemos escribir el nmero 9 (PIC16F873) y pulsar ENTER.

Entonces se debe elegir el fichero con extensin .HEX a programar en el men FILE-
>Open Program. Para programar el microcontrolador basta con pulsar la tecla F4.

ANEXO 5: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
96
3 Estudio Previo

Una vez leda y entendida la informacin tcnica del apartado 2, responder a las
siguientes cuestiones, argumentando las respuestas.

a) Obtener la expresin que relaciona la temperatura de la resistencia con el valor
de la conversin analgico digital, suponiendo que tenemos un conversor A /
D de 10 bits y que sus tensiones de referencia son: V
max
= 5V y V
min
= 0V para
un rango de temperaturas de 0C a 100C.
b) Si el resultado de la conversin analgico digital es 136 (88h), cul es la
temperatura de la resistencia?
c) Cul es la resolucin de la conversin en C / cuenta?
d) Indica el estado de las lneas RA4, RA5 y el valor a enviar por el puerto C para
visualizar en el dgito 1 el nmero 2 con punto decimal.
e) Completa la siguiente tabla:


PUERTO C Numero a
Visualizar RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0
0
1
2
3
4
5
6
7
8
9

ANEXO 5: MDULO DE CONTROL DE TEMPERATURA
INFORMACIN PARA EL ALUMNO
97
4 Conversin Analgico - Digital

En este apartado se debe programar el mdulo A / D del microcontrolador para que
realice la conversin analgico digital de la salida del sensor de temperatura y,
procesarlo para obtener en una posicin de memoria el valor de la temperatura de la
resistencia.

Para realizar este apartado, se tienen que seguir los siguientes pasos:

- Leer detenidamente el manual del microcontrolador PIC16F873.
- Configurar el mdulo A / D para que el canal analgico sea la lnea AN0
(RA0) y todas las dems lneas sean digitales. Las tensiones de referencia
tienen que ser V
DD
y V
SS
.
- Programar la velocidad de muestreo
- Programar la rutina de atencin a la interrupcin provocada por la
finalizacin de una conversin.
- Fuera de la rutina de atencin a la interrupcin, procesar el resultado de la
conversin para que en una posicin de la memoria tengamos el valor real de
la temperatura.


5 Visualizacin en el Display de 7 Segmentos

Crear una funcin que dado un valor de temperatura guardado en una posicin de
memoria determinado, visualice dicha temperatura en los dgitos del display de siete
segmentos con un decimal de precisin.

ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
99
Anexo 6:
Mdulo de Control de Temperatura
(Solucin de las Prcticas)

En este documento se encuentran las soluciones de las prcticas descritas en los anexos
3, 4 y 5.

1 Prctica de Control de Temperatura con Lectura de Ocho Bits

1.1 Estudio Previo

a) Obtener la expresin que relaciona la temperatura de la resistencia con el valor
de la conversin analgico digital, suponiendo que tenemos un conversor A /
D de 8 bits y que sus tensiones de referencia son: V
max
= 5V y V
min
= 0V para un
rango de temperaturas de 0C a 100C.

Los datos que se nos proporcionan son:

Rango de Temperatura: 0C a 100C
Tensin de Referencia: V
max
= 5V V
min
= 0V

De la documentacin tcnica del mdulo sabemos que:

Sensor de temperatura: 10 mV / C
Ganancia del amplificador: 5

Para el rango de temperaturas especificado, el sensor tendr un rango de salida de 0V a
1V. El amplificador aumentar esta tensin y tendremos un rango de tensin en la
entrada del conversor A / D de 0V a 5V.

Segn el enunciado, el conversor es de 8 bits. Por lo tanto, tendremos 256 posibles
estados.

T (C) Vo (Sensor) Vin (A/D) N
0 0 0 0
100 1 5 255

La expresin resultante es la siguiente:

T a N = (1)
55 , 2
100
255
= = =
T
N
a (2)

T N = 55 , 2
55 , 2
N
T =

ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
100
b) Si el resultado de la conversin analgico digital es 136 (88h), cul es la
temperatura de la resistencia?

Utilizando la expresin calculada en el apartado (a) se obtiene que el valor de la
temperatura de la resistencia es:

C T 3 , 53
55 , 2
136
= =

c) Cul es la precisin de la conversin en C / cuenta?

Para saber la precisin se calcula la temperatura que corresponde a una cuenta.

C T 392 , 0
55 , 2
1
= =

Precisin = 0,392
cuenta
C


d) Calcula la expresin que relaciona el dato digital de la entrada del conversor
digital analgico con la tensin de salida del mismo.

Como el conversor Digital Analgico es de 8 bits, tambin tendr 256 posibles
estados.

Calculamos la expresin que relaciona su entrada con su salida:

N Vo
0 0V
255 10V

N b V
o
=
255 10 = b V
cuenta
V
b 039 , 0
255
10
= =


N V
o
= 039 , 0

e) Qu tensin de salida corresponder con un valor digital en la entrada de 58
(3Ah)?

V V
o
262 , 2 58 039 , 0 = =

ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
101
1.2 Adquisicin y Procesado del Dato

En este apartado se debe crear un programa para adquirir el resultado de la conversin
analgico digital y, procesarlo para obtener en una posicin de memoria el valor de la
temperatura de la resistencia.

Para realizar este apartado, el interruptor de configuracin nmero 7 tiene que estar
abierto (estado lgico 1).

Programar la rutina de atencin a la interrupcin generada por un flanco descendente en
la lnea CA1, para que lea del puerto A de la VIA los 8 bits del resultado de la
conversin analgico digital.

Fuera de la interrupcin, operar con el dato ledo para obtener la temperatura de la
resistencia.


La rutina de servicio a la interrupcin provocada por un flanco descendente en la lnea
CA1 es la siguiente:


INTERR:
MOVE.B PORTA,ADRES ;Lee el valor de la conversion del ADC
RTE ;Fin de la Interrupcin

Cdigo 1. Rutina de Atencin a la interrupcin

A continuacin se presenta la funcin DEC_ADRES que se encarga de procesar el dato
recibido para obtener la temperatura real de la resistencia.

DEC_ADRES:
CLR.L D7
MOVE.B ADRES,D7
ASL #1,D7 ;Calcula el valor de la temperatura real
;(Multiplica por 2)
DIVU.W #5,D7 ;Divide por 5
MOVE.B D7,TREAL ;Guarda el valor de la temperatura real
MOVE.B #$00,DECIMAL
RTS

Cdigo 2. Clculo de la Temperatura real de la resistencia

El valor de la conversin guardado en (ADRES) se divide por 2,5 para obtener la
temperatura real.

ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
102
1.3 Controlador Digital

Programar un algoritmo de control que compare la temperatura obtenida con la
temperatura deseada y, acte en consecuencia para que la temperatura de la resistencia
sea lo ms similar posible a la temperatura deseada.

Se puede elegir uno de los siguientes algoritmos de control:

- Todo / Nada
- Todo / Nada con Histresis
- Proporcional (P)
- Proporcional Integral (PI)
- Proporcional, Integral y Derivativo (PID)

Razona el porqu de tu eleccin.

Este sistema presenta una gran inercia y el enfriamiento de la resistencia depende
mucho de la temperatura ambiental. Por este motivo cualquiera de los algoritmos de
control pueden ser vlidos.

El algoritmo de control Todo Nada es muy fcil de programar y su funcionamiento en
este sistema es correcto. Por lo tanto, la solucin a este apartado se ha dado para el
algoritmo Todo Nada:

CONTROL:
CLR.L D7
MOVE.B CONSIGNA,D7
CMP.B TREAL,D7
BGT MAYOR ;Consigna > Temperatura real
MENOR:
;Consigna <= Temperatura real
MOVE.B #$00,PORTB ;Limpia el flag de CA1.
;Interrupcion servida
RTS ;Fin de la rutina de atencion a la
;interrupcion

MAYOR:
MOVE.B #$FF,PORTB ;Limpia el flag de CA1.
;Interrupcion servida
RTS ;Fin de la rutina de atencion a la
;interrupcion

Cdigo 3. Algoritmo de control Todo Nada
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
103
1.4 Aplicacin de Ejemplo

El cdigo siguiente es un ejemplo de aplicacin de control de temperatura del horno
cuando la recepcin de la conversin analgico digital es de ocho bits.

La aplicacin presenta por pantalla el estado de la consigna de temperatura y el valor de
la temperatura real. El valor de consigna se puede aumentar o disminuir pulsando las
teclas + y - respectivamente.

;*********************************************************************
;PFC: ELABORACION DE MODULOS DIDACTICOS PARA MICROPROCESADORES
;MODULO No. 2: Control de temperatura
;APLICACION: Programa de control V.1.0 (Recepcion ADC de 8 bits)
;
;Realizado por: ANTONIO MIGUEL ZAPLANA ALCARAZ
;Director: JOSE LUIS RAMIREZ FALO
;*********************************************************************


ABSOLUTE
ORG $25000

;REGISTROS DE LA VIA

VIA EQU $60021 ;Direccion base de la VIA
PORTB EQU VIA+0 ;Output / Input Register B
PORTA EQU VIA+2 ;Output / Input Register A
DDRB EQU VIA+4 ;Data Direction Register B
DDRA EQU VIA+6 ;Data Direction Register A
ACR EQU VIA+22 ;Auxiliary Control Register
PCR EQU VIA+24 ;Peripheral Control Register
IFR EQU VIA+26 ;Interrupt Flags Register
IER EQU VIA+28 ;Interrupt Enable Register


;REGISTROS DE LA DUART

DUART EQU $60041 ;Direccion base la DUART
MR1A EQU DUART+0 ;Mode Register A
MR2A EQU DUART+0
SRA EQU DUART+2 ;Status Register A
CSRA EQU DUART+4 ;Clock Select Register A
CRA EQU DUART+4 ;Command Register A
RBA EQU DUART+6 ;Receiver Buffer A
TBA EQU DUART+6 ;Transmitter Buffer A
IPCR EQU DUART+8 ;Input Port Change Register
ACRD EQU DUART+8 ;DUART Auxiliay Control Register
ISR EQU DUART+10 ;Interrupt Status Register
IMR EQU DUART+10 ;Interrupt Mask Register
CUR EQU DUART+12 ;Current MSB of Counter
CTUR EQU DUART+12 ;Cunter / Timer Upper Register
CLR EQU DUART+14 ;Current LSB of Counter
CTLR EQU DUART+14 ;Counter / Timer Lower Register
MR1B EQU DUART+16 ;Mode Register B
MR2B EQU DUART+16
SRB EQU DUART+18 ;Status register B
CSRB EQU DUART+20 ;Clock Select Register B
CRB EQU DUART+20 ;Command Register B
RBB EQU DUART+22 ;Receiver Buffer B
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
104
TBB EQU DUART+22 ;Transmitter Buffer B
IVR EQU DUART+24 ;Interrupt Vector Register

;VARIABLES DEL PROGRAMA
VARIABLES EQU $27000
CONSIGNA EQU VARIABLES+0
TREAL EQU VARIABLES+2
TEMP1 EQU VARIABLES+8
TEMP2 EQU VARIABLES+10
ADRES EQU VARIABLES+14
DECIMAL EQU VARIABLES+18
CADENA EQU VARIABLES+20

VECTOR_VIA EQU $2003E ;Direccion del Pseudo-vector para la
;interrupcion de la VIA
VECTOR_DUART EQU $20098 ;Direccion del Pseudo-vector para la
;interrupcion de la DUART

;INICIALIZACION DE VARIABLES

CLR.W CONSIGNA
CLR.W TREAL
CLR.W TEMP1
CLR.W TEMP2
CLR.W ADRES
CLR.W CADENA
CLR.L D6 ;Indica si el programa debe terminar

;INICIALIZACION DE LOS PUERTOS DE LA VIA

MOVE.B #$00,DDRA ;Puerto A como entrada
MOVE.B #$FF,DDRB ;Puerto B como salida


;CONFIGURACION DE LA INTERRUPCION DE LA DUART
MOVE.B IVR,TEMP1 ;Salva el numero de intruccion
ANDI.B #$BF,MR1B ;Modo de interrupcion por llegada de
;caracter vlido
MOVE.B #$40,IVR ;Indica el numero de interrupcion
MOVE.L #TECLADO,VECTOR_DUART ;Direccion de la rutina de
;atencion a la interrupcion del teclado
MOVE.B #$20,IMR ;Activa la interrupcion del teclado

;CONFIGURACION DE LA INTERRUPCION DE LA VIA
MOVE.B IER,TEMP2 ;Guarda el estado de las interrupciones
;de la VIA
MOVE.B #%01111111,IER ;Desactiva interrupciones
MOVE.L #INTERR,VECTOR_VIA ;Direccion de la rutina de
;atencion a la interrupcion de la VIA
ANDI.B #%11111110,PCR ;Linea CA1 activa por flanco
;descendente
CLR.B IFR ;Limpia los flags
MOVE.B #%10000010,IER ;Activa la interrupcion de CA1


ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
105
;*********** INICIO DEL PROGRAMA PRINCIPAL ***********
INICIO:
CMPI #0,D6
BNE FINAL ;Se ha pulsado la tecla escape y el programa
;debe terminar

JSR DEC_ADRES ;Calcula la temperatura real
JSR CONTROL ;Algoritmo de control

;PRESENTA POR PANTALLA EL ESTADO DE LAS VARIABLES

ESCRIBE:

LEA TEXT,A1 ;Borra la linea de la pantalla
JSR PUTS

CLR.L D4
MOVE.B CONSIGNA,D4
JSR ITOA ;Convierte la consigna a una cadena de
;caracteres ASCII

LEA TEXT2,A1
JSR PUTS

LEA CADENA,A1 ;Carga la direccion de la cadena a
;visualizar
JSR PUTS ;Visualiza la consigna en la pantalla

LEA TEXT1,A1
JSR PUTS

CLR.L D4
MOVE.B TREAL,D4
JSR ITOA ;Convierte la Temperatura real a una cadena de
;caracteres ASCII

LEA CADENA,A1 ;Carga la direccion de la cadena a visualizar
JSR PUTS ;Visualiza la Temperatura real en la pantalla

LEA TEXT4,A1
JSR PUTS

CLR.L D4
MOVE.B DECIMAL,D4
JSR ITOA ;Convierte el decimal de la Temperatura real a
;una cadena de caracteres ASCII

LEA CADENA,A1 ;Carga la direccion de la cadena a visualizar
JSR PUTS ;Visualiza el decimal de la Temperatura real en
;la pantalla

LEA TEXT3,A1
JSR PUTS

JMP INICIO ;Vuelve al principio

FINAL:
MOVE.B TEMP2,IER ;Restaura el estado anterior de la VIA
MOVE.B #$00,IMR ;Desactiva interrupciones de la DUART
MOVE.B TEMP1,IVR ;Restaura el vector de interrupcion
TRAP #5 ;Fin del programa de control
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
106


;************** DEFINICION DE SUBRUTINAS **********************

;Funcion ITOA: convierte un entero situado en el registro D4 a una
;cadena de caracteres ASCII cuya direccion de inicio es la variable
;CADENA

ITOA:
MOVE.L #10,-(A7) ;Base numerica de la conversion
MOVE.L #CADENA,-(A7) ;Direccion de inicio del String
MOVE.L D4,-(A7) ;Dato a convertir
MOVE.L #19,D0 ;Funcion itoa() del programa monitor
TRAP #0 ;Convierte un entero a ASCII
ADDA.L #12,A7 ;Limpia la pila
RTS ;Fin de la subrutina


;Funcion PUTS: envia por el puerto serie una cadena de caracteres cuya
;direccion de inicio esta situada en el registro A1. El envio finaliza
;con el caracter $00

PUTS:
CMPI.B #$00,(A1) ;Comprueba si es el final de la cadena
BEQ FIN_CHAR ;Si. Finaliza el envio

BUSY:
BTST #2,SRB ;Comprueba si el transmisor est preparado
BEQ BUSY ;No esta preparado

MOVE.B (A1)+,TBB ;Si. Envia el caracter al puerto serie
JMP PUTS ;Envia el caracter siguiente

FIN_CHAR:
RTS ;Finaliza el envio de caracteres


;Decodifica el valor de la conversin y calcula el valor de la
;Temperatura real
DEC_ADRES:
CLR.L D7
MOVE.B ADRES,D7
ASL #1,D7 ;Calcula el valor de la temperatura real
;(Multiplica por 2)
DIVU.W #5,D7 ;Divide por 5
MOVE.B D7,TREAL ;Guarda el valor de la temperatura real
MOVE.B #$00,DECIMAL
RTS

;Algoritmo de control ON - OFF
CONTROL:
CLR.L D7
MOVE.B CONSIGNA,D7
CMP.B TREAL,D7
BGT MAYOR ;Consigna > Temperatura real
MENOR:
;Consigna <= Temperatura real
MOVE.B #$00,PORTB ;Limpia el flag de CA1.
;Interrupcion servida
RTS ;Fin de la rutina de atencion a la
;interrupcion
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
107

MAYOR:
MOVE.B #$FF,PORTB ;Limpia el flag de CA1. Interrupcion
;servida
RTS ;Fin de la rutina de atencion a la
;interrupcion



;******** RUTINAS DE ATENCION A LAS INTERRUPCIONES ************

;Rutina INTERR: Rutina de atencion a la interrupcion provocada por un
;flanco descendente en la linea CA1 de la VIA

INTERR:
MOVE.B PORTA,ADRES ;Lee el valor de la conversion del ADC
RTE ;Fin de la Interrupcin


;Rutina TECLADO: Rutina de atencion a la interrupcion provocada por la
;llegada de un caracter por el puerto serie

TECLADO:
CLR.L D3
MOVE.B RBB,D3 ;Lee el caracter recibido

CMPI.B #$1B,D3 ;Ha sido la tecla ESC?
BEQ ESCAPE

CMPI.B #$2B,D3 ;Ha sido la tecla '+'?
BEQ MAS

CMPI.B #$2D,D3 ;Ha sido la tecla '-'?
BEQ MENOS
JMP EOI ;Ha sido una tecla diferente de las anteriores

ESCAPE:
MOVE.B #1,D6 ;Indicamos al programa principal que debe
;terminar
RTE ;Fin de la rutina de atencion a la interrupcion del teclado

MAS:
CMPI.B #100,CONSIGNA
BEQ MAXIMO ;La consigna esta a su valor maximo
ADDQ.B #1,CONSIGNA ;No. Incrementa el valor de la consigna
RTE ;Fin de la rutina de atencion a la interrupcion del teclado

MAXIMO:
MOVE.B #100,CONSIGNA ;Consigna a su valor maximo
RTE ;Fin de la rutina de atencion a la interrupcion del teclado

MENOS:
CMPI.B #0,CONSIGNA
BEQ MINIMO ;La consigna esta a su valor minimo
SUBQ.B #1,CONSIGNA ;No. Decrementa el valor de la consigna
RTE ;Fin de la rutina de atencion a la interrupcion del teclado

MINIMO:
MOVE.B #0,CONSIGNA ;Consigna a su valor minimo
EOI:
RTE ;Fin de la rutina de atencion a la interrupcion del teclado
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
108
TEXT DB
$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$0
8,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$0
TEXT1 DB ' T. Real: ',$0
TEXT2 DB ' Consigna: ',$0
TEXT3 DB ' ',$0
TEXT4 DB '.',$0

END

Cdigo 4. Aplicacin de ejemplo
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
109
2 Prctica de Control de Temperatura con Lectura de Diez Bits

2.1 Estudio Previo

a) Obtener la expresin que relaciona la temperatura de la resistencia con el valor
de la conversin analgico digital, suponiendo que tenemos un conversor A /
D de 10 bits y que sus tensiones de referencia son: V
max
= 5V y V
min
= 0V para
un rango de temperaturas de 0C a 100C.

Los datos que se nos proporcionan son:

Rango de Temperatura: 0C a 100C
Tensin de Referencia: V
max
= 5V V
min
= 0V

De la documentacin tcnica del mdulo sabemos que:

Sensor de temperatura: 10 mV / C
Ganancia del amplificador: 5

Para el rango de temperaturas especificado, el sensor tendr un rango de salida de 0V a
1V. El amplificador aumentar esta tensin y tendremos un rango de tensin en la
entrada del conversor A / D de 0V a 5V.

Segn el enunciado, el conversor es de 10 bits. Por lo tanto, tendremos 1024 posibles
estados.

T (C) Vo (Sensor) Vin (A/D) N
0 0 0 0
100 1 5 1023

La expresin resultante es la siguiente:

T a N = (1)
23 , 10
100
1023
= = =
T
N
a (2)

T N = 23 , 10
23 , 10
N
T =

ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
110
b) Si el resultado de la conversin analgico digital es 136 (88h), cul es la
temperatura de la resistencia?

Utilizando la expresin calculada en el apartado (a) se obtiene que el valor de la
temperatura de la resistencia es:

C T 29 , 13
23 , 10
136
= =

c) Segn lo explicado en el Apartado 2.3, describe el proceso a seguir para
obtener en un registro de datos del 68000 (D0 D7) el valor completo de la
conversin analgico-digital.

Para obtener el valor completo de la conversin analgico-digital, se deben seguir los
siguientes pasos:

1.- Programar la VIA del microinstructor para que interrumpa a la CPU cada vez
que detecta un flanco de bajada en la lnea CA1.
2.- Programar la VIA del microinstructor para que cada vez que se produzca una
interrupcin generada por un flanco de bajada en la lnea CA1, la lnea CA2 se ponga a
nivel lgico 1 y pase a nivel lgico 0, automticamente cuando se lea el contenido
del Puerto A de la VIA.
3.- Reservar una posicin de memoria que nos indicar que byte de la
conversin es el que se desea leer en la prxima interrupcin.
4.- En la rutina de atencin a la interrupcin, leer el dato de la puerta A.
5.- Examinar el bit MSB (bit 7) para averiguar de qu parte de la conversin se
trata.
6.- Si se corresponde con el byte que se deseaba leer, guardarlo en memoria.
Indicar tambin que cul es el siguiente byte que se desea leer. Si el byte recibido no se
corresponde con el deseado, salir de la interrupcin y esperar a que se reciba otra.
7.- Volver a los puntos 4, 5 y 6.
8.- Cuando se hayan recibido correctamente los dos bytes necesarios para
reconstruir el valor completo de la conversin, borrar el bit nmero 7 del byte alto.
9.- Guardar el byte bajo en un registro, por ejemplo el registro D2.
10.- Guardar el byte alto en un registro, por ejemplo el registro D1.
11.- Desplazar los bits del registro D1, cinco posiciones hacia la izquierda.
12.- Realizar una OR lgica entre los registros D2 y D1.
13.- El valor completo de la conversin se obtiene en el registro utilizado como
destino en la operacin anterior.
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
111

d) Calcula la expresin que relaciona el dato digital de la entrada del conversor
digital analgico con la tensin de salida del mismo.

Como el conversor Digital Analgico es de 8 bits, tambin tendr 256 posibles
estados.

Calculamos la expresin que relaciona su entrada con su salida:

N Vo
0 0V
255 10V

N b V
o
=
255 10 = b V
cuenta
V
b 039 , 0
255
10
= =


N V
o
= 039 , 0

e) Qu tensin de salida corresponder con un valor digital en la entrada de 58
(3Ah)?

V V
o
262 , 2 58 039 , 0 = =
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
112
2.2 Adquisicin y Procesado del Dato

En este apartado se debe crear un programa para adquirir el resultado de la conversin
analgico digital y, procesarlo para obtener en una posicin de memoria el valor de la
temperatura de la resistencia.

Para realizar este apartado, el interruptor de configuracin nmero 7 tiene que estar
cerrado (estado lgico 0).

Programar la rutina de atencin a la interrupcin generada por un flanco descendente en
la lnea CA1, para que lea del puerto A de la VIA los 10 bits del resultado de la
conversin analgico digital.

Fuera de la interrupcin, operar con el dato ledo para obtener la temperatura de la
resistencia.


La rutina de servicio a la interrupcin provocada por un flanco descendente en la lnea
CA1 es la siguiente:

INTERR:
CLR.L D5
MOVE.B BAJO,D5
BEQ LEE_ALTO
MOVE.B PORTA,D5 ;Lee los 5 LSB de la conversion
BTST #7,D5 ;Comprueba si es el byte bajo
BNE EOI ;No es el correcto. Vuelve a leer
MOVE.B D5,ADRESL
MOVE.B #$00,BAJO
RTE

LEE_ALTO:
MOVE.B PORTA,D5 ;Lee los 5 MSB de la conversion
BTST #7,D5 ;Comprueba si es el byte correcto
BEQ EOI ;No es el correcto. Vuelve a leer
BCLR #7,D5 ;Borramos el bit indicador de byte alto
MOVE.B D5,ADRESH
MOVE.B #$FF,BAJO
EOI:
RTE

Cdigo 5. Rutina de atencin a la interrupcin.

En el cdigo anterior, la posicin de memoria indicada por BAJO indica si se debe leer
el byte bajo de la conversin (BAJO = FFh) o el alto (BAJO = 00h).

ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
113
A continuacin se presenta la funcin DEC_ADRES que se encarga de procesar el dato
recibido para obtener la temperatura real de la resistencia.

DEC_ADRES:
MOVE.B ADRESL,DECIMAL
ANDI.B #%00000111,DECIMAL

;Reconstruimos el dato de 10 bits
MOVE.B ADRESH,D1
MOVE.B ADRESL,D2

ASL #5,D1
OR D2,D1 ;El dato de 10 bits ya esta reconstruido
ANDI.L #$000003FF,D1
DIVU.W #10,D1 ;Calcula el valor de la temperatura real
ANDI.L #$000000FF,D1
CLR.W TREAL
MOVE.B D1,TREAL ;Guarda el valor de la temperatura real

RTS

Cdigo 6. Clculo de la temperatura real de la resistencia.

Como la precisin de la conversin es aproximadamente igual a 0,1 C / cuenta, los tres
bits menos significativos del resultado de la conversin nos proporcional directamente
el dgito decimal.

2.3 Controlador Digital

La solucin de este apartado es la misma que la dada anteriormente en el apartado 1.3.

2.4 Aplicacin de Ejemplo

El cdigo siguiente es un ejemplo de aplicacin de control de temperatura del horno
cuando la recepcin de la conversin analgico digital es de diez bits.

La aplicacin presenta por pantalla el estado de la consigna de temperatura y el valor de
la temperatura real. El valor de consigna se puede aumentar o disminuir pulsando las
teclas + y - respectivamente.

;*********************************************************************
;PFC: ELABORACION DE MODULOS DIDACTICOS PARA MICROPROCESADORES
;MODULO No. 2: Control de temperatura
;APLICACION: Programa de control V.2.0 (Recepcion ADC de 10 bits)
;
;Realizado por: ANTONIO MIGUEL ZAPLANA ALCARAZ
;Director: JOSE LUIS RAMIREZ FALO
;*********************************************************************


ABSOLUTE
ORG $25000

;REGISTROS DE LA VIA

VIA EQU $60021 ;Direccion base de la VIA
PORTB EQU VIA+0 ;Output / Input Register B
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
114
PORTA EQU VIA+2 ;Output / Input Register A
DDRB EQU VIA+4 ;Data Direction Register B
DDRA EQU VIA+6 ;Data Direction Register A
ACR EQU VIA+22 ;Auxiliary Control Register
PCR EQU VIA+24 ;Peripheral Control Register
IFR EQU VIA+26 ;Interrupt Flags Register
IER EQU VIA+28 ;Interrupt Enable Register


;REGISTROS DE LA DUART

DUART EQU $60041 ;Direccion base la DUART
MR1A EQU DUART+0 ;Mode Register A
MR2A EQU DUART+0
SRA EQU DUART+2 ;Status Register A
CSRA EQU DUART+4 ;Clock Select Register A
CRA EQU DUART+4 ;Command Register A
RBA EQU DUART+6 ;Receiver Buffer A
TBA EQU DUART+6 ;Transmitter Buffer A
IPCR EQU DUART+8 ;Input Port Change Register
ACRD EQU DUART+8 ;DUART Auxiliay Control Register
ISR EQU DUART+10 ;Interrupt Status Register
IMR EQU DUART+10 ;Interrupt Mask Register
CUR EQU DUART+12 ;Current MSB of Counter
CTUR EQU DUART+12 ;Cunter / Timer Upper Register
CLR EQU DUART+14 ;Current LSB of Counter
CTLR EQU DUART+14 ;Counter / Timer Lower Register
MR1B EQU DUART+16 ;Mode Register B
MR2B EQU DUART+16
SRB EQU DUART+18 ;Status register B
CSRB EQU DUART+20 ;Clock Select Register B
CRB EQU DUART+20 ;Command Register B
RBB EQU DUART+22 ;Receiver Buffer B
TBB EQU DUART+22 ;Transmitter Buffer B
IVR EQU DUART+24 ;Interrupt Vector Register

;VARIABLES DEL PROGRAMA
VARIABLES EQU $27000
CONSIGNA EQU VARIABLES+0
TREAL EQU VARIABLES+2
BAJO EQU VARIABLES+4
TEMP1 EQU VARIABLES+8
TEMP2 EQU VARIABLES+10
ADRESH EQU VARIABLES+12
ADRESL EQU VARIABLES+14
DECIMAL EQU VARIABLES+16
CADENA EQU VARIABLES+18

VECTOR_VIA EQU $2003E ;Direccion del Pseudo-vector para la
;interrupcion de la VIA
VECTOR_DUART EQU $20098 ;Direccion del Pseudo-vector para
;la interrupcion de la DUART

;INICIALIZACION DE VARIABLES

CLR.W CONSIGNA
CLR.W TREAL
CLR.W TEMP2
CLR.W TEMP1
CLR.W ADRESH
CLR.W ADRESL
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
115
CLR.W CADENA
CLR.L D6 ;Indica si el programa debe terminar
MOVE.B #$FF,BAJO

;INICIALIZACION DE LOS PUERTOS DE LA VIA

MOVE.B #$00,DDRA ;Puerto A como entrada
MOVE.B #$FF,DDRB ;Puerto B como salida

;CONFIGURACION DE LA INTERRUPCION DE LA DUART
MOVE.B IVR,TEMP1 ;Salva el vector de interrupcion
;anterior
ANDI.B #$BF,MR1B ;Modo de interrupcion por llegada de
;caracter vlido
MOVE.B #$40,IVR ;Indica el numero de interrupcion
MOVE.L #TECLADO,VECTOR_DUART ;Direccion de la rutina de
;atencion a la interrupcion del teclado
MOVE.B #$20,IMR ;Activa la interrupcion del teclado

;CONFIGURACION DE LA INTERRUPCION DE LA VIA

MOVE.B IER,TEMP2 ;Guarda el estado de las interrupciones
;de la VIA
MOVE.B #%01111111,IER ;Desactiva interrupciones
MOVE.L #INTERR,VECTOR_VIA ;Direccion de la rutina de
;atencion a la interrupcion de la VIA
ANDI.B #%11111000,PCR ;Linea CA1 activa por flanco
;descendente
ORI.B #%00001000,PCR
CLR.B IFR ;Limpia los flags
MOVE.B #%10000010,IER ;Activa la interrupcion de CA1

;*********** INICIO DEL PROGRAMA PRINCIPAL ***************

INICIO:
CMPI #0,D6
BNE FINAL ;Se ha pulsado la tecla escape y el programa
;debe terminar

JSR DEC_ADRES ;Calcula la temperatura real
JSR CONTROL ;Algoritmo de control

;PRESENTA POR PANTALLA EL ESTADO DE LAS VARIABLES

ESCRIBE:

LEA TEXT,A1 ;Borra la linea de la pantalla
JSR PUTS

CLR.L D4
MOVE.B CONSIGNA,D4
JSR ITOA ;Convierte la consigna a una cadena de
;caracteres ASCII

LEA TEXT2,A1
JSR PUTS

LEA CADENA,A1 ;Carga la direccion de la cadena a
;visualizar
JSR PUTS ;Visualiza la consigna en la pantalla
LEA TEXT1,A1
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
116
JSR PUTS

CLR.L D4
MOVE.B TREAL,D4
JSR ITOA ;Convierte la Temperatura real a una cadena de
;caracteres ASCII

LEA CADENA,A1 ;Carga la direccion de la cadena a visualizar
JSR PUTS ;Visualiza la Temperatura real en la pantalla

LEA TEXT4,A1
JSR PUTS

CLR.L D4
MOVE.B DECIMAL,D4
JSR ITOA ;Convierte el decimal de la Temperatura real a
;una cadena de caracteres ASCII

LEA CADENA,A1 ;Carga la direccion de la cadena a visualizar
JSR PUTS ;Visualiza el decimal de la Temperatura real en
;la pantalla

LEA TEXT3,A1
JSR PUTS

JMP INICIO ;Vuelve al principio

FINAL:
MOVE.B TEMP2,IER ;Desactiva interrupciones de la VIA
MOVE.B #$00,IMR ;Desactiva interrupciones de la DUART
MOVE.B TEMP1,IVR ;Restaura el vector de interrupcion
TRAP #5 ;Fin del programa de control


;************** DEFINICION DE SUBRUTINAS **********************

;Funcion ITOA: convierte un entero situado en el registro D4 a una
;cadena de caracteres ASCII cuya direccion de inicio es la variable
;CADENA

ITOA:
MOVE.L #10,-(A7) ;Base numerica de la conversion
MOVE.L #CADENA,-(A7) ;Direccion de inicio del String
MOVE.L D4,-(A7) ;Dato a convertir
MOVE.L #19,D0 ;Funcion itoa() del programa monitor
TRAP #0 ;Convierte un entero a ASCII
ADDA.L #12,A7 ;Limpia la pila
RTS ;Fin de la subrutina


;Funcion PUTS: envia por el puerto serie una cadena de caracteres cuya
;direccion de inicio esta situada en el registro A1. El envio finaliza
;con el caracter $00

PUTS:
CMPI.B #$00,(A1) ;Comprueba si es el final de la cadena
BEQ FIN_CHAR ;Si. Finaliza el envio

BUSY:
BTST #2,SRB ;Comprueba si el transmisor est preparado
BEQ BUSY ;No esta preparado
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
117

MOVE.B (A1)+,TBB ;Si. Envia el caracter al puerto serie
JMP PUTS ;Envia el caracter siguiente

FIN_CHAR:
RTS ;Finaliza el envio de caracteres


;******* RUTINAS DE ATENCION A LAS INTERRUPCIONES *************

;Rutina INTERR: Rutina de atencion a la interrupcion provocada por un
;flanco descendente en la linea CA1 de la VIA

INTERR:
CLR.L D5
MOVE.B BAJO,D5
BEQ LEE_ALTO
MOVE.B PORTA,D5 ;Lee los 5 LSB de la conversion
BTST #7,D5 ;Comprueba si es el byte bajo
BNE EOI ;No es el correcto. Vuelve a leer
MOVE.B D5,ADRESL
MOVE.B #$00,BAJO
RTE

LEE_ALTO:
MOVE.B PORTA,D5 ;Lee los 5 MSB de la conversion
BTST #7,D5 ;Comprueba si es el byte correcto
BEQ EOI ;No es el correcto. Vuelve a leer
BCLR #7,D5 ;Borramos el bit indicador de byte alto
MOVE.B D5,ADRESH
MOVE.B #$FF,BAJO
EOI:
RTE

DEC_ADRES:
MOVE.B ADRESL,DECIMAL
ANDI.B #%00000111,DECIMAL

;Reconstruimos el dato de 10 bits
MOVE.B ADRESH,D1
MOVE.B ADRESL,D2

ASL #5,D1
OR D2,D1 ;El dato de 10 bits ya esta reconstruido
ANDI.L #$000003FF,D1
DIVU.W #10,D1 ;Calcula el valor de la temperatura real
ANDI.L #$000000FF,D1
CLR.W TREAL
MOVE.B D1,TREAL ;Guarda el valor de la temperatura real

RTS

CONTROL:
CLR.L D7
MOVE.B CONSIGNA,D7
CMP.B TREAL,D7
BGT MAYOR ;Consigna > Temperatura real
;Consigna <= Temperatura real
MOVE.B #$00,PORTB ;Limpia el flag de CA1. Interrupcion
;servida
RTS
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
118

MAYOR:
MOVE.B #$FF,PORTB ;Limpia el flag de CA1. Interrupcion
;servida
RTS


;Rutina TECLADO: Rutina de atencion a la interrupcion provocada por la
;llegada de un caracter por el puerto serie

TECLADO:
CLR.L D3
MOVE.B RBB,D3 ;Lee el caracter recibido

CMPI.B #$1B,D3 ;Ha sido la tecla ESC?
BEQ ESCAPE

CMPI.B #$2B,D3 ;Ha sido la tecla '+'?
BEQ MAS

CMPI.B #$2D,D3 ;Ha sido la tecla '-'?
BEQ MENOS
RTE ;Ha sido una tecla diferente de las anteriores.
;Fin de la rutina de atencion a la interrupcion del teclado

ESCAPE:
MOVE.B #1,D6 ;Indicamos al programa principal que debe
;terminar
RTE ;Fin de la rutina de atencion a la interrupcion
;del teclado

MAS:
CMPI.B #100,CONSIGNA
BEQ MAXIMO ;La consigna esta a su valor maximo
ADDQ.B #1,CONSIGNA ;No. Incrementa el valor de la consigna
RTE ;Fin de la rutina de atencion a la interrupcion del teclado

MAXIMO:
MOVE.B #100,CONSIGNA ;Consigna a su valor maximo
RTE ;Fin de la rutina de atencion a la interrupcion del teclado

MENOS:
CMPI.B #0,CONSIGNA
BEQ MINIMO ;La consigna esta a su valor minimo
SUBQ.B #1,CONSIGNA ;No. Decrementa el valor de la consigna
RTE ;Fin de la rutina de atencion a la interrupcion del teclado

MINIMO:
MOVE.B #0,CONSIGNA ;Consigna a su valor minimo
RTE ;Fin de la rutina de atencion a la interrupcion del teclado

TEXT DB
$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$0
8,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$0
TEXT1 DB ' T. Real: ',$0
TEXT2 DB ' Consigna: ',$0
TEXT3 DB ' ',$0
TEXT4 DB '.',$0
END

Cdigo 7. Aplicacin de ejemplo.
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
119

3 Prctica de Conversin A/D y Visualizacin en Display de Siete
Segmentos

3.1 Estudio Previo

a) Obtener la expresin que relaciona la temperatura de la resistencia con el valor
de la conversin analgico digital, suponiendo que tenemos un conversor A /
D de 10 bits y que sus tensiones de referencia son: V
max
= 5V y V
min
= 0V para
un rango de temperaturas de 0C a 100C.

Los datos que se nos proporcionan son:

Rango de Temperatura: 0C a 100C
Tensin de Referencia: V
max
= 5V V
min
= 0V

De la documentacin tcnica del mdulo sabemos que:

Sensor de temperatura: 10 mV / C
Ganancia del amplificador: 5

Para el rango de temperaturas especificado, el sensor tendr un rango de salida de 0V a
1V. El amplificador aumentar esta tensin y tendremos un rango de tensin en la
entrada del conversor A / D de 0V a 5V.

Segn el enunciado, el conversor es de 10 bits. Por lo tanto, tendremos 1024 posibles
estados.

T (C) Vo (Sensor) Vin (A/D) N
0 0 0 0
100 1 5 1023

La expresin resultante es la siguiente:

T a N = (1)
23 , 10
100
1023
= = =
T
N
a (2)

T N = 23 , 10
23 , 10
N
T =
b) Si el resultado de la conversin analgico digital es 136 (88h), cul es la
temperatura de la resistencia?

Utilizando la expresin calculada en el apartado (a) se obtiene que el valor de la
temperatura de la resistencia es:

C T 29 , 13
23 , 10
136
= =

ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
120
c) Cul es la resolucin de la conversin en C / cuenta?

Para saber la resolucin se calcula la temperatura que corresponde a una cuenta.

C T 09775 , 0
23 , 10
1
= =

Precisin = 0,09775
cuenta
C


d) Indica el estado de las lneas RA4, RA5 y el valor a enviar por el puerto C para
visualizar en el dgito 1 el nmero 2 con punto decimal.

RA4 = 0
RA5 = 1
PORTC = 11101101 (Edh)

e) Completa la siguiente tabla:


PUERTO C Numero a
Visualizar RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0
0 0 1 1 1 1 1 1 0
1 0 0 1 1 0 0 0 0
2 0 1 1 0 1 1 0 1
3 0 1 1 1 1 0 0 1
4 0 0 1 1 0 0 1 1
5 0 1 0 1 1 0 1 1
6 0 1 0 1 1 1 1 1
7 0 1 1 1 0 0 0 0
8 0 1 1 1 1 1 1 1
9 0 1 1 1 1 0 1 1


3.2 Conversin Analgico Digital

Para realizar la conversin analgico digital de la salida del sensor de temperatura se
han creado tres funciones:

La primera de ellas (INI_ADC) se encarga de inicializar el mdulo de conversor
analgico digital del microcontrolador, configurndolo de manera que la entrada
analgica sea AN0, todas las dems lneas del puerto A sean digitales, las tensiones de
referencia son Vdd y Vss y la frecuencia de muestreo es F
OSC
/32, es decir, 125kHz.

La segunda funcin (INI_INTERRUP) configura las interrupciones del
microcontrolador para que ste sea interrumpido cuando el mdulo ADC finalice la
conversin.
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
121
Finalmente, la tercera funcin (AD_INTERRUPT) es la rutina de atencin a la
interrupcin provocada por el mdulo ADC. En ella se guarda en memoria el resultado
de la conversin.

INI_ADC:
BANK1
MOVLW B'10001110'
MOVWF ADCON1 ;Vref=Vdd, RA0=Analog, RA1,2,3,4,5, Digital
BANK0
MOVLW B'10000001'
MOVWF ADCON0 ;Fosc/32, Channel 0 Analog, AD on
RETURN

Cdigo 8. Inicializacin del mdulo ADC del microcontrolador.

INI_INTERRUP:

MOVLW B'01000000'
MOVWF INTCON ;Habilita Interrupciones Generales

BANK1
MOVLW B'01000000'
MOVWF PIE1 ;Habilita Interrupcin del conversor A/D
BANK0

BCF PIR1,6 ;Limpia el Flag

RETURN

Cdigo 9. Inicializacin de las interrupciones.

AD_INTERRUPT:
INT_OFF ;Inhabilita interrupciones
;Salvamos Contexto
MOVWF W_TEMP
SWAPF STATUS,W
MOVWF STATUS_TEMP
;Rutina de servicio a la interrupcin
MOVF ADRESH,W ;Cargamos la parte alta del resultado de la
;conversion
MOVWF ADCH_TEMP ;Guardamos el resultado
BANK1
MOVF ADRESL,W ;Cargamos la parte baja del resultado de la
;conversion
BANK0
MOVWF ADCL_TEMP ;Guardamos el resultado
;Restauramos el contexto
SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W

AD_ON ;Inicio de una nueva conversin.
BCF PIR1,6 ;Interrupcin servida

INT_ON ;Habilita interrupciones

RETFIE

Cdigo 10. Rutina de atencin a la interrupcin del mdulo ADC.
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
122
La siguiente funcin (DEC_ADRES) se encarga de procesar el resultado de la
conversin y calcular el valor de la temperatura real. El resultado se guarda en memoria.
Para realizar el clculo de la temperatura, esta funcin divide el resultado de la
conversin por 10.

DEC_ADRES:
movf ADCH , W
movwf _code_tmp_0000
movf ADCL, W
movwf _code_tmp_0001
clrf _code_tmp_0002
movlw D'10'
movwf _code_tmp_0003
movlw D'16'
movwf _code_tmp_0004
clrf _code_tmp_0005
clrf _code_tmp_0006
label_0000
rlf _code_tmp_0000 , W
rlf _code_tmp_0006 , F
rlf _code_tmp_0005 , F
movf _code_tmp_0003 , W
subwf _code_tmp_0006 , F
movf _code_tmp_0002 , W
btfss STATUS, C
incfsz _code_tmp_0002 , W
subwf _code_tmp_0005 , F
btfsc STATUS, C
goto label_0001
movf _code_tmp_0003 , W
addwf _code_tmp_0006 , F
movf _code_tmp_0002 , W
btfsc STATUS, C
incfsz _code_tmp_0002 , W
addwf _code_tmp_0005 , F
bcf STATUS, C
label_0001
rlf _code_tmp_0001 , F
rlf _code_tmp_0000 , F
decfsz _code_tmp_0004 , F
goto label_0000
movf _code_tmp_0001 , W
movwf Temperatura

RETURN

Cdigo 11. Clculo de la temperatura real de la resistencia.
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
123

3.3 Visualizacin en el Display de 7 Segmentos

Para poder visualizar el resultado de la conversin analgico digital en el visualizador
de siete segmentos se han creado las siguientes funciones:

- BIN_TO_BCD: Convierte un valor binario a cdigo BCD. Esta funcin da como
resultado tres dgitos que se guardan cada uno en una posicin de memoria.

- BCD_TO_7SEG: Convierte cada dgito BCD de la funcin anterior en dgitos
que se pueden visualizar en el display de siete segmentos. La conversin se
realiza mediante una tabla.

- DISPLAY: Visualiza el valor de la temperatura de la resistencia en el display de
siete segmentos. El dgito de la derecha lo utiliza como decimal.

- DELAY: Funcin de propsito general que realiza una espera de 5ms.

BIN_TO_BCD:
MOVF Temperatura,W ;Carga el valor binario inicial
CLRF Buffer_L
CLRF Buffer_H ;Inicia registros de trabajo

BIN_BCD_1:
ADDLW 0XF6 ;Resta 10 mediante suma de complemento a 2
BTFSS STATUS,C ;Hay Carry?
GOTO BIN_BCD_3 ;NO
MOVWF Temp_1 ;SI. Guardar en registro Temporal
INCF Buffer_L,F ;Incrementa byte bajo.
MOVF Buffer_L,W ;Copia al acumulador
XORLW B'00001010' ;0AH xor W
BTFSS STATUS,2 ;Buffer_L es igual a 10?
GOTO BIN_BCD_2 ;NO
CLRF Buffer_L ;SI. Poner Buffer_L a cero
INCF Buffer_H,F ;Incrementa Buffer_H
BIN_BCD_2:
MOVF Temp_1,W ;Recuperar el dato
GOTO BIN_BCD_1 ;Continuar la operacion
BIN_BCD_3:
ADDLW H'0A' ;Temporal + 0x0A
SWAPF Buffer_L,F
IORWF Buffer_L,F

MOVF Buffer_L,W
ANDLW B'00001111'
MOVWF DIG1_BCD ;Guarda las unidades

SWAPF Buffer_L,W
ANDLW B'00001111'
MOVWF DIG2_BCD ;Guarda las decenas

MOVF ADCL,W
ANDLW B'00000111'
MOVWF DIG0_BCD ;Guarda los dcimos
RETURN

Cdigo 12. Funcin que convierte binario a BCD.
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
124
BCD_TO_7SEG:
MOVF DIG0_BCD,W
CALL Tabla_7seg
MOVWF DIGIT0

MOVF DIG1_BCD,W
CALL Tabla_7seg
MOVWF DIGIT1
BSF DIGIT1,7 ;Activa el punto decimal del dgito 1

MOVF DIG2_BCD,W
CALL Tabla_7seg
MOVWF DIGIT2

RETURN

Cdigo 13. Convierte BCD a siete segmentos.

Tabla_7seg:
ADDWF PCL,F ;Calcula el desplazamiento
RETLW 0X7E ;0
RETLW 0X30 ;1
RETLW 0X6D ;2
RETLW 0X79 ;3
RETLW 0X33 ;4
RETLW 0X5B ;5
RETLW 0X5F ;6
RETLW 0X70 ;7
RETLW 0X7F ;8
RETLW 0X7B ;9

Cdigo 14. Tabla de conversin.

DISPLAY:
BCF PORTA,4
BCF PORTA,5 ;Selecciona el dgito 0

MOVF DIGIT0,W
MOVWF PORTC ;Visualiza en el dgito

CALL DELAY ;Espera

BSF PORTA,5 ;Selecciona el dgito 1
MOVF DIGIT1,W
MOVWF PORTC ;Visualizacin en el dgito

CALL DELAY ;Espera

BCF PORTA,5
BSF PORTA,4 ;Selecciona el dgito 2
MOVF DIGIT2,W
MOVWF PORTC ;Visualizacin en el dgito

CALL DELAY ;Espera

BCF PORTA,4
BCF PORTA,5 ;Selecciona el dgito 0
RETURN

Cdigo 15. Visualizacin en el display de la temperatura.
ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
125
DELAY:
MOVLW .5
MOVWF CONTADOR
DELAY_0:
BCF INTCON,T0IF
MOVLW 0Xf7
MOVWF TMR0
DELAY_1:
BTFSS INTCON,T0IF
GOTO DELAY_1
DECFSZ CONTADOR,F
GOTO DELAY_0
RETURN

Cdigo 16. Realiza una espera de 5 milisegundos.

3.4 Aplicacin de Conversin A / D y Visualizacin en Siete Segmentos

A continuacin se presenta el cdigo completo del programa que realiza la conversin
analgico digital de la temperatura de la resistencia y a visualiza en el display de siete
segmentos.

El cdigo est dividido en dos archivos:

- Fichero del cdigo principal
- Fichero de implementacin de las funciones utilizadas.

;Programa de medicin de temperatura mediante el conversor analogico
;digital disponible en el PIC16F873. Tambien se realiza la
;visualizacion del resultado en un display de 7 segmentos y 3 digitos

;PFC: ELABORACION DE MODULOS DIDACTICOS PARA MICROPROCESADORES
;Por: Antonio Miguel Zaplana Alcaraz
;Ponente: Jose Luis Ramirez Falo

;---------------------- PROGRAMA PRINCIPAL ---------------------------

LIST P=16f873 ;Tipo de Procesador
INCLUDE "P16f873.INC" ;Definiciones de registros internos

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC &
_WRT_ENABLE_OFF & _LVP_OFF

ORG 0X00 ;Vector de Reset
GOTO INICIO

ORG 0X04
GOTO AD_INTERRUPT ;Vector de interrupcion

ORG 0X05
INCLUDE "Temp.inc" ;Definiciones de las funciones de
;libreria

INICIO:
CALL INI_VAR ;Inicializa Variables
CALL INI_PORTS ;Configura puertos de E/S
CALL INI_ADC ;Configura Conversor A/D
CALL INI_INTERRUP ;Inicializa la interrupcin

ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
126
MOVLW B'00000110'
BANK1
MOVWF OPTION_REG ;Preescaler de 128 para TMR0
BANK0

INT_ON
CALL DELAY
AD_ON

INICIO2:

MOVF ADCH_TEMP,W ;Copia del resultado de la conversin
MOVWF ADCH
MOVF ADCL_TEMP,W
MOVWF ADCL

CALL DEC_ADRES ;Decodifica el resultado de la conversion A/D
CALL BIN_TO_BCD ;Convierte el resultado binario a BCD
CALL BCD_TO_7SEG ;Convierte BCD a 7 segmentos
CALL DISPLAY ;Visualiza el resultado en el display

GOTO INICIO2 ;Vuelve al principio del programa

NOP
END ;Fin del programa

Cdigo 17. Programa principal de la aplicacin.


;Programa de medicin de temperatura mediante el conversor analogico
;digital disponible en el PIC16F73. Tambien se realiza la
;visualizacion del resultado en un display de 7 segmentos y 3 digitos

;PFC: ELABORACION DE MODULOS DIDACTICOS PARA MICROPROCESADORES
;Por: Antonio Miguel Zaplana Alcaraz
;Ponente: Jose Luis Ramirez Falo

;---------------------- LIBRERIA DE FUNCIONES -----------------------

CBLOCK 0X20 ;Inicio de definicion de variables
DIGIT0 ;Valor de 7 segmentos a visualizar en el display 0
DIGIT1 ;Valor de 7 segmentos a visualizar en el display 1
DIGIT2 ;Valor de 7 segmentos a visualizar en el display 2
DIG0_BCD ;Valor BCD del digito 0
DIG1_BCD ;Valor BCD del digito 1
DIG2_BCD ;Valor BCD del digito 2
Buffer_L ;Parte baja del resultado de conversion binario a BCD
Buffer_H ;Parte alta del resultado de conversion binario a BCD
Temp_1 ;Registro temporal
TEMP1
TEMP2
CONTADOR
W_TEMP ;Registro temporal para guardar el acumulador
STATUS_TEMP ;Registro temporal para guardar el registro de estado
PCLATCH_TEMP;Registro temporal para guardar el PCLATCH
FSR_TEMP ;Registro temporal para guardar el FSR
ADCH_TEMP
ADCL_TEMP
ENDC ;Fin de definiciones de variables


ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
127
_code_tmp_0000 equ 0x70
_code_tmp_0001 equ 0x71
_code_tmp_0002 equ 0x72
_code_tmp_0003 equ 0x73
_code_tmp_0004 equ 0x74
_code_tmp_0005 equ 0x75
_code_tmp_0006 equ 0x76
__ret__lobyte equ 0x77
ADCH equ 0x78
ADCL equ 0x79
Temperatura equ 0x7a

;Cambio al banco de registros 1
#DEFINE BANK1 BSF STATUS,RP0
;Cambio al banco de registros 0
#DEFINE BANK0 BCF STATUS,RP0
;Inicio de una nueva conversion
#DEFINE AD_ON BSF ADCON0,2
;Habilita Interrupciones
#DEFINE INT_ON BSF INTCON,7
;Inhabilita Interrupciones
#DEFINE INT_OFF BCF INTCON,7

;---------------------------------------------------------------------
;DEFINICION DE SUBRUTINAS
;---------------------------------------------------------------------

;INI_VAR: Inicializa las variables
INI_VAR:
CLRF Temperatura
CLRF DIGIT0
CLRF DIGIT1
CLRF DIGIT2
CLRF DIG0_BCD
CLRF DIG1_BCD
CLRF DIG2_BCD
CLRF Buffer_L
CLRF Buffer_H
CLRF Temp_1
CLRF ADCH
CLRF ADCL

RETURN

;Realiza una temporizacin de 5 ms
DELAY:
MOVLW .5
MOVWF CONTADOR
DELAY_0:
BCF INTCON,T0IF
MOVLW 0Xf7
MOVWF TMR0
DELAY_1:
BTFSS INTCON,T0IF
GOTO DELAY_1
DECFSZ CONTADOR,F
GOTO DELAY_0
RETURN



ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
128
;INI_PORTS: Inicializa los puertos de E/S
INI_PORTS:
BANK1 ;Cambio de banco de registros
CLRF TRISB ;Puerto B como salidas
CLRF TRISC ;Puerto C como Salidas
MOVLW B'00000111'
MOVWF TRISA ;RA0, RA1 Y RA2 como entrada
BANK0 ;Cambio de banco de registros
RETURN

;INI_ADC: Configura el conversor A/D
INI_ADC:
BANK1
MOVLW B'10001110'
MOVWF ADCON1 ;Vref=Vdd, RA0=Analog, RA1,2,3,4,5, Digital
BANK0
MOVLW B'10000001'
MOVWF ADCON0 ;Fosc/32, Channel 0 Analog, AD on
RETURN

;Rutina de inicializacin de las interrupciones
INI_INTERRUP:

MOVLW B'01000000'
MOVWF INTCON ;Habilita Interrupciones Generales

BANK1
MOVLW B'01000000'
MOVWF PIE1 ;Habilita Interrupcin del conversor A/D
BANK0

BCF PIR1,6 ;Limpia el Flag

RETURN


;Rutina de servicio a la interrupcion provocada por la
;finalizacin de una conversin A/D
AD_INTERRUPT:
INT_OFF
;Salvamos Contexto
MOVWF W_TEMP
SWAPF STATUS,W
MOVWF STATUS_TEMP

;Rutina de servicio a la interrupcin
MOVF ADRESH,W ;Cargamos la parte alta del resultado de la
;conversion
MOVWF ADCH_TEMP ;Guardamos el resultado
BANK1
MOVF ADRESL,W ;Cargamos la parte baja del resultado de la
;conversion
BANK0
MOVWF ADCL_TEMP ;Guardamos el resultado


ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
129
;Restauramos el contexto
SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W

AD_ON ;Inicio de una nueva conversin.
BCF PIR1,6 ;Interrupcin servida

INT_ON

RETFIE


;DEC_ADRES: Decodifica el valor de la conversion A/D dando como
;resultado un binario de valor igual a la temperatura
DEC_ADRES:
movf ADCH , W
movwf _code_tmp_0000
movf ADCL, W
movwf _code_tmp_0001
clrf _code_tmp_0002
movlw D'10'
movwf _code_tmp_0003
movlw D'16'
movwf _code_tmp_0004
clrf _code_tmp_0005
clrf _code_tmp_0006
label_0000
rlf _code_tmp_0000 , W
rlf _code_tmp_0006 , F
rlf _code_tmp_0005 , F
movf _code_tmp_0003 , W
subwf _code_tmp_0006 , F
movf _code_tmp_0002 , W
btfss STATUS, C
incfsz _code_tmp_0002 , W
subwf _code_tmp_0005 , F
btfsc STATUS, C
goto label_0001
movf _code_tmp_0003 , W
addwf _code_tmp_0006 , F
movf _code_tmp_0002 , W
btfsc STATUS, C
incfsz _code_tmp_0002 , W
addwf _code_tmp_0005 , F
bcf STATUS, C
label_0001
rlf _code_tmp_0001 , F
rlf _code_tmp_0000 , F
decfsz _code_tmp_0004 , F
goto label_0000
movf _code_tmp_0001 , W
movwf Temperatura

RETURN




ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
130
;BIN_TO_BCD: Convierte un valor binario a BCD. El resultado se
;almacena en las variables DIG0_BCD, DIG1_BCD y DIG2_BCD
BIN_TO_BCD:
MOVF Temperatura,W ;Carga el valor binario inicial
CLRF Buffer_L
CLRF Buffer_H ;Inicia registros de trabajo

BIN_BCD_1:
ADDLW 0XF6 ;Resta 10 mediante suma de complemento a 2
BTFSS STATUS,C ;Hay Carry?
GOTO BIN_BCD_3 ;NO
MOVWF Temp_1 ;SI. Guardar en registro Temporal
INCF Buffer_L,F ;Incrementa byte bajo.
MOVF Buffer_L,W ;Copia al acumulador
XORLW B'00001010' ;0AH xor W
BTFSS STATUS,2 ;Buffer_L es igual a 10?
GOTO BIN_BCD_2 ;NO
CLRF Buffer_L ;SI. Poner Buffer_L a cero
INCF Buffer_H,F ;Incrementa Buffer_H
BIN_BCD_2:
MOVF Temp_1,W ;Recuperar el dato
GOTO BIN_BCD_1 ;Continuar la operacion
BIN_BCD_3:
ADDLW H'0A' ;Temporal + 0x0A
SWAPF Buffer_L,F
IORWF Buffer_L,F

MOVF Buffer_L,W
ANDLW B'00001111'
MOVWF DIG1_BCD ;Guarda las unidades

SWAPF Buffer_L,W
ANDLW B'00001111'
MOVWF DIG2_BCD ;Guarda las decenas

MOVF ADCL,W
ANDLW B'00000111'
MOVWF DIG0_BCD ;Guarda los dcimos

RETURN

;BCD_TO_7SEG: Convierte un valor BCD en otro de 7 segmentos para
;visualizarlo en el display
BCD_TO_7SEG:
MOVF DIG0_BCD,W
CALL Tabla_7seg
MOVWF DIGIT0


MOVF DIG1_BCD,W
CALL Tabla_7seg
MOVWF DIGIT1
BSF DIGIT1,7 ;Activa el punto decimal del dgito 1

MOVF DIG2_BCD,W
CALL Tabla_7seg
MOVWF DIGIT2

RETURN


ANEXO 6: MDULO DE CONTROL DE TEMPERATURA
SOLUCIN DE LAS PRCTICAS
131
Tabla_7seg:
ADDWF PCL,F ;Calcula el desplazamiento
RETLW 0X7E ;0
RETLW 0X30 ;1
RETLW 0X6D ;2
RETLW 0X79 ;3
RETLW 0X33 ;4
RETLW 0X5B ;5
RETLW 0X5F ;6
RETLW 0X70 ;7
RETLW 0X7F ;8
RETLW 0X7B ;9

;DISPLAY: Visualiza la temperatura en los tres digitos de
;7 segmentos. Digito 0(RA5=0;RA4=0), Digito 1(RA5=1;RA4=0), Digito
;2(RA5=0;RA4=1)
DISPLAY:
BCF PORTA,4
BCF PORTA,5 ;Selecciona el dgito 0

MOVF DIGIT0,W
MOVWF PORTC ;Visualiza en el dgito

CALL DELAY ;Espera

BSF PORTA,5 ;Selecciona el dgito 1
MOVF DIGIT1,W
MOVWF PORTC ;Visualizacin en el dgito

CALL DELAY ;Espera

BCF PORTA,5
BSF PORTA,4 ;Selecciona el dgito 2
MOVF DIGIT2,W
MOVWF PORTC ;Visualizacin en el dgito

CALL DELAY ;Espera

BCF PORTA,4
BCF PORTA,5 ;Selecciona el dgito 0

RETURN

Cdigo 18. Implementacin de funciones.

ANEXO 7: MDULO DE CONTROL DE TEMPERATURA
PROGRAMA RESIDENTE EN EL MICROCONTROLADOR
132
Anexo 7:
Mdulo de Control de Temperatura
(Programa Residente en el Microcontrolador)

Para poder realizar las prcticas de la asignatura Sistemas Digitales II, el
microcontrolador de la placa debe estar cargado con el programa siguiente.
El programa est dividido en dos archivos, tal y como se explic en el apartado 5.2.4 del
captulo Memoria Descriptiva.

;Programa de medicin de temperatura mediante el conversor analogico
;digitalc disponible en el PIC16F873. Tambien se realiza la
;visualizacion del resultado en un display de 7 segmentos y 3 digitos

;PFC: ELABORACION DE MODULOS DIDACTICOS PARA MICROPROCESADORES
;Por: Antonio Miguel Zaplana Alcaraz
;Ponente: Jose Luis Ramirez Falo

;---------------------- PROGRAMA PRINCIPAL ---------------------------

LIST P=16f873 ;Tipo de Procesador
INCLUDE "P16f873.INC" ;Definiciones de registros internos

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC &
_WRT_ENABLE_OFF & _LVP_OFF

ORG 0X00 ;Vector de Reset
GOTO INICIO

ORG 0X04
GOTO AD_INTERRUPT ;Vector de interrupcion

ORG 0X05
INCLUDE "Temp.inc" ;Definiciones de las funciones de
;libreria

INICIO:
CALL INI_VAR ;Inicializa Variables
CALL INI_PORTS ;Configura puertos de E/S
CALL INI_ADC ;Configura Conversor A/D
CALL INI_INTERRUP ;Inicializa la interrupcin del conversor
;A/D
MOVLW B'00000110'
BANK1
MOVWF OPTION_REG ;Preescaler de 128 para TMR0
BANK0

INT_ON
CALL DELAY
AD_ON

INICIO2:

MOVF ADCH_TEMP,W
MOVWF ADCH
MOVF ADCL_TEMP,W
MOVWF ADCL

CALL DEC_ADRES ;Decodifica el resultado de la conversion A/D
ANEXO 7: MDULO DE CONTROL DE TEMPERATURA
PROGRAMA RESIDENTE EN EL MICROCONTROLADOR
133
CALL ADRES_VIA ;Envia el resultado a la VIA
CALL BIN_TO_BCD ;Convierte el resultado binario a BCD
CALL BCD_TO_7SEG ;Convierte BCD a 7 segmentos
CALL DISPLAY ;Visualiza el resultado en el display

GOTO INICIO2 ;Vuelve al principio del programa

NOP
END


Cdigo 1. Fichero TEMP.ASM. Programa principal


;Programa de medicin de temperatura mediante el conversor analogico
;digital disponible en el PIC16F73. Tambien se realiza la
;visualizacion del resultado en un display de 7 segmentos y 3 digitos

;PFC: ELABORACION DE MODULOS DIDACTICOS PARA MICROPROCESADORES
;Por: Antonio Miguel Zaplana Alcaraz
;Ponente: Jose Luis Ramirez Falo

;---------------------- LIBRERIA DE FUNCIONES -----------------------

CBLOCK 0X20 ;Inicio de definicion de variables
DIGIT0 ;Valor de 7 segmentos a visualizar en el display 0
DIGIT1 ;Valor de 7 segmentos a visualizar en el display 1
DIGIT2 ;Valor de 7 segmentos a visualizar en el display 2
DIG0_BCD ;Valor BCD del digito 0
DIG1_BCD ;Valor BCD del digito 1
DIG2_BCD ;Valor BCD del digito 2
Buffer_L ;Parte baja del resultado de conversion binario a BCD
Buffer_H ;Parte alta del resultado de conversion binario a BCD
Temp_1 ;Registro temporal
TEMP1
TEMP2
CONTADOR
W_TEMP ;Registro temporal para guardar el acumulador
STATUS_TEMP ;Registro temporal para guardar el registro de estado
PCLATCH_TEMP;Registro temporal para guardar el PCLATCH
FSR_TEMP ;Registro temporal para guardar el FSR
ADCH_TEMP
ADCL_TEMP
ENDC ;Fin de definiciones de variables


_code_tmp_0000 equ 0x70
_code_tmp_0001 equ 0x71
_code_tmp_0002 equ 0x72
_code_tmp_0003 equ 0x73
_code_tmp_0004 equ 0x74
_code_tmp_0005 equ 0x75
_code_tmp_0006 equ 0x76
__ret__lobyte equ 0x77
ADCH equ 0x78
ADCL equ 0x79
Temperatura equ 0x7a

;Cambio al banco de registros 1
#DEFINE BANK1 BSF STATUS,RP0
;Cambio al banco de registros 0
ANEXO 7: MDULO DE CONTROL DE TEMPERATURA
PROGRAMA RESIDENTE EN EL MICROCONTROLADOR
134
#DEFINE BANK0 BCF STATUS,RP0
;Inicio de una nueva conversion
#DEFINE AD_ON BSF ADCON0,2
;Habilita Interrupciones
#DEFINE INT_ON BSF INTCON,7
;Inhabilita Interrupciones
#DEFINE INT_OFF BCF INTCON,7

;---------------------------------------------------------------------
;DEFINICION DE SUBRUTINAS
;---------------------------------------------------------------------

;INI_VAR: Inicializa las variables
INI_VAR:
CLRF Temperatura
CLRF DIGIT0
CLRF DIGIT1
CLRF DIGIT2
CLRF DIG0_BCD
CLRF DIG1_BCD
CLRF DIG2_BCD
CLRF Buffer_L
CLRF Buffer_H
CLRF Temp_1
CLRF ADCH
CLRF ADCL

RETURN

;Realiza una temporizacin de 5 ms
DELAY:
MOVLW .5
MOVWF CONTADOR
DELAY_0:
BCF INTCON,T0IF
MOVLW 0Xf7
MOVWF TMR0
DELAY_1:
BTFSS INTCON,T0IF
GOTO DELAY_1
DECFSZ CONTADOR,F
GOTO DELAY_0
RETURN


;INI_PORTS: Inicializa los puertos de E/S
INI_PORTS:
BANK1 ;Cambio de banco de registros
CLRF TRISB ;Puerto B como salidas
CLRF TRISC ;Puerto C como Salidas
MOVLW B'00000111'
MOVWF TRISA ;RA0, RA1 Y RA2 como entrada
BANK0 ;Cambio de banco de registros
RETURN


ANEXO 7: MDULO DE CONTROL DE TEMPERATURA
PROGRAMA RESIDENTE EN EL MICROCONTROLADOR
135
;INI_ADC: Configura el conversor A/D
INI_ADC:
BANK1
MOVLW B'10001110'
MOVWF ADCON1 ;Vref=Vdd, RA0=Analog, RA1,2,3,4,5, Digital
BANK0
MOVLW B'10000001'
MOVWF ADCON0 ;Fosc/32, Channel 0 Analog, AD on
RETURN

;Rutina de inicializacin de las interrupciones
INI_INTERRUP:

MOVLW B'01000000'
MOVWF INTCON ;Habilita Interrupciones Generales

BANK1
MOVLW B'01000000'
MOVWF PIE1 ;Habilita Interrupcin del conversor A/D
BANK0

BCF PIR1,6 ;Limpia el Flag

RETURN


;Rutina de servicio a la interrupcion provocada por la
;finalizacin de una conversin A/D
AD_INTERRUPT:
INT_OFF
;Salvamos Contexto
MOVWF W_TEMP
SWAPF STATUS,W
MOVWF STATUS_TEMP

;Rutina de servicio a la interrupcin
MOVF ADRESH,W ;Cargamos la parte alta del resultado de la
;conversion
MOVWF ADCH_TEMP ;Guardamos el resultado
BANK1
MOVF ADRESL,W ;Cargamos la parte baja del resultado de la
;conversion
BANK0
MOVWF ADCL_TEMP ;Guardamos el resultado

;Restauramos el contexto
SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W

AD_ON ;Inicio de una nueva conversin.
BCF PIR1,6 ;Interrupcin servida

INT_ON

RETFIE



ANEXO 7: MDULO DE CONTROL DE TEMPERATURA
PROGRAMA RESIDENTE EN EL MICROCONTROLADOR
136
;DEC_ADRES: Decodifica el valor de la conversion A/D dando como
;resultado un binario de valor igual a la temperatura
DEC_ADRES:
movf ADCH , W
movwf _code_tmp_0000
movf ADCL, W
movwf _code_tmp_0001
clrf _code_tmp_0002
movlw D'10'
movwf _code_tmp_0003
movlw D'16'
movwf _code_tmp_0004
clrf _code_tmp_0005
clrf _code_tmp_0006
label_0000
rlf _code_tmp_0000 , W
rlf _code_tmp_0006 , F
rlf _code_tmp_0005 , F
movf _code_tmp_0003 , W
subwf _code_tmp_0006 , F
movf _code_tmp_0002 , W
btfss STATUS, C
incfsz _code_tmp_0002 , W
subwf _code_tmp_0005 , F
btfsc STATUS, C
goto label_0001
movf _code_tmp_0003 , W
addwf _code_tmp_0006 , F
movf _code_tmp_0002 , W
btfsc STATUS, C
incfsz _code_tmp_0002 , W
addwf _code_tmp_0005 , F
bcf STATUS, C
label_0001
rlf _code_tmp_0001 , F
rlf _code_tmp_0000 , F
decfsz _code_tmp_0004 , F
goto label_0000
movf _code_tmp_0001 , W
movwf Temperatura

RETURN

;ADRES_VIA: Envia el resultado de la conversion a la VIA del
;microinstructor
ADRES_VIA:
BTFSS PORTA,1 ;Miramos cual es la configuracin de la
;placa: 8 bits o 10 bits (5+5)
GOTO ENVIA10 ;Configuracin de 10 bits

ENVIA8: ;Configuracin de 8 bits
MOVF ADCH,W
MOVWF TEMP2
SWAPF TEMP2,F
RLF TEMP2,F
RLF TEMP2,W
ANDLW B'11000000'
MOVWF TEMP2

MOVF ADCL,W
MOVWF TEMP1
ANEXO 7: MDULO DE CONTROL DE TEMPERATURA
PROGRAMA RESIDENTE EN EL MICROCONTROLADOR
137
RRF TEMP1,F
RRF TEMP1,W
ANDLW B'00111111'

IORWF TEMP2,F

MOVF TEMP2,W
MOVWF PORTB

CALL INTERRUPCION ;GENERA UNA INTERRUPCION EN LA VIA

RETURN

ENVIA10:
MOVF ADCL,W
MOVWF TEMP1
SWAPF TEMP1,W
ANDLW B'00001110'
MOVWF TEMP1

MOVF ADCH,W
MOVWF TEMP2
SWAPF TEMP2,W
ANDLW B'00110000'

IORWF TEMP1,F
RRF TEMP1,W
ANDLW B'00011111'
MOVWF TEMP1
BSF TEMP1,7

MOVF ADCL,W
ANDLW B'00011111'
MOVWF TEMP2

MOVWF PORTB ;Se envia el byte bajo (5 ltimos bits)
CALL INTERRUPCION ;Genera una interrupcion en la via

TEST_CA2:
BTFSC PORTA,2 ;Mira si el programa del TM-683 ha leido
;el dato
GOTO TEST_CA2 ;NO. CA2=1

MOVF TEMP1,W ;SI. Vamos a enviar el byte alto.
MOVWF PORTB ;Se envia el byte alto (5 primeros bits)
CALL INTERRUPCION ;Genera una interrupcion en la via

TEST_CA2_2:
BTFSC PORTA,2 ;Mira si el programa del TM-683 ha leido
;el dato
GOTO TEST_CA2_2 ;NO. CA2=1
;SI
RETURN


ANEXO 7: MDULO DE CONTROL DE TEMPERATURA
PROGRAMA RESIDENTE EN EL MICROCONTROLADOR
138
;Rutina que genera una interrupcion en la VIA produciendo un flanco
;descendente en la lnea CA1 de la VIA
INTERRUPCION:
BCF PORTA,3 ;Desactiva la lnea CA1 de la VIA
BSF PORTA,3 ;Activa la lnea CA1
RETURN

;BIN_TO_BCD: Convierte un valor binario a BCD. El resultado se
;almacena en las variables DIG0_BCD, DIG1_BCD y DIG2_BCD
BIN_TO_BCD:
MOVF Temperatura,W ;Carga el valor binario inicial
CLRF Buffer_L
CLRF Buffer_H ;Inicia registros de trabajo

BIN_BCD_1:
ADDLW 0XF6 ;Resta 10 mediante suma de complemento a 2
BTFSS STATUS,C ;Hay Carry?
GOTO BIN_BCD_3 ;NO
MOVWF Temp_1 ;SI. Guardar en registro Temporal
INCF Buffer_L,F ;Incrementa byte bajo.
MOVF Buffer_L,W ;Copia al acumulador
XORLW B'00001010' ;0AH xor W
BTFSS STATUS,2 ;Buffer_L es igual a 10?
GOTO BIN_BCD_2 ;NO
CLRF Buffer_L ;SI. Poner Buffer_L a cero
INCF Buffer_H,F ;Incrementa Buffer_H
BIN_BCD_2:
MOVF Temp_1,W ;Recuperar el dato
GOTO BIN_BCD_1 ;Continuar la operacion
BIN_BCD_3:
ADDLW H'0A' ;Temporal + 0x0A
SWAPF Buffer_L,F
IORWF Buffer_L,F

MOVF Buffer_L,W
ANDLW B'00001111'
MOVWF DIG1_BCD ;Guarda las unidades

SWAPF Buffer_L,W
ANDLW B'00001111'
MOVWF DIG2_BCD ;Guarda las decenas

MOVF ADCL,W
ANDLW B'00000111'
MOVWF DIG0_BCD ;Guarda los dcimos

RETURN

;BCD_TO_7SEG: Convierte un valor BCD en otro de 7 segmentos para
;visualizarlo en el display
BCD_TO_7SEG:
MOVF DIG0_BCD,W
CALL Tabla_7seg
MOVWF DIGIT0


MOVF DIG1_BCD,W
CALL Tabla_7seg
MOVWF DIGIT1
BSF DIGIT1,7 ;Activa el punto decimal del dgito 1

ANEXO 7: MDULO DE CONTROL DE TEMPERATURA
PROGRAMA RESIDENTE EN EL MICROCONTROLADOR
139
MOVF DIG2_BCD,W
CALL Tabla_7seg
MOVWF DIGIT2

RETURN

Tabla_7seg:
ADDWF PCL,F ;Calcula el desplazamiento
RETLW 0X7E ;0
RETLW 0X30 ;1
RETLW 0X6D ;2
RETLW 0X79 ;3
RETLW 0X33 ;4
RETLW 0X5B ;5
RETLW 0X5F ;6
RETLW 0X70 ;7
RETLW 0X7F ;8
RETLW 0X7B ;9

;DISPLAY: Visualiza la temperatura en los tres digitos de
;7 segmentos. Digito 0(RA5=0;RA4=0), Digito 1(RA5=1;RA4=0), Digito
;2(RA5=0;RA4=1)
DISPLAY:
BCF PORTA,4
BCF PORTA,5 ;Selecciona el dgito 0

MOVF DIGIT0,W
MOVWF PORTC ;Visualiza en el dgito

CALL DELAY ;Espera

BSF PORTA,5 ;Selecciona el dgito 1
MOVF DIGIT1,W
MOVWF PORTC ;Visualizacin en el dgito

CALL DELAY ;Espera

BCF PORTA,5
BSF PORTA,4 ;Selecciona el dgito 2
MOVF DIGIT2,W
MOVWF PORTC ;Visualizacin en el dgito

CALL DELAY ;Espera

BCF PORTA,4
BCF PORTA,5 ;Selecciona el dgito 0

RETURN

Cdigo 2. Fichero TEMP.INC. Implementacin de funciones.


ANEXO 8: CONTROLADOR DE TECLADO
INFORMACIN PARA EL ALUMNO
140
Anexo 8:
Prctica de Controlador de Teclado
(Informacin Para el Alumno)

1 Enunciado de la Prctica

El objetivo de esta prctica es realizar un controlador de un teclado de ordenador, de
forma que se decodifiquen los cdigos de exploracin de las teclas pulsadas y se
visualice el carcter de dicha tecla en la pantalla del ordenador.

Para realizar esta prctica, el alumno tiene que montar el circuito elctrico que se
encuentra al final de este documento. Una vez montado y verificado el circuito, tendr
que realizar la programacin del controlador de teclado.

1.1 Material Necesario

- 1 CI MAX232
- 1 Conector hembra DIN 5 pins
- 1 Conector hembra DB25
- 4 Condensadores electrolticos 1uF 63V
- 1 Protoboard
- 1 Microinstructor TM-683
- Un teclado de ordenador con conector DIN-5
- Fuente de Alimentacin +5V

2 Estudio Previo

Estudia el esquema elctrico del circuito y responde a las siguientes cuestiones:

a) Cuantas lneas utiliza el teclado para enviar el cdigo de exploracin de las
teclas pulsadas?

b) Cul es la funcin principal del circuito integrado MAX232?

c) Qu nivel de tensin tendremos en la salida del MAX232 si en la entrada
tenemos un nivel TTL de 5V?

d) Cules son los niveles de tensin que define el protocolo RS232 para las lneas
de recepcin y transmisin de datos?

e) Cules son los cdigos de exploracin de un teclado?


ANEXO 8: CONTROLADOR DE TECLADO
INFORMACIN PARA EL ALUMNO
141
3 Trabajo Prctico

a) Monta el circuito de la prctica en la placa protoboard.

b) Verificacin del circuito. Comprueba que para una entrada de +5V se obtiene
una salida entre 5V y 15V. Comprueba tambin que para una entrada de 0V se
obtiene una salida entre +5V y + 15V.

c) Conecta el teclado al conector DIN y conecta la lnea de datos del teclado a una
entrada del analizador lgico. Alimenta el circuito y dibuja la trama de bits que
aparece cuando se pulsa una tecla. Seala cules son el bit de inicio, los bits de
datos, el bit de paridad y el bit de parada.

d) Conecta el circuito montado al conector del Canal A del microinstructor. Realiza
un programa que sea capaz de leer los cdigos de exploracin de las teclas
pulsadas y visualice los caracteres en la pantalla del ordenador.


4 Informacin Tcnica

El esquema elctrico del circuito que se encuentra al final de este documento. En l se
pueden observar las siguientes partes:

En primer lugar, un conector tipo DIN hembra de cinco contactos para la conexin del
teclado. En la Figura 1 se puede observar el aspecto de este conector.


Figura 1. Conector DIN 5

En la Tabla 1 se explican las funciones de cada uno de los contactos del conector DIN
de cinco contactos.

Pin Seal
1 Reloj
2 Datos
3 Reset
4 Masa
5 Vcc (+5V)

Tabla 1. Seales del conector
DIN 5

Por los contactos 1 y 2 circulan las seales de reloj y datos respectivamente. Estas dos
lneas son bidireccionales de colector abierto y niveles TTL. En nuestro caso la
comunicacin ser asncrona por lo que la lnea de reloj no se conectar.
ANEXO 8: CONTROLADOR DE TECLADO
INFORMACIN PARA EL ALUMNO
142
Por la lnea de datos, el teclado enva los cdigos de exploracin de las teclas pulsadas
con el siguiente formato:

- Un bit de inicio
- Ocho bits de datos correspondientes al cdigo de exploracin de la tecla pulsada
empezando por el bit menos significativo.
- Un bit de paridad impar
- Un bit de parada.

La lnea nmero tres corresponde a la seal de RESET, la cual tampoco conectaremos.
Finalmente las lneas cuatro y cinco son para la conexin del nodo de referencia y
alimentacin, respectivamente.

En segundo lugar, tenemos un conector hembra de 25 contactos tipo DB25 para la
conexin del circuito de adaptacin al conector del Canal A del microinstructor.

El significado de cada uno de los contactos del conector se encuentra en la Tabla 2.

Pin Seal Canal A
1 GND
2 TxA
3 RxA
4 RTSA
5 CTSA
6 DSRA
7 GND
8 CDA
9 19 No conectadas
20 DTRA
21 25 No conectadas

Tabla 2. Seales del conector serie DB25

De los veinticinco contactos disponibles, slo se utilizan dos; el contacto nmero tres
para la recepcin de datos del teclado y, el contacto nmero siete para la conexin al
nodo de referencia.


Por ltimo, tenemos un circuito integrado tipo MAX232 cuya funcin es la de adaptar la
seal de datos enviada por el teclado con niveles TTL, al nivel de tensin que define el
protocolo RS-232, que es el usado por el micoinstructor para comunicaciones serie. Este
protocolo define los niveles de tensiones descritos en la Tabla 3.


0 Lgico +5V a +15V 0 Lgico +3V a +25V
1 Lgico -5V a -15V 1 Lgico -3V a 25V
(a) (b)

Tabla 3. Niveles lgicos RS-232, (a) para las salidas, (b) para las entradas


ANEXO 8: CONTROLADOR DE TECLADO
INFORMACIN PARA EL ALUMNO
143
El circuito integrado MAX232 se caracteriza por tener dos transmisores y dos
receptores, se alimenta con una tensin de +5V y necesita cuatro condensadores
electrolticos de un microfaradio.

4.1. Funcionamiento del Teclado

A continuacin se explica el funcionamiento del teclado utilizado para la realizacin de
este mdulo. Los cdigos generados por el teclado pueden variar en funcin de la clase
de teclado. Slo se consideran para esta prctica la utilizacin de las teclas de caracteres
y nmeros del teclado normal. No se ha considerado la pulsacin de las teclas de
funcin, las teclas extendidas ni las teclas del teclado numrico.

Cuando se pulsa una tecla, el teclado enva un cdigo que identifica la tecla pulsada,
estos cdigos se conocen con el nombre de cdigos de exploracin del teclado. Al soltar
la tecla, el teclado enva dos cdigos: el primer cdigo, llamado cdigo BREAK, es el
0xF0. El segundo cdigo es el mismo cdigo de exploracin que envi al pulsar la tecla.
Por ejemplo, cuando se pulsa la tecla de la letra R, el teclado enva el cdigo 0x2D.
Al soltar la tecla, enva los cdigos 0xF0 seguido del cdigo 0x2D.

4.1.1. Cdigos de Rastreo del Teclado

En la Tabla 4 se presentan los cdigos de rastreo de las teclas correspondientes al
teclado utilizado. Como se ha indicado anteriormente, estos cdigos pueden variar
segn el teclado utilizado.

Cdigo Cdigo Cdigo
Hex. Dec.
Tecla
Hex. Dec.
Tecla
Hex. Dec.
Tecla
0D 13 TAB 2B 43 F 42 66 K
15 21 Q 2C 44 T 43 67 I
16 22 1 2D 45 R 44 68 O
1A 26 Z 2E 46 5 45 69 0
1B 27 S 31 49 N 46 70 9
1C 28 A 32 50 B 49 73 .:
1D 29 W 33 51 H 4A 74 -_
1E 30 2 34 52 G 4B 75 L
21 33 C 35 53 Y 4C 76
22 34 X 36 54 6 4D 77 P
23 35 D 3 58 M 4E 78 ?
24 36 E 3B 59 J 5A 90 INTRO
25 37 4 3C 60 U 5D 93
26 38 3 3D 61 7 76 118 ESCAPE
29 41 ESPACIO 3E 62 8
2A 42 V 41 65 ,;

Tabla 4. Cdigos de Exploracin del Teclado.
ANEXO 8: CONTROLADOR DE TECLADO
INFORMACIN PARA EL ALUMNO
144
4.1.2 Programacin de la DUART

En este apartado se explica como debe ser programado el chip de comunicaciones serie
que lleva incorporado el microinstructor, DUART (Dual Universal Asynchronous
Receiver Transmitter). De la misma forma que se indic en el apartado anterior respecto
de los cdigos de exploracin del teclado, la programacin de la DUART puede variar
segn el teclado, ya que la velocidad de transmisin de los datos puede ser diferente.

Para que el microinstructor pueda recibir los cdigos de exploracin de las teclas
pulsadas, el canal A de la DUART debe ser programada de la siguiente forma:

- Paridad Impar
- Ocho bits por carcter
- Un bit de parada
- Control de RxRTS = NO
- Seleccin de RxINT por RxRDY
- Modo de error por carcter
- Modo de canal normal
- Control de RxRTS = NO
- Control de Tx por CTS = NO
- Modo y reloj del Timer = TIMER (X1/CLK)
- Interrupciones generadas por cambio en IP3, IP2, IP1, IP0 = NO
- Valor de inicio del Timer = 0x0009
- Velocidad de recepcin por Timer
- Interrupciones habilitadas: RxRDYA

ANEXO 9: CONTROLADOR DE TECLADO
SOLUCIN DE LA PRCTICA
146
Anexo 9:
Prctica de Controlador de Teclado
(Solucin de la Prctica)

1 Enunciado de la Prctica

El objetivo de esta prctica es realizar un controlador de un teclado de ordenador, de
forma que se decodifiquen los cdigos de exploracin de las teclas pulsadas y se
visualice el carcter de dicha tecla en la pantalla del ordenador.

Para realizar esta prctica, el alumno tiene que montar el circuito elctrico que se
encuentra al final de este documento. Una vez montado y verificado el circuito, tendr
que realizar la programacin del controlador de teclado.

1.1 Material Necesario

- 1 CI MAX232
- 1 Conector hembra DIN 5 pins
- 1 Conector hembra DB25
- 4 Condensadores electrolticos 1uF 63V
- 1 Protoboard
- 1 Microinstructor TM-683
- Un teclado de ordenador con conector DIN-5
- Fuente de Alimentacin +5V

2 Estudio Previo

Estudia el esquema elctrico del circuito y responde a las siguientes cuestiones:

a) Cuantas lneas utiliza el teclado para enviar el cdigo de exploracin de las
teclas pulsadas?

El teclado utiliza una lnea para enviar el cdigo de exploracin de las teclas pulsadas.
Adems, utiliza otra lnea para enviar una onda cuadrada para sincronizar los datos
enviados.

b) Cul es la funcin principal del circuito integrado MAX232?

La funcin principal del circuito integrado MAX232 es la de adaptar los niveles de
tensin de las seales TTL a los niveles de tensin establecidos por el protocolo RS232.


c) Qu nivel de tensin tendremos en la salida del MAX232 si en la entrada
tenemos un nivel TTL de 5V?

En la salida del circuito MAX232 tendremos una tensin entre 5 y -10V.

ANEXO 9: CONTROLADOR DE TECLADO
SOLUCIN DE LA PRCTICA
147
d) Cules son los niveles de tensin que define el protocolo RS232 para las lneas
de recepcin y transmisin de datos?

Los niveles de tensin que define el protocolo RS232 son los siguientes:


0 Lgico +5V a +15V 0 Lgico +3V a +25V
1 Lgico -5V a -15V 1 Lgico -3V a 25V
(a) salidas (b) entradas

e) Cules son los cdigos de exploracin de un teclado?

Los cdigos de exploracin del teclado son los siguientes:

Cdigo Cdigo Cdigo
Hex. Dec.
Tecla
Hex. Dec.
Tecla
Hex. Dec.
Tecla
0D 13 TAB 2B 43 F 42 66 K
15 21 Q 2C 44 T 43 67 I
16 22 1 2D 45 R 44 68 O
1A 26 Z 2E 46 5 45 69 0
1B 27 S 31 49 N 46 70 9
1C 28 A 32 50 B 49 73 .:
1D 29 W 33 51 H 4A 74 -_
1E 30 2 34 52 G 4B 75 L
21 33 C 35 53 Y 4C 76
22 34 X 36 54 6 4D 77 P
23 35 D 3 58 M 4E 78 ?
24 36 E 3B 59 J 5A 90 INTRO
25 37 4 3C 60 U 5D 93
26 38 3 3D 61 7 76 118 ESCAPE
29 41 ESPACIO 3E 62 8
2A 42 V 41 65 ,;

ANEXO 9: CONTROLADOR DE TECLADO
SOLUCIN DE LA PRCTICA
148
Trabajo Prctico

a) Monta el circuito de la prctica en la placa protoboard.

b) Verificacin del circuito. Comprueba que para una entrada de +5V se obtiene
una salida entre 5V y 15V. Comprueba tambin que para una entrada de 0V
se obtiene una salida entre +5V y + 15V.

Para una entrada de +5V, se obtiene una salida de aproximadamente 5V (-4,8V). Para
una entrada de 0V se obtiene una salida de aproximadamente 5V (4,95V). Los niveles
de tensin obtenidos son ligeramente inferiores a los marcados por el estndar RS232
pero son suficientes para un buen funcionamiento.


c) Conecta el teclado al conector DIN y conecta la lnea de datos del teclado a una
entrada del analizador lgico. Alimenta el circuito y dibuja la trama de bits que
aparece cuando se pulsa una tecla. Seala cules son el bit de inicio, los bits de
datos, el bit de paridad y el bit de parada.

Al pulsar la tecla INTRO se visualiza en el analizador lgico la siguiente trama de bits,
correspondientes al cdigo de exploracin de teclado nmero 90 (0x5A).



d) Conecta el circuito montado al conector del Canal A del microinstructor.
Realiza un programa que sea capaz de leer los cdigos de exploracin de las
teclas pulsadas y visualice los caracteres en la pantalla del ordenador.


El cdigo de programa de la solucin de la prctica es el siguiente:

ANEXO 9: CONTROLADOR DE TECLADO
SOLUCIN DE LA PRCTICA
149
;*************************************************************
;PFC: ELABORACION DE MODULOS DIDACTICOS PARA MICROPROCESADORES
;PRACTICA DE CONTROLADOR DE TECLADO
;
; Realizado por: ANTONIO MIGUEL ZAPLANA ALCARAZ
; Director: JOSE LUIS RAMIREZ FALO
;*************************************************************

ABSOLUTE
ORG $20098 ;Direccion del pseudo-vector correspondiente
DC.L TECLADO ;al num. 64

;REGISTROS DE LA DUART

DUART EQU $60041 ;Direccion base la DUART
MR1A EQU DUART+0 ;Mode Register A
MR2A EQU DUART+0
SRA EQU DUART+2 ;Status Register A
CSRA EQU DUART+2 ;Clock Select Register A
CRA EQU DUART+4 ;Command Register A
RBA EQU DUART+6 ;Receiver Buffer A
TBA EQU DUART+6 ;Transmitter Buffer A
IPCR EQU DUART+8 ;Input Port Change Register
ACR EQU DUART+8 ;DUART Auxiliay Control Register
ISR EQU DUART+10 ;Interrupt Status Register
IMR EQU DUART+10 ;Interrupt Mask Register
CUR EQU DUART+12 ;Current MSB of Counter
CTUR EQU DUART+12 ;Cunter / Timer Upper Register
CLR EQU DUART+14 ;Current LSB of Counter
CTLR EQU DUART+14 ;Counter / Timer Lower Register
MR1B EQU DUART+16 ;Mode Register B
MR2B EQU DUART+16
SRB EQU DUART+18 ;Status register B
CSRB EQU DUART+18 ;Clock Select Register B
CRB EQU DUART+20 ;Command Register B
RBB EQU DUART+22 ;Receiver Buffer B
TBB EQU DUART+22 ;Transmitter Buffer B
IVR EQU DUART+24 ;Interrupt Vector Register
OPRS EQU DUART+28
STRCONT EQU DUART+28 ;Start-Counter command
STPCONT EQU DUART+30 ;Stop-Counter command

KEYB_STATUS EQU $25500 ;Direccion del registro
;de estado del teclado

EX EQU $E0 ;Extended code
SHIFTD EQU $59 ;Right Shift code
SHIFTI EQU $12 ;Left Shift code
CLOCK EQU $58 ;Caps Lock code
CTRL EQU $14 ;Control Code
ALT EQU $00 ;Alt code
REENVIO EQU $FE ;Comando de reenvio
ACK EQU $FA ;Dato aceptado
OVERF EQU $00 ;Desbordamiento
FALLO EQU $FD ;Fallo en teclado
BAT EQU $AA ;Inicio acabado
ECO EQU $EE
ESC EQU $76 ;Tecla de Escape
SUELTA EQU $F0 ;Codigo Break


ANEXO 9: CONTROLADOR DE TECLADO
SOLUCIN DE LA PRCTICA
150
ORG $25000


CLR.W KEYB_STATUS ;Inicializa el registro de estado

;CONFIGURA EL CANAL A DE LA DUART PARA RECIBIR
;CARACTERES DEL TECLADO
MOVE.B #%00100000,CRA
MOVE.B #%00010000,CRA ;Inicializa MR a MR1A
MOVE.B #%00000111,MR1A ;Paridad impar, 8 bits caracter
MOVE.B #%00000111,MR2A ;1 bit de parada
MOVE.B #%01100000,ACR ;Timer CLK
MOVE.B #$09,CTLR ;Velocidad 12500 bits/seg
MOVE.B #$00,CTUR
MOVE.B #%11011101,CSRA ;Muestreo por Timer
MOVE.B STRCONT,D4 ;Arranca el temporizador
MOVE.B #%00000000,IMR ;Inhabilita interrupciones
MOVE.B #64,IVR ;Vector de interrupcion
MOVE.B #%00000010,IMR ;Habilita interrupcion RxRDYA
MOVE.B #%00000001,CRA ;Habilita Receptor del Canal A

LOOP:
BTST #4,KEYB_STATUS ;Mira si se ha pulsado ESC
BNE FINAL

BTST #5,KEYB_STATUS ;Mira si tiene algun caracter
;para visualizar

BEQ LOOP ;No hay ninguno. Sigue esperando


JSR PUTCHAR ;Visualiza el caracter
BCLR #5,KEYB_STATUS
JMP LOOP

FINAL:
MOVE.B #$00,IMR ;Inhabilita las Interrupciones
TRAP #5 ;Salida al programa MONITOR

;*************************************************************
; FIN DEL PROGRAMA PRINCIPAL
;*************************************************************

;ENVIA EL CARACTER SITUADO EN EL REGISTRO D0 POR EL CANAL B
;DEL PUERTO SERIE PARA QUE SE VISUALICE EN LA PANTALLA
PUTCHAR:
CMPI #13,D0 ;Comprueba si es ENTER
BEQ ENTER

BTST #2,SRB ;Comprueba si el transmisor
;esta preparado
BEQ PUTCHAR ;NO esta preparado
MOVE.B D0,TBB ;SI. Envia el caracter
RTS


ANEXO 9: CONTROLADOR DE TECLADO
SOLUCIN DE LA PRCTICA
151
;Si se pulsa la tecla INTRO, se deben enviar
;dos caracteres consecutivos: el retorno de carro (13)
;y el salto de linea (10)
ENTER:
BTST #2,SRB ;Comprueba si el transmisor
;esta preparado
BEQ ENTER ;NO esta preparado
MOVE.B D0,TBB ;SI. Envia el caracter
MOVE.B #$0A,D0 ;Carga el salto de linea
JMP PUTCHAR

;*************************************************************
; RUTINA DE ATENCION A LA INTERRUPCION DEL TECLADO
;*************************************************************

TECLADO:
CLR.L D1
MOVE.L #0,A1
MOVE.B RBA,D1 ;Lee el codigo de exploracion

CMPI.B #SUELTA,D1 ;Mira si es codigo MAKE o BRAKE
BEQ SOLTADA ;Salta si es BRAKE

CMPI.B #SHIFTD,D1 ;Mira si es una tecla de mayuscula
BEQ SHIFT

CMPI.B #SHIFTI,D1 ;Mira si es una tecla de mayuscula
BEQ SHIFT

CMPI.B #CLOCK,D1 ;Mira si es una tecla de bloq. mayuscula
BEQ SHIFT

CMPI.B #CTRL,D1 ;Mira se es una tecla de Control
BEQ CONTROL

CMPI.B #ALT,D1 ;Mira se es una tecla de Alt
BEQ ALT_KEY

CMPI.B #ESC,D1 ;Mira se es una tecla de Escape
BEQ ESCAPE

CMPI.B #OVERF,D1 ;Mira se es una tecla de Escape
BEQ EOI

BTST #6,KEYB_STATUS ;Se ha soltado la tecla
BNE BRAKE

BTST #1,KEYB_STATUS ;Esta mayusculas activado?
BNE MAYUSCULA

BTST #3,KEYB_STATUS ;Esta control activado?
BNE EOI ;Si. Fin de la interrupcion

BTST #2,KEYB_STATUS ;Esta alt activado?
BNE EOI ;Si. Fin de la interrupcion

BTST #0,KEYB_STATUS ;Esta ex activado?
BNE EX_OFF ;Si. Fin de la interrupcion


MOVEA.L #TABLA_MIN,A1
ANEXO 9: CONTROLADOR DE TECLADO
SOLUCIN DE LA PRCTICA
152
ADDA.L D1,A1 ;Calcula el indice de la tabla

MOVE.B (A1),D0 ;Busca el codigo ASCII

BSET #5,KEYB_STATUS ;Visualizar Caracter

EOI:

RTE


EXTENDIDA:
BSET #0,KEYB_STATUS
RTE

EX_OFF:
BCLR #0,KEYB_STATUS
RTE

CONTROL:
BCHG #3,KEYB_STATUS
RTE

ALT_KEY:
BCHG #2,KEYB_STATUS
RTE

ESCAPE:
BSET #4,KEYB_STATUS
RTE

MAYUSCULA:
BTST #0,KEYB_STATUS ;Esta ex activado?
BNE EX_OFF ;Si. Fin de la interrupcion

BTST #3,KEYB_STATUS ;Esta control activado?
BNE EOI ;Si. Fin de la interrupcion

BTST #2,KEYB_STATUS ;Esta alt activado?
BNE EOI ;Si. Fin de la interrupcion

MOVEA.L #TABLA_MAY,A1
ADDA.L D1,A1 ;Calcula el indice de la tabla

MOVE.B (A1),D0 ;Busca el codigo ASCII

BSET #5,KEYB_STATUS ;Visualizar Caracter

RTE

SHIFT:
BCHG #1,KEYB_STATUS
RTE

SOLTADA:
BSET #6,KEYB_STATUS
RTE



ANEXO 9: CONTROLADOR DE TECLADO
SOLUCIN DE LA PRCTICA
153
BRAKE:
BCLR #6,KEYB_STATUS

CMPI.B #REENVIO,D1 ;Mira se es un codigo de reenvio
BEQ EOI

CMPI.B #ACK,D1;Mira se es un codigo de reconocimiento
BEQ EOI

CMPI.B #FALLO,D1 ;Mira se es un codigo de fallo
BEQ EOI

CMPI.B #BAT,D1 ;Mira se es un codigo de BAT terminado
BEQ EOI

CMPI.B #ECO,D1 ;Mira se es un codigo de eco
BEQ EOI

CMPI.B #SHIFTD,D1 ;Mira si es una tecla de mayuscula
BEQ SHIFT

CMPI.B #SHIFTI,D1 ;Mira si es una tecla de mayuscula
BEQ SHIFT

CMPI.B #CTRL,D1 ;Mira se es una tecla de Control
BEQ CONTROL

CMPI.B #ALT,D1 ;Mira se es una tecla de Alt
BEQ ALT_KEY

BTST #0,KEYB_STATUS ;Esta ex activado?
BNE EX_OFF ;Si. Fin de la interrupcion

BCLR #5,KEYB_STATUS

RTE

;Tablas de codigos de caracteres

TABLA_MIN DB ' ',9,' q1 zsaw2 cxde43 vftr5
nbhgy6 mju78 ,kio09 .-lp',39,' ',13,' ',$0

TABLA_MAY DB ' ',9,' ! Q! ZSAW" CXDE$ VFTR%
NBHGY& MJU/( ;KIO=) :_LP? ',13,' ',$0

NOP
END

Cdigo 1. Solucin de la Prctica de Controlador de Teclado.

En el cdigo anterior se utiliza una posicin de memoria designada por la etiqueta
KEYB_STATUS que indica el estado de las teclas pulsadas del teclado. El significado
de cada uno de los bits es el siguiente:

7 6 5 4 3 2 1 0
X BREAK VISUALIZAR
CARCTER
ESC CONTROL ALT SHIFT EX


ANEXO 9: CONTROLADOR DE TECLADO
SOLUCIN DE LA PRCTICA
154
EX = 1: El siguiente cdigo que se recibir a continuacin pertenece a una tecla del
teclado extendido

SHIFT = 1: Indica que la tecla de maysculas est pulsada

ALT = 1: Indica que la tecla ALT est pulsada

CONTROL = 1: Indica que la tecla CONTROL est pulsada

ESC = 1: Indica que se ha pulsado la tecla escape

VISUALIZAR CARCTER = 1: Indica que hay un carcter en el registro D0 que se
tiene que visualizar en la pantalla del ordenador.

BREAK = 1: Indica que el cdigo que se recibir a continuacin pertenece a una tecla
que se ha soltado.


155
Referencias

[1] HITACHI HD44780U http://semiconductor.hitachi.com/hd44780.pdf 30-08-2002
[2] PIC 16F873 http://www.microchip.com/download/lit/pline/picmicro/families/16f87x/30292c.pdf
30-08-2002
[3] Funcionamiento del
Teclado
http://atc.ugr.es/docencia/udigital/index.html 30-08-2002
[4] MAX232 http://pdfserv.maxim-ic.com/arpdf/MAX220-MAX249.pdf 30-08-2002
[5] DUART MC68HC681 http://e-www.motorola.com/brdata/PDFDB/docs/MC68681UM.pdf 30-08-2002
[6] Software P16Pro http://www.picallw.com/zip/p16pr364.zip 30-08-2002

También podría gustarte