Sei sulla pagina 1di 9

ELECTRONICA INDUSTRIAL

Grado en Ingeniera en Tecnologas Industriales

Prctica 4

Control de displays 7 segmentos y temporizadores

Guin de prcticas realizado por Carlos Ruiz


Profesores: Patxi Arregui, Carlos Ruiz, Idoya Castells
Curso 2012-2013

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

Prctica 4. Displays 7 segmentos y temporizadores

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

Prctica 4. Displays 7 segmentos y temporizadores

3.- PLACA DE DISPLAYS


3.1.- TEORA
Para realizar esta prctica vamos a utilizar la placa de displays que aparece en la figura 3.1.

Figura 3.1: Placa de displays de 7 segmentos


El esquema elctrico de los elementos de la tarjeta que se utilizarn en esta prctica se
representa en la figura 2.1.
Mediante la utilizacin de cables deberemos realizar las conexiones entre los puertos del
microcontrolador y los terminales T1-T4 (conector 4) que activarn cada uno de los displays.
Los terminales Vcc (conector 2) y GnD (conector 3) se pueden utilizar como entradas 1 y 0
respectivamente en caso de ser necesario.
La conexin de los puertos de salida del microcontrolador PIC (PORTD) con los displays de 7
segmentos se realiza a travs del buffer inversor 74LS540 y de una resistencia segn se muestra
en la Figura 3.2. As pues, el valor que reciba el display ser el inverso del que mandemos
por el PORTD.
Por lo tanto habr que tener en cuenta esta caracterstica y a la hora de enviar el dato al PORTD
habr que mandar el dato en cdigo 7SEG previamente complementado como se muestra en
la tabla 3.1.

ELECTRONICA INDUSTRIAL

Prctica 4. Displays 7 segmentos y temporizadores

Figura 3.2: Conexin de los puertos de salida con los displays.

HEX h g f e d c b a 7SEG 7SEG


0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

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

Prctica 4. Displays 7 segmentos y temporizadores

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:
-

TMR0 es un Contador/Temporizador de 8 bits


Legible y escribible
Reloj interno o externo
Seleccin del flanco en el reloj externo
Predivisor de la frecuencia de reloj programable
Generacin de interrupcin opcional de desbordamiento

4.1.1.- Registro TMR0


El registro TMR0 se comporta como un registro de propsito general (SFR) y puede ser ledo y
escrito en cualquier momento al estar conectado al bus de datos. Est ubicado en la direccin 1
de los bancos 0 y 2 de la memoria de datos. El registro TMR0 almacenar el valor de los
impulsos que se quiere temporizar en complemento a 2. De esta manera, al llegar al nmero de
impulsos deseado, se desborda, y al pasar por 00h, se activa el sealizador T01F que generar
una interrupcin, siempre y cuando estn activadas (ver registro INTCON de teora o apartado
4.1.3).
Para calcular los tiempos a controlar con TMR0 se utiliza la siguiente frmula:

Temporizacin = 4Tosc(256-Valor cargado en TMR0)(Rango del divisor)


o expresado de otra forma, el valor a cargar en TMR0, ser:

TMR0 = 256-{Temporizacin/(4Tosc)Rango del divisor)}

Nota: En nuestro caso la frecuencia del oscilador es Fosc = 1/Tosc = 4 MHz

4.1.2.- Registro de Opciones (OPTION_REG)


5

ELECTRONICA INDUSTRIAL

Prctica 4. Displays 7 segmentos y temporizadores

El registro de opciones OPTION_REG se comporta como un registro de propsito general (SFR) y


puede ser ledo y escrito en cualquier momento al estar conectado al bus de datos. Est ubicado
en la direccin 1 de los bancos 1 y 3 de la memoria de datos. La misin principal de este
registro, entre otras, es gobernar el TMR0 y el divisor de frecuencia y la funcin de cada uno de
sus bits se comenta en la Tabla 4.1 (ver teora).

Tabla 4.1: Descripcin de los bits del registro OPTION_REG

4.1.3.- Interrupciones: el registro INTCON


El comportamiento del microcontrolador ante una interrupcin es similar al de la instruccin CALL
de la llamada a subrutina. En ambos casos se detiene la ejecucin del programa en curso, se
salva la direccin actual del PC en la Pila y se carga el PC con una direccin, que en el caso de
CALL viene acompaando a la propia instruccin, y en el caso de una interrupcin, es una
direccin reservada de la memoria de cdigo llamada Vector de Interrupcin.
En el PIC16F877A, el Vector de Interrupcin se halla situado en la direccin 0004h, en donde
comienza la Rutina de Atencin a la Interrupcin (RAI). En general, en dicho Vector se suele
colocar una instruccin de salto incondicional (GOTO) que traslada el flujo de control a la zona de
la memoria de cdigo destinada a contener la rutina de atencin a la interrupcin. LA RAI suele
comenzar guardando en la memoria de datos algunos registros especficos del procesador.
Concretamente, aquellos que la RAI va a emplear y va a alterar su contenido. Antes del retorno al
programa principal, se recuperan los valores guardados y se restaura completamente el estado
del procesador (STATUS). Algunos procesadores salvan estos registros en la Pila, pero los PIC no
disponen de instrucciones para meter (push) y sacar (pop) informacin de la Pila, utilizando para
este fin registros de propsito general de la memoria de datos.
Todos los PIC de clase media usan al menos un registro de funciones especiales para controlar
las interrupciones: el registro INTCON. Adems los PIC16F87x disponen de ms causas que
provocan interrupcin y que se controlan con los registros de permiso o prohibicin de
interrupcin, PIE1 y PIE2, y los registros sealizadores de interrupcin, PIR1 y PIR2 (ver teora).
El registro INTCON es un registro legible y escribible que, para facilitar su acceso, se halla
duplicado en los cuatro bancos, ocupando las direcciones 0Bh, 8Bh, 10Bh y 18Bh,
6

ELECTRONICA INDUSTRIAL

Prctica 4. Displays 7 segmentos y temporizadores

respectivamente. Tiene la misin de controlar las interrupciones provocadas por el TMR0 entre
otras y su configuracin se detalla en la Tabla 4.2.

Tabla 4.2: Descripcin de los bits del registro INTCON

ELECTRONICA INDUSTRIAL

Prctica 4. Displays 7 segmentos y temporizadores

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).

El terminal RA0 (PORTA 0) con el terminal T1 del conector 4 (TRT) (display 1)


El terminal RA1 (PORTA 1) con el terminal T2 del conector 4 (TRT) (display 2)
El terminal RA2 (PORTA 2) con el terminal T3 del conector 4 (TRT) (display 3)
El terminal RA3 (PORTA 3) con el terminal T4 del conector 4 (TRT) (display 4)

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

Prctica 4. Displays 7 segmentos y temporizadores

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

Potrebbero piacerti anche