elaboración de módulos didácticos basados en...

158
Elaboración de Módulos Didácticos Basados en Microprocesadores AUTOR: Antonio Miguel Zaplana Alcaraz DIRECTOR: José Luís Ramírez Falo FECHA: Septiembre / 2002.

Upload: trankhuong

Post on 19-Feb-2018

231 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

Elaboración de Módulos Didácticos Basados en Microprocesadores

AUTOR: Antonio Miguel Zaplana Alcaraz

DIRECTOR: José Luís Ramírez Falo

FECHA: Septiembre / 2002.

Page 2: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

2

Índice

MEMORIA DESCRIPTIVA 5

1. Objeto del Proyecto 6

2. Titular 6

3. Antecedentes 6

4. Posibles Soluciones y Solución Adoptada 7

4.1 Módulo 1: Control de un Display LCD 7

4.2 Módulo 2: Control de Temperatura 7

4.3 Práctica de Controlador de Teclado 9

5. Descripción de la Solución Adoptada 10

5.1 Módulo 1: Control de un Display LCD 10

5.1.1 Objetivo Didáctico del Módulo 10

5.1.2 Planificación de la Práctica 11

5.1.3 Conocimientos Adquiridos 11

5.1.4 Descripción del Hardware 11

5.2 Módulo 2: Control de Temperatura 15

5.2.1 Objetivo Didáctico del Módulo 15

5.2.2 Planificación de la Práctica 16

5.2.2.1 Práctica de Control de Temperatura con Lectura de 8 bits 16

5.2.2.2 Práctica de Control de Temperatura con Lectura de 10 bits 17

5.2.2.3 Práctica de Conversión A / D y Visualización en 7 Segmentos 18

5.2.3 Descripción del Hardware 19

5.2.3.1 Medición de Temperatura 22

5.2.3.2 Conversión Analógico – Digital 23

5.2.3.3 Visualización en 7 Segmentos 25

5.2.3.4 Conversión Digital – Analógico 26

5.2.3.5 Conexión con el Microinstructor TM-683 27

5.2.3.6 Módulo de Calor 28

5.2.3.7 Programador PIC16F873 28

5.2.3.7.1 Software de Programación del PIC16F873 30

5.2.4 Descripción del Software 31

Page 3: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

3

5.3 Práctica de Controlador de Teclado 33

5.3.1 Objetivo Didáctico del Módulo 33

5.3.2 Planificación de la Práctica 33

5.3.3 Descripción del Hardware 34

5.3.3.1 Funcionamiento del Teclado 36

5.3.3.1.1 Códigos de Rastreo del Teclado 36

5.3.3.2 Programación de la DUART 37

6. Resumen del Presupuesto 37

PLANOS 38

Plano Nº1: Módulo Control LCD. Esquema Eléctrico

Plano Nº2: Módulo Control LCD. Situación de Componentes

Plano Nº3: Módulo Control LCD. Fotolitos

Plano Nº4: Módulo Control de Temperatura. Esquema Eléctrico

Plano Nº5: Módulo Control de Temperatura. Situación de Componentes

Plano Nº6: Módulo Control de Temperatura. Fotolito Cara Superior

Plano Nº7: Módulo Control de Temperatura. Fotolito Cara Inferior

Plano Nº8: Controlador de Teclado. Esquema Eléctrico

PRESUPUESTO 39

1. Módulo de Control LCD 40

1.1 Cuadro de Precios 40

1.2 Aplicación de Precios 41

1.3 Resumen del Presupuesto 41

2. Módulo de Control de Temperatura 42

2.1 Cuadro de Precios 42

2.2 Aplicación de Precios 43

2.3 Resumen del Presupuesto 44

3. Práctica de Controlador de Teclado 45

3.1 Cuadro de Precios 45

3.2 Aplicación de Precios 45

3.3 Resumen del Presupuesto 46

4. Resumen Total del Presupuesto 46

Page 4: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

4

ANEXOS 47

ANEXO 1: Módulo de Control LCD. Información para el Alumno 48

ANEXO 2: Módulo de Control LCD. Solución de la Práctica 56

ANEXO 3: Guión de la Práctica Control de Temperatura con Lectura de 8 bits 73

ANEXO 4: Guión de la Práctica Control de Temperatura con Lectura de 10 bits 79

ANEXO 5: Guión de la Práctica Conversión A/D y Visualización en 7 segmentos 87

ANEXO 6: Módulo Control de Temperatura. Solución de las Prácticas 99

ANEXO 7: Módulo Control de Temperatura. Programa Residente en el Microcontrolador

132

ANEXO 8: Práctica Controlador de Teclado. Información para el Alumno 140

ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

Referencias 155

Page 5: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

Page 6: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

6

MEMORIA DESCRIPTIVA

1. Objeto del Proyecto: El presente proyecto tiene como objetivo la elaboración de módulos didácticos para la realización de prácticas de programación. Estos módulos están propuestos para asignaturas sobre sistemas digitales con microprocesadores y microcontroladores. Como por ejemplo, las asignaturas de Sistemas Digitales – II y Sistemas Electrónicos con Microcontroladores, del primer ciclo de Ingeniería Técnica Industrial, especialidad en Electrónica Industrial y, la asignatura de Sistemas Electrónicos Digitales del segundo ciclo de la carrera de Ingeniería en Automática y Electrónica Industrial. Los módulos y prácticas 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 diseño de circuitos electrónicos 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 Ingeniería Eléctrica, Electrónica y Automática (DEEEA), de la Escuela Técnica Superior de Ingeniería de la Universidad Rovira i Virgili con dirección: Campus Sescelades, avenida Països Catalans, 26. C.P.: 43007 Tarragona. Y en su nombre el señor Don José Luís Ramírez Falo. 3. Antecedentes: En el segundo curso de la enseñanza de Ingeniería Técnica Industrial, Especialidad en Electrónica Industrial, se realiza la asignatura obligatoria de Sistemas Digitales – II. Los objetivos de esta asignatura son: el análisis 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 programación en lenguaje ensamblador de éstos. Para ayudar al alumno a entender mejor todos los conceptos expuestos en las clases teóricas, se realizan una serie de prácticas de programación sobre el microinstructor TM-683 de Promax. Este dispositivo incluye un microprocesador MC68000 lo que lo hace idóneo para esta asignatura. En total se realizan dos prácticas, la primera de carácter introductorio y la segunda con la ayuda de módulos de aplicación. Estos módulos 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 programación en ensamblador. Los módulos descritos en este proyecto están destinados a la realización de la segunda práctica de la asignatura.

Page 7: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

7

Además, proporcionan al alumno un mejor conocimiento sobre dispositivos digitales que, por falta de tiempo, se ven de una forma muy general en las clases teóricas, como son los dispositivos de entrada-salida de acceso programado. Estos módulos están formados por nuevos elementos muy utilizados actualmente, como las pantallas de cristal líquido y los microcontroladores PIC de MICROCHIP. 4. Posibles Soluciones y Solución Adoptada: 4.1 Módulo 1: Control de un Display LCD Dado que el módulo está formado básicamente por un display LCD tenemos las siguientes posibilidades:

a) Display LCD de siete segmentos b) Módulo de display LCD alfanumérico de matriz de puntos.

Los módulos LCD de siete segmentos disponen de un gran número de líneas a controlar. Esto hace que sea bastante difícil su control mediante los conectores de aplicación del microinstructor TM-683. El principal inconveniente de esta solución es que disponen de muy pocos dígitos con los que no es posible presentar mensajes de texto. La segunda opción es la solución adoptada. Los módulos alfanuméricos disponen de una matriz de 8, 16, 20, 32, 40, etc. caracteres, e incluso disponen de 1, 2, 4 o más líneas. Son capaces de visualizar caracteres, números y símbolos. Están gobernados por un microcontrolador incluido en el módulo capaz de generar los caracteres y funciones especiales y se controlan mediante 14 líneas, lo que es idóneo para ser conectado al microinstructor TM-683. 4.2 Módulo 2: Control de Temperatura:

El módulo de control de temperatura está formado básicamente por cuatro bloques: medición de temperatura y acondicionamiento de la señal, conversión analógico – digital, conversión digital – analógico, resistencia de calentamiento.

Como elementos de medición de temperaturas tenemos los siguientes: - Termopares: el rango de temperaturas que ofrecen es bastante amplio, aunque la

circuitería necesaria hace que sea algo complicado su uso. Además, se necesita otro elemento sensor para compensar el efecto producido por la unión fría. El precio de estos sensores es de unos 9€ aproximadamente.

- PT100: Detector de película de platino. Ofrecen también un amplio rango de

temperaturas y en precio es bastante aproximado al de los termopares. Para su correcta medición se puede utilizar un puente linealizador con resistencias de baja tolerancia y un amplificador de instrumentación.

Page 8: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

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 -40ºC a 150ºC. El precio es de unos 9 € aproximadamente. La circuitería adicional para la medición sería 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 tensión de 10mV/ºC. Es el elemento más económico (4€ aprox.) y más fácil de usar. El rango de temperaturas va de 0ºC a 100ºC y tiene una precisión de aproximadamente ±1ºC.

Para la realización del módulo no se requiere que el sensor tenga un amplio rango de temperaturas, ni tampoco demasiada precisión. Por este motivo se considera que la opción más indicada es la del C.I. LM35. Independientemente del elemento utilizado como sensor de temperatura, podemos tener más o menos prestaciones según la conversión de la señal analógica a digital se haga mediante un chip conversor o utilizando un microcontrolador con conversor A / D incluido. En el primer caso, el módulo dispone de una circuitería de adaptación de la señal analógica para ser introducida en el conversor A / D. El resultado de la conversión se envía 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 - analógico 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 módulo se ven muy incrementadas. Se puede utilizar un microcontrolador de la clase PIC con conversor analógico digital. De esta forma podemos realizar las mismas funciones que con el caso anterior. También podemos conectar uno de los puertos de entrada - salida del PIC a un display de tres dígitos de siete segmentos, para visualizar el valor de la temperatura. Además, incluyendo en el módulo un conector DB25 junto con una circuitería simple es posible realizar la programación del PIC en el propio módulo, sin tener que quitar el microcontrolador y sin utilizar grabadores adicionales. Todo este conjunto sería de una gran utilidad didáctica, no sólo para la asignatura de Sistemas Digitales - II, sino también, para la asignatura de Sistemas Electrónicos con Microcontroladores y, en definitiva, para cualquier asignatura que pueda tener prácticas sobre microcontroladores, con la particularidad añadida del tratamiento digital de señales analógicas como el de la medición de temperatura. Existe una amplia gama de microcontroladores PIC que nos permiten seleccionar el más 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 líneas de entrada – salida de las

Page 9: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

9

