Professional Documents
Culture Documents
Prctica 4
ndice
1.- OBJETIVO ................................................................................................................................. 2
2.- DESARROLLO .......................................................................................................................... 2
3.- PLACA DE DISPLAYS............................................................................................................... 3
3.1.- TEORA............................................................................................................................... 3
4.- TEMPORIZADORES/CONTADORES ....................................................................................... 5
4.1.- TEORA............................................................................................................................... 5
4.1.1.- Registro TMR0 ................................................................................................................. 5
4.1.2.- Registro de Opciones (OPTION_REG)............................................................................. 5
4.1.3.- Interrupciones: el registro INTCON................................................................................... 6
5.- EJEMPLOS ............................................................................................................................... 8
6.- EJERCICIOS ............................................................................................................................. 9
6.1.- EJERCICIO 1 ...................................................................................................................... 9
6.2.- EJERCICIO 2 ...................................................................................................................... 9
ELECTRONICA INDUSTRIAL
1.- OBJETIVO
Trabajar con los puertos de entrada y salida del PIC para controlar/iluminar varios displays de 7
segmentos mediante la ayuda de rutinas de retardo y del temporizador interno TMR0.
2.- DESARROLLO
Siguiendo las instrucciones del apartado de teora se configurar la placa para poder conectarla a
los displays de 7 segmentos (con punto decimal) cuyo funcionamiento se explica en la parte de
teora. A partir de ah, se crear el programa a partir del fichero fuente en lenguaje ensamblador
que se facilita a continuacin. En esta prctica se observar el funcionamiento del PIC para el
control de dispositivos externos mediante la utilizacin de sus puertos de E/S y la generacin de
interrupciones utilizando el temporizador.
La placa de entrenamiento PICDEM2 PLUS y la placa de displays aportarn los elementos y la
electrnica necesaria sobre la que se probarn los programas. En los ejemplos que se
presentarn a continuacin y en los posteriores ejercicios de esta prctica se utilizar el PORTD
para activar los segmentos de los displays y el PORTA (RA0-RA3) se podr utilizar para
seleccionar los displays que sean necesarios.
Adems, tambin se contar con los dos pulsadores que estarn conectados al pin 4 del puerto A
y al pin 0 del puerto B respectivamente segn se muestra en el esquema de la figura 2.1.
RD6
RD5
PortD
RD4
RD3
RD2
RD1
BUFFER INVERSOR
74LS540
220
RD7
h
g
f
e
d
c
b
a
RD0
h
Display 4
TDSR
5160
PIC16F877A
a
f
PortA
RA2
Display 1
TDSR
5160
TDSR
5160
c
d
RA3
Display 2
TDSR
5160
g
e
47
Display 3
CC
CC
CC
CC
T4
BC548
T3
BC548
T2
BC548
BC548
T1
RA1
RA0
RA4
PortB
RB0
P1
P2
Figura 2.1.- Ejemplo de conexin del microcontrolador PIC16F877A con los displays.
ELECTRONICA INDUSTRIAL
ELECTRONICA INDUSTRIAL
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
0
1
1
1
1
0
1
1
1
1
0
0
0
1
1
1
0
1
1
1
1
1
0
1
1
1
0
1
0
0
0
1
0
1
0
1
1
1
1
1
1
1
0
1
1
0
1
1
0
1
0
0
1
1
1
1
0
1
1
0
1
1
1
1
1
1
1
1
1
0
1
0
0
1
1
1
1
1
0
0
1
1
1
1
0
0
1
0
0
1
0
1
1
0
1
1
1
1
1
1
0
1
0
1
1
3F
06
5B
4F
66
6D
7D
07
7F
67
77
7C
39
5E
79
71
C0
F9
A4
B0
99
92
82
F8
80
98
88
83
C6
A1
86
8E
Tabla 3.1: Representacin de los dgitos 0-F en cdigo 7 segmentos, binario y hexadecimal.
El ctodo comn de cada display se conecta al colector de un TRT NPN, cuya base se une, a travs
de una resistencia a un terminal del conector 2. As pues, deberemos cablear una salida del
microcontrolador para activar cada uno de los displays. As pues, cuando queramos activar el
display 1, pondremos a "1" la salida conectada a T1 (por ejemplo RA0), para activar el display 2,
pondremos a 1 la salida conectada a T2 (por ejemplo RA1). Hay que tener en cuenta que la
informacin enviada por el PORTD llegar a todos los displays que estn activos (con su terminal Tx
a 1).
ELECTRONICA INDUSTRIAL
4.- TEMPORIZADORES/CONTADORES
4.1.- TEORA
Una de las labores ms habituales en los programas de control de dispositivos suele ser
determinar intervalos concretos de tiempo, recibiendo el nombre de temporizador (timer) el
elemento encargado de realizar esta funcin. Tambin suele ser frecuente contar los impulsos que
se producen en el exterior del sistema, denominndose contador el elemento destinado a este fin.
Si las labores del temporizador o contador las asignamos al programa principal, robaran mucho
tiempo al procesador en detrimento de actividades ms importantes. Por este motivo se disean
recursos especficos que se ocupan de estas funciones.
Los PIC16F87x disponen de un potente conjunto de temporizadores para manejar eficientemente
todas las operaciones que involucran cuentas de tiempo. Dichos temporizadores son tres y se
denominan tcnicamente TMR0, TMR1 y TMR2, cada uno con sus caractersticas (ver apartado
de teora).
El TMR0 es un temporizador que se controla mediante los registros de propsito general (SFR),
TMR0 y OPTION_REG y cuyas funciones ms representativas son:
-
ELECTRONICA INDUSTRIAL
ELECTRONICA INDUSTRIAL
respectivamente. Tiene la misin de controlar las interrupciones provocadas por el TMR0 entre
otras y su configuracin se detalla en la Tabla 4.2.
ELECTRONICA INDUSTRIAL
5.- EJEMPLOS
En este ejemplo comprobaremos el correcto funcionamiento de los displays, es decir, si se
encienden y apagan todos los segmentos. Para ello deberemos cablear las conexiones que se
indican ms abajo (ver Figura 3.1).
A continuacin se presenta el cdigo y los comentarios del programa que enciende y apaga los
displays 7 segmentos cada 100ms.
PROGRAMA FUENTE: Comprobacin de displays 7 segmentos
#include <htc.h> //Incluimos libreria del micro a usar
__CONFIG(WRT_OFF & WDTE_OFF & PWRTE_OFF & FOSC_XT & LVP_OFF);
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
//WRT_OFF = Codigo no Potegido
//WDTE_OFF = Watch Dog Timer Desactivado
//PWRTE_OFF = Power Activado
//FOSC_XT = Osiclador cristal
//LVP_OFF = Low Voltage Porgramming Desactivado
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
#define _XTAL_FREQ 4000000 //Oscilador Interno de 4MHZ
//Arreglo de 1 byte que contiene los cdigos 7 SEG
// para apagar y encender los displays
unsigned char mostrar[]={0x00,0xff};
//Variable para el ciclo FOR
unsigned char x;
void main(void){
//Puerto D como salida
TRISD=0x00;
//Puerto RA0-RA3 como salida y RA0-RA3 activado
TRISA=0xF0;
PORTA=0x0F;
GIE=0; //INTERRUPCIONES GLOBALES DesACTIVADAS
PEIE=0; //DesACTIVA INTERURPCIONES POR PERIFERICOS
while(1){
for(x=0;x<2;x++){ //Ciclo for
PORTD=mostrar[x]; //Saca el valor que correponde al puerto D
__delay_ms(100); //LLama a la funcion de retardo de 1seg
}
}
}
ELECTRONICA INDUSTRIAL
6.- EJERCICIOS
6.1.- EJERCICIO 1
A partir del programa del ejemplo 1 realice un programa que muestre por el Display 1 los nmeros
hexadecimales desde el 0 hasta F cambiando de dgito cada segundo. Cuando llegue a F
volver a comenzar desde 0. (Ver teora Temporizador TMR0).
a) Realizar el ejercicio utilizando las interrupciones generadas por el temporizador TMR0 para
calcular el retardo.
b) Modificar el programa anterior de manera que permita ajustar el predivisor del TMR0 (PS2PS1-PS0) mediante las entradas RA3=PS2; RA2=PS1; RA1=PS0.
6.2.- EJERCICIO 2
Debido a la persistencia visual de la retina, no es necesario presentar la informacin luminosa de los
displays de forma permanente. Basta con ir iluminndolos (refrescndolos) uno a uno con una
frecuencia suficiente (50Hz). Es decir, para evitar la sensacin de parpadeo, nos valdra con iluminar
cada uno de ellos una vez cada 20 mseg. As, se podr utilizar una rutina de retardo para realizar el
refresco de los displays o un temporizador que genere una interrupcin cada 5 ms para cambiar el
display activo. Habr que prestar especial atencin en activar nicamente un display cada vez dado
que el dgito aparecer representado en todos los displays que se encuentren activos.
Partiendo del programa realizado en el ejercicio anterior se deben realizar las modificaciones
oportunas para mostrar en los 4 displays de 7 segmentos un reloj que muestre minutos y
segundos en el formato indicado en la figura inferior (el segundo display deber activar el punto):
.
a) El reloj deber contar minutos y segundos hasta un mximo de 59:59
b) Implementar a partir del programa del apartado anterior la funcin de STOP, de forma que
cuando se accione el pulsador conectado a RB0 se detenga el reloj hasta que se produzca
una nueva pulsacin.
Nota: Se recomienda utilizar una variable de ESTADO, que indique el estado del relos
(parado/funcionando).
IMPORTANTE
a) Mostrar al tutor del laboratorio el funcionamiento de los ejercicios.
b) Entregar con la prctica la explicacin del ejercicio y los archivos de cdigo.
c) Los ficheros de cdigo debern incluir los comentarios correspondientes