Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modulos Didacticos Micros
Modulos Didacticos Micros
Microprocesadores
ndice
5
MEMORIA DESCRIPTIVA
1. Objeto del Proyecto
2. Titular
3. Antecedentes
10
10
10
11
11
11
15
15
16
16
17
18
19
22
23
25
26
27
28
28
30
31
33
33
33
34
36
36
37
37
38
PLANOS
Plano N1: Mdulo Control LCD. Esquema Elctrico
Plano N2: Mdulo Control LCD. Situacin de Componentes
Plano N3: Mdulo Control LCD. Fotolitos
Plano N4: Mdulo Control de Temperatura. Esquema Elctrico
Plano N5: Mdulo Control de Temperatura. Situacin de Componentes
Plano N6: Mdulo Control de Temperatura. Fotolito Cara Superior
Plano N7: Mdulo Control de Temperatura. Fotolito Cara Inferior
Plano N8: Controlador de Teclado. Esquema Elctrico
39
PRESUPUESTO
1. Mdulo de Control LCD
40
40
41
41
42
42
43
44
45
45
45
46
46
ANEXOS
47
48
56
73
79
87
99
132
140
146
Referencias
155
MEMORIA
DESCRIPTIVA
MEMORIA DESCRIPTIVA
MEMORIA DESCRIPTIVA
1. Objeto del Proyecto:
El presente proyecto tiene como objetivo la elaboracin de mdulos didcticos para la
realizacin de prcticas de programacin. Estos mdulos estn propuestos para
asignaturas sobre sistemas digitales con microprocesadores y microcontroladores. Como
por ejemplo, las asignaturas de Sistemas Digitales II y Sistemas Electrnicos con
Microcontroladores, del primer ciclo de Ingeniera Tcnica Industrial, especialidad en
Electrnica Industrial y, la asignatura de Sistemas Electrnicos Digitales del segundo
ciclo de la carrera de Ingeniera en Automtica y Electrnica Industrial.
Los mdulos y prcticas que se proponen en este proyecto pretenden ofrecer al alumno
la oportunidad de afianzar sus conocimientos, sobre el temario correspondiente a los
dispositivos de entrada-salida de acceso programado y control digital. Ayudar al alumno
a entender el entorno hardware y software del microprocesador MC68000. Permitir al
alumno conocer el diseo de circuitos electrnicos basados en microcontroladores y
microprocesadores, los recursos que ofrecen estos dispositivos y optimizar su uso.
Programar estructuradamente aplicaciones. Introducirle en los microcontroladores PIC y
hacerle ver los problemas de hardware y software que surgen en los sistemas digitales.
2. Titular:
El promotor de este proyecto es el Departamento de Ingeniera Elctrica, Electrnica y
Automtica (DEEEA), de la Escuela Tcnica Superior de Ingeniera de la Universidad
Rovira i Virgili con direccin: Campus Sescelades, avenida Pasos Catalans, 26. C.P.:
43007 Tarragona. Y en su nombre el seor Don Jos Lus Ramrez Falo.
3. Antecedentes:
En el segundo curso de la enseanza de Ingeniera Tcnica Industrial, Especialidad en
Electrnica Industrial, se realiza la asignatura obligatoria de Sistemas Digitales II.
Los objetivos de esta asignatura son: el anlisis y uso eficaz de sistemas basados en
microprocesadores, estudiando el entorno hardware y software del MC68000 de
Motorola. El programa de la asignatura incluye el estudio de cada una de las partes que
componen un sistema basado en microprocesadores, as como la programacin en
lenguaje ensamblador de stos.
Para ayudar al alumno a entender mejor todos los conceptos expuestos en las clases
tericas, se realizan una serie de prcticas de programacin sobre el microinstructor
TM-683 de Promax. Este dispositivo incluye un microprocesador MC68000 lo que lo
hace idneo para esta asignatura. En total se realizan dos prcticas, la primera de
carcter introductorio y la segunda con la ayuda de mdulos de aplicacin. Estos
mdulos se conectan a las diferentes puertas de entrada-salida que dispone el
microinstructor. Simulan aparatos o procesos reales que el alumno debe controlar
mediante la programacin en ensamblador. Los mdulos descritos en este proyecto
estn destinados a la realizacin de la segunda prctica de la asignatura.
MEMORIA DESCRIPTIVA
Adems, proporcionan al alumno un mejor conocimiento sobre dispositivos digitales
que, por falta de tiempo, se ven de una forma muy general en las clases tericas, como
son los dispositivos de entrada-salida de acceso programado.
Estos mdulos estn formados por nuevos elementos muy utilizados actualmente, como
las pantallas de cristal lquido y los microcontroladores PIC de MICROCHIP.
MEMORIA DESCRIPTIVA
-
C.I. LM35: es un circuito integrado sensor de temperatura con tres terminales, que
proporciona una salida lineal de tensin de 10mV/C. Es el elemento ms
econmico (4 aprox.) y ms fcil de usar. El rango de temperaturas va de 0C a
100C y tiene una precisin de aproximadamente 1C.
Para la realizacin del mdulo no se requiere que el sensor tenga un amplio rango de
temperaturas, ni tampoco demasiada precisin. Por este motivo se considera que la
opcin ms indicada es la del C.I. LM35.
Independientemente del elemento utilizado como sensor de temperatura, podemos tener
ms o menos prestaciones segn la conversin de la seal analgica a digital se haga
mediante un chip conversor o utilizando un microcontrolador con conversor A / D
incluido.
En el primer caso, el mdulo dispone de una circuitera de adaptacin de la seal
analgica para ser introducida en el conversor A / D. El resultado de la conversin se
enva al microinstructor mediante uno de los dos puertos disponibles en la VIA
(Versatile Interface Adapter, en adelante VIA). El puerto restante de la VIA se conecta a
un conversor digital - analgico cuya salida est a su vez conectada con la resistencia de
calentamiento mediante un transistor de potencia.
Por otro lado, si utilizamos un microcontrolador, las funciones del mdulo se ven muy
incrementadas. Se puede utilizar un microcontrolador de la clase PIC con conversor
analgico digital. De esta forma podemos realizar las mismas funciones que con el caso
anterior. Tambin podemos conectar uno de los puertos de entrada - salida del PIC a un
display de tres dgitos de siete segmentos, para visualizar el valor de la temperatura.
Adems, incluyendo en el mdulo un conector DB25 junto con una circuitera simple es
posible realizar la programacin del PIC en el propio mdulo, sin tener que quitar el
microcontrolador y sin utilizar grabadores adicionales.
Todo este conjunto sera de una gran utilidad didctica, no slo para la asignatura de
Sistemas Digitales - II, sino tambin, para la asignatura de Sistemas Electrnicos con
Microcontroladores y, en definitiva, para cualquier asignatura que pueda tener prcticas
sobre microcontroladores, con la particularidad aadida del tratamiento digital de
seales analgicas como el de la medicin de temperatura.
Existe una amplia gama de microcontroladores PIC que nos permiten seleccionar el ms
conveniente para nuestro proyecto. MICROCHIP dispone de cuatro familias de
microcontroladores de ocho bits: la gama enana de ocho pins (PIC12C(F)XXX), la
gama baja con instrucciones de 12 bits (PIC16C5X), la gama media con instrucciones
de
14 bits (PIC16C(F)XXX) y, la gama alta con instrucciones de 16 bits
(PIC17CXXX). De las cuatro gamas anteriores, la gama enana y la gama baja no se
adaptan a nuestras necesidades, ya que tienen menos lneas de entrada salida de las
8
MEMORIA DESCRIPTIVA
que necesitamos. Los microcontroladores de la gama alta tienen unas caractersticas
demasiado potentes e incrementaran el precio final del proyecto innecesariamente. La
gama media de microcontroladores PIC es la que mejor se ajusta a nuestras necesidades.
En esta gama disponemos de microcontroladores con conversor analgico digital, que
es la principal caracterstica que necesitamos. Se podra utilizar el PIC16F73, el cual
dispone de 22 lneas de E / S, conversor A / D de 8 bits y 5 canales, 3 temporizadores y
memoria flash; la cual es idnea para la realizacin de las prcticas puesto que se puede
grabar y borrar mediante un software adecuado muchas veces. El precio de este
microcontrolador es de 6,66 (segn catlogo de FARNELL, nmero de producto:
3529137). Tambin se puede utilizar el microcontrolador PIC16F873, que tiene las
mismas caractersticas que el anterior pero con un conversor A / D de 10 bits. Adems,
este microcontrolador es ms fcil de conseguir.
El precio de un conversor analgico - digital simple, de 8 bits se encuentra a partir de 5
(segn catlogo de RS - COMPONENTS: ADC0804LCN, RS #:411-674, precio:
5,48). Por lo tanto, se pueden aumentar considerablemente las prestaciones y
funcionalidad del mdulo incluyendo en l, un microcontrolador para realizar las tareas
del tratamiento de la seal analgica.
MEMORIA DESCRIPTIVA
quince horas de prcticas, que corresponden a siete sesiones para realizar dos prcticas,
en cuatro sesiones de prcticas el alumno no tendra el suficiente tiempo para realizarla.
10
MEMORIA DESCRIPTIVA
5.1.2 Planificacin de la Prctica
En el diagrama siguiente se puede ver la planificacin de cada una de las tareas
necesarias para la realizacin de esta prctica, considerando que el alumno dispone de
cuatro sesiones de laboratorio de dos horas por sesin.
HORAS
1 2 3 4 5 6 7 8
TAREAS
Programacin de la librera de funciones bsicas
Programacin de la aplicacin
Teniendo en cuenta que el alumno debe realizar el estudio previo de la prctica antes de
la primera sesin y, segn el diagrama anterior, se establece un reparto de horas de tal
forma que: la primera sesin de prcticas y la primera hora de la segunda, se dedican a
la programacin de la librera de funciones bsicas de manejo de la LCD. El resto de la
segunda sesin, la tercera y la cuarta se dedican a la programacin de la aplicacin.
5.1.3 Conocimientos Adquiridos
Con la realizacin de esta prctica el alumno aprender el funcionamiento de un mdulo
LCD, as como el funcionamiento de la comunicacin paralela con dispositivos de
entrada salida. Aprender a crear temporizadores y comprobar la necesidad del uso de
los tiempos de espera en el tratamiento de dispositivos lentos. Tambin aprender a
dividir un problema para llegar a su solucin con ms facilidad.
11
MEMORIA DESCRIPTIVA
La LCD del mdulo tiene 14 patillas, se alimenta con una tensin de +5V y es posible
regular el contraste de la pantalla mediante un potencimetro. De estas 14 patillas, 8 son
para el bus de datos (D0 - D7) y 3 de control, que son EN (habilitacin), RS (Selector
de registros, instruccin o datos) y R / W (Lectura / Escritura).
El esquema elctrico se encuentra en el captulo de Planos sealado con el nmero de
plano 1. En l se pueden observar cada una de las partes que forman este mdulo de
aplicacin, las cuales se describen a continuacin:
El mdulo se comunica con el conector de aplicacin del microinstructor TM-683
mediante el conector CN11 de cincuenta contactos. La relacin de los contactos del
conector CN1 con las seales de la VIA se muestran en la Tabla 1.
CN1
1,2
3,4,5,6
7,8
9,10
11,12
13,14
15,16
17,18
19,20
21,22
23,24
25,26
27,28
29,30
31,32
33,34
35,36
37,38
39,40
41,42
43 a 50
VIA
Vcc
GND
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
CA1
CA2
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
GND
NOTA IMPORTANTE: En el conector de aplicacin del microinstructor tenemos que el pin 1 es GND
mientras que en el conector CN1 del mdulo es Vcc. Lo mismo ocurre con el conector de alimentacin.
Todos los mdulos de aplicacin PROMAX tienen esta caracterstica. Por lo tanto, hay que poner especial
cuidado en no cortocircuitar estas seales. Para evitar esto se deben usar cables planos con los conectores
cruzados.
12
MEMORIA DESCRIPTIVA
El circuito integrado U2 es del tipo 74LS04. Son seis inversores que hacen la funcin de
amplificadores de corriente de las tres lneas de control de la LCD (EN, RS, R/W) ya
que las lneas de salida de la VIA del microinstructor no proporcionan la suficiente
corriente. La lnea RS se controla mediante los inversores U2A y U2B, conectados a la
lnea PA0 de la VIA. La lnea R / W se controla mediante los inversores U2C y U2D,
conectados a la lnea PA1 de la VIA. La lnea EN se controla mediante los inversores
U2E y U2F, conectados a la lnea PA2 de la VIA.
Las 14 patillas de la LCD estn disponibles en un conector de cable plano de 16 pins
designado en el esquema elctrico con el nombre de LCD1. Este conector sigue la
misma numeracin que las lneas de la LCD, su correspondencia con las lneas de sta
se muestran en la Tabla 2.
LCD
Vss
Vcc
Vo (Alimentacin Driver)
RS (Selector de Registro)
R/W (Lectura / Escritura)
EN (Habilitacin)
D0
D1
D2
D3
D4
D5
D6
D7
No utilizado
No utilizado
GND
+5V
+15V
-15V
+30V
13
MEMORIA DESCRIPTIVA
Por ltimo el mdulo dispone de 5 pulsadores de propsito general conectados al puerto
A de la VIA. Estos pulsadores disponen de un filtro paso bajo formado por una red RC
para eliminar los rebotes en el contacto.
Al pulsar el pulsador se detecta un nivel lgico "0" mientras que en reposo se detecta un
nivel lgico "1".
En la Tabla 4 se puede observar la correspondencia entre cada una de las lneas de la
VIA y las lneas de la LCD y los pulsadores.
VIA
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
D0
D1
D2
D3
D4
D5
D6
D7
RS
R/W
EN
SW1
SW2
SW3
SW4
SW5
En la Tabla 5 se puede observar la lista de todos los componentes que forman el mdulo
de aplicacin.
Cdigo
U1
U2
C1
C2
C3
C4
C5
R1
R2
R3
R4
R5
R6
Descripcin
C.I. octal bus bidireccional 3 estados 74LS245
C.I. inversores 74LS04
Condensador plaqueta 220 nF/100V
Condensador plaqueta 220 nF/100V
Condensador plaqueta 220 nF/100V
Condensador plaqueta 220 nF/100V
Condensador plaqueta 220 nF/100V
Potencimetro 10k
Resistencia 12k 5% 1/4W
Resistencia 12k 5% 1/4W
Resistencia 12k 5% 1/4W
Resistencia 12k 5% 1/4W
Resistencia 12k 5% 1/4W
14
MEMORIA DESCRIPTIVA
Cdigo
R7
R8
R9
R10
R11
SW1
SW2
SW3
SW4
SW5
CN1
LCD1
CN2
Descripcin
1/4W
1/4W
1/4W
1/4W
1/4W
Resistencia 100 5%
Resistencia 100 5%
Resistencia 100 5%
Resistencia 100 5%
Resistencia 100 5%
Pulsador para PCB
Pulsador para PCB
Pulsador para PCB
Pulsador para PCB
Pulsador para PCB
Conector macho acodado 50 pins
Conector macho recto 16 pins
Conector macho acodado 10 pins
El tipo de mdulo LCD elegido es de diecisis caracteres y dos lneas, a pesar de esto
se pueden colocar otros tipos de mdulos como los de 8x2, 12x2, 16x1, 20x1, 16x4,
20x2, 20x4, 24x2 y 40x2. En efecto, es posible conectar cualquier mdulo alfanumrico
de pantalla de cristal lquido que tenga la misma descripcin de patillaje que el mdulo
elegido.
En el captulo de Planos, adems del esquema elctrico sealado con el plano nmero 1,
se encuentran tambin los diseos del circuito impreso, situacin de componentes
(plano nmero 2) y fotolitos de la placa (plano nmero 3).
15
MEMORIA DESCRIPTIVA
La segunda de las prcticas es un poco ms compleja ya que la adquisicin del dato se
realiza con una precisin de diez bits. Adems provoca una interrupcin por cada dato
que enva al microinstructor, de forma que se obtiene un valor de conversin cada dos
interrupciones.
Para la asignatura de Sistemas Electrnicos con Microcontroladores se ha diseado una
prctica con el objetivo de procesar digitalmente seales analgicas y presentar el
resultado en un visualizador de siete segmentos.
Tambin es til este mdulo para realizar prcticas en la asignatura de Sistemas
Electrnicos Digitales, proporcionando al alumno un mejor conocimiento sobre los
temas del programa de la asignatura que tratan sobre los dispositivos microprocesadores
y microcontroladores y, en el tema de problemas y limitaciones del hardware en la
implementacin de sistemas digitales.
Todo Nada
Todo Nada con Histresis
Proporcional (P)
Proporcional Integral (PI)
Proporcional, Integral y Derivativo (PID)
16
MEMORIA DESCRIPTIVA
Una vez elegido el control y argumentada su eleccin, deber programarlo para hacer
que el valor de la temperatura medida siga a un valor de consigna dado.
En el diagrama siguiente se puede ver la planificacin de cada una de las tareas
necesarias para la realizacin de esta prctica, considerando que el alumno dispone de
cuatro sesiones de laboratorio de dos horas por sesin.
HORAS
1 2 3 4 5 6 7 8
TAREAS
Adquisicin y procesado de la seal
Programacin del control digital
Teniendo en cuenta que el alumno debe realizar el estudio previo de la prctica antes de
la primera sesin y, segn el diagrama anterior, se establece un reparto de horas de tal
forma que: las dos primeras sesiones de prcticas se dedican a la programacin del
microinstructor para adquirir y procesar el resultado de la conversin analgico-digital.
Las dos siguientes sesiones se dedican a la programacin del control digital.
Todo Nada
Todo Nada con Histresis
Proporcional (P)
Proporcional Integral (PI)
Proporcional, Integral y Derivativo (PID)
17
MEMORIA DESCRIPTIVA
Una vez elegido segn su criterio uno de los controles, argumentando la eleccin,
deber programarlo para que el valor de la temperatura medida siga a un valor de
consigna dado.
En el diagrama siguiente se puede ver la planificacin de cada una de las tareas
necesarias para la realizacin de esta prctica, considerando que el alumno dispone de
cuatro sesiones de laboratorio de dos horas por sesin.
HORAS
1 2 3 4 5 6 7 8
TAREAS
Adquisicin y procesado de la seal
Programacin del control digital
Teniendo en cuenta que el alumno debe realizar el estudio previo de la prctica antes de
la primera sesin y, segn el diagrama anterior, se establece un reparto de horas de tal
forma que: las dos primeras sesiones de prcticas se dedican a la programacin del
microinstructor para adquirir y procesar el resultado de la conversin analgico-digital.
Las dos siguientes sesiones se dedican a la programacin del control digital.
MEMORIA DESCRIPTIVA
TAREAS
HORAS
1 2 3 4 5 6 7 8
Este mdulo est formado por un elemento sensor de temperatura cuya salida est
acondicionada por un circuito analgico. Posteriormente la salida acondicionada se
muestrea mediante el conversor analgico digital disponible en el microcontrolador
PIC16F873. La seal muestreada se trata mediante un programa que se ejecuta en el
microcontrolador. Mediante uno de los puertos de sus entrada salidas se enva el
valor de la conversin al puerto A de la VIA, para su tratamiento en el programa de
control que se ejecuta en el microinstructor TM-683. Mediante otro puerto del
microcontrolador se visualiza la temperatura medida en un visualizador de siete
segmentos formado por tres mdulos de ctodo comn.
El programa de control genera un valor digital que es convertido, mediante un conversor
digitalanalgico, a una seal analgica. Esta seal es la encargada de excitar un
transistor de potencia, que regula la corriente que pasa por la resistencia de
calentamiento. Y, por consiguiente, controla la potencia disipada por la resistencia cuya
temperatura queremos controlar.
El mdulo dispone de un circuito de programacin en serie del PIC16F873 mediante un
conector de 25 pins conectado al puerto paralelo de un PC.
El esquema elctrico del mdulo de control de temperatura se encuentra en el captulo
de Planos sealado con el nmero 4.
En la Figura 2 se puede ver el diagrama de bloques del mdulo de control de
temperatura.
19
MEMORIA DESCRIPTIVA
En la Tabla 6 se muestra una lista de todos los componentes utilizados para el montaje
del mdulo de control de temperatura.
Cdigo
CN1
CN2
CN3
C1
C2
C3
C4
C5
C6
C7
C8
C9
DIG2
DIG1
DIG0
D1
D2
D3
D4
D5
D6
IC1
IC2
Descripcin
Conector macho 10 pins recto cable plano
Conector DB25 macho acodado
Conector macho 50 pins recto cable plano
Condensador 330 pF
Condensador electroltico 470uF
Condensador electroltico 10uF
Condensador electroltico 10uF
Condensador 27pF
Condensador 27pF
Condensador 0.01uF
Condensador 0.1uF
Condensador 0.1uF
Dgito LED de 7 segmentos de ctodo comn
Dgito LED de 7 segmentos de ctodo comn
Dgito LED de 7 segmentos de ctodo comn
Diodo 1N4004
Diodo 1N4004
Diodo 1N4004
Diodo LED 3mm rojo
Diodo LED 3mm rojo
Diodo LED 3mm verde
Sensor de Temperatura LM35DZ
Amplificador Operacional OP07
20
MEMORIA DESCRIPTIVA
Cdigo
IC3
IC4
IC5
IC6
IC7
IC8
IC9
IC10
IC11
J1
Q1
Q2
Q3
Q4
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13
R14
R15
R16
R17
R18
R19
R20
R21
SW1
SW2
Y1
Descripcin
Amplificador Operacional OP07
Amplificador Operacional OP07
Regulador de Tensin L7812
Regulador de Tensin L7810
CI 74LS06
Microcontrolador PIC16F873
CI 74LS139
Conversor Digital Analgico DAC08C
Amplificador Operacional OP07
Puente de configuracin
Transistor PNP BC557
Transistor PNP BC557
Transistor PNP BC557
Transistor NPN BD139
Resistor 39k 1% W
Resistor 10k 1% W
Resistor 10k 5% W
Resistor 10k 5% W
Resistor 4k7 5% W
Resistor 4k7 5% W
Resistor 4k7 5% W
Resistor 4k7 5% W
Resistor 4k7 5% W
Resistor 4k7 5% W
Resistor 1k 5% W
Resistor 680 5% W
Resistor 10k 5% W
Resistor 10k 5% W
Resistor 5k 5% W
Resistor 5k 5% W
Resistor 5k 5% W
Resistor 100 5% W
Resistor de potencia 10 15 W
Red de 8 resistencias individuales en encapsulado DIL de
270
Resistor 10k 5% W
Pulsador cuadrado para circuito impreso
7 Microinterruptores de configuracin
Cristal de cuarzo de 4MHz
Tabla 6. Componentes del Mdulo de Control de Temperatura
21
MEMORIA DESCRIPTIVA
5.2.3.1. Medicin de Temperatura:
El elemento sensor de temperatura IC1, es un circuito integrado tipo LM35, el cual
dispone de tres terminales y proporciona una salida lineal de tensin de 10mV/C. El
rango de temperatura es de 0C a 100C, aproximadamente. Las c aractersticas tcnicas
de este circuito se pueden ver en la Tabla 7:
Factor de escala lineal
Precisin a 25C
Alimentacin
No linealidad
Impedancia de salida baja
+10mV/C
0.5C
4 a 30V
C
0.1 para una carga de 1mA.
22
MEMORIA DESCRIPTIVA
5.2.3.2. Conversin Analgico Digital:
El microcontrolador utilizado en el mdulo, dispone de un conversor analgico-digital
con una resolucin de 10 bits. Este mdulo se ha diseado para medir temperaturas
dentro de un rango de 0 a 100 C. Tal y como se vio en el apartado anterior, el sensor
de temperatura proporciona una salida lineal de tensin de 10mV/C que es
proporcional a la temperatura a la que est sometido. Estos datos se representan en el
Grfico 1, que relaciona la tensin de salida del sensor con la temperatura.
23
MEMORIA DESCRIPTIVA
24
MEMORIA DESCRIPTIVA
Como se ha indicado previamente, la conversin analgico digital de la seal se hace
mediante el microcontrolador IC8 del tipo PIC16F873 fabricado por MICROCHIP, el
cual dispone de un conversor analgico digital (ADC) de 10 bits y cinco canales. Este
microcontrolador dispone, adems, de 22 lneas de entrada salida capaces de entregar
una corriente mxima de 25mA por lnea, 7168 bytes de memoria FLASH, 192 bytes de
memoria RAM, 128 bytes de memoria EEPROM, dos mdulos de modulacin de
anchura de pulsos (PWM) con una precisin de 10 bits, un temporizador de 16 bits, dos
temporizadores de 8 bits, un temporizador de perro guardin (WDT), mdulo universal
de transmisin / recepcin sncrona / asncrona de datos va serie (USART), bus IC
(Inter-Integrated Circuit Bus), interfase serie de perifricos (SPI), todo ello en un
encapsulado de 28 pins tipo SP (Lead Skinny PDIP).
El microcontrolador funciona con una seal de reloj de 4MHz procedente del cristal de
cuarzo Y1.
5.2.3.3. Visualizador de 7 Segmentos:
La visualizacin de la temperatura se realiza mediante tres mdulos de siete segmentos
LED de ctodo comn tipo ELS-511IDB de color rojo y frontal negro. Los segmentos
tienen una altura de 7.62mm y estn dispuestos en encapsulados de 10 pines. Estos
displays estn diseados para dar un ptimo contraste entre encendido / apagado. La
versin de ctodo comn dispone de un punto decimal. Las caractersticas tcnicas de
estos mdulos se pueden observar en la Tabla 8:
Tensin directa nominal
Corriente directa
Nominal
1.6V
10mA
Mxima
30mA
2.5mcd
6V
ngulo de visin
75
60mW
Temperatura de funcionamiento
De 40C a +85C
Cada uno de los segmentos del display est conectado a una lnea del puerto C del
microcontrolador mediante resistencia limitadoras de corriente. La relacin entre los
segmentos del display y las lneas del puerto C del microcontrolador se encuentra en la
Tabla 9:
SEGMENTO
PUERTO C
A
RC6
B
RC5
C
RC4
D
RC3
E
RC2
F
RC1
G
RC0
Punto decimal
RC7
Tabla 9. Relacin entre los segmentos y sus lneas de datos
25
MEMORIA DESCRIPTIVA
Como se ha indicado antes, los dgitos del display son de ctodo comn. El ctodo de
cada dgito est conectado a una salida del decodificador IC9 del tipo 74LS139. El
circuito IC9 es un decodificador 2 a 4 cuyas entradas son las lneas RA4 y RA5 del PIC.
En la Tabla 10 se detallan los estados de cada una estas seales para activar los digitos.
RA4 RA5 DIGITO
0
0
DIG0
0
1
DIG1
1
0
DIG2
1
1 No utilizado
Tabla 10. Seleccin de los dgitos de 7 segmentos
8 bits
Paralelo
1s
18V (mx)
1%
2
El conversor DAC est polarizado con una corriente de 2mA, resultado de aplicar una
tensin de 10 voltios, procedente de un regulador lineal de tensin IC6 tipo 7810, a una
resistencia de polarizacin de 5k. La salida analgica del conversor se introduce en
IC11 que es un amplificador operacional tipo OP07 realimentado con una resistencia de
5k, para producir una tensin de salida entre 0V y 10V.
26
MEMORIA DESCRIPTIVA
5.2.3.5. Conexin con el Microinstructor TM-683:
En el microinstructor TM-683 estn disponibles dos conectores de aplicacin
(Aplicacin 1 y Aplicacin 2) con dos puertos de 8 bits cada uno (puerto A y puerto B).
En el microcontrolador disponemos de tres puertos de entrada-salida. De estos tres
puertos, slo dos de ellos (puerto B y puerto C) disponen de ocho lneas de datos. El
puerto A del microcontrolador slo dispone de cinco lneas de datos.
El microinstructor TM-683 se conecta al mdulo de aplicacin mediante el conector de
aplicacin CN3. En este conector estn disponibles las seales de la VIA. El puerto A
(PA0 PA7) de la VIA est conectado al puerto B (RB0 RB7) del microcontrolador;
mientras que el puerto B (PB0 PB7) de la VIA est conectado a las entradas digitales
del conversor DAC. Por el puerto A de la VIA, el microcontrolador enva al
microinstructor el valor de la conversin analgico digital de la temperatura.
La seal RA1 del microcontrolador est conectado a un interruptor de configuracin. Si
el estado lgico del interruptor es 1, el microcontrolador enva al microinstructor un
valor de 8 bits correspondientes a los ocho bits ms significativos de la conversin.
Cuando el estado lgico del interruptor es 0, el microcontrolador enva los 10 bits de
la conversin multiplexados en tiempo con el siguiente formato:
MSB
0
X
X
Byte Bajo
LSB
X
MSB
1
X
X
Byte Alto
LSB
X
27
MEMORIA DESCRIPTIVA
En el Grfico 4 se representa la variacin de las lneas de datos y control (CA1 y CA2)
cuando el microcontrolador enva un dato a la VIA del microinstructor.
MEMORIA DESCRIPTIVA
debemos disponer de algunas lneas de control para conmutar las diversas
alimentaciones del microcontrolador en el curso de la programacin.
Las seales del puerto paralelo son seales TTL bastante deterioradas por el cable de
conexin. Por este motivo se restauran por medio de los inversores contenidos en el
circuito IC7 tipo 74LS06. Este circuito dispone de salidas de colector abierto, lo cual
permite controlar fcilmente los transistores Q1, Q2 y Q3. Q2 y Q3 permiten aplicar la
tensin alta de programacin VPP a las patillas adecuadas. El transistor Q1 gobierna la
tensin normal de alimentacin VDD y permite no alimentar el circuito a programar
ms que cuando es verdaderamente necesario acceder a l.
Para indicar la aplicacin o no de estas tensiones, se utilizan dos LED rojos, D4 y D5,
gobernados por las dos tensiones VPP. En cuanto al diodo D6, se enciende simplemente
cuando el programador est bajo tensin, con el fin de sealar el buen funcionamiento
de la alimentacin.
Los datos a programar en el circuito transitan por la puerta IC7a, pasando por IC7b en
caso de una segunda lectura del circuito. En cuanto al reloj de programacin pasa por
IC7c.
El programador se alimenta mediante la fuente de alimentacin MM-600, comn a
todos los mdulos de aplicacin del microinstructor TM-683. La salida de +15V pasa a
travs del regulador lineal de tensin IC5 tipo 7812, el cual tiene en su patilla comn
tres diodos (D1, D2, D3, tipo 1N4004) conectados en serie que elevan la tensin de
salida a 13.8V.
El programador dispone tambin de 5 microinterruptores disponibles en SW2 cuya
funcin es la de dejar las seales del programador en circuito abierto en caso de que no
se tenga que programar y se est en fase de ejecucin.
29
MEMORIA DESCRIPTIVA
30
MEMORIA DESCRIPTIVA
encuentra conectado el mdulo. Una vez hecho esto ir al men Settings y situarse en
Hardware.
Para que el programador funcione se debe configurar de la siguiente forma:
OutData D0 Neg
Clock
D1 Neg
Vdd
D2
Vpp
D3
Vpp1
D4
Data In ACK Neg
A continuacin ir al men Settings y situarse en Device. Aparece una pantalla en la que
debemos escribir el nmero 9 (PIC16F873) y pulsar ENTER.
Entonces se debe elegir el fichero con extensin .HEX a programar en el men FILE>Open Program. Para programar el microcontrolador basta con pulsar la tecla F4.
31
MEMORIA DESCRIPTIVA
La primera de ellas (DEC_ADRES) se encarga de decodificar el resultado de la
conversin analgico digital. Para ello divide el valor de la conversin por diez. Esto
es as porque el margen de temperaturas que queremos medir es de 0C a 100C. Para
este margen, el sensor de temperatura proporciona una salida de entre 0V y 1V.
Como el amplificador conectado a la salida del sensor tiene ganancia 5, en la entrada
analgica del microcontrolador tendremos un margen de 0V a 5V para un margen de
temperaturas de 0C a 100C.
La precisin del conversor analgico digital del microcontrolador PIC16F873 es de
diez bits, por lo tanto, tenemos 1024 posibles estados. Si programamos el
microcontrolador para que el conversor analgico digital tenga un margen de tensin
de referencia entre 0V y 5V, obtendremos una precisin en la conversin analgico
digital de:
100 C
= 0.097656 C
0.1 C
estado
estado
1024 estados
(1)
ADRES
10
(2)
32
MEMORIA DESCRIPTIVA
En el captulo de Planos, se encuentra, adems del esquema elctrico del mdulo, un
plano con la situacin de los componentes en el circuito impreso (Plano N 5) y los
planos con los fotolitos del circuito impreso de las caras superior e inferior (Planos N 6
y N 7, respectivamente).
TAREAS
Montaje y Verificacin del Circuito
Programacin del Controlador de Teclado
33
MEMORIA DESCRIPTIVA
Teniendo en cuenta que el alumno debe realizar el estudio previo de la prctica antes de
la primera sesin y, segn el diagrama anterior, se establece un reparto de horas de tal
forma que: la primera sesin de prcticas se dedica al montaje del circuito y a su
posterior verificacin. El resto de las sesiones se dedican a la programacin del
controlador del teclado.
En la Tabla 12 se explican las funciones de cada uno de los contactos del conector DIN
de cinco contactos.
Pin
Seal
1
Reloj
2
Datos
3
Reset
4
Masa
5 Vcc (+5V)
Tabla 12. Seales del conector
DIN 5
Por los contactos 1 y 2 circulan las seales de reloj y datos respectivamente. Estas dos
lneas son bidireccionales de colector abierto y niveles TTL. En nuestro caso la
comunicacin ser asncrona por lo que la lnea de reloj no se conectar.
Por la lnea de datos, el teclado enva los cdigos de exploracin de las teclas pulsadas
con el siguiente formato:
-
Un bit de inicio
Ocho bits de datos correspondientes al cdigo de exploracin de la tecla pulsada
empezando por el bit menos significativo.
Un bit de paridad impar
Un bit de parada.
MEMORIA DESCRIPTIVA
De los veinticinco contactos disponibles, slo se utilizan dos; el contacto nmero tres
para la recepcin de datos del teclado y, el contacto nmero siete para la conexin al
nodo de referencia.
Por ltimo, tenemos un circuito integrado tipo MAX232 cuya funcin es la de adaptar la
seal de datos enviada por el teclado con niveles TTL, al nivel de tensin que define el
protocolo RS-232, que es el usado por el micoinstructor para comunicaciones serie. Este
protocolo define los niveles de tensiones descritos en la Tabla 14.
0 Lgico
1 Lgico
+3V a +25V
-3V a 25V
(b)
Tabla 14. Niveles lgicos RS-232, (a) para las salidas, (b) para las entradas
35
MEMORIA DESCRIPTIVA
5.3.3.1. Funcionamiento del Teclado
A continuacin se explica el funcionamiento del teclado utilizado para la realizacin de
este mdulo. Los cdigos generados por el teclado pueden variar en funcin de la clase
de teclado. Slo se consideran para esta prctica la utilizacin de las teclas de caracteres
y nmeros del teclado normal. No se ha considerado la pulsacin de las teclas de
funcin, las teclas extendidas ni las teclas del teclado numrico.
Cuando se pulsa una tecla, el teclado enva un cdigo que identifica la tecla pulsada,
estos cdigos se conocen con el nombre de cdigos de exploracin del teclado. Al soltar
la tecla, el teclado enva dos cdigos: el primer cdigo, llamado cdigo BREAK, es el
0xF0. El segundo cdigo es el mismo cdigo de exploracin que envi al pulsar la tecla.
Por ejemplo, cuando se pulsa la tecla de la letra R, el teclado enva el cdigo 0x2D.
Al soltar la tecla, enva los cdigos 0xF0 seguido del cdigo 0x2D.
5.3.3.1.1. Cdigos de Rastreo del Teclado
En la Tabla 15 se presentan los cdigos de rastreo de las teclas correspondientes al
teclado utilizado. Como se ha indicado anteriormente, estos cdigos pueden variar
segn el teclado utilizado.
Cdigo
Tecla
Hex. Dec.
0D
13
TAB
15
21
Q
16
22
1
1A
26
Z
1B
27
S
1C
28
A
1D
29
W
1E
30
2
21
33
C
22
34
X
23
35
D
24
36
E
25
37
4
26
38
3
29
41 ESPACIO
2A
42
V
Cdigo
Hex. Dec.
2B
43
2C
44
2D
45
2E
46
31
49
32
50
33
51
34
52
35
53
36
54
3
58
3B
59
3C
60
3D
61
3E
62
41
65
Tecla
F
T
R
5
N
B
H
G
Y
6
M
J
U
7
8
,;
36
Cdigo
Tecla
Hex. Dec.
42
66
K
43
67
I
44
68
O
45
69
0
46
70
9
49
73
.:
4A
74
-_
4B
75
L
4C
76
4D
77
P
4E
78
?
5A
90
INTRO
5D
93
76
118 ESCAPE
MEMORIA DESCRIPTIVA
5.3.3.2 Programacin de la DUART
En este apartado se explica como debe ser programado el chip de comunicaciones serie
que lleva incorporado el microinstructor, DUART (Dual Universal Asynchronous
Receiver Transmitter). De la misma forma que se indic en el apartado anterior respecto
de los cdigos de exploracin del teclado, la programacin de la DUART puede variar
segn el teclado, ya que la velocidad de transmisin de los datos puede ser diferente.
Para que el microinstructor pueda recibir los cdigos de exploracin de las teclas
pulsadas, el canal A de la DUART debe ser programado de la siguiente forma:
-
Paridad Impar
Ocho bits por carcter
Un bit de parada
Control de RxRTS = NO
Seleccin de RxINT por RxRDY
Modo de error por carcter
Modo de canal normal
Control de RxRTS = NO
Control de Tx por CTS = NO
Modo y reloj del Timer = TIMER (X1/CLK)
Interrupciones generadas por cambio en IP3, IP2, IP1, IP0 = NO
Valor de inicio del Timer = 0x0009
Velocidad de recepcin por Timer
Interrupciones habilitadas: RxRDYA
37
PLANOS
PRESUPUESTO
PRESUPUESTO
PRESUPUESTO
1 Mdulo Control LCD
1.1 Cuadro de Precios
N
Descripcin
Precio
1 Display, LCD, inteligente, alfanumrico, 14,60 Catorce euros con sesenta
matriz de puntos, PowerTip 16x2 TN
cntimos
2 Placa de circuito impreso, fibra de vidrio
3,00 Tres euros
3 Conector macho recto 50 pins
0,76 Setenta y seis cntimos de
euro
4 Conector macho recto 10 pins
0,20 Veinte cntimos de euro
5 Conector macho recto 16 pins
0,35 Treinta y cinco cntimos
de euro
6 Circuito integrado SN 74HC245
0,31 Treinta y un cntimos de
euro
7 Circuito integrado 74HC04N
0,36 Treinta y seis cntimos de
euro
8 Zcalo para circuito integrado 14 pins
0,08 Ocho cntimos de euro
9 Zcalo para circuito integrado 20 pins
0,14 Catorce cntimos de euro
10 Pulsador para PCB plstico cuadrado
0,47 Cuarenta y siete cntimos
de euro
11 Condensador de polister 220nF 100V
0,22 Veintids cntimos de
euro
12 Resistencia de carbn 1/4W 5%
0,02 Dos cntimos de euro
13 Conector hembra cable plano 16 pins
0,37 Treinta y siete cntimos de
euro
14 Patas de soporte de circuito impreso, latn,
0,15 Quince cntimos de euro
roscado con tornillo prisionero
15 Potencimetro de 1 vuelta vertical 10k
0,27 Veintisiete cntimos de
euro
16 Mano de obra diseo
15,02/h Quince euros con 2
cntimos de euro la hora
17 Mano de obra fabricacin y montaje
12,00/h Doce euros la hora
40
PRESUPUESTO
N
Descripcin
Cantidad Precio
Total
1 Display, LCD, inteligente, alfanumrico, matriz de
1
14,60 14,60
puntos, PowerTip 16x2 TN
2 Placa de circuito impreso, fibra de vidrio
1
3,00
3,00
3 Conector macho recto 50 pins
1
0,76
0,76
4 Conector macho recto 10 pins
1
0,20
0,20
5 Conector macho recto 16 pins
2
0,35
0,70
6 Circuito integrado SN 74HC245
1
0,31
0,31
7 Circuito integrado 74HC04N
1
0,36
0,36
8 Zcalo para circuito integrado 14 pins
1
0,08
0,08
9 Zcalo para circuito integrado 20 pins
1
0,14
0,14
10 Pulsador para PCB plstico cuadrado
5
0,47
2,35
11 Condensador de polister 220nF 100V
5
0,22
1,10
12 Resistencia de carbn 1/4W 5%
10
0,02
0,20
13 Conector hembra cable plano 16 pins
2
0,37
0,74
14 Patas de soporte de circuito impreso, latn, roscado
4
0,15
0,60
con tornillo prisionero
15 Potencimetro de 1 vuelta vertical 10k
1
0,27
0,27
16 Mano de obra diseo
48 h 15,02/h 720,96
17 Mano de obra fabricacin y montaje
4 h 12,00/h 48,00
TOTAL: 794,37
41
PRESUPUESTO
N
Descripcin
1 Conector macho recto 50 pins
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Precio
0,76 Setenta y seis cntimos de
euro
Conector macho recto 10 pins
0,20 Veinte cntimos de euro
Conector macho DB25 acodado
2,00 Dos euros
Condensador de disco 330pF 500V
0,11 Once cntimos de euro
0,61 Sesenta y un cntimos de euro
Condensador electroltico radial 470F
63V
0,14 Catorce cntimos de euro
Condensador electroltico radial 10F
35V
Condensador de disco 27pF 500V
0,14 Catorce cntimos de euro
0,08 Ocho cntimos de euro
Condensador MKT 0,01F 100V
0,13 Trece cntimos de euro
Condensador MKT 0,1F 100V
Dgito LED 0,5 7 segmentos con punto
1,05 Un euro con cinco cntimos
decimal, ctodo comn
de euro
Diodo 1N4004
0,02 Dos cntimos de euro
Diodo LED rojo 3mm
0,06 Seis cntimos de euro
Diodo LED verde 3mm
0,08 Ocho cntimos de euro
Circuito Integrado sensor de temperatura
3,86 Tres euros con ochenta y seis
LM35DZ
cntimos de euro
Circuito Integrado OP07C
0,61 Sesenta y un cntimos de euro
Circuito Integrado L7812CV
0,27 Veintisiete cntimos de euro
Circuito Integrado L7810CV
0,47 Cuarenta y siete cntimos de
euro
Circuito Integrado 74LS06
0,39 Treinta y nueve cntimos de
euro
Circuito Integrado PIC16F873-04/SP
7,33 Siete euros con treinta y tres
cntimos de euro
Circuito Integrado 74LS139
0,30 Treinta cntimos de euro
Circuito Integrado DAC08C
2,31 Dos euros con treinta y un
cntimos de euro
Puente de configuracin
0,01 Un cntimo de euro
Transistor PNP BC557
0,06 Seis cntimos de euro
Transistor NPN BD139
0,20 Veinte cntimos de euro
Resistencia de pelcula metlica 1/4W
0,08 Ocho cntimos de euro
1%
Resistencia de pelcula de carbn 1/4W
0,02 Dos cntimos de euro
5%
Resistencia bobinada axial BC 15W dh
0,80 Ochenta cntimos de euro
10R
Red de ocho resistencias individuales en
0,90 Noventa cntimos de euro
encapsulado DIL
Pulsador para PCB plstico cuadrado
0,47 Cuarenta y siete cntimos de
euro
42
PRESUPUESTO
N
Descripcin
30 Conmutador SWITCH 7 contactos
31 Cristal de cuarzo FY 4.0000MHz
32
33
34
35
36
37
Precio
1,17 Un euro con diecisiete
cntimos de euro
0,47 Cuarenta y siete cntimos de
euro
0,04 Cuatro cntimos de euro
0,08 Ocho cntimos de euro
0,10 Diez cntimos de euro
0,27 Veintisiete cntimos de euro
3,00 Tres euros
15,02/h Quince euros con 2 cntimos
de euro la hora
12,00/h Doce euros la hora
N
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Descripcin
Cantidad
Conector macho recto 50 pins
1
Conector macho recto 10 pins
1
Conector macho DB25 acodado
1
Condensador de disco 330pF 500V
1
1
Condensador electroltico radial 470F 63V
2
Condensador electroltico radial 10F 35V
Condensador de disco 27pF 500V
2
1
Condensador MKT 0,01F 100V
2
Condensador MKT 0,1F 100V
Dgito LED 0,5 7 segmentos con punto decimal,
3
ctodo comn
Diodo 1N4004
3
Diodo LED rojo 3mm
2
Diodo LED verde 3mm
1
Circuito Integrado sensor de temperatura
1
LM35DZ
Circuito Integrado OP07C
4
Circuito Integrado L7812CV
1
Circuito Integrado L7810CV
1
Circuito Integrado 74LS06
1
Circuito Integrado PIC16F873-04/SP
1
Circuito Integrado 74LS139
1
Circuito Integrado DAC08C
1
Puente de configuracin
1
Transistor PNP BC557
3
Transistor NPN BD139
1
Resistencia de pelcula metlica 1/4W 1%
2
Resistencia de pelcula de carbn 1/4W 5%
17
Resistencia bobinada axial BC 15W dh 10R
1
43
Precio
0,76
0,20
2,00
0,11
0,61
0,14
0,14
0,08
0,13
1,05
Total
0,76
0,20
2,00
0,11
0,61
0,28
0,28
0,08
0,26
3,15
0,02
0,06
0,08
3,86
0,06
0,12
0,08
3,86
0,61
0,27
0,47
0,39
7,33
0,30
2,31
0,01
0,06
0,20
0,08
0,02
0,80
2,44
0,27
0,47
0,39
7,33
0,30
2,31
0,01
0,18
0,20
0,16
0,34
0,80
PRESUPUESTO
N
Descripcin
28 Red de ocho resistencias individuales
encapsulado DIL
29 Pulsador para PCB plstico cuadrado
30 Conmutador SWITCH 7 contactos
31 Cristal de cuarzo FY 4.0000MHz
32 Zcalo de circuito integrado 8 pins
33 Zcalo de circuito integrado 14 pins
34 Zcalo de circuito integrado 16 pins
35 Zcalo de circuito integrado 28 pins
36 Placa de circuito impreso fibra de vidrio
37 Mano de obra diseo
38 Mano de obra fabricacin y montaje
Cantidad
en
1
Precio
0,90
Total
0,90
1
0,47
0,47
1
1,17
1,17
1
0,47
0,47
4
0,04
0,16
1
0,08
0,08
2
0,10
0,20
1
0,27
0,27
1
3,00
3,00
150 h 15,02/h 2253,00
10 h 12,00/h 120,00
TOTAL: 2406,77
44
PRESUPUESTO
N
Descripcin
Precio
1 Placa de montaje de circuitos por 12,00 Doce euros
insercin (protoboard)
2 Conector hembra DB25 areo
1,50 Un euro con cincuenta cntimos
de euro
3 Conector DIN 5 contactos hembra
0,91 Noventa y un cntimos de euro
chasis
4 Condensador electroltico radial 1uF
0,05 Cinco cntimos de euro
63V
5 Circuito Integrado MAX232
1,70 Un euro con setenta cntimos de
euro
6 Mano de obra diseo
15,02/h Quince euros con dos cntimos
de euro la hora
3.2 Aplicacin de Precios
Descripcin
Cantidad Precio
Total
N
1 Placa de montaje de circuitos por insercin
1
12,00 12,00
(protoboard)
2 Conector hembra DB25 areo
1
1,50
1,50
3 Conector DIN 5 contactos hembra chasis
1
0,91
0,91
4 Condensador electroltico radial 1uF 63V
4
0,05
0,20
5 Circuito Integrado MAX232
1
1,70
1,70
6 Mano de obra diseo
30 h 15,02/h 450,60
TOTAL: 466,91
45
PRESUPUESTO
3.3 Resumen del Presupuesto
El presupuesto de ejecucin material del mdulo del controlador de teclado asciende a
la cantidad de CUATROCIENTOS SESENTA Y SEIS EUROS con NOVENTA Y UN
CNTIMOS.
Presupuesto de Ejecucin Material
466,91
Gastos Generales (13%)
60,70
Presupuesto de Ejecucin por Contrato 527,61
I.V.A. (16%)
84,42
TOTAL: 612,03
El presupuesto final del mdulo del controlador de teclado asciende a la cantidad de
SEISCIENTOS DOCE EUROS con TRES CNTIMOS.
Los precios de este presupuesto estn calculados para el montaje de una unidad.
46
ANEXOS
Anexo 1:
Mdulo Control LCD
(Informacin para el alumno)
1 Enunciado de la Prctica:
El objetivo de la prctica es controlar un display LCD de cristal lquido y visualizar
mensajes en l, para ello se propone simular el marcador de un estadio de ftbol, tal y
como se muestra en la Figura 1 :
M a n c h e s t e r
0 0
L i v e r p o o l
0 0
Para conseguir este propsito vamos a dividir la prctica en tres partes. La primera
consiste en realizar un estudio previo estudiando las hojas de caractersticas de la LCD y
respondiendo las preguntas del cuestionario. La segunda parte trata de crear unas
funciones de librera para el manejo de la LCD. Finalmente, se crear la aplicacin del
marcador de un estadio de ftbol utilizando las funciones de la librera creada.
2 Informacin Tcnica:
Para entender cul es el funcionamiento del display LCD es muy recomendable leer las
hojas de caractersticas, donde se detallan cada una de las funciones y el procedimiento
de uso de la LCD. A continuacin se presenta un resumen del funcionamiento de dicho
display, as como informacin tcnica acerca del mdulo que se va a usar.
Una LCD estndar es una pantalla de cristal lquido con una matriz de 16, 32, 40 u 80
caracteres de 5x7 pxeles, contando, adems, con un microcontrolador (generalmente el
HITACHI HD44780) que lo gobierna. Normalmente cada lnea contiene entre 8 y 80
caracteres y, suelen ser capaces de mostrar caracteres ASCII, japoneses, griegos ...; o
smbolos matemticos. Su bus de conexin puede ser de 4 u 8 bits.
El consumo de este tipo de mdulos es muy bajo (7,5mW) y, gracias a su sencillo
manejo, son ideales para dispositivos que requieren una visualizacin pequea o media.
El mdulo LCD sobre el que vamos a trabajar tiene 14 patillas. Su alimentacin es de
+5V, y la regulacin del contraste se realiza dividiendo esos +5V mediante un
potencimetro de 10k conectado a la patilla Vo. Para el modo de 8 bits se requieren
11 lneas (en el modo de 4 bits slo se necesitan 7). De ellas hay tres de control, que son
EN (habilitacin), I/D (Instruccin / Datos) y R/W (Lectura / Escritura).
48
PIN
1
2
3
4
5
6
7 14
NOMBRE
Vss
Vdd
Vo Vee
I/D RS
R/W
E EN
DB
FUNCIN
Masa
+5V
Ajuste del contraste
Seleccin de modo
Lectura / Escritura
Validacin (1) / Deshabilitacin (0)
Lneas de datos
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
Borra Pantalla
Cursor a Inicio
Modo
I/D
Pantalla On/Off
Modo
S/C
R/L
Funcin
DL
Direccin
Direccin DDRAM
BF
Direccin AC
Escribe RAM
Dato a escribir
Lee RAM
Dato a leer
Introduccin
Desplazamiento
Direccin CGRAM
CGRAM
Direccin
DDRAM
Lectura
ocupado y
direccin
contador
49
Tamao Pantalla
1x8
1x16
1x20
1x24
1x32
1x40
2x16
2x20
2x24
2x32
2x40
Posicin Carcter
00 07
00 15
00 19
00 23
00 31
00 39
00 15
00 19
00 23
00 31
00 39
Direccin DDRAM
0x00 0x07
0x00 0x0F
0x00 0x13
0x00 0x17
0x00 0x1F
0x00 0x27
0x00 0x0F + 0x40 0x4F
0x00 0x13 + 0x40 0x53
0x00 0x17 + 0x40 0x57
0x00 0x1F + 0x40 0x5F
0x00 0x27 + 0x40 0x67
50
#RS,PORTA
;LCD en modo comando
#RW,PORTA
;LCD en modo escritura
#%11000100,PORTB
;Carcter 5, Lnea 2
LCD_COMMAND
;Ejecuta el comando
#RS,PORTA
;LCD en modo datos
#$41,PORTB
;Enva el carcter A
LCD_DATA
;Visualiza el carcter
LCD
D0
D1
D2
D3
D4
D5
D6
D7
RS
R/W
EN
Adems, el mdulo contiene cinco pulsadores conectados a las lneas PA3 a PA7 de la
VIA. En reposo se lee un 1 mientras que cuando se ha pulsado se lee un 0.
51
3 Estudio Previo:
Para entender el funcionamiento de la LCD es necesario leer con detenimiento sus hojas
de caractersticas. Por este motivo se deben leer los documentos relacionados con un
mdulo LCD de 16x2 caracteres as como las hojas de caractersticas del controlador de
HITACHI HD44780U disponible en la pgina web del fabricante.
Una vez ledos estos documentos, y entendidos sus contenidos, responded al siguiente
cuestionario:
1) Qu se puede visualizar en un mdulo LCD alfanumrico de matriz de puntos?
a)
b)
c)
d)
16 bits
4 bits
4 u 8 bits
8 bits
3) Qu byte se debe enviar para configurar la LCD con 2 lneas, interfase de 8 bits
y una fuente de 5x7 puntos?
a)
b)
c)
d)
00111000
00011000
10111000
01010101
16
32
80
64
5) En qu estado tienen que estar las lneas de control para enviar un carcter a la
memoria de la LCD?
a)
b)
c)
d)
52
11101110
11100000
00011000
11101111
100ns
1ms
500ns
500ms
53
LCD_ENABLE:
Genera un pulso de activacin de la EN.
- Habilitar la LCD.
- Esperar 5ms.
- Deshabilitar la LCD.
- Esperar 5ms.
LCD_DATA:
Enva un dato a la LCD.
- Colocar el dato en D0 a D7.
- LCD en modo datos.
- Pulso de activacin.
- LCD en modo comandos.
LCD_COMMAND:
Enva un comando a la LCD.
- LCD en modo comando.
- Colocar el comando en D0 a D7.
- Pulso de activacin.
DELAY: Realiza una espera de 5ms.
5 Creacin de la Aplicacin:
En primer lugar la aplicacin debe realizar las secuencias de inicializacin de los
puertos de entrada / salida del microprocesador, as como tambin de la LCD.
A continuacin se deben visualizar en la LCD los nombres de los equipos local y
visitante que juegan el partido, as como sus marcadores inicializados a cero. Para esto
hay dos opciones:
a) Insertar los nombres de los equipos en el cdigo del programa, de manera
que cada vez que se quiera cambiar un nombre el programa debe ser editado
y, posteriormente, compilado y lincado.
b) Introducir los nombres de los equipos mediante el teclado del ordenador en
tiempo de ejecucin de la aplicacin.
A continuacin se deben rastrear los pulsadores de forma que, el pulsador 1 incremente
el marcador del equipo local, el pulsador 2 incremente el marcador del equipo visitante,
el pulsador 3 borre el marcador del equipo local, el pulsador 4 borre el marcador del
equipo visitante y el pulsador 5 finalice el partido y tambin la aplicacin.
Opcionalmente, se pueden incluir rutinas que visualicen la palabra GOL parpadeando en
la LCD cada vez que se pulsen los pulsadores 1 o 2. Tambin se puede incluir otra
rutina que indique cual ha sido el equipo ganador o si el resultado ha sido empate.
54
Anexo 2:
Mdulo Control LCD
Solucin de la Prctica
1 Solucin del Cuestionario del Estudio Previo
Las soluciones a las preguntas del cuestionario se encuentran sealadas en color rojo,
estilo cursiva y subrayadas.
-
a)
b)
c)
d)
a)
b)
c)
d)
16 bits
4 bits
4 u 8 bits
8 bits
Qu byte se debe enviar para configurar la LCD con 2 lneas, interfase de 8 bits
y una fuente de 5x7 puntos?
a)
b)
c)
d)
00111000
00011000
10111000
01010101
a)
b)
c)
d)
16
32
80
64
En qu estado tienen que estar las lneas de control para enviar un carcter a la
memoria de la LCD?
a)
b)
c)
d)
56
a)
b)
c)
d)
11101110
11100000
00011000
11101111
a)
b)
c)
d)
100ns
1ms
500ns
500ms
a)
b)
c)
d)
#EN,PORTA
#RS,PORTA
#RW,PORTA
;Deshabilita la LCD
;Modo Comandos
;Modo Escritura
;Final de la subrutina
57
DELAY
DELAY
DELAY
DELAY
MOVE.B
#$30,PORTB
JSR
JSR
LCD_ENABLE
DELAY
MOVE.B
#$30,PORTB
JSR
JSR
LCD_ENABLE
DELAY
MOVE.B
#$30,PORTB
JSR
JSR
LCD_ENABLE
DELAY
MOVE.B
JSR
JSR
#LCDINC,PORTB
LCD_ENABLE
DELAY
MOVE.B
#LCDFUNCION,D0
JSR
LCD_COMMAND
MOVE.B
JSR
#LCDINC,D0
LCD_COMMAND
MOVE.B
JSR
#LCDOFF,D0
LCD_COMMAND
;Apaga LCD
MOVE.B
JSR
#LCDCLR,D0
LCD_COMMAND
;Borra LCD
RTS
;Fin de la subrutina
#EN,PORTA
DELAY
#EN,PORTA
DELAY
;Habilita la LCD
;Espera 5ms
;Deshabilita la LCD
;Espera 5ms
;Fin de la Subrutina
58
D0,PORTB
#RS,PORTA
LCD_ENABLE
#RS,PORTA
#RS,PORTA
D0,PORTB
LCD_ENABLE
RTS
#7,IER
#5,IER
MOVE.B
MOVE.B
MOVE.B
#$00,ACR
#CONT_L,T2C_L
#CONT_H,T2C_H
BTST
BEQ
#5,IFR
L1
L1:
RTS
;Fin de la subrutina
59
EQU
EQU
$A0
$0F
EQU
EQU
EQU
EQU
EQU
EQU
EQU
LCDDEC
EQU
LCDON
LCDOFF
CURSOFF
CURSON
CURSBLINK
EQU
EQU
EQU
EQU
EQU
LCDIZDA
EQU
LCDDCHA
CURSIZDA
EQU
EQU
CURSDCHA
EQU
LCDFUNCION
EQU
$80
$C0
$90
$D0
$01
$02
$06
60
EQU
$8E
EQ2DECP
EQU
$CE
SW1
SW2
SW3
SW4
SW5
EQU
EQU
EQU
EQU
EQU
3
4
5
6
7
;Direccion de la
;las decenas del
;Direccion de la
;las decenas del
;Pulsador
;Pulsador
;Pulsador
;Pulsador
;Pulsador
LCD para
marcador
LCD para
marcador
visualizar
del equipo 1
visualizar
del equipo 2
1
2
3
4
5
EQU
RW
RS
EQU
EQU
1
0
;Habilitacion (EN=1)
;Deshabilitacion (EN=0) de la LCD
;Modo Lectura (R/W=1). Modo Escritura (R/W=0)
;Modo Datos (RS=1). Modo Comandos (RS=0)
EQU
EQU
$28000
VARIABLES+0
EQ_2_ASCII
EQU
VARIABLES+8
EQUIPO1
EQU
VARIABLES+12
EQUIPO2
EQU
VARIABLES+30
;**************************************************************
;
INICIO DEL PROGRAMA
;**************************************************************
;Inicializar las variables
MOVE.L
MOVE.L
MOVE.L
#$0,D6
#$0,D7
#$29000,A7
61
LCD_FIRST
LCD_INI
MOVE.B
JSR
#LCDLINEA1,D0
;Mueve el cursor a la
;posicion 1 de la linea 1
LCD_COMMAND
CABECERA
#25,D0
#0
#4,A7
PREG_1
#25,D0
#0
#4,A7
#13,-(A7)
#EQUIPO1,-(A7)
#26,D0
#0
#8,A7
PREG_2
#25,D0
#0
#4,A7
#13,-(A7)
#EQUIPO2,-(A7)
#26,D0
#0
#8,A7
PEA
MOVE.L
TRAP
ADDA.L
TEXT9
#25,D0
#0
#4,A7
EQUIPO1,A1
JSR
ENVIA_TEXTO
MOVE.B
JSR
62
LEA
EQUIPO2,A1
JSR
ENVIA_TEXTO
JSR
ACT_MARCA
GOOL,A1
ENVIA_TEXTO
MOVE.B
JSR
#LCDLIN2_PAN2,D0
LCD_COMMAND
LEA
JSR
GOOL,A1
ENVIA_TEXTO
MOVE.B
JSR
#LCDLINEA1,D0
LCD_COMMAND
MOVE.B
JSR
#LCDON,D0
LCD_COMMAND
;En la linea 2
#SW1,PORTA
GOL_EQ_1
BTST
BEQ
#SW2,PORTA
GOL_EQ_2
BTST
BEQ
#SW3,PORTA
BORRA_EQ_1
BTST
BEQ
#SW4,PORTA
BORRA_EQ_2
BTST
BEQ
#SW5,PORTA
ACABA
JMP
INICIO
GOL_EQ_1:
JSR
T20MS
BTST
BEQ
#SW1,PORTA
INICIO
JSR
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
63
T20MS
BTST
BEQ
#SW2,PORTA
INICIO
JSR
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
BTST
BEQ
T20MS
#SW3,PORTA
INICIO
CLR.L
D6
JSR
ACT_MARCA
JMP
INICIO
BORRA_EQ_2:
JSR
BTST
BEQ
T20MS
#SW4,PORTA
INICIO
CLR.L
D7
JSR
ACT_MARCA
JMP
INICIO
ACABA:
JSR
T20MS
BTST
BEQ
#SW5,PORTA
INICIO
JSR
FINAL
PEA
TEXT5
MOVE.L
#25,D0
TRAP #0
ADDA.L
#4,A7
JSR
BLINK
MOVE.B
JSR
#LCDON,D0
LCD_COMMAND
MOVE.L #29,d0
TRAP
#0
MOVE.B
JSR
#LCDOFF,D0
LCD_COMMAND
TRAP #5
;Fin del programa
;**************************************************************
;
FIN DEL PROGRAMA
;**************************************************************
64
;**************************************************************
;
SUBRUTINAS UTILIZADAS EN LA APLICACIN
;**************************************************************
;**************************************************************
;Subrutina que realiza una espera de 20ms con la base de tiempos
;de 5ms de la rutina DELAY para eliminar los rebotes en los
;pulsadores
;**************************************************************
T20MS:
MOVE.L
#$3,D3
T1:
JSR
DELAY
DBF
D3,T1
RTS
;**************************************************************
;Desplaza la LCD 16 caracteres hacia la izquierda y hace que la
;palabra GOOL parpadee en la pantalla
;**************************************************************
GOL:
MOVE.B #LCDOFF,D0
JSR
LCD_COMMAND
;Apaga el display
MOVE.L
#$0F,D2
S1:
MOVE.B #LCDIZDA,D0
JSR
LCD_COMMAND
DBF
D2,S1
JSR
BLINK
MOVE.B #LCDOFF,D0
JSR
LCD_COMMAND
;Apaga el display
MOVE.L
#$0F,D2
S2:
MOVE.B #LCDDCHA,D0
JSR
LCD_COMMAND
DBF
D2,S2
MOVE.B #LCDON,D0
JSR
LCD_COMMAND
;Enciende el display
RTS
;**************************************************************
;La rutina BLINK hace que el contenido del display parpadee
;controlando el tiempo que esta encendido y apagado
;**************************************************************
BLINK:
MOVE.L
#$2,D4
MOVE.B
JSR
#LCDON,D0
LCD_COMMAND
MOVE.L
#$63,D3
NEXT:
65
DELAY
D3,TIME1
MOVE.B
JSR
#LCDOFF,D0
LCD_COMMAND
MOVE.L
#$63,D3
JSR
DBF
DELAY
D3,TIME2
DBF
RTS
D4,NEXT
;Espera 500ms
TIME2:
;**************************************************************
;FINAL: Escribe en la pantalla el resultado final del partido
;**************************************************************
FINAL:
CMP
BEQ
BLT
BGT
RTS
D6,D7
IGUALES
WIN_EQ1
WIN_EQ2
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
JSR
#LCDCLR,D0
LCD_COMMAND
LEA
JSR
TEXT10,A1
ENVIA_TEXTO
MOVE.B
JSR
#LCDLINEA2,D0
LCD_COMMAND
LEA
JSR
TEXT11,A1
ENVIA_TEXTO
MOVE.B
JSR
#LCDON,D0
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
66
#LCDCLR,D0
LCD_COMMAND
LEA
JSR
TEXT12,A1
ENVIA_TEXTO
MOVE.B
JSR
#LCDLINEA2,D0
LCD_COMMAND
LEA
JSR
EQUIPO1,A1
ENVIA_TEXTO
MOVE.B
JSR
RTS
#LCDON,D0
LCD_COMMAND
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
JSR
#LCDCLR,D0
LCD_COMMAND
LEA
JSR
TEXT12,A1
ENVIA_TEXTO
MOVE.B
JSR
#LCDLINEA2,D0
LCD_COMMAND
LEA
JSR
EQUIPO2,A1
ENVIA_TEXTO
MOVE.B
JSR
RTS
#LCDON,D0
LCD_COMMAND
#$0,(A1)
FIN_CHAR
MOVE.B
(A1)+,D0
JSR
LCD_DATA
JMP ENVIA_TEXTO
FIN_CHAR:
RTS
;Fin de la subrutina
67
#10,-(A7)
#EQ_1_ASCII,-(A7)
D6,-(A7)
#19,D0
;Funcion ITOSTR() del monitor
#0
#12,A7
#10,-(A7)
#EQ_2_ASCII,-(A7)
D7,-(A7)
#19,D0
;Funcion ITOSTR() del monitor
#0
#12,A7
TEXT6
#25,D0
#0
#4,A7
PEA
MOVE.L
TRAP
ADDA.L
TEXT7
#25,D0
#0
#4,A7
PEA
MOVE.L
TRAP
ADDA.L
EQ_1_ASCII
#25,D0
#0
#4,A7
PEA
MOVE.L
TRAP
ADDA.L
TEXT7
#25,D0
#0
#4,A7
PEA
MOVE.L
TRAP
ADDA.L
TEXT7
#25,D0
#0
#4,A7
PEA
MOVE.L
TRAP
ADDA.L
PEA
MOVE.L
TRAP
EQ_2_ASCII
#25,D0
#0
#4,A7
TEXT7
#25,D0
#0
68
#4,A7
#$0A,D6
UNI_1
#EQ1DECP,D0
JSR LCD_COMMAND
MOVE.B
(EQ_1_ASCII),D0
JSR LCD_DATA
MOVE.B
(EQ_1_ASCII+1),D0
JSR LCD_DATA
JMP
EQ2
#EQ1DECP,D0
JSR LCD_COMMAND
;Desplaza el cursor a la
;posicion donde estan
;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
BLT
#$0A,D7
UNI_2
#EQ2DECP,D0
JSR LCD_COMMAND
;Desplaza el cursor a la
;posicion donde estan
;las decenas del marcador 2
MOVE.B
69
MOVE.B (EQ_2_ASCII),D0
JSR LCD_DATA
FACT:
RTS
;Fin de la Subrutina
;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
BCLR
BCLR
#EN,PORTA
#RS,PORTA
#RW,PORTA
RTS
;Deshabilita la LCD
;Modo Comandos
;Modo Escritura
;Final de la subrutina
DELAY
DELAY
DELAY
DELAY
MOVE.B
#$30,PORTB
JSR
JSR
LCD_ENABLE
DELAY
MOVE.B
#$30,PORTB
JSR
JSR
LCD_ENABLE
DELAY
MOVE.B
#$30,PORTB
JSR
LCD_ENABLE
70
DELAY
MOVE.B
JSR
JSR
#LCDINC,PORTB
LCD_ENABLE
DELAY
MOVE.B
#LCDFUNCION,D0
JSR
LCD_COMMAND
MOVE.B
JSR
#LCDINC,D0
LCD_COMMAND
MOVE.B
JSR
#LCDOFF,D0
LCD_COMMAND
;Apaga LCD
MOVE.B
JSR
#LCDCLR,D0
LCD_COMMAND
;Borra LCD
RTS
;Espera 5ms
;Incremento automatico de AC
;Habilita la LCD
;Espera 5ms
;Configuracion de interfase de 8
;bits, 2 lineas
;Fin de la subrutina
#EN,PORTA
DELAY
#EN,PORTA
DELAY
;Habilita la LCD
;Espera 5ms
;Deshabilita la LCD
;Espera 5ms
;Fin de la Subrutina
D0,PORTB
#RS,PORTA
LCD_ENABLE
#RS,PORTA
RTS
#RS,PORTA
D0,PORTB
LCD_ENABLE
71
#7,IER
#5,IER
MOVE.B
MOVE.B
MOVE.B
#$00,ACR
#CONT_L,T2C_L
#CONT_H,T2C_H
BTST
BEQ
#5,IFR
L1
L1:
RTS
;Fin de la subrutina
DB $0d,$0a,$07,'MARCADOR DE UN ESTADIO DE
FUTBOL',$0d,$0a,'Por: Antonio M. Zaplana',$0
DB $0d,$0a,'Nombre del equipo Local: ',$0
DB $0d,$0a,'Nombre del equipo Visitante: ',$0
DB '* * * GOOL * * *',$0
DB $07,$0
DB
$07,$07,$0d,$0a,$0a,$0a,'Fin del programa',$0
DB
$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,
$08,$08,$08,$08,$08,$08,$08,$08,$09,$09,$0
DB
' ',$0
DB
$0D,$0A,$0
DB
$0D,$0A,'Resultado: ',$0D,$0A,$0
DB
'Resultado:',$0
DB
'
EMPATE
',$0
DB
'Ha ganado el:',$0
DB
$0D,$0A,'Fin del Partido, el resultado
ha sido empate',$0
DB
$0D,$0A,'Fin del Partido, ha ganado el ',$0
END
72
Anexo 3:
Prctica de Control de Temperatura con Lectura de
Ocho Bits
1 Enunciado de la Prctica
El mdulo de control de temperatura funciona como un horno elctrico. Esta prctica
tiene como objetivo realizar un control de temperatura del horno con la ayuda del
microinstructor del 68000.
Para conseguir este propsito, hemos dividido la prctica en tres partes. La primera
consiste en realizar un estudio previo estudiando la informacin tcnica del mdulo que
se va a usar. Esta documentacin est disponible en el siguiente captulo. El alumno
debe responder las preguntas del cuestionario del estudio previo antes de la primera
sesin de prcticas. La segunda parte de la prctica consiste en realizar la adquisicin de
la conversin analgico digital de la salida del sensor de temperatura. Finalmente, la
tercera parte de la prctica consiste en programar un control digital para que la
temperatura del horno sea la que nosotros queremos.
2 Informacin Tcnica
Este mdulo est formado por un elemento sensor de temperatura cuya salida est
acondicionada por un circuito analgico. Posteriormente la salida acondicionada se
muestrea mediante el conversor analgico digital disponible en el microcontrolador
PIC16F873. La seal muestreada se trata mediante un programa que se ejecuta en el
microcontrolador. Mediante uno de los puertos de entrada salida de ste se enva el
valor de la conversin al puerto A de la VIA para su tratamiento en el programa de
control que se ejecuta en el microinstructor TM-683. Mediante otro puerto del
microcontrolador se visualiza la temperatura medida en un visualizador de tres dgitos
de siete segmentos.
El programa de control tiene que generar una seal, que convertida mediante un
conversor digital analgico ser la encargada de excitar un transistor de potencia. Este
transistor regula la corriente que pasa por la resistencia de calentamiento. De esta forma
se controla la potencia disipada por la resistencia, cuya temperatura es la que se quiere
controlar. Para este motivo se pueden programar varios tipos de control: todo nada,
todo nada con histresis, control proporcional e incluso un control PID.
El esquema elctrico del mdulo de control de temperatura se encuentra al final de este
documento.
73
+10mV/C
0.5C
4 a 30V
C
0.1 para una carga de 1mA.
74
8 bits
Paralelo
1s
18V (mx)
1%
2
El conversor DAC est polarizado con una corriente de 2mA, resultado de aplicar una
tensin de 10 voltios, procedente de un regulador lineal de tensin IC6 tipo 7810, a una
resistencia de polarizacin de 5k. La salida analgica del conversor se introduce en
IC11 que es un amplificador operacional tipo OP07 realimentado con una resistencia de
5k, para producir una tensin de salida entre 0V y 10V.
75
3 Estudio Previo
Una vez leda y entendida la informacin tcnica del apartado 2, responder a las
siguientes cuestiones, argumentando las respuestas.
a) Obtener la expresin que relaciona la temperatura de la resistencia con el valor
de la conversin analgico digital, suponiendo que tenemos un conversor A /
D de 8 bits y que sus tensiones de referencia son: Vmax = 5V y Vmin = 0V para un
rango de temperaturas de 0C a 100C.
b) Si el resultado de la conversin analgico digital es 136 (88h), cul es la
temperatura de la resistencia?
c) Cul es la resolucin de la conversin en C / cuenta?
76
5 Control Digital
Programar un algoritmo de control que compare la temperatura obtenida con la
temperatura deseada y, acte en consecuencia para que la temperatura de la resistencia
sea lo ms similar posible a la temperatura deseada.
Se puede elegir uno de los siguientes algoritmos de control:
-
Todo / Nada
Todo / Nada con Histresis
Proporcional (P)
Proporcional Integral (PI)
Proporcional, Integral y Derivativo (PID)
En la eleccin del tipo de control, se debe tener muy en cuenta la gran inercia que
presenta el sistema. Los procesos de calentamiento y enfriamiento de la resistencia de
potencia son lentos.
Razona el porqu de tu eleccin.
77
Anexo 4:
Prctica de Control de Temperatura con Lectura de
Diez Bits
1 Enunciado de la Prctica
El mdulo de control de temperatura funciona como un horno elctrico. Esta prctica
tiene como objetivo realizar un control de temperatura del horno con la ayuda del
microinstructor del 68000.
Para conseguir este propsito hemos dividido la prctica en tres partes. La primera
consiste en realizar un estudio previo estudiando la informacin tcnica del mdulo que
se va a usar, disponible en el siguiente captulo y, responder las preguntas del
cuestionario. La segunda parte de la prctica consiste en realizar la adquisicin de la
conversin analgico digital de la salida del sensor de temperatura. Finalmente, la
tercera parte de la prctica consiste en programar un controlador digital para que la
temperatura del horno sea la que nosotros queremos.
2 Informacin Tcnica
Este mdulo est formado por un elemento sensor de temperatura cuya salida est
acondicionada por un circuito analgico. Posteriormente la salida acondicionada se
muestrea mediante el conversor analgico digital disponible en el microcontrolador
PIC16F873. La seal muestreada se trata mediante un programa que se ejecuta en el
microcontrolador. Mediante uno de los puertos de entrada salida de ste se enva el
valor de la conversin al puerto A de la VIA para su tratamiento en el programa de
control que se ejecuta en el microinstructor TM-683. Mediante otro puerto del
microcontrolador se visualiza la temperatura medida en un visualizador de siete
segmentos formado por tres mdulos de ctodo comn.
El programa de control genera una seal que es convertida mediante un conversor
digital analgico que es el encargado de excitar un transistor de potencia, el cual
regula la corriente que pasa por la resistencia de calentamiento, y por consiguiente,
controla la potencia disipada por la resistencia cuya temperatura es la que se quiere
controlar. Para este motivo se pueden programar varios tipos de control: todo nada,
todo nada con histresis, control proporcional e incluso un control PID.
El esquema elctrico del mdulo de control de temperatura se encuentra al final de este
documento.
79
+10mV/C
0.5C
4 a 30V
C
0.1 para una carga de 1mA.
80
8 bits
Paralelo
1s
18V (mx)
1%
2
El conversor DAC est polarizado con una corriente de 2mA, resultado de aplicar una
tensin de 10 voltios, procedente de un regulador lineal de tensin IC6 tipo 7810, a una
resistencia de polarizacin de 5k. La salida analgica del conversor se introduce en
IC11 que es un amplificador operacional tipo OP07 realimentado con una resistencia de
5k, para producir una tensin de salida entre 0V y 10V.
81
MSB
1
X
X
Byte Bajo
X
X
Byte Alto
LSB
X
LSB
X
82
83
3 Estudio Previo
Una vez leda y entendida la informacin tcnica del apartado 2, responder a las
siguientes cuestiones, argumentando las respuestas.
a) Obtener la expresin que relaciona la temperatura de la resistencia con el valor
de la conversin analgico digital, suponiendo que tenemos un conversor A /
D de 10 bits y que sus tensiones de referencia son: Vmax = 5V y Vmin = 0V para
un rango de temperaturas de 0C a 100C.
b) Si el resultado de la conversin analgico digital es 136 (88h), cul es la
temperatura de la resistencia?
c) Segn lo explicado en el Apartado 2.3, describe el proceso a seguir para obtener
en un registro de datos del 68000 (D0 D7) el valor completo de la conversin
analgico-digital.
d) Calcula la expresin que relaciona el dato digital de la entrada del conversor
digital analgico con la tensin de salida del mismo.
e) Qu tensin de salida corresponder con un valor digital en la entrada de 58
(3Ah)?
84
5 Control Digital
Programar un algoritmo de control que compare la temperatura obtenida con la
temperatura deseada y, acte en consecuencia para que la temperatura de la resistencia
sea lo ms similar posible a la temperatura deseada.
Se puede elegir uno de los siguientes algoritmos de control:
-
Todo / Nada
Todo / Nada con Histresis
Proporcional (P)
Proporcional Integral (PI)
Proporcional, Integral y Derivativo (PID)
En la eleccin del tipo de control, se debe tener muy en cuenta la gran inercia que
presenta el sistema. Los procesos de calentamiento y enfriamiento de la resistencia de
potencia son lentos.
Razona el porqu de tu eleccin.
85
Anexo 5:
Prctica de Conversin A/D y Visualizacin en Display
de Siete Segmentos
1 Enunciado de la Prctica
El mdulo de control de temperatura funciona como un horno elctrico. Esta prctica
tiene como objetivo realizar la medicin de la temperatura de calentamiento del horno
mediante un conversor analgico digital y visualizar en un display con tres dgitos de
siete segmentos dicha temperatura.
Para conseguir este propsito hemos dividido la prctica en tres partes. La primera
consiste en realizar un estudio previo estudiando la informacin tcnica del mdulo que
se va a usar, disponible en el siguiente captulo y, responder las preguntas del
cuestionario. La segunda parte de la prctica consiste en programar el microcontrolador
PIC16F873 de la placa para que realice la conversin analgico digital de la salida del
sensor de temperatura. Finalmente, la tercera parte de la prctica consiste en procesar el
dato obtenido de la conversin analgico digital y visualizar el valor de la temperatura
en el display.
2 Informacin Tcnica
Este mdulo est formado por un elemento sensor de temperatura cuya salida est
acondicionada por un circuito analgico. Posteriormente la salida acondicionada se
muestrea mediante el conversor analgico digital disponible en el microcontrolador
PIC16F873. La seal muestreada se trata mediante un programa que se ejecuta en el
microcontrolador. Mediante uno de los puertos de entrada salida de ste se visualiza
la temperatura medida en un visualizador de siete segmentos formado por tres dgitos de
ctodo comn.
El esquema elctrico del mdulo de control de temperatura se encuentra al final de este
documento.
87
+10mV/C
0.5C
4 a 30V
C
0.1 para una carga de 1mA.
88
89
90
91
Nominal
1.6V
10mA
Mxima
30mA
2.5mcd
6V
ngulo de visin
75
60mW
Temperatura de funcionamiento
De 40C a +85C
Cada uno de los segmentos del display est conectado a una lnea del puerto C del
microcontrolador mediante resistencia limitadoras de corriente. La relacin entre los
segmentos del display y las lneas del puerto C del microcontrolador se encuentra en la
Tabla 3:
SEGMENTO
A
B
C
D
E
F
G
Punto decimal
PUERTO C
RC6
RC5
RC4
RC3
RC2
RC1
RC0
RC7
92
Como se ha indicado antes, los dgitos del display son de ctodo comn. El ctodo de
cada dgito est conectado a una salida del decodificador IC9 del tipo 74LS139. El
circuito IC9 es un decodificador 2 a 4 cuyas entradas son las lneas RA4 y RA5 del PIC.
En la Tabla 4 se detallan los estados de cada una estas seales para activar los digitos.
RA4
0
0
1
1
RA5
0
1
0
1
DIGITO
DIG0
DIG1
DIG2
No utilizado
93
Las seales del puerto paralelo son seales TTL bastante deterioradas por el cable de
conexin. Por este motivo se restauran por medio de los inversores contenidos en el
circuito IC7 tipo 74LS06. Este circuito dispone de salidas de colector abierto, lo cual
permite controlar fcilmente los transistores Q1, Q2 y Q3. Q2 y Q3 permiten aplicar la
tensin alta de programacin VPP a las patillas adecuadas. El transistor Q1 gobierna la
tensin normal de alimentacin VDD y permite no alimentar el circuito a programar
ms que cuando es verdaderamente necesario acceder a l.
Para indicar la aplicacin o no de estas tensiones, se utilizan dos LED rojos, D4 y D5,
gobernados por las dos tensiones VPP. En cuanto al diodo D6, se enciende simplemente
cuando el programador est bajo tensin, con el fin de sealar el buen funcionamiento
de la alimentacin.
Los datos a programar en el circuito transitan por la puerta IC7a, pasando por IC7b en
caso de una segunda lectura del circuito. En cuanto al reloj de programacin pasa por
IC7c.
El programador se alimenta mediante la fuente de alimentacin MM-600, comn a
todos los mdulos de aplicacin del microinstructor TM-683. La salida de +15V pasa a
travs del regulador lineal de tensin IC5 tipo 7812, el cual tiene en su patilla comn
tres diodos (D1, D2, D3, tipo 1N4004) conectados en serie que elevan la tensin de
salida a 13.8V.
El programador dispone tambin de 5 microinterruptores disponibles en SW2 cuya
funcin es la de dejar las seales del programador en circuito abierto en caso de que no
se tenga que programar y se est en fase de ejecucin.
En la Figura 4 se puede ver la posicin de los siete microinterruptores disponibles en
SW2 cuando se est en fase de grabacin del PIC16F873 y cuando se est ejecutando el
programa.
Cuando se est en fase de programacin (ver Figura 4a), cerramos los interruptores 1 a
5 de forma que por el primer microinterruptor se gobierna la tensin alta de
programacin, por el tercer microinterruptor se gobierna la tensin de alimentacin del
chip, por el cuarto transita el reloj de programacin; y por el quinto transitan los datos a
programar. Los microinterruptores 6 y 7 deben estar abiertos ya que el 6 gobierna la
tensin del chip en la fase de ejecucin y el microinterruptor 7 indica la longitud del
dato de conversin A / D que se enva al microinstructor TM-683.
94
95
3 Estudio Previo
Una vez leda y entendida la informacin tcnica del apartado 2, responder a las
siguientes cuestiones, argumentando las respuestas.
a) Obtener la expresin que relaciona la temperatura de la resistencia con el valor
de la conversin analgico digital, suponiendo que tenemos un conversor A /
D de 10 bits y que sus tensiones de referencia son: Vmax = 5V y Vmin = 0V para
un rango de temperaturas de 0C a 100C.
b) Si el resultado de la conversin analgico digital es 136 (88h), cul es la
temperatura de la resistencia?
c) Cul es la resolucin de la conversin en C / cuenta?
d) Indica el estado de las lneas RA4, RA5 y el valor a enviar por el puerto C para
visualizar en el dgito 1 el nmero 2 con punto decimal.
e) Completa la siguiente tabla:
Numero a
Visualizar
0
1
2
3
4
5
6
7
8
9
RC7
RC6
RC5
PUERTO C
RC4
RC3
96
RC2
RC1
RC0
97
Anexo 6:
Mdulo de Control de Temperatura
(Solucin de las Prcticas)
En este documento se encuentran las soluciones de las prcticas descritas en los anexos
3, 4 y 5.
10 mV / C
5
Vo (Sensor)
0
1
Vin (A/D)
0
5
N = 2,55 T
99
N
2,55
N
0
255
136
= 53,3 C
2,55
1
= 0,392 C
2,55
Precisin = 0,392 C
cuenta
100
D7
ADRES,D7
#1,D7
101
Todo / Nada
Todo / Nada con Histresis
Proporcional (P)
Proporcional Integral (PI)
Proporcional, Integral y Derivativo (PID)
D7
CONSIGNA,D7
TREAL,D7
MAYOR
;Consigna > Temperatura real
#$00,PORTB
RTS
MAYOR:
MOVE.B
RTS
#$FF,PORTB
102
ABSOLUTE
ORG
$25000
;REGISTROS DE LA VIA
VIA
PORTB
PORTA
DDRB
DDRA
ACR
PCR
IFR
IER
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
$60021
VIA+0
VIA+2
VIA+4
VIA+6
VIA+22
VIA+24
VIA+26
VIA+28
;REGISTROS DE LA DUART
DUART
MR1A
MR2A
SRA
CSRA
CRA
RBA
TBA
IPCR
ACRD
ISR
IMR
CUR
CTUR
CLR
CTLR
MR1B
MR2B
SRB
CSRB
CRB
RBB
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
$60041
DUART+0
DUART+0
DUART+2
DUART+4
DUART+4
DUART+6
DUART+6
DUART+8
DUART+8
DUART+10
DUART+10
DUART+12
DUART+12
DUART+14
DUART+14
DUART+16
DUART+16
DUART+18
DUART+20
DUART+20
DUART+22
103
EQU
EQU
DUART+22
DUART+24
;Transmitter Buffer B
;Interrupt Vector Register
EQU
VECTOR_DUART
$2003E
EQU
;INICIALIZACION DE VARIABLES
CLR.W
CLR.W
CLR.W
CLR.W
CLR.W
CLR.W
CLR.L
CONSIGNA
TREAL
TEMP1
TEMP2
ADRES
CADENA
D6
#$00,DDRA
#$FF,DDRB
104
JSR
JSR
DEC_ADRES
CONTROL
***********
TEXT,A1
PUTS
CLR.L
MOVE.B
JSR
D4
CONSIGNA,D4
ITOA
;Convierte la consigna a una cadena de
;caracteres ASCII
LEA
JSR
TEXT2,A1
PUTS
LEA
CADENA,A1
JSR
PUTS
LEA
JSR
TEXT1,A1
PUTS
CLR.L D4
MOVE.B
JSR
ITOA
LEA
JSR
LEA
JSR
TREAL,D4
;Convierte la Temperatura real a una cadena de
;caracteres ASCII
CADENA,A1
PUTS
TEXT4,A1
PUTS
CLR.L D4
MOVE.B DECIMAL,D4
JSR
ITOA
;Convierte el decimal de la Temperatura real a
;una cadena de caracteres ASCII
LEA
JSR
LEA
JSR
JMP
CADENA,A1
PUTS
TEXT3,A1
PUTS
INICIO
FINAL:
MOVE.B TEMP2,IER
MOVE.B #$00,IMR
MOVE.B TEMP1,IVR
TRAP #5
;Vuelve al principio
105
;**************
DEFINICION DE SUBRUTINAS
**********************
#10,-(A7)
;Base numerica de la conversion
#CADENA,-(A7)
;Direccion de inicio del String
D4,-(A7)
;Dato a convertir
#19,D0
;Funcion itoa() del programa monitor
#0
;Convierte un entero a ASCII
#12,A7
;Limpia la pila
;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
BEQ
#2,SRB
BUSY
MOVE.B (A1)+,TBB
JMP
PUTS
FIN_CHAR:
RTS
control ON - OFF
D7
CONSIGNA,D7
TREAL,D7
MAYOR
#$00,PORTB
106
MAYOR:
MOVE.B
#$FF,PORTB
RTS
;********
************
RBB,D3
CMPI.B
BEQ
#$1B,D3
ESCAPE
CMPI.B
BEQ
#$2B,D3
MAS
CMPI.B
BEQ
JMP
EOI
#$2D,D3
;Ha sido la tecla '-'?
MENOS
;Ha sido una tecla diferente de las anteriores
ESCAPE:
MOVE.B
RTE
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
107
108
10 mV / C
5
Vo (Sensor)
0
1
Vin (A/D)
0
5
(1)
(2)
T=
N = 10,23 T
109
N
10, 23
N
0
1023
136
= 13,29 C
10,23
110
111
D5
BAJO,D5
LEE_ALTO
PORTA,D5
#7,D5
EOI
D5,ADRESL
#$00,BAJO
PORTA,D5
#7,D5
EOI
#7,D5
D5,ADRESH
#$FF,BAJO
En el cdigo anterior, la posicin de memoria indicada por BAJO indica si se debe leer
el byte bajo de la conversin (BAJO = FFh) o el alto (BAJO = 00h).
112
ADRESL,DECIMAL
#%00000111,DECIMAL
#5,D1
D2,D1
;El dato de 10 bits ya esta reconstruido
#$000003FF,D1
#10,D1
;Calcula el valor de la temperatura real
#$000000FF,D1
TREAL
D1,TREAL
;Guarda el valor de la temperatura real
RTS
Cdigo 6. Clculo de la temperatura real de la resistencia.
ABSOLUTE
ORG
$25000
;REGISTROS DE LA VIA
VIA
EQU
PORTB EQU
$60021
VIA+0
113
EQU
EQU
EQU
EQU
EQU
EQU
EQU
VIA+2
VIA+4
VIA+6
VIA+22
VIA+24
VIA+26
VIA+28
;REGISTROS DE LA DUART
DUART
MR1A
MR2A
SRA
CSRA
CRA
RBA
TBA
IPCR
ACRD
ISR
IMR
CUR
CTUR
CLR
CTLR
MR1B
MR2B
SRB
CSRB
CRB
RBB
TBB
IVR
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
$60041
DUART+0
DUART+0
DUART+2
DUART+4
DUART+4
DUART+6
DUART+6
DUART+8
DUART+8
DUART+10
DUART+10
DUART+12
DUART+12
DUART+14
DUART+14
DUART+16
DUART+16
DUART+18
DUART+20
DUART+20
DUART+22
DUART+22
DUART+24
EQU
VECTOR_DUART
$2003E
EQU
;INICIALIZACION DE VARIABLES
CLR.W
CLR.W
CLR.W
CLR.W
CLR.W
CLR.W
CONSIGNA
TREAL
TEMP2
TEMP1
ADRESH
ADRESL
114
#$00,DDRA
#$FF,DDRB
IER,TEMP2
MOVE.B
MOVE.L
ANDI.B
ORI.B
CLR.B IFR
MOVE.B
;***********
INICIO:
CMPI
BNE
JSR
JSR
#0,D6
FINAL
DEC_ADRES
CONTROL
***************
TEXT,A1
PUTS
CLR.L
MOVE.B
JSR
D4
CONSIGNA,D4
ITOA
LEA
JSR
TEXT2,A1
PUTS
LEA
CADENA,A1
JSR
LEA
PUTS
TEXT1,A1
115
PUTS
CLR.L D4
MOVE.B
JSR
ITOA
LEA
JSR
TREAL,D4
;Convierte la Temperatura real a una cadena de
;caracteres ASCII
CADENA,A1
PUTS
LEA
JSR
TEXT4,A1
PUTS
CLR.L D4
MOVE.B DECIMAL,D4
JSR
ITOA
;Convierte el decimal de la Temperatura real a
;una cadena de caracteres ASCII
LEA
JSR
CADENA,A1
PUTS
LEA
JSR
JMP
TEXT3,A1
PUTS
INICIO
FINAL:
MOVE.B
MOVE.B
MOVE.B
TRAP
TEMP2,IER
#$00,IMR
TEMP1,IVR
#5
;**************
;Vuelve al principio
DEFINICION DE SUBRUTINAS
**********************
#10,-(A7)
;Base numerica de la conversion
#CADENA,-(A7)
;Direccion de inicio del String
D4,-(A7)
;Dato a convertir
#19,D0
;Funcion itoa() del programa monitor
;Convierte un entero a ASCII
#12,A7
;Limpia la pila
;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
BEQ
#2,SRB
BUSY
116
MOVE.B
JMP
PUTS
FIN_CHAR:
RTS
;*******
(A1)+,TBB
;Si. Envia el caracter al puerto serie
;Envia el caracter siguiente
*************
D5
BAJO,D5
LEE_ALTO
PORTA,D5
#7,D5
EOI
D5,ADRESL
#$00,BAJO
LEE_ALTO:
MOVE.B
BTST
BEQ
BCLR
MOVE.B
MOVE.B
EOI:
RTE
DEC_ADRES:
MOVE.B
ANDI.B
PORTA,D5
#7,D5
EOI
#7,D5
D5,ADRESH
#$FF,BAJO
ADRESL,DECIMAL
#%00000111,DECIMAL
#5,D1
D2,D1
;El dato de 10 bits ya esta reconstruido
#$000003FF,D1
#10,D1
;Calcula el valor de la temperatura real
#$000000FF,D1
TREAL
D1,TREAL
;Guarda el valor de la temperatura real
RTS
CONTROL:
CLR.L
MOVE.B
CMP.B
BGT
MOVE.B
D7
CONSIGNA,D7
TREAL,D7
MAYOR
;Consigna > Temperatura real
;Consigna <= Temperatura real
#$00,PORTB
;Limpia el flag de CA1. Interrupcion
;servida
RTS
117
MAYOR:
MOVE.B
#$FF,PORTB
RTS
RBB,D3
CMPI.B
#$1B,D3
BEQ
ESCAPE
CMPI.B
BEQ
MAS
#$2B,D3
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
RTE
MAS:
CMPI.B #100,CONSIGNA
BEQ
MAXIMO
;La consigna esta a su valor maximo
ADDQ.B
#1,CONSIGNA ;No. Incrementa el valor de la consigna
RTE
;Fin de la rutina de atencion a la interrupcion del teclado
MAXIMO:
MOVE.B #100,CONSIGNA
;Consigna a su valor maximo
RTE
;Fin de la rutina de atencion a la interrupcion del teclado
MENOS:
CMPI.B
#0,CONSIGNA
BEQ
MINIMO
;La consigna esta a su valor minimo
SUBQ.B
#1,CONSIGNA ;No. Decrementa el valor de la consigna
RTE
;Fin de la rutina de atencion a la interrupcion del teclado
MINIMO:
MOVE.B
#0,CONSIGNA ;Consigna a su valor minimo
RTE
;Fin de la rutina de atencion a la interrupcion del teclado
TEXT
DB
$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$0
8,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$08,$0
TEXT1
DB
' T. Real: ',$0
TEXT2
DB
' Consigna: ',$0
TEXT3
DB
' ',$0
TEXT4
DB
'.',$0
END
Cdigo 7. Aplicacin de ejemplo.
118
10 mV / C
5
Vo (Sensor)
0
1
Vin (A/D)
0
5
N
0
1023
(1)
(2)
N
10, 23
b) Si el resultado de la conversin analgico digital es 136 (88h), cul es la
temperatura de la resistencia?
N = 10,23 T
T=
136
= 13,29 C
10,23
119
1
= 0,09775 C
10,23
Precisin = 0,09775 C
cuenta
d) Indica el estado de las lneas RA4, RA5 y el valor a enviar por el puerto C para
visualizar en el dgito 1 el nmero 2 con punto decimal.
RA4 = 0
RA5 = 1
PORTC = 11101101 (Edh)
e) Completa la siguiente tabla:
Numero a
Visualizar
0
1
2
3
4
5
6
7
8
9
RC7
0
0
0
0
0
0
0
0
0
0
RC6
1
0
1
1
0
1
1
1
1
1
RC5
1
1
1
1
1
0
0
1
1
1
PUERTO C
RC4
RC3
1
1
1
0
0
1
1
1
1
0
1
1
1
1
1
0
1
1
1
1
RC2
1
0
1
0
0
0
1
0
1
0
RC1
1
0
0
0
1
1
1
0
1
1
RC0
0
0
1
1
1
1
1
0
1
1
120
PIR1,6
;Limpia el Flag
RETURN
Cdigo 9. Inicializacin de las interrupciones.
AD_INTERRUPT:
INT_OFF
;Inhabilita interrupciones
;Salvamos Contexto
MOVWF W_TEMP
SWAPF STATUS,W
MOVWF STATUS_TEMP
;Rutina de servicio a la interrupcin
MOVF ADRESH,W
;Cargamos la parte alta del resultado de la
;conversion
MOVWF ADCH_TEMP
;Guardamos el resultado
BANK1
MOVF ADRESL,W
;Cargamos la parte baja del resultado de la
;conversion
BANK0
MOVWF ADCL_TEMP
;Guardamos el resultado
;Restauramos el contexto
SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
AD_ON
BCF
PIR1,6
INT_ON
;Habilita interrupciones
RETFIE
Cdigo 10. Rutina de atencin a la interrupcin del mdulo ADC.
121
122
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
BTFSS
GOTO
MOVWF
INCF
MOVF
XORLW
BTFSS
GOTO
CLRF
INCF
BIN_BCD_2:
MOVF
GOTO
BIN_BCD_3:
ADDLW
SWAPF
IORWF
0XF6
STATUS,C
BIN_BCD_3
Temp_1
Buffer_L,F
Buffer_L,W
B'00001010'
STATUS,2
BIN_BCD_2
Buffer_L
Buffer_H,F
Temp_1,W
BIN_BCD_1
;Recuperar el dato
;Continuar la operacion
H'0A'
Buffer_L,F
Buffer_L,F
;Temporal + 0x0A
MOVF Buffer_L,W
ANDLW B'00001111'
MOVWF DIG1_BCD
;Guarda las unidades
SWAPF Buffer_L,W
ANDLW B'00001111'
MOVWF DIG2_BCD
;Guarda las decenas
MOVF ADCL,W
ANDLW B'00000111'
MOVWF DIG0_BCD
;Guarda los dcimos
RETURN
Cdigo 12. Funcin que convierte binario a BCD.
123
DIG1_BCD,W
Tabla_7seg
DIGIT1
DIGIT1,7
MOVF DIG2_BCD,W
CALL Tabla_7seg
MOVWF DIGIT2
RETURN
Cdigo 13. Convierte BCD a siete segmentos.
Tabla_7seg:
ADDWF
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
PCL,F
0X7E
0X30
0X6D
0X79
0X33
0X5B
0X5F
0X70
0X7F
0X7B
;Calcula el desplazamiento
;0
;1
;2
;3
;4
;5
;6
;7
;8
;9
PORTA,4
PORTA,5
;Selecciona el dgito 0
MOVF DIGIT0,W
MOVWF PORTC
;Visualiza en el dgito
CALL
;Espera
DELAY
BSF
PORTA,5
MOVF DIGIT1,W
MOVWF PORTC
;Selecciona el dgito 1
CALL
DELAY
;Espera
BCF
BSF
MOVF
MOVWF
PORTA,5
PORTA,4
DIGIT2,W
PORTC
CALL
DELAY
BCF
PORTA,4
BCF
PORTA,5
RETURN
;Visualizacin en el dgito
;Selecciona el dgito 2
;Visualizacin en el dgito
;Espera
;Selecciona el dgito 0
124
;Tipo de Procesador
;Definiciones de registros internos
0X00
INICIO
;Vector de Reset
ORG
GOTO
0X04
AD_INTERRUPT
ORG
0X05
INCLUDE "Temp.inc"
INICIO:
CALL
CALL
CALL
CALL
INI_VAR
INI_PORTS
INI_ADC
INI_INTERRUP
;Vector de interrupcion
;Inicializa Variables
;Configura puertos de E/S
;Configura Conversor A/D
;Inicializa la interrupcin
125
CALL
CALL
CALL
CALL
DEC_ADRES
BIN_TO_BCD
BCD_TO_7SEG
DISPLAY
GOTO
INICIO2
NOP
END
126
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
0x70
0x71
0x72
0x73
0x74
0x75
0x76
0x77
0x78
0x79
0x7a
STATUS,RP0
STATUS,RP0
ADCON0,2
INTCON,7
INTCON,7
;--------------------------------------------------------------------;DEFINICION DE SUBRUTINAS
;--------------------------------------------------------------------;INI_VAR: Inicializa las variables
INI_VAR:
CLRF Temperatura
CLRF DIGIT0
CLRF DIGIT1
CLRF DIGIT2
CLRF DIG0_BCD
CLRF DIG1_BCD
CLRF DIG2_BCD
CLRF Buffer_L
CLRF Buffer_H
CLRF Temp_1
CLRF ADCH
CLRF ADCL
RETURN
;Realiza una temporizacin de 5 ms
DELAY:
MOVLW .5
MOVWF CONTADOR
DELAY_0:
BCF
INTCON,T0IF
MOVLW 0Xf7
MOVWF TMR0
DELAY_1:
BTFSS INTCON,T0IF
GOTO DELAY_1
DECFSZ
CONTADOR,F
GOTO DELAY_0
RETURN
127
PIR1,6
;Limpia el Flag
RETURN
128
INT_ON
RETFIE
129
;Recuperar el dato
;Continuar la operacion
H'0A'
Buffer_L,F
Buffer_L,F
;Temporal + 0x0A
MOVF Buffer_L,W
ANDLW B'00001111'
MOVWF DIG1_BCD
;Guarda las unidades
SWAPF Buffer_L,W
ANDLW B'00001111'
MOVWF DIG2_BCD
;Guarda las decenas
MOVF ADCL,W
ANDLW B'00000111'
MOVWF DIG0_BCD
;Guarda los dcimos
RETURN
;BCD_TO_7SEG: Convierte un valor BCD en otro de 7 segmentos para
;visualizarlo en el display
BCD_TO_7SEG:
MOVF DIG0_BCD,W
CALL Tabla_7seg
MOVWF DIGIT0
MOVF
CALL
MOVWF
BSF
DIG1_BCD,W
Tabla_7seg
DIGIT1
DIGIT1,7
MOVF DIG2_BCD,W
CALL Tabla_7seg
MOVWF DIGIT2
RETURN
130
PCL,F
0X7E
0X30
0X6D
0X79
0X33
0X5B
0X5F
0X70
0X7F
0X7B
;Calcula el desplazamiento
;0
;1
;2
;3
;4
;5
;6
;7
;8
;9
;Visualiza en el dgito
CALL
;Espera
DELAY
BSF
PORTA,5
MOVF DIGIT1,W
MOVWF PORTC
;Selecciona el dgito 1
CALL
DELAY
;Espera
BCF
BSF
MOVF
MOVWF
PORTA,5
PORTA,4
DIGIT2,W
PORTC
CALL
DELAY
;Espera
BCF
BCF
PORTA,4
PORTA,5
;Selecciona el dgito 0
;Visualizacin en el dgito
;Selecciona el dgito 2
;Visualizacin en el dgito
RETURN
Cdigo 18. Implementacin de funciones.
131
Anexo 7:
Mdulo de Control de Temperatura
(Programa Residente en el Microcontrolador)
Para poder realizar las prcticas de la asignatura Sistemas Digitales II, el
microcontrolador de la placa debe estar cargado con el programa siguiente.
El programa est dividido en dos archivos, tal y como se explic en el apartado 5.2.4 del
captulo Memoria Descriptiva.
;Programa de medicin de temperatura mediante el conversor analogico
;digitalc disponible en el PIC16F873. Tambien se realiza la
;visualizacion del resultado en un display de 7 segmentos y 3 digitos
;PFC: ELABORACION DE MODULOS DIDACTICOS PARA MICROPROCESADORES
;Por: Antonio Miguel Zaplana Alcaraz
;Ponente: Jose Luis Ramirez Falo
;---------------------- PROGRAMA PRINCIPAL --------------------------LIST P=16f873
;Tipo de Procesador
INCLUDE "P16f873.INC"
;Definiciones de registros internos
__CONFIG
_CP_OFF
&
_WRT_ENABLE_OFF & _LVP_OFF
ORG
GOTO
0X00
INICIO
ORG
GOTO
0X04
AD_INTERRUPT
INI_VAR
INI_PORTS
INI_ADC
INI_INTERRUP
MOVLW B'00000110'
BANK1
MOVWF OPTION_REG
BANK0
&
_PWRTE_ON
&
_XT_OSC
;Vector de interrupcion
;Inicializa Variables
;Configura puertos de E/S
;Configura Conversor A/D
;Inicializa la interrupcin del conversor
;A/D
INT_ON
CALL DELAY
AD_ON
INICIO2:
MOVF
MOVWF
MOVF
MOVWF
ADCH_TEMP,W
ADCH
ADCL_TEMP,W
ADCL
CALL
DEC_ADRES
&
;Vector de Reset
ORG
0X05
INCLUDE "Temp.inc"
INICIO:
CALL
CALL
CALL
CALL
_WDT_OFF
132
ADRES_VIA
BIN_TO_BCD
BCD_TO_7SEG
DISPLAY
GOTO
INICIO2
NOP
END
_code_tmp_0000
_code_tmp_0001
_code_tmp_0002
_code_tmp_0003
_code_tmp_0004
_code_tmp_0005
_code_tmp_0006
__ret__lobyte
ADCH
ADCL
Temperatura
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
0x70
0x71
0x72
0x73
0x74
0x75
0x76
0x77
0x78
0x79
0x7a
STATUS,RP0
133
STATUS,RP0
ADCON0,2
INTCON,7
INTCON,7
;--------------------------------------------------------------------;DEFINICION DE SUBRUTINAS
;--------------------------------------------------------------------;INI_VAR: Inicializa las variables
INI_VAR:
CLRF Temperatura
CLRF DIGIT0
CLRF DIGIT1
CLRF DIGIT2
CLRF DIG0_BCD
CLRF DIG1_BCD
CLRF DIG2_BCD
CLRF Buffer_L
CLRF Buffer_H
CLRF Temp_1
CLRF ADCH
CLRF ADCL
RETURN
;Realiza una temporizacin de 5 ms
DELAY:
MOVLW .5
MOVWF CONTADOR
DELAY_0:
BCF
INTCON,T0IF
MOVLW 0Xf7
MOVWF TMR0
DELAY_1:
BTFSS INTCON,T0IF
GOTO DELAY_1
DECFSZ
CONTADOR,F
GOTO DELAY_0
RETURN
134
BANK1
MOVLW B'01000000'
MOVWF PIE1
BANK0
BCF
PIR1,6
;Limpia el Flag
RETURN
INT_ON
RETFIE
135
;Configuracin de 8 bits
ADCH,W
TEMP2
TEMP2,F
TEMP2,F
TEMP2,W
B'11000000'
TEMP2
MOVF ADCL,W
MOVWF TEMP1
136
INTERRUPCION
RETURN
ENVIA10:
MOVF
MOVWF
SWAPF
ANDLW
MOVWF
ADCL,W
TEMP1
TEMP1,W
B'00001110'
TEMP1
MOVF
MOVWF
SWAPF
ANDLW
ADCH,W
TEMP2
TEMP2,W
B'00110000'
IORWF
RRF
ANDLW
MOVWF
BSF
TEMP1,F
TEMP1,W
B'00011111'
TEMP1
TEMP1,7
MOVF ADCL,W
ANDLW B'00011111'
MOVWF TEMP2
MOVWF PORTB
CALL INTERRUPCION
TEST_CA2:
BTFSC PORTA,2
GOTO
TEST_CA2
MOVF TEMP1,W
MOVWF PORTB
CALL INTERRUPCION
TEST_CA2_2:
BTFSC PORTA,2
GOTO
TEST_CA2_2
RETURN
137
;Recuperar el dato
;Continuar la operacion
H'0A'
Buffer_L,F
Buffer_L,F
;Temporal + 0x0A
MOVF Buffer_L,W
ANDLW B'00001111'
MOVWF DIG1_BCD
;Guarda las unidades
SWAPF Buffer_L,W
ANDLW B'00001111'
MOVWF DIG2_BCD
;Guarda las decenas
MOVF ADCL,W
ANDLW B'00000111'
MOVWF DIG0_BCD
;Guarda los dcimos
RETURN
;BCD_TO_7SEG: Convierte un valor BCD en otro de 7 segmentos para
;visualizarlo en el display
BCD_TO_7SEG:
MOVF DIG0_BCD,W
CALL Tabla_7seg
MOVWF DIGIT0
MOVF
CALL
MOVWF
BSF
DIG1_BCD,W
Tabla_7seg
DIGIT1
DIGIT1,7
138
PCL,F
0X7E
0X30
0X6D
0X79
0X33
0X5B
0X5F
0X70
0X7F
0X7B
;Calcula el desplazamiento
;0
;1
;2
;3
;4
;5
;6
;7
;8
;9
;Visualiza en el dgito
CALL
;Espera
DELAY
BSF
PORTA,5
MOVF DIGIT1,W
MOVWF PORTC
;Selecciona el dgito 1
CALL
DELAY
;Espera
BCF
BSF
MOVF
MOVWF
PORTA,5
PORTA,4
DIGIT2,W
PORTC
CALL
DELAY
;Espera
BCF
BCF
PORTA,4
PORTA,5
;Selecciona el dgito 0
;Visualizacin en el dgito
;Selecciona el dgito 2
;Visualizacin en el dgito
RETURN
Cdigo 2. Fichero TEMP.INC. Implementacin de funciones.
139
Anexo 8:
Prctica de Controlador de Teclado
(Informacin Para el Alumno)
1 Enunciado de la Prctica
El objetivo de esta prctica es realizar un controlador de un teclado de ordenador, de
forma que se decodifiquen los cdigos de exploracin de las teclas pulsadas y se
visualice el carcter de dicha tecla en la pantalla del ordenador.
Para realizar esta prctica, el alumno tiene que montar el circuito elctrico que se
encuentra al final de este documento. Una vez montado y verificado el circuito, tendr
que realizar la programacin del controlador de teclado.
1.1 Material Necesario
-
1 CI MAX232
1 Conector hembra DIN 5 pins
1 Conector hembra DB25
4 Condensadores electrolticos 1uF 63V
1 Protoboard
1 Microinstructor TM-683
Un teclado de ordenador con conector DIN-5
Fuente de Alimentacin +5V
2 Estudio Previo
Estudia el esquema elctrico del circuito y responde a las siguientes cuestiones:
a) Cuantas lneas utiliza el teclado para enviar el cdigo de exploracin de las
teclas pulsadas?
b) Cul es la funcin principal del circuito integrado MAX232?
c) Qu nivel de tensin tendremos en la salida del MAX232 si en la entrada
tenemos un nivel TTL de 5V?
d) Cules son los niveles de tensin que define el protocolo RS232 para las lneas
de recepcin y transmisin de datos?
e) Cules son los cdigos de exploracin de un teclado?
140
3 Trabajo Prctico
a) Monta el circuito de la prctica en la placa protoboard.
b) Verificacin del circuito. Comprueba que para una entrada de +5V se obtiene
una salida entre 5V y 15V. Comprueba tambin que para una entrada de 0V se
obtiene una salida entre +5V y + 15V.
c) Conecta el teclado al conector DIN y conecta la lnea de datos del teclado a una
entrada del analizador lgico. Alimenta el circuito y dibuja la trama de bits que
aparece cuando se pulsa una tecla. Seala cules son el bit de inicio, los bits de
datos, el bit de paridad y el bit de parada.
d) Conecta el circuito montado al conector del Canal A del microinstructor. Realiza
un programa que sea capaz de leer los cdigos de exploracin de las teclas
pulsadas y visualice los caracteres en la pantalla del ordenador.
4 Informacin Tcnica
El esquema elctrico del circuito que se encuentra al final de este documento. En l se
pueden observar las siguientes partes:
En primer lugar, un conector tipo DIN hembra de cinco contactos para la conexin del
teclado. En la Figura 1 se puede observar el aspecto de este conector.
En la Tabla 1 se explican las funciones de cada uno de los contactos del conector DIN
de cinco contactos.
Pin
Seal
1
Reloj
2
Datos
3
Reset
4
Masa
5 Vcc (+5V)
Tabla 1. Seales del conector
DIN 5
Por los contactos 1 y 2 circulan las seales de reloj y datos respectivamente. Estas dos
lneas son bidireccionales de colector abierto y niveles TTL. En nuestro caso la
comunicacin ser asncrona por lo que la lnea de reloj no se conectar.
141
Por la lnea de datos, el teclado enva los cdigos de exploracin de las teclas pulsadas
con el siguiente formato:
-
Un bit de inicio
Ocho bits de datos correspondientes al cdigo de exploracin de la tecla pulsada
empezando por el bit menos significativo.
Un bit de paridad impar
Un bit de parada.
De los veinticinco contactos disponibles, slo se utilizan dos; el contacto nmero tres
para la recepcin de datos del teclado y, el contacto nmero siete para la conexin al
nodo de referencia.
Por ltimo, tenemos un circuito integrado tipo MAX232 cuya funcin es la de adaptar la
seal de datos enviada por el teclado con niveles TTL, al nivel de tensin que define el
protocolo RS-232, que es el usado por el micoinstructor para comunicaciones serie. Este
protocolo define los niveles de tensiones descritos en la Tabla 3.
0 Lgico
1 Lgico
+3V a +25V
-3V a 25V
(b)
Tabla 3. Niveles lgicos RS-232, (a) para las salidas, (b) para las entradas
142
Cdigo
Hex. Dec.
2B
43
2C
44
2D
45
2E
46
31
49
32
50
33
51
34
52
35
53
36
54
3
58
3B
59
3C
60
3D
61
3E
62
41
65
Tecla
F
T
R
5
N
B
H
G
Y
6
M
J
U
7
8
,;
143
Cdigo
Tecla
Hex. Dec.
42
66
K
43
67
I
44
68
O
45
69
0
46
70
9
49
73
.:
4A
74
-_
4B
75
L
4C
76
4D
77
P
4E
78
?
5A
90
INTRO
5D
93
76
118 ESCAPE
Paridad Impar
Ocho bits por carcter
Un bit de parada
Control de RxRTS = NO
Seleccin de RxINT por RxRDY
Modo de error por carcter
Modo de canal normal
Control de RxRTS = NO
Control de Tx por CTS = NO
Modo y reloj del Timer = TIMER (X1/CLK)
Interrupciones generadas por cambio en IP3, IP2, IP1, IP0 = NO
Valor de inicio del Timer = 0x0009
Velocidad de recepcin por Timer
Interrupciones habilitadas: RxRDYA
144
Anexo 9:
Prctica de Controlador de Teclado
(Solucin de la Prctica)
1 Enunciado de la Prctica
El objetivo de esta prctica es realizar un controlador de un teclado de ordenador, de
forma que se decodifiquen los cdigos de exploracin de las teclas pulsadas y se
visualice el carcter de dicha tecla en la pantalla del ordenador.
Para realizar esta prctica, el alumno tiene que montar el circuito elctrico que se
encuentra al final de este documento. Una vez montado y verificado el circuito, tendr
que realizar la programacin del controlador de teclado.
1.1 Material Necesario
-
1 CI MAX232
1 Conector hembra DIN 5 pins
1 Conector hembra DB25
4 Condensadores electrolticos 1uF 63V
1 Protoboard
1 Microinstructor TM-683
Un teclado de ordenador con conector DIN-5
Fuente de Alimentacin +5V
2 Estudio Previo
Estudia el esquema elctrico del circuito y responde a las siguientes cuestiones:
a) Cuantas lneas utiliza el teclado para enviar el cdigo de exploracin de las
teclas pulsadas?
El teclado utiliza una lnea para enviar el cdigo de exploracin de las teclas pulsadas.
Adems, utiliza otra lnea para enviar una onda cuadrada para sincronizar los datos
enviados.
b) Cul es la funcin principal del circuito integrado MAX232?
La funcin principal del circuito integrado MAX232 es la de adaptar los niveles de
tensin de las seales TTL a los niveles de tensin establecidos por el protocolo RS232.
146
d) Cules son los niveles de tensin que define el protocolo RS232 para las lneas
de recepcin y transmisin de datos?
Los niveles de tensin que define el protocolo RS232 son los siguientes:
0 Lgico
+3V a +25V
1 Lgico
-3V a 25V
(b) entradas
Cdigo
Hex. Dec.
2B
43
2C
44
2D
45
2E
46
31
49
32
50
33
51
34
52
35
53
36
54
3
58
3B
59
3C
60
3D
61
3E
62
41
65
147
Tecla
F
T
R
5
N
B
H
G
Y
6
M
J
U
7
8
,;
Cdigo
Tecla
Hex. Dec.
42
66
K
43
67
I
44
68
O
45
69
0
46
70
9
49
73
.:
4A
74
-_
4B
75
L
4C
76
4D
77
P
4E
78
?
5A
90
INTRO
5D
93
76
118 ESCAPE
Trabajo Prctico
a) Monta el circuito de la prctica en la placa protoboard.
b) Verificacin del circuito. Comprueba que para una entrada de +5V se obtiene
una salida entre 5V y 15V. Comprueba tambin que para una entrada de 0V
se obtiene una salida entre +5V y + 15V.
Para una entrada de +5V, se obtiene una salida de aproximadamente 5V (-4,8V). Para
una entrada de 0V se obtiene una salida de aproximadamente 5V (4,95V). Los niveles
de tensin obtenidos son ligeramente inferiores a los marcados por el estndar RS232
pero son suficientes para un buen funcionamiento.
c) Conecta el teclado al conector DIN y conecta la lnea de datos del teclado a una
entrada del analizador lgico. Alimenta el circuito y dibuja la trama de bits que
aparece cuando se pulsa una tecla. Seala cules son el bit de inicio, los bits de
datos, el bit de paridad y el bit de parada.
Al pulsar la tecla INTRO se visualiza en el analizador lgico la siguiente trama de bits,
correspondientes al cdigo de exploracin de teclado nmero 90 (0x5A).
148
;REGISTROS DE LA DUART
DUART EQU
MR1A EQU
MR2A EQU
SRA
EQU
CSRA EQU
CRA
EQU
RBA
EQU
TBA
EQU
IPCR EQU
ACR
EQU
ISR
EQU
IMR
EQU
CUR
EQU
CTUR EQU
CLR
EQU
CTLR EQU
MR1B EQU
MR2B EQU
SRB
EQU
CSRB EQU
CRB
EQU
RBB
EQU
TBB
EQU
IVR
EQU
OPRS
EQU
STRCONT EQU
STPCONT EQU
$60041
DUART+0
DUART+0
DUART+2
DUART+2
DUART+4
DUART+6
DUART+6
DUART+8
DUART+8
DUART+10
DUART+10
DUART+12
DUART+12
DUART+14
DUART+14
DUART+16
DUART+16
DUART+18
DUART+18
DUART+20
DUART+22
DUART+22
DUART+24
DUART+28
DUART+28
DUART+30
KEYB_STATUS EQU
EX
SHIFTD
SHIFTI
CLOCK
CTRL
ALT
REENVIO
ACK
OVERF
FALLO
BAT
ECO
ESC
SUELTA
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
$25500
$E0
$59
$12
$58
$14
$00
$FE
$FA
$00
$FD
$AA
$EE
$76
$F0
;Extended code
;Right Shift code
;Left Shift code
;Caps Lock code
;Control Code
;Alt code
;Comando de reenvio
;Dato aceptado
;Desbordamiento
;Fallo en teclado
;Inicio acabado
;Tecla de Escape
;Codigo Break
149
$25000
#4,KEYB_STATUS
FINAL
BTST
#5,KEYB_STATUS
BEQ
LOOP
JSR
BCLR
JMP
PUTCHAR
#5,KEYB_STATUS
LOOP
;Visualiza el caracter
FINAL:
MOVE.B
TRAP #5
#$00,IMR
;*************************************************************
;
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
BEQ
MOVE.B
RTS
PUTCHAR
D0,TBB
;Comprueba si el transmisor
;esta preparado
;NO esta preparado
;SI. Envia el caracter
150
D1
#0,A1
RBA,D1
CMPI.B
BEQ
#SUELTA,D1
SOLTADA
CMPI.B
BEQ
#SHIFTD,D1
SHIFT
CMPI.B
BEQ
#SHIFTI,D1
SHIFT
CMPI.B
BEQ
#CLOCK,D1
SHIFT
CMPI.B
BEQ
#CTRL,D1
CONTROL
CMPI.B
BEQ
#ALT,D1
ALT_KEY
CMPI.B
BEQ
#ESC,D1
ESCAPE
CMPI.B
BEQ
#OVERF,D1
EOI
BTST
BNE
#6,KEYB_STATUS
BRAKE
BTST
BNE
#1,KEYB_STATUS
MAYUSCULA
BTST
BNE
BTST
BNE
BTST
BNE
#0,KEYB_STATUS
EX_OFF
MOVEA.L
#TABLA_MIN,A1
;Esta ex activado?
;Si. Fin de la interrupcion
151
D1,A1
MOVE.B
(A1),D0
BSET
#5,KEYB_STATUS
;Visualizar Caracter
EOI:
RTE
EXTENDIDA:
BSET
RTE
#0,KEYB_STATUS
EX_OFF:
BCLR
RTE
#0,KEYB_STATUS
CONTROL:
BCHG
RTE
#3,KEYB_STATUS
ALT_KEY:
BCHG
RTE
#2,KEYB_STATUS
ESCAPE:
BSET
RTE
#4,KEYB_STATUS
MAYUSCULA:
BTST
BNE
#0,KEYB_STATUS
EX_OFF
;Esta ex activado?
;Si. Fin de la interrupcion
BTST
BNE
BTST
BNE
MOVEA.L
ADDA.L
#TABLA_MAY,A1
D1,A1
;Calcula el indice de la tabla
MOVE.B
(A1),D0
BSET
#5,KEYB_STATUS
RTE
SHIFT:
BCHG #1,KEYB_STATUS
RTE
SOLTADA:
BSET
RTE
#6,KEYB_STATUS
152
#6,KEYB_STATUS
CMPI.B
BEQ
EOI
CMPI.B
BEQ
EOI
CMPI.B
BEQ
EOI
#FALLO,D1
CMPI.B
BEQ
EOI
#BAT,D1
CMPI.B
BEQ
EOI
#ECO,D1
CMPI.B
#SHIFTD,D1
BEQ
SHIFT
CMPI.B
#SHIFTI,D1
BEQ
SHIFT
CMPI.B
#CTRL,D1
BEQ
CONTROL
CMPI.B
#ALT,D1
BEQ
ALT_KEY
BTST
BNE
BCLR
#0,KEYB_STATUS
EX_OFF
;Esta ex activado?
;Si. Fin de la interrupcion
#5,KEYB_STATUS
RTE
;Tablas de codigos de caracteres
TABLA_MIN DB
nbhgy6
mju78
'
,kio09
',9,'
.-lp',39,'
TABLA_MAY DB
NBHGY&
MJU/(
'
;KIO=)
:_LP?
',9,'
q1
zsaw2 cxde43
',13,' ',$0
!
Q!
',13,'
ZSAW"
',$0
CXDE$
vftr5
VFTR%
NOP
END
Cdigo 1. Solucin de la Prctica de Controlador de Teclado.
6
5
BREAK VISUALIZAR
CARCTER
4
ESC
153
3
CONTROL
2
ALT
1
SHIFT
0
EX
154
Referencias
[1] HITACHI HD44780U
[2] PIC 16F873
[3] Funcionamiento del
Teclado
[4] MAX232
[5] DUART MC68HC681
[6] Software P16Pro
http://semiconductor.hitachi.com/hd44780.pdf 30-08-2002
http://www.microchip.com/download/lit/pline/picmicro/families/16f87x/30292c.pdf
30-08-2002
http://atc.ugr.es/docencia/udigital/index.html 30-08-2002
http://pdfserv.maxim-ic.com/arpdf/MAX220-MAX249.pdf 30-08-2002
http://e-www.motorola.com/brdata/PDFDB/docs/MC68681UM.pdf 30-08-2002
http://www.picallw.com/zip/p16pr364.zip 30-08-2002
155