que necesitamos. Los microcontroladores de la gama alta tienen unas características demasiado potentes e incrementarían 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 analógico – digital, que es la principal característica que necesitamos. Se podría utilizar el PIC16F73, el cual dispone de 22 líneas de E / S, conversor A / D de 8 bits y 5 canales, 3 temporizadores y memoria flash; la cual es idónea para la realización de las prácticas puesto que se puede grabar y borrar mediante un software adecuado muchas veces. El precio de este microcontrolador es de 6,66€ (según catálogo de FARNELL, número de producto: 3529137). También se puede utilizar el microcontrolador PIC16F873, que tiene las mismas características que el anterior pero con un conversor A / D de 10 bits. Además, este microcontrolador es más fácil de conseguir. El precio de un conversor analógico - digital simple, de 8 bits se encuentra a partir de 5€ (según catálogo de RS - COMPONENTS: ADC0804LCN, RS #:411-674, precio: 5,48€). Por lo tanto, se pueden aumentar considerablemente las prestaciones y funcionalidad del módulo incluyendo en él, un microcontrolador para realizar las tareas del tratamiento de la señal analógica. 4.3 Práctica de Controlador de Teclado Para la realización de esta práctica existen dos posibles alternativas: La primera de ellas es proporcionar al alumno de un módulo de aplicación ya montado y verificado, sobre el que sólo tendría que realizar su programación. La segunda alternativa es proporcionar al alumno el esquema eléctrico del módulo y que él mismo realizase el montaje, verificación y, seguidamente, programación del circuito. Para cada una de las soluciones anteriores se plantean otras dos posibles alternativas. La primera consiste en realizar este módulo con un microcontrolador como elemento de comunicación con el teclado y, un visualizador LCD para presentar los caracteres. La segunda opción consiste en aprovechar el conector del canal A disponible en el microinstructor TM-683 para conectar el teclado. De entre estas alternativas expuestas, la solución adoptada para la realización de la práctica es, proporcionar al alumno el esquema eléctrico del módulo para que lo monte y utilizar el microinstructor como comunicación con el teclado. Los motivos que nos han llevado a esta elección son, en primer lugar, hacer que el alumno realice un montaje de un sistema digital con sus propias manos para conocer más en detalle al problema que se enfrenta y, para que no se centre exclusivamente en la programación. Se ha elegido también utilizar el microinstructor TM-683 porque el alumno no tendría tiempo de asimilar los conceptos necesarios que supone aprender a programar un dispositivo que no se había visto antes. Ya que según la cronología de las asignaturas de Ingeniería Técnica Industrial, Especialidad en Electrónica 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 más a fondo el tema de los microprocesadores. Debido a que en esta asignatura sólo se disponen de

Page 10: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

10

quince horas de prácticas, que corresponden a siete sesiones para realizar dos prácticas, en cuatro sesiones de prácticas el alumno no tendría el suficiente tiempo para realizarla. 5. Descripción de la Solución Adoptada: 5.1 Módulo 1: Control de un Display LCD:

5.1.1 Objetivo Didáctico del Módulo El principal objetivo del módulo 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 electrónicos del mercado, y también, que el alumno adquiera experiencia en la programación de microprocesadores en lenguaje ensamblador. Para llevar a cabo este cometido se ha diseñado un guión de práctica que consta de las siguientes partes: En primer lugar, el alumno estudiará la composición y funcionamiento de una pantalla de cristal líquido mediante el análisis de sus hojas de características. Una vez se entienda el funcionamiento de la misma, los alumnos responderán un cuestionario a modo de estudio previo a la práctica para comprobar sus conocimientos. Este cuestionario se encuentra en el Capítulo de Anexos con el título de Anexo 1: Documentación para el alumno. Una vez realizado el estudio previo indicado anteriormente, el alumno está ya preparado para afrontar la práctica. Con la ayuda de las hojas de características del visualizador LCD y los conocimientos de programación adquiridos en las clases de teoría de la asignatura, debe realizar una librería de funciones básicas de manejo de la LCD tales como: enviar un comando, enviar un dato, configuración, etc. Finalmente, para evaluar la capacidad de diseño y estructuración en la programación en ensamblador del alumno, éste deberá programar una aplicación utilizando las funciones de librería que creó anteriormente. Como ejemplo práctico, se propone que el alumno programe un marcador de un estadio de fútbol, en el que se visualicen los nombres de los equipos que juegan, junto con sus respectivos goles marcados. Los pulsadores disponibles en el módulo se pueden utilizar para ir incrementando cada uno de los marcadores, borrarlos, etc. En el capítulo de Anexos, con el nombre Anexo 2, se encuentra la solución a la práctica del marcador de estadio de fútbol, el código del programa de ejemplo, así como el código de las funciones de librería de manejo de la LCD.

Page 11: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

11

5.1.2 Planificación de la Práctica En el diagrama siguiente se puede ver la planificación de cada una de las tareas necesarias para la realización de esta práctica, considerando que el alumno dispone de cuatro sesiones de laboratorio de dos horas por sesión.

HORAS TAREAS 1 2 3 4 5 6 7 8

Programación de la librería de funciones básicas Programación de la aplicación

Teniendo en cuenta que el alumno debe realizar el estudio previo de la práctica antes de la primera sesión y, según el diagrama anterior, se establece un reparto de horas de tal forma que: la primera sesión de prácticas y la primera hora de la segunda, se dedican a la programación de la librería de funciones básicas de manejo de la LCD. El resto de la segunda sesión, la tercera y la cuarta se dedican a la programación de la aplicación. 5.1.3 Conocimientos Adquiridos Con la realización de esta práctica el alumno aprenderá el funcionamiento de un módulo LCD, así como el funcionamiento de la comunicación 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. También aprenderá a dividir un problema para llegar a su solución con más facilidad. 5.1.4 Descripción del Hardware Tal y como se puede apreciar en el esquema de bloques de la Figura 1, este módulo está basado en un display LCD. Una LCD estándar es una pantalla de cristal líquido con una matriz de 8, 16, 32, 40, etc. caracteres de 5x7 puntos. La LCD del módulo es una LCD estándar (Powetip PC-1602) de 16 caracteres y 2 líneas (16x2). Estos módulos contienen además un controlador que las gobierna, generalmente el HITACHI HD44780.

Figura 1. Esquema de bloques del Módulo de Control LCD.

Page 12: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

12

La LCD del módulo tiene 14 patillas, se alimenta con una tensión de +5V y es posible regular el contraste de la pantalla mediante un potenciómetro. De estas 14 patillas, 8 son para el bus de datos (D0 - D7) y 3 de control, que son EN (habilitación), RS (Selector de registros, instrucción o datos) y R / W (Lectura / Escritura). El esquema eléctrico se encuentra en el capítulo de Planos señalado con el número de plano 1. En él se pueden observar cada una de las partes que forman este módulo de aplicación, las cuales se describen a continuación: El módulo se comunica con el conector de aplicación del microinstructor TM-683 mediante el conector CN11 de cincuenta contactos. La relación de los contactos del conector CN1 con las señales 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 señales del conector CN1 del módulo 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 dirección de los datos mediante la línea R / W que está conectada a la patilla DIR del integrado, según se quiera leer o escribir en la LCD.

1 NOTA IMPORTANTE: En el conector de aplicación del microinstructor tenemos que el pin 1 es GND mientras que en el conector CN1 del módulo es Vcc. Lo mismo ocurre con el conector de alimentación. Todos los módulos de aplicación PROMAX tienen esta característica. Por lo tanto, hay que poner especial cuidado en no cortocircuitar estas señales. Para evitar esto se deben usar cables planos con los conectores cruzados.

Page 13: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

13

El circuito integrado U2 es del tipo 74LS04. Son seis inversores que hacen la función de amplificadores de corriente de las tres líneas de control de la LCD (EN, RS, R/W) ya que las líneas de salida de la VIA del microinstructor no proporcionan la suficiente corriente. La línea RS se controla mediante los inversores U2A y U2B, conectados a la línea PA0 de la VIA. La línea R / W se controla mediante los inversores U2C y U2D, conectados a la línea PA1 de la VIA. La línea EN se controla mediante los inversores U2E y U2F, conectados a la línea PA2 de la VIA. Las 14 patillas de la LCD están disponibles en un conector de cable plano de 16 pins designado en el esquema eléctrico con el nombre de LCD1. Este conector sigue la misma numeración que las líneas de la LCD, su correspondencia con las líneas de ésta se muestran en la Tabla 2. La explicación de cada una de las líneas de la LCD, así como su manejo se puede observar detenidamente en la hoja de características.

LCD1 LCD 1 Vss 2 Vcc 3 Vo (Alimentación Driver) 4 RS (Selector de Registro) 5 R/W (Lectura / Escritura) 6 EN (Habilitación) 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 líneas del display LCD.

El módulo de aplicación se alimenta mediante el conector CN2 que está unido a la fuente de alimentación MM-600. La relación 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 alimentación CN2

Page 14: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

14

Por último el módulo dispone de 5 pulsadores de propósito 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 lógico "0" mientras que en reposo se detecta un nivel lógico "1". En la Tabla 4 se puede observar la correspondencia entre cada una de las líneas de la VIA y las líneas 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 líneas de la VIA y las líneas de control y datos del módulo

En la Tabla 5 se puede observar la lista de todos los componentes que forman el módulo de aplicación.

Código Descripción 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 Potenciómetro 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

Page 15: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

15

Código Descripción 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 módulo de Control de una LCD

El tipo de módulo LCD elegido es de dieciséis caracteres y dos líneas, a pesar de esto se pueden colocar otros tipos de módulos como los de 8x2, 12x2, 16x1, 20x1, 16x4, 20x2, 20x4, 24x2 y 40x2. En efecto, es posible conectar cualquier módulo alfanumérico de pantalla de cristal líquido que tenga la misma descripción de patillaje que el módulo elegido. En el capítulo de Planos, además del esquema eléctrico señalado con el plano número 1, se encuentran también los diseños del circuito impreso, situación de componentes (plano número 2) y fotolitos de la placa (plano número 3). 5.2 Módulo 2: Control de Temperatura:

5.2.1 Objetivo Didáctico del módulo Como se explicó anteriormente, este módulo dispone de unas prestaciones bastante elevadas, lo que hace que tenga diversos usos didácticos. Su utilización va más allá de la asignatura de Sistemas Digitales – II, ya que también puede ser utilizado en otras asignaturas de la carrera como Sistemas Electrónicos con Microcontroladores e incluso, en asignaturas de la carrera de segundo ciclo, Ingeniería en Automática y Electrónica Industrial como Sistemas Electrónicos Digitales. En la asignatura de Sistemas Digitales – II se puede utilizar este módulo para practicar los temas de interrupciones, así como controles digitales. Para esta asignatura se han diseñado dos prácticas con diferente nivel de dificultad. La primera y más sencilla de ellas trata del control de temperatura de un aparato calefactor, como por ejemplo un horno, basado en la adquisición del valor de la temperatura de ocho bits mediante interrupciones.

Page 16: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

16

La segunda de las prácticas es un poco más compleja ya que la adquisición del dato se realiza con una precisión de diez bits. Además provoca una interrupción por cada dato que envía al microinstructor, de forma que se obtiene un valor de conversión cada dos interrupciones. Para la asignatura de Sistemas Electrónicos con Microcontroladores se ha diseñado una práctica con el objetivo de procesar digitalmente señales analógicas y presentar el resultado en un visualizador de siete segmentos. También es útil este módulo para realizar prácticas en la asignatura de Sistemas Electrónicos 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 implementación de sistemas digitales. 5.2.2 Planificación de la Práctica 5.2.2.1 Práctica de Control de Temperatura con Lectura de Ocho Bits Con esta práctica el alumno aprenderá el manejo de las interrupciones y también a procesar el resultado de una conversión analógico–digital para realizar un control digital. Para llevar a cabo estos objetivos se ha preparado un guión de prácticas que se encuentra en el Anexo 3 del capítulo de Anexos. La práctica se ha dividido en tres partes:

a) Estudio Previo de la práctica: con este estudio previo se introducirá al alumno al tema del procesado digital de señales analógicas y a los controladores digitales. El alumno deberá estudiar la información técnica de la placa y responder a un cuestionario para comprobar sus conocimientos.

b) Adquisición y Procesado de la Señal: En este apartado el alumno deberá adquirir

el valor de la conversión analógico–digital 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 están ordenados de menor a mayor dificultad de programación:

- Todo – Nada - Todo – Nada con Histéresis - Proporcional (P) - Proporcional – Integral (PI) - Proporcional, Integral y Derivativo (PID)

Page 17: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

17

Una vez elegido el control y argumentada su elección, 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 planificación de cada una de las tareas necesarias para la realización de esta práctica, considerando que el alumno dispone de cuatro sesiones de laboratorio de dos horas por sesión.

HORAS TAREAS 1 2 3 4 5 6 7 8

Adquisición y procesado de la señal Programación del control digital

Teniendo en cuenta que el alumno debe realizar el estudio previo de la práctica antes de la primera sesión y, según el diagrama anterior, se establece un reparto de horas de tal forma que: las dos primeras sesiones de prácticas se dedican a la programación del microinstructor para adquirir y procesar el resultado de la conversión analógico-digital. Las dos siguientes sesiones se dedican a la programación del control digital. 5.2.2.2 Práctica de Control de Temperatura con Lectura de Diez Bits Con esta práctica el alumno aprenderá el manejo de interrupciones para la adquisición de un dato de diez bits dividido en dos bytes (5 + 5) multiplexados en tiempo. También aprenderá a reconstruir y procesar este dato para hacer un control digital de una magnitud física. Para llevar a cabo estos objetivos se ha preparado un guión de prácticas que se encuentra en el Anexo 4 del capítulo de Anexos. Esta práctica está dividida en tres partes, que son:

a) Estudio Previo: El alumno hará un estudio del sistema mediante la lectura de la información técnica del módulo para ver la relación entre la variable que se quiere medir y el resultado de la conversión. También responderá un cuestionario para comprobar sus conocimientos adquiridos.

b) Adquisición y Procesado de la Señal: En este apartado, el alumno deberá

adquirir el valor de la conversión analógico – 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 están ordenados de menor a mayor dificultad de programación:

- Todo – Nada - Todo – Nada con Histéresis - Proporcional (P) - Proporcional Integral (PI) - Proporcional, Integral y Derivativo (PID)

Page 18: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

18

Una vez elegido según su criterio uno de los controles, argumentando la elección, 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 planificación de cada una de las tareas necesarias para la realización de esta práctica, considerando que el alumno dispone de cuatro sesiones de laboratorio de dos horas por sesión.

HORAS TAREAS 1 2 3 4 5 6 7 8

Adquisición y procesado de la señal Programación del control digital

Teniendo en cuenta que el alumno debe realizar el estudio previo de la práctica antes de la primera sesión y, según el diagrama anterior, se establece un reparto de horas de tal forma que: las dos primeras sesiones de prácticas se dedican a la programación del microinstructor para adquirir y procesar el resultado de la conversión analógico-digital. Las dos siguientes sesiones se dedican a la programación del control digital. 5.2.2.3 Práctica de Conversión A / D y Visualización en Display de Siete Segmentos Esta práctica está enfocada para la asignatura de Sistemas Electrónicos con Microcontroladores. Tiene como objetivos que el alumno aprenda a programar un microcontrolador para que realice la conversión analógico – digital de una señal. Aprenderá a procesar el dato obtenido y a visualizar el resultado en un display de siete segmentos. También aprenderá el uso de las interrupciones y a crear tablas de datos. Para alcanzar estos objetivos se ha preparado un guión de prácticas que se encuentra en el Anexo 5 del capítulo de Anexos. Esta práctica se ha dividido en tres partes, que son las siguientes:

a) Estudio Previo: El alumno deberá estudiar la información técnica de la placa y responder a un cuestionario para comprobar sus conocimientos.

b) Conversión A / D: En este apartado el alumno deberá programar el

microcontrolador de la placa para que realice la conversión analógico – digital de la señal analógica procedente del sensor de temperatura, utilizando las interrupciones.

c) Procesado y Visualización: El alumno deberá procesar el dato obtenido de la

conversión para obtener el valor real de la temperatura. También tendrá que visualizar el valor calculado en un display de siete segmentos.

En el diagrama siguiente se puede ver la planificación de cada una de las tareas necesarias para la realización de esta práctica, considerando que el alumno dispone de cuatro sesiones de laboratorio de dos horas por sesión.

Page 19: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

19

HORAS TAREAS

1 2 3 4 5 6 7 8 Conversión Analógico – Digital Procesado y Visualización

Teniendo en cuenta que el alumno debe realizar el estudio previo de la práctica antes de la primera sesión y, según el diagrama anterior, se establece un reparto de horas de tal forma que: la primera sesión de prácticas se dedica a la programación del microcontrolador para que realice la conversión analógico - digital. El resto de las sesiones se dedican al procesado digital de la señal analógica y visualización del resultado en el display de siete segmentos. 5.2.3 Descripción del Hardware Este módulo está formado por un elemento sensor de temperatura cuya salida está acondicionada por un circuito analógico. Posteriormente la salida acondicionada se muestrea mediante el conversor analógico – digital disponible en el microcontrolador PIC16F873. La señal muestreada se trata mediante un programa que se ejecuta en el microcontrolador. Mediante uno de los puertos de sus entrada – salidas se envía el valor de la conversión 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 módulos de cátodo común. El programa de control genera un valor digital que es convertido, mediante un conversor digital–analógico, a una señal analógica. Esta señal 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 módulo dispone de un circuito de programación en serie del PIC16F873 mediante un conector de 25 pins conectado al puerto paralelo de un PC. El esquema eléctrico del módulo de control de temperatura se encuentra en el capítulo de Planos señalado con el número 4. En la Figura 2 se puede ver el diagrama de bloques del módulo de control de temperatura.

Page 20: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

20

Figura 2. Diagrama de Bloques del Módulo de Control de Temperatura

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

Código Descripción 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 electrolítico 470uF C3 Condensador electrolítico 10uF C4 Condensador electrolítico 10uF C5 Condensador 27pF C6 Condensador 27pF C7 Condensador 0.01uF C8 Condensador 0.1uF C9 Condensador 0.1uF

DIG2 Dígito LED de 7 segmentos de cátodo común DIG1 Dígito LED de 7 segmentos de cátodo común DIG0 Dígito LED de 7 segmentos de cátodo común

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

Page 21: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

21

Código Descripción IC3 Amplificador Operacional OP07 IC4 Amplificador Operacional OP07 IC5 Regulador de Tensión L7812 IC6 Regulador de Tensión L7810 IC7 CI 74LS06 IC8 Microcontrolador PIC16F873 IC9 CI 74LS139

IC10 Conversor Digital – Analógico DAC08C IC11 Amplificador Operacional OP07

J1 Puente de configuración 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 configuración Y1 Cristal de cuarzo de 4MHz

Tabla 6. Componentes del Módulo de Control de Temperatura

Page 22: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

22

5.2.3.1. Medición 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 tensión de 10mV/ºC. El rango de temperatura es de 0ºC a 100ºC, aproximadamente. Las c aracterísticas técnicas de este circuito se pueden ver en la Tabla 7:

Factor de escala lineal +10mV/ºC Precisión a 25ºC 0.5ºC Alimentación 4 a 30V No linealidad ±¼ ºC Impedancia de salida baja 0.1Ω para una carga de 1mA.

Tabla 7. Características técnicas 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 tensión, proporcional a la temperatura de la resistencia, entre su salida y el nodo de referencia.

Figura 3. Esquema de la medición de temperatura

La salida del sensor de temperatura se introduce en el circuito de acondicionamiento de señal por medio del integrado IC2, que es un amplificador operacional tipo OP07 en configuración de seguidor de tensión. La salida de esta etapa seguidora se introduce en IC3, que es un amplificador de ganancia 5, realizado también con un amplificador operacional OP07, en configuración no inversora. Las resistencias utilizadas son de baja tolerancia para respetar al máximo la señal del sensor. Posteriormente, la salida del amplificador de tensión, se introduce en otra etapa separadora IC4, formada también por un amplificador operacional tipo OP07 de la misma forma que IC2. Por último, la señal de salida se introduce a uno de los canales analógicos del microcontrolador, concretamente, a la entrada AN0.

Page 23: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

23

5.2.3.2. Conversión Analógico – Digital: El microcontrolador utilizado en el módulo, dispone de un conversor analógico-digital con una resolución de 10 bits. Este módulo se ha diseñado 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 tensión de 10mV/ºC que es proporcional a la temperatura a la que está sometido. Estos datos se representan en el Gráfico 1, que relaciona la tensión de salida del sensor con la temperatura.

Gráfico 1. Tensión de salida del sensor Vs. Temperatura

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

Page 24: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

24

Grafico 2. Tensión de entrada al conversor A/D Vs. Temperatura

El conversor analógico-digital está configurado con unas tensiones de referencia de 0V y 5V. Con esta configuración, para una entrada de 0V se obtiene el valor digital 00000000002 y, para una entrada de 5V se obtiene el valor digital 11111111112 (1023). El Gráfico 3 muestra la relación entre el valor digital obtenido respecto a la temperatura.

Grafico 3. Valor Digital Vs. Temperatura

Page 25: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

25

Como se ha indicado previamente, la conversión analógico – digital de la señal se hace mediante el microcontrolador IC8 del tipo PIC16F873 fabricado por MICROCHIP, el cual dispone de un conversor analógico – digital (ADC) de 10 bits y cinco canales. Este microcontrolador dispone, además, de 22 líneas de entrada – salida capaces de entregar una corriente máxima de 25mA por línea, 7168 bytes de memoria FLASH, 192 bytes de memoria RAM, 128 bytes de memoria EEPROM, dos módulos de modulación de anchura de pulsos (PWM) con una precisión de 10 bits, un temporizador de 16 bits, dos temporizadores de 8 bits, un temporizador de perro guardián (WDT), módulo universal de transmisión / recepción síncrona / asíncrona de datos vía serie (USART), bus I²C (Inter-Integrated Circuit Bus), interfase serie de periféricos (SPI), todo ello en un encapsulado de 28 pins tipo SP (Lead Skinny PDIP). El microcontrolador funciona con una señal de reloj de 4MHz procedente del cristal de cuarzo Y1. 5.2.3.3. Visualizador de 7 Segmentos: La visualización de la temperatura se realiza mediante tres módulos de siete segmentos LED de cátodo común tipo ELS-511IDB de color rojo y frontal negro. Los segmentos tienen una altura de 7.62mm y están dispuestos en encapsulados de 10 pines. Estos displays están diseñados para dar un óptimo contraste entre encendido / apagado. La versión de cátodo común dispone de un punto decimal. Las características técnicas de estos módulos se pueden observar en la Tabla 8: Tensión directa nominal 1.6V

Nominal 10mA Corriente directa

Máxima 30mA

Intensidad luminosa nominal por dígito 2.5mcd

Tensión inversa máxima 6V

Ángulo de visión ±75º

Potencia máxima disipada por segmento 60mW

Temperatura de funcionamiento De –40ºC a +85ºC

Tabla 8. Características técnicas del módulo de 7 segmentos.

Cada uno de los segmentos del display está conectado a una línea del puerto C del microcontrolador mediante resistencia limitadoras de corriente. La relación entre los segmentos del display y las líneas 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. Relación entre los segmentos y sus líneas de datos

Page 26: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

26

En la figura 4 siguiente se muestra la posición de cada segmento:

Figura 4. Posición de los segmentos

en el display

Como se ha indicado antes, los dígitos del display son de cátodo común. El cátodo de cada dígito está conectado a una salida del decodificador IC9 del tipo 74LS139. El circuito IC9 es un decodificador 2 a 4 cuyas entradas son las líneas RA4 y RA5 del PIC. En la Tabla 10 se detallan los estados de cada una estas señales para activar los digitos.

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

Tabla 10. Selección de los dígitos de 7 segmentos

5.2.3.4. Conversor Digital – Analógico: La conversión digital – analógico se realiza mediante el circuito integrado IC10 tipo DAC08CN. Es un circuito integrado con tecnología CMOS en un encapsulado de 16 pins tipo DIL. Las características técnicas se presentan en la Tabla 11:

Resolución 8 bits Datos Paralelo Tiempo de conversión 1µs Alimentación 18V (máx) Error de ganancia ±1% Canales 2

Tabla 11. Características del conversor DAC08CN

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

Page 27: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

27

5.2.3.5. Conexión con el Microinstructor TM-683: En el microinstructor TM-683 están disponibles dos conectores de aplicación (Aplicación 1 y Aplicación 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, sólo dos de ellos (puerto B y puerto C) disponen de ocho líneas de datos. El puerto A del microcontrolador sólo dispone de cinco líneas de datos. El microinstructor TM-683 se conecta al módulo de aplicación mediante el conector de aplicación CN3. En este conector están disponibles las señales 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 envía al microinstructor el valor de la conversión analógico – digital de la temperatura. La señal RA1 del microcontrolador está conectado a un interruptor de configuración. Si el estado lógico del interruptor es “1”, el microcontrolador envía al microinstructor un valor de 8 bits correspondientes a los ocho bits más significativos de la conversión. Cuando el estado lógico del interruptor es “0”, el microcontrolador envía los 10 bits de la conversión 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 línea RA3, que está conectada a la línea CA1 del microinstructor, indicando que en el puerto A hay un valor de conversión. El valor de la conversión, se envía al puerto A de la VIA porque en el conector de aplicación sólo están disponibles las señales de control del puerto A. Estas señales de control son necesarias para realizar una petición de interrupción y para el reconocimiento de la interrupción por parte del microcontrolador. Programando debidamente el microinstructor, un flanco de bajada en la línea CA1 sería motivo de interrupción externa. La línea RA2 del microcontrolador está conectada a la línea 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 conversión del puerto A, la línea CA2 baje a nivel lógico “0”, hecho que el microcontrolador interpreta como que se ha recibido el dato de la conversión y puede enviar el siguiente.

Page 28: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

28

En el Gráfico 4 se representa la variación de las líneas de datos y control (CA1 y CA2) cuando el microcontrolador envía un dato a la VIA del microinstructor.

Grafico 4. Comportamiento de las líneas que intervienen en el envío de un dato a la VIA.

5.2.3.6. Módulo 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 tensión de alimentación de la fuente de +15V y, el emisor está conectado a la resistencia de potencia R19 de 10Ω y 15W. Según pase más o menos corriente por el transistor, el conjunto transistor – resistencia de potencia se calentará más o menos. Esta corriente se controla con la tensión 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 variación de la temperatura no es instantánea, sino que tarda un tiempo en llegar a la temperatura deseada. En el control digital de la temperatura no sólo intervienen las características eléctricas del resistor de potencia, sino que también influyen considerablemente otros aspectos como la temperatura ambiental que no podemos controlar. 5.2.3.7. Programador PIC16F873: El circuito de programación 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, además, una alimentación 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 restricción, lo mismo que puede leer y programar sus fusibles de configuración. Los microcontroladores PIC de MICROCHIP están todos provistos de memoria de acceso serie. Tres de las patillas del encapsulado cambian momentáneamente de función durante la fase de programación para dar acceso a la memoria de programa interna; este cambio se desencadena simplemente aplicando una tensión 13.8V (tensión alta de programación) 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 fácilmente por software y, por otra parte, suministra niveles TTL directamente utilizables. Además,

Page 29: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

29

debemos disponer de algunas líneas de control para conmutar las diversas alimentaciones del microcontrolador en el curso de la programación. Las señales del puerto paralelo son señales TTL bastante deterioradas por el cable de conexión. 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 fácilmente los transistores Q1, Q2 y Q3. Q2 y Q3 permiten aplicar la tensión alta de programación VPP a las patillas adecuadas. El transistor Q1 gobierna la tensión normal de alimentación VDD y permite no alimentar el circuito a programar más que cuando es verdaderamente necesario acceder a él.

Figura 5. Esquema eléctrico del programador del PIC16F873

Para indicar la aplicación 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 tensión, con el fin de señalar el buen funcionamiento de la alimentación. 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 programación pasa por IC7c. El programador se alimenta mediante la fuente de alimentación MM-600, común a todos los módulos de aplicación del microinstructor TM-683. La salida de +15V pasa a través del regulador lineal de tensión IC5 tipo 7812, el cual tiene en su patilla común tres diodos (D1, D2, D3, tipo 1N4004) conectados en serie que elevan la tensión de salida a 13.8V. El programador dispone también de 5 microinterruptores disponibles en SW2 cuya función es la de dejar las señales del programador en circuito abierto en caso de que no se tenga que programar y se esté en fase de ejecución.

Page 30: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

30

En la Figura 6 se puede ver la posición de los siete microinterruptores disponibles en SW2 cuando se está en fase de grabación del PIC16F873 y cuando se está ejecutando el programa. Cuando se está en fase de programación (ver Figura 6a), cerramos los interruptores 1 a 5 de forma que por el primer microinterruptor se gobierna la tensión alta de programación, por el tercer microinterruptor se gobierna la tensión de alimentación del chip, por el cuarto transita el reloj de programación; y por el quinto transitan los datos a programar. Los microinterruptores 6 y 7 deben estar abiertos ya que el 6 gobierna la tensión del chip en la fase de ejecución y el microinterruptor 7 indica la longitud del dato de conversión A / D que se envía al microinstructor TM-683.

Figura 6. Posición de los microinterruptores para (a) programación,

o (b) ejecución

5.2.3.7.1 Software de Programación del PIC16F873 Numerosos programas disponibles en Internet pueden utilizarse con el programador que incorpora el módulo 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 configuración tal y como indica la Figura 6a. Con el módulo apagado, conectar el programador al puerto paralelo del PC. Una vez alimentado el módulo, comprobar que el LED verde está encendido. Los LEDs rojos pueden estar encendidos o apagados según el estado del puerto paralelo del PC. Ejecutar entonces el programa P16PRO. Tratándose 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 ejecución se accede a una pantalla principal. En la parte superior izquierda de la pantalla se encuentran accesibles dos menús desplegables pulsando la tecla Alt. Estos menús dan acceso a todo lo concerniente a los ficheros (menú FILE) y a la configuración hardware (menú SETTINGS). La primera operación a realizar consiste en configurar los parámetros del programador. Para esto, vaya al menú Settings y sitúese en Other por medio de las teclas de desplazamiento del cursor. Entonces puede seleccionar el puerto paralelo al cual se

Page 31: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

31

encuentra conectado el módulo. 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 continuación ir al menú Settings y situarse en Device. Aparece una pantalla en la que debemos escribir el número 9 (PIC16F873) y pulsar ENTER. Entonces se debe elegir el fichero con extensión .HEX a programar en el menú FILE->Open Program. Para programar el microcontrolador basta con pulsar la tecla F4. 5.2.4 Descripción del Software Para realizar las prácticas 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 capítulo de Anexos. A continuación se describe el funcionamiento de dicho programa. El código del programa está dividido en dos archivos:

a) Fichero TEMP.ASM: contiene el código principal del programa

b) Fichero TEMP.INC: contiene la implementación 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 analógico – digital y las interrupciones. Cuando el conversor analógico – digital termina una conversión, provoca una interrupción al microcontrolador, cuya rutina de servicio guarda los valores de la conversión en la memoria para ser procesados posteriormente por las funciones del programa. Mientras no llega ninguna interrupción, el microcontrolador decodifica el resultado de la conversión analógico – digital guardado en memoria y envía el resultado de la conversión al microinstructor provocándole una interrupción. Seguidamente, convierte el resultado de la decodificación en tres dígitos BCD, los cuales son convertidos de nuevo mediante una tabla para ser visualizados en el display de siete segmentos. A continuación, se describe el funcionamiento de las dos funciones más importantes utilizadas.

Page 32: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

32

La primera de ellas (DEC_ADRES) se encarga de decodificar el resultado de la conversión analógico – digital. Para ello divide el valor de la conversión por diez. Esto es así porque el margen de temperaturas que queremos medir es de 0ºC a 100ºC. 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 analógica del microcontrolador tendremos un margen de 0V a 5V para un margen de temperaturas de 0ºC a 100ºC. La precisión del conversor analógico – digital del microcontrolador PIC16F873 es de diez bits, por lo tanto, tenemos 1024 posibles estados. Si programamos el microcontrolador para que el conversor analógico – digital tenga un margen de tensión de referencia entre 0V y 5V, obtendremos una precisión en la conversión analógico – digital de:

estadoC

estadoC

estados

C º1.0º097656.01024

º100≅= (1)

Por lo tanto, la expresión que relaciona la temperatura real con el resultado de la conversión es:

10

ADRESTreal = (2)

Donde ADRES es el resultado de la conversión analógico – digital. Entonces, para obtener el valor de la temperatura, basta con dividir el resultado de la conversión analógico – digital por diez. La siguiente función (ADRES_VIA) se encarga de enviar el resultado de la conversión por la VIA del microinstructor provocándole una interrupción. Si el interruptor número siete de configuración de la placa está abierto (estado lógico “1”) entonces, colocará en el puerto de entrada – salida del microcontrolador los ocho bits más significativos de la conversión, despreciando los dos bits menos significativos y, provocando posteriormente una interrupción al microinstructor con un flanco descendente en la línea CA1. Finalmente, si por el contrario el interruptor de configuración de la placa está cerrado (estado lógico “0”), enviará los diez bits de la conversión analógico – digital en dos paquetes de cinco bits. Primero enviará los cinco bits menos significativos seguidos de una interrupción. Cuando el microinstructor acepte la interrupción y lea el dato que se le ha enviado (línea CA2 = 0), el microcontrolador enviará el segundo paquete con los cinco bits más significativos provocando otra interrupción.

Page 33: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

33

En el capítulo de Planos, se encuentra, además del esquema eléctrico del módulo, un plano con la situación 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 Práctica de Controlador de Teclado 5.3.1 Objetivo Didáctico del módulo El objetivo de esta práctica es dar una visión práctica al alumno en el tema de las comunicaciones serie, coincidiendo con el Capítulo 5 “Entrada / Salida” del programa de la asignatura de Sistemas Digitales – II. Y más concretamente, estudiando uno de los protocolos más utilizados en la comunicación serie, el RS232. Con esta práctica el alumno aprenderá cuales son los parámetros que definen un protocolo. Además, aprenderá también a controlar un dispositivo digital de entrada de acceso programado, el teclado. 5.3.2 Planificación de la Práctica Para llevar a cabo los objetivos descritos en el apartado anterior, se ha diseñado un guión de prácticas para el alumno que se encuentra en el Anexo 8 del capítulo Anexos. La práctica 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 práctica son las siguientes:

a) Estudio Previo. Consta de una serie de recomendaciones que debe seguir el alumno para realizar con éxito la práctica. También dispone de una serie de preguntas a las que debe responder antes de la realización de la práctica.

b) Montaje y Verificación del Circuito. En este apartado el alumno montará un

sencillo circuito de adaptación de señales para conectar el teclado de un ordenador personal (PC) al conector del Canal A del microinstructor TM-683.

c) Programación 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 planificación de cada una de las tareas necesarias para la realización de esta práctica, considerando que el alumno dispone de cuatro sesiones de laboratorio de dos horas por sesión.

HORAS TAREAS 1 2 3 4 5 6 7 8

Montaje y Verificación del Circuito Programación del Controlador de Teclado

Page 34: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

34

Teniendo en cuenta que el alumno debe realizar el estudio previo de la práctica antes de la primera sesión y, según el diagrama anterior, se establece un reparto de horas de tal forma que: la primera sesión de prácticas se dedica al montaje del circuito y a su posterior verificación. El resto de las sesiones se dedican a la programación del controlador del teclado. 5.3.3 Descripción del Hardware El esquema eléctrico del circuito que tiene que montar el alumno se encuentra en el Plano N º 8 del capítulo de Planos. En él se pueden observar las siguientes partes: En primer lugar, un conector tipo DIN hembra de cinco contactos para la conexión 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 Señal 1 Reloj 2 Datos 3 Reset 4 Masa 5 Vcc (+5V)

Tabla 12. Señales del conector

DIN – 5

Por los contactos 1 y 2 circulan las señales de reloj y datos respectivamente. Estas dos líneas son bidireccionales de colector abierto y niveles TTL. En nuestro caso la comunicación será asíncrona por lo que la línea de reloj no se conectará. Por la línea de datos, el teclado envía los códigos de exploración de las teclas pulsadas con el siguiente formato: - Un bit de inicio - Ocho bits de datos correspondientes al código de exploración de la tecla pulsada

empezando por el bit menos significativo. - Un bit de paridad impar - Un bit de parada. La línea número tres corresponde a la señal de RESET, la cual tampoco conectaremos. Finalmente las líneas cuatro y cinco son para la conexión del nodo de referencia y alimentación, respectivamente.

Page 35: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

35

En segundo lugar, tenemos un conector hembra de 25 contactos tipo DB25 para la conexión del circuito de adaptación al conector del Canal A del microinstructor. El significado de cada uno de los contactos del conector se encuentra en la Tabla 13.

Pin Señal 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. Señales del conector serie DB25

De los veinticinco contactos disponibles, sólo se utilizan dos; el contacto número tres para la recepción de datos del teclado y, el contacto número siete para la conexión al nodo de referencia.

Por último, tenemos un circuito integrado tipo MAX232 cuya función es la de adaptar la señal de datos enviada por el teclado con niveles TTL, al nivel de tensión 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” Lógico +5V a +15V “0” Lógico +3V a +25V “1” Lógico -5V a -15V “1” Lógico -3V a –25V

(a) (b)

Tabla 14. Niveles lógicos 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 tensión de +5V y necesita cuatro condensadores electrolíticos de un microfaradio. La solución de la práctica del Controlador de Teclado se encuentra en el Anexo 9 del capítulo de Anexos.

Page 36: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

36

5.3.3.1. Funcionamiento del Teclado A continuación se explica el funcionamiento del teclado utilizado para la realización de este módulo. Los códigos generados por el teclado pueden variar en función de la clase de teclado. Sólo se consideran para esta práctica la utilización de las teclas de caracteres y números del teclado normal. No se ha considerado la pulsación de las teclas de función, las teclas extendidas ni las teclas del teclado numérico. Cuando se pulsa una tecla, el teclado envía un código que identifica la tecla pulsada, estos códigos se conocen con el nombre de códigos de exploración del teclado. Al soltar la tecla, el teclado envía dos códigos: el primer código, llamado código BREAK, es el 0xF0. El segundo código es el mismo código de exploración que envió al pulsar la tecla. Por ejemplo, cuando se pulsa la tecla de la letra “R”, el teclado envía el código 0x2D. Al soltar la tecla, envía los códigos 0xF0 seguido del código 0x2D. 5.3.3.1.1. Códigos de Rastreo del Teclado En la Tabla 15 se presentan los códigos de rastreo de las teclas correspondientes al teclado utilizado. Como se ha indicado anteriormente, estos códigos pueden variar según el teclado utilizado.

Código Código Código 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. Códigos de Exploración del Teclado.

Page 37: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

MEMORIA DESCRIPTIVA

37

5.3.3.2 Programación 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 códigos de exploración del teclado, la programación de la DUART puede variar según el teclado, ya que la velocidad de transmisión de los datos puede ser diferente. Para que el microinstructor pueda recibir los códigos de exploración de las teclas pulsadas, el canal A de la DUART debe ser programado de la siguiente forma:

- Paridad Impar - Ocho bits por carácter - Un bit de parada - Control de RxRTS = NO - Selección de RxINT por RxRDY - Modo de error por carácter - 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 recepción por Timer - Interrupciones habilitadas: RxRDYA

6. Resumen del Presupuesto El precio total de ejecución de este proyecto de elaboración de módulos didácticos basados en microprocesadores es de CUATRO MIL OCHOCIENTOS SIETE EUROS con NOVENTA Y SIETE CÉNTIMOS.

Tarragona, 30 de agosto de 2002

Antonio Miguel Zaplana Alcaraz Ingeniero Técnico.

Page 38: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

PLANOS

Page 39: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146
Page 40: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146
Page 41: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146
Page 42: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146
Page 43: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146
Page 44: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146
Page 45: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146
Page 46: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146
Page 47: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

PRESUPUESTO

Page 48: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

PRESUPUESTO

40

PRESUPUESTO

1 Módulo Control LCD 1.1 Cuadro de Precios Nº Descripción Precio 1 Display, LCD, inteligente, alfanumérico,

matriz de puntos, PowerTip 16x2 TN 14,60€ Catorce euros con sesenta

céntimos 2 Placa de circuito impreso, fibra de vidrio 3,00€ Tres euros 3 Conector macho recto 50 pins 0,76€ Setenta y seis céntimos de

euro 4 Conector macho recto 10 pins 0,20€ Veinte céntimos de euro 5 Conector macho recto 16 pins 0,35€ Treinta y cinco céntimos

de euro 6 Circuito integrado SN 74HC245 0,31€ Treinta y un céntimos de

euro 7 Circuito integrado 74HC04N 0,36€ Treinta y seis céntimos de

euro 8 Zócalo para circuito integrado 14 pins 0,08€ Ocho céntimos de euro 9 Zócalo para circuito integrado 20 pins 0,14€ Catorce céntimos de euro 10 Pulsador para PCB plástico cuadrado 0,47€ Cuarenta y siete céntimos

de euro 11 Condensador de poliéster 220nF 100V 0,22€ Veintidós céntimos de

euro 12 Resistencia de carbón 1/4W 5% 0,02€ Dos céntimos de euro 13 Conector hembra cable plano 16 pins 0,37€ Treinta y siete céntimos de

euro 14 Patas de soporte de circuito impreso, latón,

roscado con tornillo prisionero 0,15€ Quince céntimos de euro

15 Potenciómetro de 1 vuelta vertical 10kΩ 0,27€ Veintisiete céntimos de euro

16 Mano de obra diseño 15,02€/h Quince euros con 2 céntimos de euro la hora

17 Mano de obra fabricación y montaje 12,00€/h Doce euros la hora

Page 49: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

PRESUPUESTO

41

1.2 Aplicación de Precios Nº Descripción Cantidad Precio Total 1 Display, LCD, inteligente, alfanumérico, 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 Zócalo para circuito integrado 14 pins 1 0,08€ 0,08€ 9 Zócalo para circuito integrado 20 pins 1 0,14€ 0,14€ 10 Pulsador para PCB plástico cuadrado 5 0,47€ 2,35€ 11 Condensador de poliéster 220nF 100V 5 0,22€ 1,10€ 12 Resistencia de carbón 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, latón, roscado

con tornillo prisionero 4 0,15€ 0,60€

15 Potenciómetro de 1 vuelta vertical 10kΩ 1 0,27€ 0,27€ 16 Mano de obra diseño 48 h 15,02€/h 720,96€ 17 Mano de obra fabricación y montaje 4 h 12,00€/h 48,00€ TOTAL: 794,37€ 1.3 Resumen del Presupuesto El presupuesto de ejecución material del módulo de control LCD asciende a la cantidad de SETECIENTOS NOVENTA Y CUATRO EUROS con TREINTA Y SIETE CÉNTIMOS.

Presupuesto de Ejecución Material 794,37€ Gastos Generales (13%) 103,27€ Presupuesto de Ejecución por Contrato 897,64€ I.V.A. (16%) 143,62€

TOTAL: 1041,26€ El presupuesto final del módulo de control LCD asciende a la cantidad de MIL CUARENTA Y UN EUROS con VEINTISÉIS CÉNTIMOS.

Page 50: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

PRESUPUESTO

42

2 Módulo Control de Temperatura 2.1 Cuadro de Precios Nº Descripción Precio 1 Conector macho recto 50 pins 0,76€ Setenta y seis céntimos de

euro 2 Conector macho recto 10 pins 0,20€ Veinte céntimos de euro 3 Conector macho DB25 acodado 2,00€ Dos euros 4 Condensador de disco 330pF 500V 0,11€ Once céntimos de euro 5 Condensador electrolítico radial 470µF

63V 0,61€ Sesenta y un céntimos de euro

6 Condensador electrolítico radial 10µF 35V

0,14€ Catorce céntimos de euro

7 Condensador de disco 27pF 500V 0,14€ Catorce céntimos de euro 8 Condensador MKT 0,01µF 100V 0,08€ Ocho céntimos de euro 9 Condensador MKT 0,1µF 100V 0,13€ Trece céntimos de euro 10 Dígito LED 0,5” 7 segmentos con punto

decimal, cátodo común 1,05€ Un euro con cinco céntimos

de euro 11 Diodo 1N4004 0,02€ Dos céntimos de euro 12 Diodo LED rojo 3mm 0,06€ Seis céntimos de euro 13 Diodo LED verde 3mm 0,08€ Ocho céntimos de euro 14 Circuito Integrado sensor de temperatura

LM35DZ 3,86€ Tres euros con ochenta y seis

céntimos de euro 15 Circuito Integrado OP07C 0,61€ Sesenta y un céntimos de euro 16 Circuito Integrado L7812CV 0,27€ Veintisiete céntimos de euro 17 Circuito Integrado L7810CV 0,47€ Cuarenta y siete céntimos de

euro 18 Circuito Integrado 74LS06 0,39€ Treinta y nueve céntimos de

euro 19 Circuito Integrado PIC16F873-04/SP 7,33€ Siete euros con treinta y tres

céntimos de euro 20 Circuito Integrado 74LS139 0,30€ Treinta céntimos de euro 21 Circuito Integrado DAC08C 2,31€ Dos euros con treinta y un

céntimos de euro 22 Puente de configuración 0,01€ Un céntimo de euro 23 Transistor PNP BC557 0,06€ Seis céntimos de euro 24 Transistor NPN BD139 0,20€ Veinte céntimos de euro 25 Resistencia de película metálica 1/4W

1% 0,08€ Ocho céntimos de euro

26 Resistencia de película de carbón 1/4W 5%

0,02€ Dos céntimos de euro

27 Resistencia bobinada axial BC 15W dh 10R

0,80€ Ochenta céntimos de euro

28 Red de ocho resistencias individuales en encapsulado DIL

0,90€ Noventa céntimos de euro

29 Pulsador para PCB plástico cuadrado 0,47€ Cuarenta y siete céntimos de euro

Page 51: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

PRESUPUESTO

43

Nº Descripción Precio 30 Conmutador SWITCH 7 contactos 1,17€ Un euro con diecisiete

céntimos de euro 31 Cristal de cuarzo FY 4.0000MHz 0,47€ Cuarenta y siete céntimos de

euro 32 Zócalo de circuito integrado 8 pins 0,04€ Cuatro céntimos de euro 33 Zócalo de circuito integrado 14 pins 0,08€ Ocho céntimos de euro 34 Zócalo de circuito integrado 16 pins 0,10€ Diez céntimos de euro 35 Zócalo de circuito integrado 28 pins 0,27€ Veintisiete céntimos de euro 36 Placa de circuito impreso fibra de vidrio 3,00€ Tres euros 37 Mano de obra diseño 15,02€/h Quince euros con 2 céntimos

de euro la hora 38 Mano de obra fabricación y montaje 12,00€/h Doce euros la hora 2.2 Aplicación de Precios Nº Descripción 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 electrolítico radial 470µF 63V 1 0,61€ 0,61 € 6 Condensador electrolítico radial 10µF 35V 2 0,14€ 0,28 € 7 Condensador de disco 27pF 500V 2 0,14€ 0,28 € 8 Condensador MKT 0,01µF 100V 1 0,08€ 0,08 € 9 Condensador MKT 0,1µF 100V 2 0,13€ 0,26 € 10 Dígito LED 0,5” 7 segmentos con punto decimal,

cátodo común 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 configuración 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 película metálica 1/4W 1% 2 0,08€ 0,16 € 26 Resistencia de película de carbón 1/4W 5% 17 0,02€ 0,34 € 27 Resistencia bobinada axial BC 15W dh 10R 1 0,80€ 0,80 €

Page 52: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

PRESUPUESTO

44

Nº Descripción Cantidad Precio Total 28 Red de ocho resistencias individuales en

encapsulado DIL 1 0,90€ 0,90 €

29 Pulsador para PCB plástico 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 Zócalo de circuito integrado 8 pins 4 0,04€ 0,16 € 33 Zócalo de circuito integrado 14 pins 1 0,08€ 0,08 € 34 Zócalo de circuito integrado 16 pins 2 0,10€ 0,20 € 35 Zócalo 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 diseño 150 h 15,02€/h 2253,00€ 38 Mano de obra fabricación y montaje 10 h 12,00€/h 120,00€ TOTAL: 2406,77€ 2.3 Resumen del Presupuesto El presupuesto de ejecución material del módulo de control de temperatura asciende a la cantidad de TREINTA Y TRES EUROS con SETENTA Y SIETE CÉNTIMOS.

Presupuesto de Ejecución Material 2046,77€ Gastos Generales (13%) 312,78€ Presupuesto de Ejecución por Contrato 2719,55€ I.V.A. (16%) 435,13€

TOTAL: 3154,68€ El presupuesto final del módulo de control de temperatura asciende a la cantidad de TRES MIL CIENTO CINCUENTA Y CUATRO EUROS con SESENTA Y OCHO CÉNTIMOS.

Page 53: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

PRESUPUESTO

45

3 Práctica Controlador de Teclado1 3.1 Cuadro de Precios Nº Descripción Precio 1 Placa de montaje de circuitos por

inserción (protoboard) 12,00€ Doce euros

2 Conector hembra DB25 aéreo 1,50€ Un euro con cincuenta céntimos de euro

3 Conector DIN 5 contactos hembra chasis

0,91€ Noventa y un céntimos de euro

4 Condensador electrolítico radial 1uF 63V

0,05€ Cinco céntimos de euro

5 Circuito Integrado MAX232 1,70€ Un euro con setenta céntimos de euro

6 Mano de obra diseño 15,02€/h Quince euros con dos céntimos de euro la hora

3.2 Aplicación de Precios Nº Descripción Cantidad Precio Total 1 Placa de montaje de circuitos por inserción

(protoboard) 1 12,00€ 12,00€

2 Conector hembra DB25 aéreo 1 1,50€ 1,50€ 3 Conector DIN 5 contactos hembra chasis 1 0,91€ 0,91€ 4 Condensador electrolítico radial 1uF 63V 4 0,05€ 0,20€ 5 Circuito Integrado MAX232 1 1,70€ 1,70€ 6 Mano de obra diseño 30 h 15,02€/h 450,60€ TOTAL: 466,91€

1 No se ha incluido en el presupuesto el teclado necesario para realizar la práctica, ya que se le proporcionará al alumno uno de los teclados del almancén procedentes de la renovación de equipos informáticos.

Page 54: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

PRESUPUESTO

46

3.3 Resumen del Presupuesto El presupuesto de ejecución material del módulo del controlador de teclado asciende a la cantidad de CUATROCIENTOS SESENTA Y SEIS EUROS con NOVENTA Y UN CÉNTIMOS.

Presupuesto de Ejecución Material 466,91€ Gastos Generales (13%) 60,70€ Presupuesto de Ejecución por Contrato 527,61€ I.V.A. (16%) 84,42€

TOTAL: 612,03€ El presupuesto final del módulo del controlador de teclado asciende a la cantidad de SEISCIENTOS DOCE EUROS con TRES CÉNTIMOS. 4 Resumen Total del Presupuesto2

Módulo Precio Módulo de Control LCD 1041,26€ Módulo de Control de Temperatura 3154,68€ Módulo de Controlador de Teclado 612,03€

TOTAL: 4807,97€

El presupuesto total para la elaboración de todos los módulos descritos en este proyecto con título Elaboración de Módulos Didácticos Basados en Microprocesadores es de CUATRO MIL OCHOCIENTOS SIETE EUROS con NOVENTA Y SIETE CÉNTIMOS.

Tarragona, 30 de agosto de 2002

Antonio Miguel Zaplana Alcaraz Ingeniero Técnico.

2 Los precios de este presupuesto están calculados para el montaje de una unidad.

Page 55: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXOS

Page 56: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 1: MÓDULO DE CONTROL DE UNA LCD INFORMACIÓN PARA EL ALUMNO

48

Anexo 1: Módulo Control LCD

(Información para el alumno)

1 Enunciado de la Práctica:

El objetivo de la práctica es controlar un display LCD de cristal líquido y visualizar mensajes en él, para ello se propone simular el marcador de un estadio de fútbol, 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 Fútbol

Para conseguir este propósito vamos a dividir la práctica en tres partes. La primera consiste en realizar un estudio previo estudiando las hojas de características de la LCD y respondiendo las preguntas del cuestionario. La segunda parte trata de crear unas funciones de librería para el manejo de la LCD. Finalmente, se creará la aplicación del marcador de un estadio de fútbol utilizando las funciones de la librería creada. 2 Información Técnica: Para entender cuál es el funcionamiento del display LCD es muy recomendable leer las hojas de características, donde se detallan cada una de las funciones y el procedimiento de uso de la LCD. A continuación se presenta un resumen del funcionamiento de dicho display, así como información técnica acerca del módulo que se va a usar. Una LCD estándar es una pantalla de cristal líquido con una matriz de 16, 32, 40 u 80 caracteres de 5x7 píxeles, contando, además, con un microcontrolador (generalmente el HITACHI HD44780) que lo gobierna. Normalmente cada línea contiene entre 8 y 80 caracteres y, suelen ser capaces de mostrar caracteres ASCII, japoneses, griegos ...; o símbolos matemáticos. Su bus de conexión puede ser de 4 u 8 bits. El consumo de este tipo de módulos es muy bajo (7,5mW) y, gracias a su sencillo manejo, son ideales para dispositivos que requieren una visualización pequeña o media. El módulo LCD sobre el que vamos a trabajar tiene 14 patillas. Su alimentación es de +5V, y la regulación del contraste se realiza dividiendo esos +5V mediante un potenciómetro de 10kΩ conectado a la patilla Vo. Para el modo de 8 bits se requieren 11 líneas (en el modo de 4 bits sólo se necesitan 7). De ellas hay tres de control, que son EN (habilitación), I/D (Instrucción / Datos) y R/W (Lectura / Escritura).

Page 57: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 1: MÓDULO DE CONTROL DE UNA LCD INFORMACIÓN PARA EL ALUMNO

49

PIN NOMBRE FUNCIÓN

1 Vss Masa 2 Vdd +5V 3 Vo ó Vee Ajuste del contraste 4 I/D ó RS Selección de modo 5 R/W Lectura / Escritura 6 E ó EN Validación (1) / Deshabilitación (0)

7 – 14 DB Líneas de datos Tabla 1. Señales de la LCD

La activación de la línea EN (Habilitación) es la que permite a la LCD leer el resto de las líneas, es decir, si la desactivamos no reaccionará ante los cambios en el resto de las líneas. La línea I/D selecciona entre el modo de comando si vale 0, o el modo de datos si es 1. Debemos recordar que la línea R/W es la que determina si se lee o escribe, debiendo estar debidamente activada según nuestros deseos antes de cualquier intento de acceso a la LCD. Los comandos de una LCD estándar 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

Introducción 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 * *

Función 0 0 0 0 1 DL N F * *

Dirección

CGRAM 0 0 0 1 Dirección CGRAM

Dirección

DDRAM 0 0 1 Dirección DDRAM

Lectura

ocupado y

dirección

contador

0 1 BF Dirección AC

Escribe RAM 1 0 Dato a escribir

Lee RAM 1 1 Dato a leer

Tabla 2. Comandos de la LCD

Page 58: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 1: MÓDULO DE CONTROL DE UNA LCD INFORMACIÓN PARA EL ALUMNO

50

- Borra Pantalla: Borra el contenido de la memoria de la LCD y sitúa el cursor

en la posición 0. - Cursor a Inicio: El cursor va a la posición 0. - Modo Instrucción: Configura la dirección del cursor. Cuando I/D = 1

incrementa la posición del cursor automáticamente, 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.

- Función: DL = 1 indica interfaz de 8 bits, DL = 0 indica interfaz de 4 bits. N = 1 indica 2 líneas visibles, N = 0 indica 1 línea visible. F = 1 indica una fuente de 5x10 píxeles, F = 0 indica una fuente de 5x7 píxeles.

- Dirección CGRAM: Coloca el dato enviado en la dirección CGRAM indicada después de este comando.

- Dirección DDRAM: Coloca el dato enviado en la dirección DDRAM indicada después de este comando.

- Lectura ocupado y dirección del contador: Si BF = 1 la LCD está ocupada, BF = 0 la LCD está libre. También 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 número de caracteres visibles, la DDRAM contará con 80 posiciones. Los caracteres no visibles se visualizarán provocando un desplazamiento. La RAM de una LCD no tiene direccionamiento continuo y lineal, pues el mapa depende de los caracteres y líneas que tenga el módulo. En la Tabla 3 se puede ver el direccionamiento de las primeras posiciones visibles:

Visible Tamaño Pantalla Posición Carácter Dirección 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

Page 59: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 1: MÓDULO DE CONTROL DE UNA LCD INFORMACIÓN PARA EL ALUMNO

51

• Ejemplo de acceso visualización de un carácter en una posición determinada del display:

Como ejemplo, para visualizar la letra “A” en el carácter número 5 de la segunda línea, se seguiría una secuencia como la siguiente: BCLR #RS,PORTA ;LCD en modo comando BCLR #RW,PORTA ;LCD en modo escritura MOVE.B #%11000100,PORTB ;Carácter 5, Línea 2 JSR LCD_COMMAND ;Ejecuta el comando BSET #RS,PORTA ;LCD en modo datos MOVE.B #$41,PORTB ;Envía el carácter “A” JSR LCD_DATA ;Visualiza el carácter La utilización de una LCD es lenta, comparada con la velocidad de ejecución de instrucciones del microprocesador MC68000 (0.5µs de la más rápida y 3µs de la más 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 líneas de datos y control del módulo LCD son accesibles por el microinstructor mediante el conector de aplicación de la VIA. La correspondencia entre las señales de los puertos A y B de la VIA con las señales 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

Además, el módulo contiene cinco pulsadores conectados a las líneas PA3 a PA7 de la VIA. En reposo se lee un “1” mientras que cuando se ha pulsado se lee un “0”.

Page 60: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 1: MÓDULO DE CONTROL DE UNA LCD INFORMACIÓN PARA EL ALUMNO

52

3 Estudio Previo: Para entender el funcionamiento de la LCD es necesario leer con detenimiento sus hojas de características. Por este motivo se deben leer los documentos relacionados con un módulo LCD de 16x2 caracteres así como las hojas de características del controlador de HITACHI HD44780U disponible en la página web del fabricante. Una vez leídos estos documentos, y entendidos sus contenidos, responded al siguiente cuestionario:

1) ¿Qué se puede visualizar en un módulo LCD alfanumérico de matriz de puntos?

a) Sólo números porque la visualización es de 7 segmentos. b) Sólo letras c) Todos los caracteres ASCII d) Los caracteres que pueden ser generados por el generador de caracteres

2) ¿Cuál es el tamaño 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 líneas, interfase de 8 bits

y una fuente de 5x7 puntos?

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

4) ¿Cuántos caracteres puede almacenar la LCD?

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

5) ¿En qué estado tienen que estar las líneas de control para enviar un carácter 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

Page 61: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 1: MÓDULO DE CONTROL DE UNA LCD INFORMACIÓN 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) ¿Cuál es el tiempo mínimo del pulso de habilitación?

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

8) En la dirección de memoria 0x10 está guardada la letra “A” pero la última

posición visible es la 0x0F. ¿Qué se debe hacer para ver la letra “A” de la dirección 0x10 en la primera posición 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 Creación de una Librería de Funciones:

A continuación 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 inicialización de la LCD:

- Esperar 20ms - Configurar una interfaz de 8 bits y 1 línea - Generar un pulso de activación de la línea EN. - Esperar 5ms. - Repetir las tres líneas anteriores tres veces. - Programar un incremento automático de AC. - Esperar 5ms. - Configurar una interfaz de 8 bits y 2 líneas. - Configurar un incremento automático de AC. - Apagar la pantalla. - Borrar el contenido de la memoria de la LCD.

Page 62: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 1: MÓDULO DE CONTROL DE UNA LCD INFORMACIÓN PARA EL ALUMNO

54

LCD_ENABLE: Genera un pulso de activación de la EN.

- Habilitar la LCD. - Esperar 5ms. - Deshabilitar la LCD. - Esperar 5ms.

LCD_DATA: Envía un dato a la LCD.

- Colocar el dato en D0 a D7. - LCD en modo datos. - Pulso de activación. - LCD en modo comandos.

LCD_COMMAND: Envía un comando a la LCD.

- LCD en modo comando. - Colocar el comando en D0 a D7. - Pulso de activación.

DELAY: Realiza una espera de 5ms.

5 Creación de la Aplicación:

En primer lugar la aplicación debe realizar las secuencias de inicialización de los puertos de entrada / salida del microprocesador, así como también de la LCD. A continuación 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 código 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 ejecución de la aplicación. A continuación 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 también la aplicación. Opcionalmente, se pueden incluir rutinas que visualicen la palabra GOL parpadeando en la LCD cada vez que se pulsen los pulsadores 1 o 2. También se puede incluir otra rutina que indique cual ha sido el equipo ganador o si el resultado ha sido empate.

Page 63: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

56

Anexo 2: Módulo Control LCD Solución de la Práctica

1 Solución del Cuestionario del Estudio Previo Las soluciones a las preguntas del cuestionario se encuentran señaladas en color rojo, estilo cursiva y subrayadas.

- ¿Qué se puede visualizar en un módulo LCD alfanumérico de matriz de puntos? a) Sólo números porque la visualización es de 7 segmentos. b) Sólo letras c) Todos los caracteres ASCII d) Los caracteres que pueden ser generados por el generador de caracteres

- ¿Cuál es el tamaño 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 líneas, interfase de 8 bits

y una fuente de 5x7 puntos? a) 00111000 b) 00011000 c) 10111000 d) 01010101

- ¿Cuántos caracteres puede almacenar la LCD? a) 16 b) 32 c) 80 d) 64

- ¿En qué estado tienen que estar las líneas de control para enviar un carácter 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

Page 64: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

57

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

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

- ¿Cuál es el tiempo mínimo del pulso de habilitación?

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

- En la dirección de memoria 0x10 está guardada la letra “A” pero la última

posición visible es la 0x0F. ¿Qué se debe hacer para ver la letra “A” de la dirección 0x10 en la primera posición 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 Código de la Librería 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

Page 65: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

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

Page 66: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

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 activación para ;que acepte el comando.

RTS ;Fin de la subrutina ;-------------------------------------------------------------- ;DELAY: Realiza una temporizacion de 5ms ;Esta temporizaci¢n 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 se¤aladas 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

Código 1. Funciones de uso general para el manejo de una LCD

Page 67: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

60

3 Código de la Aplicación de Marcador de un Estadio de Fútbol ;*********************************************************************; 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 después

;de cada caracter LCDDEC EQU $04 ;Decrementa la posicion del cursor después

;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

Page 68: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

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

Page 69: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

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

Page 70: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

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

Page 71: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

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 ;Funci¢n 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 ;**************************************************************

Page 72: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

65

;************************************************************** ; SUBRUTINAS UTILIZADAS EN LA APLICACIÓN ;************************************************************** ;************************************************************** ;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)

Page 73: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

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

Page 74: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

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

Page 75: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

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

Page 76: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

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

Page 77: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

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

Page 78: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

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 activación para ;que acepte el comando.

RTS ;Fin de la subrutina

Page 79: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 2: MODULO DE CONTROL DE UNA LCD SOLUCIÓN DE LA PRÁCTICA

72

;-------------------------------------------------------------- ;DELAY: Realiza una temporizacion de 5ms ;Esta temporizaci¢n 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 se¤aladas 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

Código 2. Código fuente de la aplicación Marcador de un Estadio de Fútbol

Page 80: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 3: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

73

Anexo 3: Práctica de Control de Temperatura con Lectura de

Ocho Bits 1 Enunciado de la Práctica El módulo de control de temperatura funciona como un horno eléctrico. Esta práctica tiene como objetivo realizar un control de temperatura del horno con la ayuda del microinstructor del 68000. Para conseguir este propósito, hemos dividido la práctica en tres partes. La primera consiste en realizar un estudio previo estudiando la información técnica del módulo que se va a usar. Esta documentación está disponible en el siguiente capítulo. El alumno debe responder las preguntas del cuestionario del estudio previo antes de la primera sesión de prácticas. La segunda parte de la práctica consiste en realizar la adquisición de la conversión analógico – digital de la salida del sensor de temperatura. Finalmente, la tercera parte de la práctica consiste en programar un control digital para que la temperatura del horno sea la que nosotros queremos. 2 Información Técnica Este módulo está formado por un elemento sensor de temperatura cuya salida está acondicionada por un circuito analógico. Posteriormente la salida acondicionada se muestrea mediante el conversor analógico – digital disponible en el microcontrolador PIC16F873. La señal muestreada se trata mediante un programa que se ejecuta en el microcontrolador. Mediante uno de los puertos de entrada – salida de éste se envía el valor de la conversión 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 dígitos de siete segmentos. El programa de control tiene que generar una señal, que convertida mediante un conversor digital – analógico 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 histéresis, control proporcional e incluso un control PID. El esquema eléctrico del módulo de control de temperatura se encuentra al final de este documento.

Page 81: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 3: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

74

En la Figura 1 se puede ver el diagrama de bloques del módulo de control de temperatura.

Figura 1. Diagrama de Bloques del Módulo de Control de Temperatura

2.1 Medición 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 tensión de 10mV/ºC. El rango de temperatura es de 0ºC a 100ºC, aproximadamente. Las características técnicas de este circuito se pueden ver en la Tabla 1:

Factor de escala lineal +10mV/ºC Precisión a 25ºC 0.5ºC Alimentación 4 a 30V No linealidad ±¼ ºC Impedancia de salida baja 0.1Ω para una carga de 1mA.

Tabla 1. Características técnicas 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 tensión, proporcional a la temperatura de la resistencia, entre su salida y el nodo de referencia.

Page 82: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 3: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

75

Figura 2. Esquema de la medición de temperatura

La salida del sensor de temperatura se introduce en el circuito de acondicionamiento de señal por medio del integrado IC2, que es un amplificador operacional tipo OP07 en configuración de seguidor de tensión. La salida de esta etapa seguidora se introduce en IC3, que es un amplificador de ganancia 5, realizado también con un amplificador operacional OP07, en configuración no inversora. Las resistencias utilizadas son de baja tolerancia para respetar al máximo la señal del sensor. Posteriormente, la salida del amplificador de tensión, se introduce en otra etapa separadora IC4, formada también por un amplificador operacional tipo OP07 de la misma forma que IC2. Por último, la señal de salida se introduce a uno de los canales analógicos del microcontrolador, concretamente, a la entrada AN0. 2.2 Conversor Digital – Analógico La conversión digital – analógico se realiza mediante el circuito integrado IC10 tipo DAC08CN. Es un circuito integrado con tecnología CMOS en un encapsulado de 16 pins tipo DIL. Las características técnicas se encuentran en la Tabla 2:

Resolución 8 bits Datos Paralelo Tiempo de conversión 1µs Alimentación 18V (máx) Error de ganancia ±1% Canales 2

Tabla 2. Características del DAC08CN

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

Page 83: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 3: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

76

2.3 Conexión con el Microinstructor TM-683 En el microinstructor TM-683 están disponibles dos conectores de aplicación (Aplicación 1 y Aplicación 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, sólo dos de ellos (puerto B y puerto C) disponen de ocho líneas de datos. El puerto A del microcontrolador sólo dispone de cinco líneas de datos. El microinstructor TM-683 se conecta al módulo de aplicación mediante el conector de aplicación CN3. En este conector están disponibles las señales 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 envía al microinstructor el valor de la conversión analógico – digital de la temperatura. La señal RA1 del microcontrolador está conectado a un interruptor de configuración. Para la realización de esta práctica, el interruptor de configuración del módulo (SW7) debe estar en estado lógico “1”. En este caso el microcontrolador envía al microinstructor un valor de 8 bits correspondientes a los ocho bits más significativos de la conversión.

Cuando el microcontrolador tiene un nuevo valor de conversión para enviar, provoca un flanco descendente en su línea RA3, que está conectada a la línea CA1 del microinstructor, indicando que en el puerto A hay un valor de conversión. Programando debidamente el microinstructor, este hecho puede servir de interrupción externa. 2.4 Módulo 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 tensión de alimentación de la fuente de +15V y, el emisor está conectado a la resistencia de potencia R19 de 10Ω y 15W. Según pase más o menos corriente por el transistor, el conjunto transistor – resistencia de potencia se calentará más o menos. Esta corriente se controla con la tensión de salida del DAC. 3 Estudio Previo Una vez leída y entendida la información técnica del apartado 2, responder a las siguientes cuestiones, argumentando las respuestas.

a) Obtener la expresión que relaciona la temperatura de la resistencia con el valor de la conversión analógico – digital, suponiendo que tenemos un conversor A / D de 8 bits y que sus tensiones de referencia son: Vmax = 5V y Vmin = 0V para un rango de temperaturas de 0ºC a 100ºC.

b) Si el resultado de la conversión analógico – digital es 136 (88h), ¿cuál es la

temperatura de la resistencia?

c) ¿Cuál es la resolución de la conversión en ºC / cuenta?

Page 84: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 3: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

77

d) Calcula la expresión que relaciona el dato digital de la entrada del conversor

digital – analógico con la tensión de salida del mismo.

e) ¿Qué tensión de salida corresponderá con un valor digital en la entrada de 58 (3Ah)?

4 Adquisición y Procesado del Dato En este apartado se debe crear un programa para adquirir el resultado de la conversión analógico – digital y, procesarlo para obtener en una posición de memoria el valor de la temperatura de la resistencia. Para realizar este apartado, el interruptor de configuración número 7 tiene que estar abierto (estado lógico “1”). Programar la rutina de atención a la interrupción, que ha sido generada por un flanco descendente en la línea CA1, para que lea del puerto A de la VIA los 8 bits del resultado de la conversión analógico – digital. Fuera de la interrupción, operar con el dato leído 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, actúe en consecuencia para que la temperatura de la resistencia sea lo más similar posible a la temperatura deseada. Se puede elegir uno de los siguientes algoritmos de control:

- Todo / Nada - Todo / Nada con Histéresis - Proporcional (P) - Proporcional Integral (PI) - Proporcional, Integral y Derivativo (PID)

En la elección 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 elección.

Page 85: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 4: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

79

Anexo 4: Práctica de Control de Temperatura con Lectura de

Diez Bits 1 Enunciado de la Práctica El módulo de control de temperatura funciona como un horno eléctrico. Esta práctica tiene como objetivo realizar un control de temperatura del horno con la ayuda del microinstructor del 68000. Para conseguir este propósito hemos dividido la práctica en tres partes. La primera consiste en realizar un estudio previo estudiando la información técnica del módulo que se va a usar, disponible en el siguiente capítulo y, responder las preguntas del cuestionario. La segunda parte de la práctica consiste en realizar la adquisición de la conversión analógico – digital de la salida del sensor de temperatura. Finalmente, la tercera parte de la práctica consiste en programar un controlador digital para que la temperatura del horno sea la que nosotros queremos. 2 Información Técnica Este módulo está formado por un elemento sensor de temperatura cuya salida está acondicionada por un circuito analógico. Posteriormente la salida acondicionada se muestrea mediante el conversor analógico – digital disponible en el microcontrolador PIC16F873. La señal muestreada se trata mediante un programa que se ejecuta en el microcontrolador. Mediante uno de los puertos de entrada – salida de éste se envía el valor de la conversión 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 módulos de cátodo común. El programa de control genera una señal que es convertida mediante un conversor digital – analógico 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 histéresis, control proporcional e incluso un control PID. El esquema eléctrico del módulo de control de temperatura se encuentra al final de este documento.

Page 86: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 4: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

80

En la Figura 1 se puede ver el diagrama de bloques del módulo de control de temperatura.

Figura 1. Diagrama de Bloques del Módulo de Control de Temperatura

2.1 Medición 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 tensión de 10mV/ºC. El rango de temperatura es de 0ºC a 100ºC, aproximadamente. Las características técnicas de este circuito se pueden ver en la Tabla 1:

Factor de escala lineal +10mV/ºC Precisión a 25ºC 0.5ºC Alimentación 4 a 30V No linealidad ±¼ ºC Impedancia de salida baja 0.1Ω para una carga de 1mA.

Tabla 1. Características técnicas 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 tensión, proporcional a la temperatura de la resistencia, entre su salida y el nodo de referencia.

Page 87: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 4: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

81

Figura 2. Esquema de la medición de temperatura

La salida del sensor de temperatura se introduce en el circuito de acondicionamiento de señal por medio del integrado IC2, que es un amplificador operacional tipo OP07 en configuración de seguidor de tensión. La salida de esta etapa seguidora se introduce en IC3, que es un amplificador de ganancia 5, realizado también con un amplificador operacional OP07, en configuración no inversora. Las resistencias utilizadas son de baja tolerancia para respetar al máximo la señal del sensor. Posteriormente, la salida del amplificador de tensión, se introduce en otra etapa separadora IC4, formada también por un amplificador operacional tipo OP07 de la misma forma que IC2. Por último, la señal de salida se introduce a uno de los canales analógicos del microcontrolador, concretamente, a la entrada AN0. 2.2 Conversor Digital – Analógico La conversión digital – analógico se realiza mediante el circuito integrado IC10 tipo DAC08CN. Es un circuito integrado con tecnología CMOS en un encapsulado de 16 pins tipo DIL. Las características técnicas se encuentran en la Tabla 2:

Resolución 8 bits Datos Paralelo Tiempo de conversión 1µs Alimentación 18V (máx) Error de ganancia ±1% Canales 2

Tabla 2. Características del DAC08CN

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

Page 88: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 4: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

82

2.3 Conexión con el Microinstructor TM-683 En el microinstructor TM-683 están disponibles dos conectores de aplicación (Aplicación 1 y Aplicación 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, sólo dos de ellos (puerto B y puerto C) disponen de ocho líneas de datos. El puerto A del microcontrolador sólo dispone de cinco líneas de datos. El microinstructor TM-683 se conecta al módulo de aplicación mediante el conector de aplicación CN3. En este conector están disponibles las señales 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 envía al microinstructor el valor de la conversión analógico – digital de la temperatura. La señal RA1 del microcontrolador está conectado a un interruptor de configuración. Si el estado lógico del interruptor es “1”, el microcontrolador envía al microinstructor un valor de 8 bits correspondientes a los ocho bits más significativos de la conversión. Cuando el estado lógico del interruptor es “0”, el microcontrolador envía los 10 bits de la conversión 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 línea RA3, que está conectada a la línea CA1 del microinstructor, indicando que en el puerto A hay un valor de conversión. El valor de la conversión, se envía al puerto A de la VIA porque en el conector de aplicación sólo están disponibles las señales de control del puerto A. Estas señales de control son necesarias para realizar una petición de interrupción y para el reconocimiento de la interrupción por parte del microcontrolador. Programando debidamente el microinstructor, un flanco de bajada en la línea CA1 sería motivo de interrupción externa. La línea RA2 del microcontrolador está conectada a la línea 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 conversión del puerto A, la línea CA2 baje a nivel lógico “0”, hecho que el microcontrolador interpreta como que se ha recibido el dato de la conversión y puede enviar el siguiente. En el Gráfico 1 se representa la variación de las líneas de datos y control (CA1 y CA2) cuando el microcontrolador envía un dato a la VIA del microinstructor.

Page 89: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 4: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

83

Grafico 1. Comportamiento de las líneas que intervienen en el envío de un dato a la VIA.

2.4 Módulo 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 tensión de alimentación de la fuente de +15V y, el emisor está conectado a la resistencia de potencia R19 de 10Ω y 15W. Según pase más o menos corriente por el transistor, el conjunto transistor – resistencia de potencia se calentará más o menos. Esta corriente se controla con la tensión de salida del DAC.

Page 90: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 4: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

84

3 Estudio Previo Una vez leída y entendida la información técnica del apartado 2, responder a las siguientes cuestiones, argumentando las respuestas.

a) Obtener la expresión que relaciona la temperatura de la resistencia con el valor de la conversión analógico – digital, suponiendo que tenemos un conversor A / D de 10 bits y que sus tensiones de referencia son: Vmax = 5V y Vmin = 0V para un rango de temperaturas de 0ºC a 100ºC.

b) Si el resultado de la conversión analógico – digital es 136 (88h), ¿cuál es la

temperatura de la resistencia?

c) Según 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 conversión analógico-digital.

d) Calcula la expresión que relaciona el dato digital de la entrada del conversor

digital – analógico con la tensión de salida del mismo.

e) ¿Qué tensión de salida corresponderá con un valor digital en la entrada de 58 (3Ah)?

4 Adquisición y Procesado del Dato En este apartado se debe crear un programa para adquirir el resultado de la conversión analógico – digital y, procesarlo para obtener en una posición de memoria el valor de la temperatura de la resistencia. Para realizar este apartado, el interruptor de configuración número 7 tiene que estar cerrado (estado lógico “0”). Programar la rutina de atención a la interrupción generada por un flanco descendente en la línea CA1, para que lea del puerto A de la VIA los 10 bits del resultado de la conversión analógico – digital. Fuera de la interrupción, operar con el dato leído para obtener la temperatura de la resistencia.

Page 91: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 4: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

85

5 Control Digital Programar un algoritmo de control que compare la temperatura obtenida con la temperatura deseada y, actúe en consecuencia para que la temperatura de la resistencia sea lo más similar posible a la temperatura deseada. Se puede elegir uno de los siguientes algoritmos de control:

- Todo / Nada - Todo / Nada con Histéresis - Proporcional (P) - Proporcional Integral (PI) - Proporcional, Integral y Derivativo (PID)

En la elección 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 elección.

Page 92: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 5: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

87

Anexo 5: Práctica de Conversión A/D y Visualización en Display

de Siete Segmentos 1 Enunciado de la Práctica El módulo de control de temperatura funciona como un horno eléctrico. Esta práctica tiene como objetivo realizar la medición de la temperatura de calentamiento del horno mediante un conversor analógico – digital y visualizar en un display con tres dígitos de siete segmentos dicha temperatura. Para conseguir este propósito hemos dividido la práctica en tres partes. La primera consiste en realizar un estudio previo estudiando la información técnica del módulo que se va a usar, disponible en el siguiente capítulo y, responder las preguntas del cuestionario. La segunda parte de la práctica consiste en programar el microcontrolador PIC16F873 de la placa para que realice la conversión analógico – digital de la salida del sensor de temperatura. Finalmente, la tercera parte de la práctica consiste en procesar el dato obtenido de la conversión analógico – digital y visualizar el valor de la temperatura en el display. 2 Información Técnica Este módulo está formado por un elemento sensor de temperatura cuya salida está acondicionada por un circuito analógico. Posteriormente la salida acondicionada se muestrea mediante el conversor analógico – digital disponible en el microcontrolador PIC16F873. La señal 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 dígitos de cátodo común. El esquema eléctrico del módulo de control de temperatura se encuentra al final de este documento.

Page 93: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 5: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

88

En la Figura 1 se puede ver el diagrama de bloques del módulo de control de temperatura.

Figura 1. Diagrama de Bloques del Módulo de Control de Temperatura

2.1 Medición 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 tensión de 10mV/ºC. El rango de temperatura es de 0ºC a 100ºC, aproximadamente. Las características técnicas de este circuito se pueden ver en la Tabla 1:

Factor de escala lineal +10mV/ºC Precisión a 25ºC 0.5ºC Alimentación 4 a 30V No linealidad ±¼ ºC Impedancia de salida baja 0.1Ω para una carga de 1mA.

Tabla 1. Características técnicas 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 tensión, proporcional a la temperatura de la resistencia, entre su salida y el nodo de referencia.

Page 94: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 5: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

89

Figura 2. Esquema de la medición de temperatura

La salida del sensor de temperatura se introduce en el circuito de acondicionamiento de señal por medio del integrado IC2, que es un amplificador operacional tipo OP07 en configuración de seguidor de tensión. La salida de esta etapa seguidora se introduce en IC3, que es un amplificador de ganancia 5, realizado también con un amplificador operacional OP07, en configuración no inversora. Las resistencias utilizadas son de baja tolerancia para respetar al máximo la señal del sensor. Posteriormente, la salida del amplificador de tensión, se introduce en otra etapa separadora IC4, formada también por un amplificador operacional tipo OP07 de la misma forma que IC2. Por último, la señal de salida se introduce a uno de los canales analógicos del microcontrolador, concretamente, a la entrada AN0. 2.2 Conversión Analógico – Digital El microcontrolador utilizado en el módulo, dispone de un conversor analógico-digital con una resolución de 10 bits. Este módulo se ha diseñado 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 tensión de 10mV/ºC que es proporcional a la temperatura a la que está sometido. Estos datos se representan en el Gráfico 1, que relaciona la tensión de salida del sensor con la temperatura.

Page 95: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 5: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

90

Gráfico 1. Tensión de salida del sensor Vs. Temperatura

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

Grafico 2. Tensión de entrada al conversor A/D Vs. Temperatura

Page 96: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 5: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

91

El conversor analógico-digital está configurado con unas tensiones de referencia de 0V y 5V. Con esta configuración, para una entrada de 0V se obtiene el valor digital 00000000002 y, para una entrada de 5V se obtiene el valor digital 11111111112 (1023). El Gráfico 3 muestra la relación entre el valor digital obtenido respecto a la temperatura.

Grafico 3. Valor Digital Vs. Temperatura

Como se ha indicado previamente, la conversión analógico – digital de la señal se hace mediante el microcontrolador IC8 del tipo PIC16F873 fabricado por MICROCHIP, el cual dispone de un conversor analógico – digital (ADC) de 10 bits y cinco canales. Este microcontrolador dispone, además, de 22 líneas de entrada – salida capaces de entregar una corriente máxima de 25mA por línea, 7168 bytes de memoria FLASH, 192 bytes de memoria RAM, 128 bytes de memoria EEPROM, dos módulos de modulación de anchura de pulsos (PWM) con una precisión de 10 bits, un temporizador de 16 bits, dos temporizadores de 8 bits, un temporizador de perro guardián (WDT), módulo universal de transmisión / recepción síncrona / asíncrona de datos vía serie (USART), bus I²C (Inter-Integrated Circuit Bus), interfase serie de periféricos (SPI), todo ello en un encapsulado de 28 pins tipo SP (Lead Skinny PDIP). El microcontrolador funciona con una señal de reloj de 4MHz procedente del cristal de cuarzo Y1.

Page 97: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 5: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

92

2.3 Visualizador de Siete Segmentos La visualización de la temperatura se realiza mediante tres módulos de siete segmentos LED de cátodo común tipo MAN74A de color rojo y frontal rojo. Los segmentos tienen una altura de 7.62mm y están dispuestos en encapsulados de 10 pines. Estos displays están diseñados para dar un óptimo contraste entre encendido / apagado. La versión de cátodo común dispone de un punto decimal en el lado derecho. Las características técnicas de estos módulos se pueden observar en la Tabla 2: Tensión directa nominal 1.6V

Nominal 10mA Corriente directa

Máxima 30mA

Intensidad luminosa nominal por dígito 2.5mcd

Tensión inversa máxima 6V

Ángulo de visión ±75º

Potencia máxima disipada por segmento 60mW

Temperatura de funcionamiento De –40ºC a +85ºC

Tabla 2. Características técnicas del módulo de 7 segmentos.

Cada uno de los segmentos del display está conectado a una línea del puerto C del microcontrolador mediante resistencia limitadoras de corriente. La relación entre los segmentos del display y las líneas 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. Relación entre los segmentos y sus líneas de datos

Page 98: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 5: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

93

En la Figura 3 se muestra la posición de cada segmento:

Figura 3. Posición de los segmentos

en el display

Como se ha indicado antes, los dígitos del display son de cátodo común. El cátodo de cada dígito está conectado a una salida del decodificador IC9 del tipo 74LS139. El circuito IC9 es un decodificador 2 a 4 cuyas entradas son las líneas RA4 y RA5 del PIC. En la Tabla 4 se detallan los estados de cada una estas señales para activar los digitos.

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

Tabla 4. Selección de los dígitos de 7 segmentos

2.4 Programador PIC16F873 Se conecta al puerto paralelo del PC mediante el conector CN2 y necesita, además, una alimentación 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 restricción, lo mismo que puede leer y programar sus fusibles de configuración. Los microcontroladores PIC de MICROCHIP están todos provistos de memoria de acceso serie. Tres de las patillas del encapsulado cambian momentáneamente de función durante la fase de programación para dar acceso a la memoria de programa interna; este cambio se desencadena simplemente aplicando una tensión 13.8V (tensión alta de programación) 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 fácilmente por software y, por otra parte, suministra niveles TTL directamente utilizables. Además, debemos disponer de algunas líneas de control para conmutar las diversas alimentaciones del microcontrolador en el curso de la programación.

Page 99: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 5: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

94

Las señales del puerto paralelo son señales TTL bastante deterioradas por el cable de conexión. 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 fácilmente los transistores Q1, Q2 y Q3. Q2 y Q3 permiten aplicar la tensión alta de programación VPP a las patillas adecuadas. El transistor Q1 gobierna la tensión normal de alimentación VDD y permite no alimentar el circuito a programar más que cuando es verdaderamente necesario acceder a él. Para indicar la aplicación 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 tensión, con el fin de señalar el buen funcionamiento de la alimentación. 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 programación pasa por IC7c. El programador se alimenta mediante la fuente de alimentación MM-600, común a todos los módulos de aplicación del microinstructor TM-683. La salida de +15V pasa a través del regulador lineal de tensión IC5 tipo 7812, el cual tiene en su patilla común tres diodos (D1, D2, D3, tipo 1N4004) conectados en serie que elevan la tensión de salida a 13.8V. El programador dispone también de 5 microinterruptores disponibles en SW2 cuya función es la de dejar las señales del programador en circuito abierto en caso de que no se tenga que programar y se esté en fase de ejecución. En la Figura 4 se puede ver la posición de los siete microinterruptores disponibles en SW2 cuando se está en fase de grabación del PIC16F873 y cuando se está ejecutando el programa. Cuando se está en fase de programación (ver Figura 4a), cerramos los interruptores 1 a 5 de forma que por el primer microinterruptor se gobierna la tensión alta de programación, por el tercer microinterruptor se gobierna la tensión de alimentación del chip, por el cuarto transita el reloj de programación; y por el quinto transitan los datos a programar. Los microinterruptores 6 y 7 deben estar abiertos ya que el 6 gobierna la tensión del chip en la fase de ejecución y el microinterruptor 7 indica la longitud del dato de conversión A / D que se envía al microinstructor TM-683.

Figura 4. Posición de los microinterruptores para (a) programación,

o (b) ejecución

Page 100: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 5: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

95

2.4.1 Software de Programación del PIC16F873 Numerosos programas disponibles en internet pueden utilizarse con el programador que incorpora el módulo 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 configuración tal y como indica la Figura 4a. Con el módulo apagado, conectar el programador al puerto paralelo del PC. Una vez alimentado el módulo, comprobar que el led verde está encendido. Los leds rojos pueden estar encendidos o apagados según el estado del puerto paralelo del PC. Ejecutar entonces el programa P16PRO. Tratándose 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 ejecución se accede a una pantalla principal. En la parte superior izquierda de la pantalla se encuentran accesibles dos menús desplegables pulsando la tecla Alt. Estos menús dan acceso a todo lo concerniente a los ficheros (menú FILE) y a la configuración hardware. La primera operación a realizar consiste en configurar los parámetros del programador. Para esto, vaya al menú Settings y sitúese en Other por medio de las teclas de desplazamiento del cursor. Entonces puede seleccionar el puerto paralelo al cual se encuentra conectado el módulo. 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 continuación ir al menú Settings y situarse en Device. Aparece una pantalla en la que debemos escribir el número 9 (PIC16F873) y pulsar ENTER. Entonces se debe elegir el fichero con extensión .HEX a programar en el menú FILE->Open Program. Para programar el microcontrolador basta con pulsar la tecla F4.

Page 101: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 5: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

96

3 Estudio Previo Una vez leída y entendida la información técnica del apartado 2, responder a las siguientes cuestiones, argumentando las respuestas.

a) Obtener la expresión que relaciona la temperatura de la resistencia con el valor de la conversión analógico – digital, suponiendo que tenemos un conversor A / D de 10 bits y que sus tensiones de referencia son: Vmax = 5V y Vmin = 0V para un rango de temperaturas de 0ºC a 100ºC.

b) Si el resultado de la conversión analógico – digital es 136 (88h), ¿cuál es la temperatura de la resistencia?

c) ¿Cuál es la resolución de la conversión en ºC / cuenta? d) Indica el estado de las líneas RA4, RA5 y el valor a enviar por el puerto C para

visualizar en el dígito 1 el número 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

Page 102: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 5: MÓDULO DE CONTROL DE TEMPERATURA INFORMACIÓN PARA EL ALUMNO

97

4 Conversión Analógico - Digital En este apartado se debe programar el módulo A / D del microcontrolador para que realice la conversión analógico – digital de la salida del sensor de temperatura y, procesarlo para obtener en una posición 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 módulo A / D para que el canal analógico sea la línea AN0

(RA0) y todas las demás líneas sean digitales. Las tensiones de referencia tienen que ser VDD y VSS.

- Programar la velocidad de muestreo - Programar la rutina de atención a la interrupción provocada por la

finalización de una conversión. - Fuera de la rutina de atención a la interrupción, procesar el resultado de la

conversión para que en una posición de la memoria tengamos el valor real de la temperatura.

5 Visualización en el Display de 7 Segmentos Crear una función que dado un valor de temperatura guardado en una posición de memoria determinado, visualice dicha temperatura en los dígitos del display de siete segmentos con un decimal de precisión.

Page 103: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

99

Anexo 6: Módulo de Control de Temperatura

(Solución de las Prácticas) En este documento se encuentran las soluciones de las prácticas descritas en los anexos 3, 4 y 5. 1 Práctica de Control de Temperatura con Lectura de Ocho Bits 1.1 Estudio Previo

a) Obtener la expresión que relaciona la temperatura de la resistencia con el valor de la conversión analógico – digital, suponiendo que tenemos un conversor A / D de 8 bits y que sus tensiones de referencia son: Vmax = 5V y Vmin = 0V para un rango de temperaturas de 0ºC a 100ºC.

Los datos que se nos proporcionan son: Rango de Temperatura: 0ºC a 100ºC Tensión de Referencia: Vmax = 5V Vmin = 0V De la documentación técnica del módulo 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 tensión y tendremos un rango de tensión en la entrada del conversor A / D de 0V a 5V. Según 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 expresión resultante es la siguiente:

TaN ⋅= (1)

55,2100

255===

TN

a (2)

TN ⋅= 55,2 55,2

NT =

Page 104: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

100

b) Si el resultado de la conversión analógico – digital es 136 (88h), ¿cuál es la temperatura de la resistencia?

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

CT º3,5355,2

136==

c) ¿Cuál es la precisión de la conversión en ºC / cuenta?

Para saber la precisión se calcula la temperatura que corresponde a una cuenta.

CT º392,055,2

1==

Precisión = 0,392 cuentaCº

d) Calcula la expresión que relaciona el dato digital de la entrada del conversor

digital – analógico con la tensión de salida del mismo. Como el conversor Digital – Analógico es de 8 bits, también tendrá 256 posibles estados. Calculamos la expresión que relaciona su entrada con su salida:

N Vo 0 0V

255 10V

NbVo ⋅=

25510 ⋅= bV

cuentaVb 039,0

255

10==

NVo ⋅= 039,0

e) ¿Qué tensión de salida corresponderá con un valor digital en la entrada de 58

(3Ah)?

VVo 262,258039,0 =⋅=

Page 105: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

101

1.2 Adquisición y Procesado del Dato En este apartado se debe crear un programa para adquirir el resultado de la conversión analógico – digital y, procesarlo para obtener en una posición de memoria el valor de la temperatura de la resistencia. Para realizar este apartado, el interruptor de configuración número 7 tiene que estar abierto (estado lógico “1”). Programar la rutina de atención a la interrupción generada por un flanco descendente en la línea CA1, para que lea del puerto A de la VIA los 8 bits del resultado de la conversión analógico – digital. Fuera de la interrupción, operar con el dato leído para obtener la temperatura de la resistencia. La rutina de servicio a la interrupción provocada por un flanco descendente en la línea CA1 es la siguiente: INTERR: MOVE.B PORTA,ADRES ;Lee el valor de la conversion del ADC RTE ;Fin de la Interrupción Código 1. Rutina de Atención a la interrupción A continuación se presenta la función 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 Código 2. Cálculo de la Temperatura real de la resistencia El valor de la conversión guardado en (ADRES) se divide por 2,5 para obtener la temperatura real.

Page 106: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

102

1.3 Controlador Digital Programar un algoritmo de control que compare la temperatura obtenida con la temperatura deseada y, actúe en consecuencia para que la temperatura de la resistencia sea lo más similar posible a la temperatura deseada. Se puede elegir uno de los siguientes algoritmos de control:

- Todo / Nada - Todo / Nada con Histéresis - Proporcional (P) - Proporcional Integral (PI) - Proporcional, Integral y Derivativo (PID)

Razona el porqué de tu elección. 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 válidos. El algoritmo de control Todo – Nada es muy fácil de programar y su funcionamiento en este sistema es correcto. Por lo tanto, la solución 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

Código 3. Algoritmo de control Todo – Nada

Page 107: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

103

1.4 Aplicación de Ejemplo El código siguiente es un ejemplo de aplicación de control de temperatura del horno cuando la recepción de la conversión analógico – digital es de ocho bits. La aplicación 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

Page 108: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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 válido 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

Page 109: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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

Page 110: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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 conversión 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

Page 111: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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 Interrupción ;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

Page 112: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

108

TEXT DB $08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$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 Código 4. Aplicación de ejemplo

Page 113: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

109

2 Práctica de Control de Temperatura con Lectura de Diez Bits 2.1 Estudio Previo

a) Obtener la expresión que relaciona la temperatura de la resistencia con el valor de la conversión analógico – digital, suponiendo que tenemos un conversor A / D de 10 bits y que sus tensiones de referencia son: Vmax = 5V y Vmin = 0V para un rango de temperaturas de 0ºC a 100ºC.

Los datos que se nos proporcionan son: Rango de Temperatura: 0ºC a 100ºC Tensión de Referencia: Vmax = 5V Vmin = 0V De la documentación técnica del módulo 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 tensión y tendremos un rango de tensión en la entrada del conversor A / D de 0V a 5V. Según 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 expresión resultante es la siguiente:

TaN ⋅= (1)

23,10100

1023===

TN

a (2)

TN ⋅= 23,10 23,10

NT =

Page 114: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

110

b) Si el resultado de la conversión analógico – digital es 136 (88h), ¿cuál es la temperatura de la resistencia?

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

CT º29,1323,10

136==

c) Según 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 conversión analógico-digital.

Para obtener el valor completo de la conversión analógico-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 línea CA1. 2.- Programar la VIA del microinstructor para que cada vez que se produzca una interrupción generada por un flanco de bajada en la línea CA1, la línea CA2 se ponga a nivel lógico “1” y pase a nivel lógico “0”, automáticamente cuando se lea el contenido del Puerto A de la VIA. 3.- Reservar una posición de memoria que nos indicará que byte de la conversión es el que se desea leer en la próxima interrupción.

4.- En la rutina de atención a la interrupción, leer el dato de la puerta A. 5.- Examinar el bit MSB (bit 7) para averiguar de qué parte de la conversión se

trata. 6.- Si se corresponde con el byte que se deseaba leer, guardarlo en memoria.

Indicar también que cuál es el siguiente byte que se desea leer. Si el byte recibido no se corresponde con el deseado, salir de la interrupción 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 conversión, borrar el bit número 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 lógica entre los registros D2 y D1. 13.- El valor completo de la conversión se obtiene en el registro utilizado como

destino en la operación anterior.

Page 115: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

111

d) Calcula la expresión que relaciona el dato digital de la entrada del conversor

digital – analógico con la tensión de salida del mismo. Como el conversor Digital – Analógico es de 8 bits, también tendrá 256 posibles estados. Calculamos la expresión que relaciona su entrada con su salida:

N Vo 0 0V

255 10V

NbVo ⋅=

25510 ⋅= bV

cuentaVb 039,0

255

10==

NVo ⋅= 039,0

e) ¿Qué tensión de salida corresponderá con un valor digital en la entrada de 58

(3Ah)?

VVo 262,258039,0 =⋅=

Page 116: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

112

2.2 Adquisición y Procesado del Dato En este apartado se debe crear un programa para adquirir el resultado de la conversión analógico – digital y, procesarlo para obtener en una posición de memoria el valor de la temperatura de la resistencia. Para realizar este apartado, el interruptor de configuración número 7 tiene que estar cerrado (estado lógico “0”). Programar la rutina de atención a la interrupción generada por un flanco descendente en la línea CA1, para que lea del puerto A de la VIA los 10 bits del resultado de la conversión analógico – digital. Fuera de la interrupción, operar con el dato leído para obtener la temperatura de la resistencia. La rutina de servicio a la interrupción provocada por un flanco descendente en la línea 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

Código 5. Rutina de atención a la interrupción. En el código anterior, la posición de memoria indicada por BAJO indica si se debe leer el byte bajo de la conversión (BAJO = FFh) o el alto (BAJO = 00h).

Page 117: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

113

A continuación se presenta la función 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 Código 6. Cálculo de la temperatura real de la resistencia. Como la precisión de la conversión es aproximadamente igual a 0,1 ºC / cuenta, los tres bits menos significativos del resultado de la conversión nos proporcional directamente el dígito decimal. 2.3 Controlador Digital La solución de este apartado es la misma que la dada anteriormente en el apartado 1.3. 2.4 Aplicación de Ejemplo El código siguiente es un ejemplo de aplicación de control de temperatura del horno cuando la recepción de la conversión analógico – digital es de diez bits. La aplicación 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

Page 118: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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

Page 119: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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 válido 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

Page 120: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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

Page 121: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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

Page 122: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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,$08,$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 Código 7. Aplicación de ejemplo.

Page 123: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

119

3 Práctica de Conversión A/D y Visualización en Display de Siete Segmentos 3.1 Estudio Previo

a) Obtener la expresión que relaciona la temperatura de la resistencia con el valor de la conversión analógico – digital, suponiendo que tenemos un conversor A / D de 10 bits y que sus tensiones de referencia son: Vmax = 5V y Vmin = 0V para un rango de temperaturas de 0ºC a 100ºC.

Los datos que se nos proporcionan son: Rango de Temperatura: 0ºC a 100ºC Tensión de Referencia: Vmax = 5V Vmin = 0V De la documentación técnica del módulo 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 tensión y tendremos un rango de tensión en la entrada del conversor A / D de 0V a 5V. Según 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 expresión resultante es la siguiente:

TaN ⋅= (1)

23,10100

1023===

TN

a (2)

TN ⋅= 23,10 23,10

NT =

b) Si el resultado de la conversión analógico – digital es 136 (88h), ¿cuál es la temperatura de la resistencia?

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

CT º29,1323,10

136==

Page 124: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

120

c) ¿Cuál es la resolución de la conversión en ºC / cuenta? Para saber la resolución se calcula la temperatura que corresponde a una cuenta.

CT º09775,023,10

1==

Precisión = 0,09775 cuentaCº

d) Indica el estado de las líneas RA4, RA5 y el valor a enviar por el puerto C para

visualizar en el dígito 1 el número 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 Conversión Analógico – Digital Para realizar la conversión analógico – digital de la salida del sensor de temperatura se han creado tres funciones: La primera de ellas (INI_ADC) se encarga de inicializar el módulo de conversor analógico – digital del microcontrolador, configurándolo de manera que la entrada analógica sea AN0, todas las demás líneas del puerto A sean digitales, las tensiones de referencia son Vdd y Vss y la frecuencia de muestreo es FOSC/32, es decir, 125kHz. La segunda función (INI_INTERRUP) configura las interrupciones del microcontrolador para que éste sea interrumpido cuando el módulo ADC finalice la conversión.

Page 125: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

121

Finalmente, la tercera función (AD_INTERRUPT) es la rutina de atención a la interrupción provocada por el módulo ADC. En ella se guarda en memoria el resultado de la conversión. 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 Código 8. Inicialización del módulo ADC del microcontrolador. INI_INTERRUP: MOVLW B'01000000' MOVWF INTCON ;Habilita Interrupciones Generales BANK1 MOVLW B'01000000' MOVWF PIE1 ;Habilita Interrupción del conversor A/D BANK0 BCF PIR1,6 ;Limpia el Flag RETURN

Código 9. Inicialización 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 interrupción 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 conversión. BCF PIR1,6 ;Interrupción servida INT_ON ;Habilita interrupciones RETFIE Código 10. Rutina de atención a la interrupción del módulo ADC.

Page 126: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

122

La siguiente función (DEC_ADRES) se encarga de procesar el resultado de la conversión y calcular el valor de la temperatura real. El resultado se guarda en memoria. Para realizar el cálculo de la temperatura, esta función divide el resultado de la conversión 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

Código 11. Cálculo de la temperatura real de la resistencia.

Page 127: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

123

3.3 Visualización en el Display de 7 Segmentos Para poder visualizar el resultado de la conversión analógico – digital en el visualizador de siete segmentos se han creado las siguientes funciones:

- BIN_TO_BCD: Convierte un valor binario a código BCD. Esta función da como resultado tres dígitos que se guardan cada uno en una posición de memoria.

- BCD_TO_7SEG: Convierte cada dígito BCD de la función anterior en dígitos

que se pueden visualizar en el display de siete segmentos. La conversión se realiza mediante una tabla.

- DISPLAY: Visualiza el valor de la temperatura de la resistencia en el display de

siete segmentos. El dígito de la derecha lo utiliza como decimal.

- DELAY: Función de propósito 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 décimos RETURN

Código 12. Función que convierte binario a BCD.

Page 128: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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 dígito 1 MOVF DIG2_BCD,W CALL Tabla_7seg MOVWF DIGIT2 RETURN Código 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 Código 14. Tabla de conversión. DISPLAY: BCF PORTA,4 BCF PORTA,5 ;Selecciona el dígito 0 MOVF DIGIT0,W MOVWF PORTC ;Visualiza en el dígito CALL DELAY ;Espera BSF PORTA,5 ;Selecciona el dígito 1 MOVF DIGIT1,W MOVWF PORTC ;Visualización en el dígito CALL DELAY ;Espera BCF PORTA,5 BSF PORTA,4 ;Selecciona el dígito 2 MOVF DIGIT2,W MOVWF PORTC ;Visualización en el dígito CALL DELAY ;Espera BCF PORTA,4 BCF PORTA,5 ;Selecciona el dígito 0 RETURN Código 15. Visualización en el display de la temperatura.

Page 129: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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 Código 16. Realiza una espera de 5 milisegundos. 3.4 Aplicación de Conversión A / D y Visualización en Siete Segmentos A continuación se presenta el código completo del programa que realiza la conversión analógico – digital de la temperatura de la resistencia y a visualiza en el display de siete segmentos. El código está dividido en dos archivos:

- Fichero del código principal - Fichero de implementación de las funciones utilizadas.

;Programa de medición 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 interrupción

Page 130: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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 conversión 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 Código 17. Programa principal de la aplicación. ;Programa de medición 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

Page 131: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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 temporización 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

Page 132: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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 inicialización de las interrupciones INI_INTERRUP: MOVLW B'01000000' MOVWF INTCON ;Habilita Interrupciones Generales BANK1 MOVLW B'01000000' MOVWF PIE1 ;Habilita Interrupción del conversor A/D BANK0 BCF PIR1,6 ;Limpia el Flag RETURN ;Rutina de servicio a la interrupcion provocada por la ;finalización de una conversión A/D AD_INTERRUPT: INT_OFF ;Salvamos Contexto MOVWF W_TEMP SWAPF STATUS,W MOVWF STATUS_TEMP ;Rutina de servicio a la interrupción 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

Page 133: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

129

;Restauramos el contexto SWAPF STATUS_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W AD_ON ;Inicio de una nueva conversión. BCF PIR1,6 ;Interrupción 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

Page 134: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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 décimos 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 dígito 1 MOVF DIG2_BCD,W CALL Tabla_7seg MOVWF DIGIT2 RETURN

Page 135: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 6: MÓDULO DE CONTROL DE TEMPERATURA SOLUCIÓN DE LAS PRÁCTICAS

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 dígito 0 MOVF DIGIT0,W MOVWF PORTC ;Visualiza en el dígito CALL DELAY ;Espera BSF PORTA,5 ;Selecciona el dígito 1 MOVF DIGIT1,W MOVWF PORTC ;Visualización en el dígito CALL DELAY ;Espera BCF PORTA,5 BSF PORTA,4 ;Selecciona el dígito 2 MOVF DIGIT2,W MOVWF PORTC ;Visualización en el dígito CALL DELAY ;Espera BCF PORTA,4 BCF PORTA,5 ;Selecciona el dígito 0 RETURN Código 18. Implementación de funciones.

Page 136: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 7: MÓDULO DE CONTROL DE TEMPERATURA PROGRAMA RESIDENTE EN EL MICROCONTROLADOR

132

Anexo 7: Módulo de Control de Temperatura

(Programa Residente en el Microcontrolador)

Para poder realizar las prácticas 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 capítulo Memoria Descriptiva. ;Programa de medición 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 interrupción 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

Page 137: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 7: MÓDULO 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

Código 1. Fichero TEMP.ASM. Programa principal ;Programa de medición 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

Page 138: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 7: MÓDULO 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 temporización 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

Page 139: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 7: MÓDULO 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 inicialización de las interrupciones INI_INTERRUP: MOVLW B'01000000' MOVWF INTCON ;Habilita Interrupciones Generales BANK1 MOVLW B'01000000' MOVWF PIE1 ;Habilita Interrupción del conversor A/D BANK0 BCF PIR1,6 ;Limpia el Flag RETURN ;Rutina de servicio a la interrupcion provocada por la ;finalización de una conversión A/D AD_INTERRUPT: INT_OFF ;Salvamos Contexto MOVWF W_TEMP SWAPF STATUS,W MOVWF STATUS_TEMP ;Rutina de servicio a la interrupción 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 conversión. BCF PIR1,6 ;Interrupción servida INT_ON RETFIE

Page 140: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 7: MÓDULO 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 configuración de la

;placa: 8 bits o 10 bits (5+5) GOTO ENVIA10 ;Configuración de 10 bits ENVIA8: ;Configuración 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

Page 141: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 7: MÓDULO 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

Page 142: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 7: MÓDULO DE CONTROL DE TEMPERATURA PROGRAMA RESIDENTE EN EL MICROCONTROLADOR

138

;Rutina que genera una interrupcion en la VIA produciendo un flanco ;descendente en la línea CA1 de la VIA INTERRUPCION: BCF PORTA,3 ;Desactiva la línea CA1 de la VIA BSF PORTA,3 ;Activa la línea 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 décimos 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 dígito 1

Page 143: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 7: MÓDULO 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 dígito 0 MOVF DIGIT0,W MOVWF PORTC ;Visualiza en el dígito CALL DELAY ;Espera BSF PORTA,5 ;Selecciona el dígito 1 MOVF DIGIT1,W MOVWF PORTC ;Visualización en el dígito CALL DELAY ;Espera BCF PORTA,5 BSF PORTA,4 ;Selecciona el dígito 2 MOVF DIGIT2,W MOVWF PORTC ;Visualización en el dígito CALL DELAY ;Espera BCF PORTA,4 BCF PORTA,5 ;Selecciona el dígito 0 RETURN Código 2. Fichero TEMP.INC. Implementación de funciones.

Page 144: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 8: CONTROLADOR DE TECLADO INFORMACIÓN PARA EL ALUMNO

140

Anexo 8: Práctica de Controlador de Teclado

(Información Para el Alumno)

1 Enunciado de la Práctica El objetivo de esta práctica es realizar un controlador de un teclado de ordenador, de forma que se decodifiquen los códigos de exploración de las teclas pulsadas y se visualice el carácter de dicha tecla en la pantalla del ordenador. Para realizar esta práctica, el alumno tiene que montar el circuito eléctrico que se encuentra al final de este documento. Una vez montado y verificado el circuito, tendrá que realizar la programación del controlador de teclado. 1.1 Material Necesario

- 1 CI MAX232 - 1 Conector hembra DIN 5 pins - 1 Conector hembra DB25 - 4 Condensadores electrolíticos 1uF 63V - 1 Protoboard - 1 Microinstructor TM-683 - Un teclado de ordenador con conector DIN-5 - Fuente de Alimentación +5V

2 Estudio Previo Estudia el esquema eléctrico del circuito y responde a las siguientes cuestiones:

a) ¿Cuantas líneas utiliza el teclado para enviar el código de exploración de las teclas pulsadas?

b) ¿Cuál es la función principal del circuito integrado MAX232?

c) ¿Qué nivel de tensión tendremos en la salida del MAX232 si en la entrada

tenemos un nivel TTL de 5V?

d) ¿Cuáles son los niveles de tensión que define el protocolo RS232 para las líneas de recepción y transmisión de datos?

e) ¿Cuáles son los códigos de exploración de un teclado?

Page 145: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 8: CONTROLADOR DE TECLADO INFORMACIÓN PARA EL ALUMNO

141

3 Trabajo Práctico

a) Monta el circuito de la práctica en la placa protoboard.

b) Verificación del circuito. Comprueba que para una entrada de +5V se obtiene una salida entre –5V y –15V. Comprueba también que para una entrada de 0V se obtiene una salida entre +5V y + 15V.

c) Conecta el teclado al conector DIN y conecta la línea de datos del teclado a una

entrada del analizador lógico. Alimenta el circuito y dibuja la trama de bits que aparece cuando se pulsa una tecla. Señala cuáles 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 códigos de exploración de las teclas pulsadas y visualice los caracteres en la pantalla del ordenador.

4 Información Técnica El esquema eléctrico 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 conexión 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 Señal 1 Reloj 2 Datos 3 Reset 4 Masa 5 Vcc (+5V)

Tabla 1. Señales del conector

DIN – 5

Por los contactos 1 y 2 circulan las señales de reloj y datos respectivamente. Estas dos líneas son bidireccionales de colector abierto y niveles TTL. En nuestro caso la comunicación será asíncrona por lo que la línea de reloj no se conectará.

Page 146: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 8: CONTROLADOR DE TECLADO INFORMACIÓN PARA EL ALUMNO

142

Por la línea de datos, el teclado envía los códigos de exploración de las teclas pulsadas con el siguiente formato: - Un bit de inicio - Ocho bits de datos correspondientes al código de exploración de la tecla pulsada

empezando por el bit menos significativo. - Un bit de paridad impar - Un bit de parada. La línea número tres corresponde a la señal de RESET, la cual tampoco conectaremos. Finalmente las líneas cuatro y cinco son para la conexión del nodo de referencia y alimentación, respectivamente. En segundo lugar, tenemos un conector hembra de 25 contactos tipo DB25 para la conexión del circuito de adaptación al conector del Canal A del microinstructor. El significado de cada uno de los contactos del conector se encuentra en la Tabla 2.

Pin Señal 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. Señales del conector serie DB25

De los veinticinco contactos disponibles, sólo se utilizan dos; el contacto número tres para la recepción de datos del teclado y, el contacto número siete para la conexión al nodo de referencia.

Por último, tenemos un circuito integrado tipo MAX232 cuya función es la de adaptar la señal de datos enviada por el teclado con niveles TTL, al nivel de tensión 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” Lógico +5V a +15V “0” Lógico +3V a +25V “1” Lógico -5V a -15V “1” Lógico -3V a –25V

(a) (b)

Tabla 3. Niveles lógicos RS-232, (a) para las salidas, (b) para las entradas

Page 147: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 8: CONTROLADOR DE TECLADO INFORMACIÓN PARA EL ALUMNO

143

El circuito integrado MAX232 se caracteriza por tener dos transmisores y dos receptores, se alimenta con una tensión de +5V y necesita cuatro condensadores electrolíticos de un microfaradio. 4.1. Funcionamiento del Teclado A continuación se explica el funcionamiento del teclado utilizado para la realización de este módulo. Los códigos generados por el teclado pueden variar en función de la clase de teclado. Sólo se consideran para esta práctica la utilización de las teclas de caracteres y números del teclado normal. No se ha considerado la pulsación de las teclas de función, las teclas extendidas ni las teclas del teclado numérico. Cuando se pulsa una tecla, el teclado envía un código que identifica la tecla pulsada, estos códigos se conocen con el nombre de códigos de exploración del teclado. Al soltar la tecla, el teclado envía dos códigos: el primer código, llamado código BREAK, es el 0xF0. El segundo código es el mismo código de exploración que envió al pulsar la tecla. Por ejemplo, cuando se pulsa la tecla de la letra “R”, el teclado envía el código 0x2D. Al soltar la tecla, envía los códigos 0xF0 seguido del código 0x2D. 4.1.1. Códigos de Rastreo del Teclado En la Tabla 4 se presentan los códigos de rastreo de las teclas correspondientes al teclado utilizado. Como se ha indicado anteriormente, estos códigos pueden variar según el teclado utilizado.

Código Código Código 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. Códigos de Exploración del Teclado.

Page 148: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 8: CONTROLADOR DE TECLADO INFORMACIÓN PARA EL ALUMNO

144

4.1.2 Programación 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 códigos de exploración del teclado, la programación de la DUART puede variar según el teclado, ya que la velocidad de transmisión de los datos puede ser diferente. Para que el microinstructor pueda recibir los códigos de exploración de las teclas pulsadas, el canal A de la DUART debe ser programada de la siguiente forma: - Paridad Impar - Ocho bits por carácter - Un bit de parada - Control de RxRTS = NO - Selección de RxINT por RxRDY - Modo de error por carácter - 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 recepción por Timer - Interrupciones habilitadas: RxRDYA

Page 149: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 9: CONTROLADOR DE TECLADO SOLUCIÓN DE LA PRÁCTICA

146

Anexo 9: Práctica de Controlador de Teclado

(Solución de la Práctica)

1 Enunciado de la Práctica El objetivo de esta práctica es realizar un controlador de un teclado de ordenador, de forma que se decodifiquen los códigos de exploración de las teclas pulsadas y se visualice el carácter de dicha tecla en la pantalla del ordenador. Para realizar esta práctica, el alumno tiene que montar el circuito eléctrico que se encuentra al final de este documento. Una vez montado y verificado el circuito, tendrá que realizar la programación del controlador de teclado. 1.1 Material Necesario

- 1 CI MAX232 - 1 Conector hembra DIN 5 pins - 1 Conector hembra DB25 - 4 Condensadores electrolíticos 1uF 63V - 1 Protoboard - 1 Microinstructor TM-683 - Un teclado de ordenador con conector DIN-5 - Fuente de Alimentación +5V

2 Estudio Previo Estudia el esquema eléctrico del circuito y responde a las siguientes cuestiones:

a) ¿Cuantas líneas utiliza el teclado para enviar el código de exploración de las teclas pulsadas?

El teclado utiliza una línea para enviar el código de exploración de las teclas pulsadas. Además, utiliza otra línea para enviar una onda cuadrada para sincronizar los datos enviados.

b) ¿Cuál es la función principal del circuito integrado MAX232? La función principal del circuito integrado MAX232 es la de adaptar los niveles de tensión de las señales TTL a los niveles de tensión establecidos por el protocolo RS232.

c) ¿Qué nivel de tensión tendremos en la salida del MAX232 si en la entrada tenemos un nivel TTL de 5V?

En la salida del circuito MAX232 tendremos una tensión entre –5 y -10V.

Page 150: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 9: CONTROLADOR DE TECLADO SOLUCIÓN DE LA PRÁCTICA

147

d) ¿Cuáles son los niveles de tensión que define el protocolo RS232 para las líneas de recepción y transmisión de datos?

Los niveles de tensión que define el protocolo RS232 son los siguientes:

“0” Lógico +5V a +15V “0” Lógico +3V a +25V “1” Lógico -5V a -15V “1” Lógico -3V a –25V

(a) salidas (b) entradas

e) ¿Cuáles son los códigos de exploración de un teclado? Los códigos de exploración del teclado son los siguientes:

Código Código Código 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 ,;

Page 151: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 9: CONTROLADOR DE TECLADO SOLUCIÓN DE LA PRÁCTICA

148

Trabajo Práctico

a) Monta el circuito de la práctica en la placa protoboard.

b) Verificación del circuito. Comprueba que para una entrada de +5V se obtiene una salida entre –5V y –15V. Comprueba también 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 tensión obtenidos son ligeramente inferiores a los marcados por el estándar RS232 pero son suficientes para un buen funcionamiento.

c) Conecta el teclado al conector DIN y conecta la línea de datos del teclado a una entrada del analizador lógico. Alimenta el circuito y dibuja la trama de bits que aparece cuando se pulsa una tecla. Señala cuáles 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 lógico la siguiente trama de bits, correspondientes al código de exploración de teclado número 90 (0x5A).

d) Conecta el circuito montado al conector del Canal A del microinstructor. Realiza un programa que sea capaz de leer los códigos de exploración de las teclas pulsadas y visualice los caracteres en la pantalla del ordenador.

El código de programa de la solución de la práctica es el siguiente:

Page 152: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 9: CONTROLADOR DE TECLADO SOLUCIÓN DE LA PRÁCTICA

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

Page 153: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 9: CONTROLADOR DE TECLADO SOLUCIÓN DE LA PRÁCTICA

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

Page 154: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 9: CONTROLADOR DE TECLADO SOLUCIÓN DE LA PRÁCTICA

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

Page 155: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 9: CONTROLADOR DE TECLADO SOLUCIÓN DE LA PRÁCTICA

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

Page 156: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 9: CONTROLADOR DE TECLADO SOLUCIÓN DE LA PRÁCTICA

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 .-lñp',39,' ',13,' ç',$0 TABLA_MAY DB ' ',9,' ! Q! ZSAW" CXDE$ú VFTR% NBHGY& MJU/( ;KIO=) :_LÑP? ',13,' Ç',$0 NOP END Código 1. Solución de la Práctica de Controlador de Teclado. En el código anterior se utiliza una posición 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

CARÁCTER ESC CONTROL ALT SHIFT EX

Page 157: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

ANEXO 9: CONTROLADOR DE TECLADO SOLUCIÓN DE LA PRÁCTICA

154

EX = 1: El siguiente código que se recibirá a continuación pertenece a una tecla del teclado extendido SHIFT = 1: Indica que la tecla de mayúsculas 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 CARÁCTER = 1: Indica que hay un carácter en el registro D0 que se tiene que visualizar en la pantalla del ordenador. BREAK = 1: Indica que el código que se recibirá a continuación pertenece a una tecla que se ha soltado.

Page 158: Elaboración de Módulos Didácticos Basados en …deeea.urv.cat/public/PROPOSTES/pub/pdf/219pub.pdf · ANEXO 9: Práctica Controlador de Teclado. Solución de la Práctica 146

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