Sie sind auf Seite 1von 5

Multiplexaje de Display

Feb2320

En muchas ocasiones se requiere mostrar nmeros en el display de ms de un dgito, es


decir, 2, 3, o 4 dgitos. (Ver con 1 solo display).
Si se pretende controlar cada display, se necesitan siete (7) lneas del microcontrolador
por cada uno, esto ocupara todas las lneas disponibles en cada puerto del
microcontrolador, sin embargo existe una tcnica llamada multiplexaje que consiste en
conectar a las mismas 7 lneas los 2,3 o 4 display e ir encendiendo uno a uno los display, a
travs de un transistor, tan rpidamente que parece encenderse todos al mismo tiempo.

Cualquier elemento que se encienda y apague con una frecuencia mayor a 25Hz
es imperceptible para el ojo humano, ste lo ver encendido en todo momento.

Nota: los segmentos de cada display van unidos entre s, es decir a con a, b con b, hasta el
g con g, por cada display adicional se necesita un transistor y slo una lnea ms del
microcontrolador.
En este diagrama se asume que las unidades estn en el display de la derecha y las
decenas en el display de la izquierda.
Ejemplo 1
Realizar un temporizador de 0 a 99 que incremente cada segundo.

Cdigo del Microcontrolador


TEMPORIZADORES CON PIC
El microcontrolador PIC16F887 tiene 3 temporizadores:
1. Timer 0 (8 bits)
2. Timer 1(16 bits)
3. Timer 2(8 bits)
A pesar del Timer 0 ser de 8 bits es el temporizador principal.
El Timer 0 tambin llamado RTCC se puede cargar con un valor cualquiera entre 0 y 255
y puede ser incrementado a travs del Reloj interno y dividido por un valor que se puede
escoger entre los que se indican a continuacin:

1 RTCC_DIV_2, RTCC_DIV_4, RTCC_DIV_8,


2 RTCC_DIV_16, RTCC_DIV_32,
3 RTCC_DIV_64, RTCC_DIV_128,
4 RTCC_DIV_256.

La interrupcin RTCC se produce cada vez que el contador TIMER0 pasa de 255 para 0.
Ya hemos trabajado anteriormente nuestros proyectos con cristales de cuarzo. Recordemos
lo siguiente:
Todo microcontrolador requiere un circuito externo que le indique la velocidad a la que debe
trabajar. Este circuito, que se conoce como oscilador o reloj, es muy simple pero de vital
importancia para el buen funcionamiento del sistema. El PIC16F887 puede utilizar cuatro
tipos de oscilador diferentes. Estos tipos son:
RC. Oscilador con resistencia y condensador.
XT. Cristal.
HS. Cristal de alta velocidad.
LP. Cristal para baja frecuencia y bajo consumo de potencia.
Si se trabaja el Microcontrolador con un cristal de 4 Mhz, esta frecuencia se
divide internamente por 4, es decir realmente trabaja a 1Mhz, o sea que cada ciclo de
reloj dura aproximadamente 1 microsegundo.

Para entender el funcionamiento del Timer 0, como ejemplo se supone que se


necesita generar una interrupcin cada 20 ms. (20.000 microsegundos).

Qu frmula usar para determinar con que valor se debe cargar inicialmente el Timer 0 y
que valor de preescaler o divisin se debe utilizar?

La frmula para aplicar es la siguiente recordando que primero debemos pasar el tiempo de
temporizacin a microsegundos es:

Sin embargo se debe tener en cuenta que la interrupcin solo se genera cuando el timer
pasa de 255 a 0, esto quiere decir que debemos restarle al valor total del timer (256) el
valor de carga inicial que tenga el Timer 0:
256 Valor inicial del Timer 0

Ya habiamos dicho que el valor del Timer 0 puede ser dividido (preescaler) por un valor
aplicando alguna de las instrucciones citadas al comienzo del post. Cuando nosotros
seleccionemos dicho preescaler o divisin, se debemos tratar de obtener un valor
entero al dividir el tiempo del retardo sobre el preescaler. Este valor no puede ser mayor
a 256. En caso de ser mayor, significa que antes de cumplir el retardo el Microcontrolador
habr generado ms de una interrupcin.

En este caso se combina entonces la programacin del Timer 0 y cada vez que el Timer 0
genere una interrupcin se decrementa un contador tantas veces como sea necesario hasta
completar el tiempo de temporizacin.

Finalmente el procedimiento que se debe seguir para calcular el valor inicial del timer y el
valor del contador a decrementar es el siguiente, suponiendo que escogemos un preescaler
de 8
1 RTCC_DIV_8

Vemos entonces que se gener un valor mayor a 255, por lo tanto es necesario calcular
cuantas veces debe generarse una interrupcin (a travs de un contador) antes de
completar el retardo de 20 milisegundos.

El resultado de la divisin anterior debe ser igual a:

2500=valor inicial del timer * valor del contador a decrementar

Vemos que tenemos dos incoginitas, esas dos incognitas pueden ser valores aleatorios
inferiores a 256. Por ejemplo: 10 y 250. Aqui puedo escoger cualquiera de los dos valores
para que sea el Valor Inicial del Timer (10)
Posterior a esta multiplicacin, se hace:

256 Valor inicial del timer 0

256-10=246

Con esto tengo que mi timer o RTCC es 246 y que mi contador debe contar hasta 250.
Ejemplo Timer de 1 segundo.
Para un retardo de un segundo, con preescaler de 256, se procede de la siguiente manera:

Paso el tiempo a microsegundos:


1 segundo = 1000000 microsegundos

CargaT=1000000/RTCC_DIV_X

X = Este valor puede ser cualquiera de los indicados al principio, el que se elija ser con el
que se seguir trabajando en la programacin. En este caso el RTCC escogido es 256.

1000000/256 = 3906.25 aproximadamente 3906

El valor anterior, es decir 3906 debe ser igual a la multiplicacin entre el valor inicial del timer
0
y el valor del contador a decrementar.
3906= valor inicial del timer * valor del contador a decrementar

Observacin: estos dos valores son aleatorios y deben ser menores a 256.
3906 = 18 * 217

Cualquiera de estos dos valores pueden ser el valor inicial del timer 0. En este caso, se
elige 18 como valor inicial del timer 0. Al obtener el valor inicial del timer 0 se debe restar el
RTCC utilizado, en este caso 256 para obtener el nmero donde el temporizador debe iniciar
para que en el momento que incremente las 18 veces llegue al valor del RTCC utilizando
(256) y produzca la interrupcin salto. Es decir:

RTCC Valor inicial del timer


256 18 = 238

Ya con estos valores, tenemos el valor que debemos cargar en el Timer y el valor que
debemos cargar en el contador. Quedara de la siguiente manera:

RTCC=238
Contador=217
As tendriamos el temporizador para 1 segundo, porque el RTCC se carga con 238, cada
ciclo de reloj, va incrementando y cuando llega a 256 (Pasados 18 ciclos de reloj),
decrementa el contador en 1 unidad, y vuelve y carga el RTCC con 238. As nuevamente el
RTCC va incrementando y cuando llega a 256 vuelve y decrementa en 1 unidad el contador.
Cuando el contador por fin llegue a Cero (0), quiere decir que ya paso 1 segundo (1000000
micro segundos).

EJEMPLO 1
Realizar un temporizador de 0 a 60 segundos

Das könnte Ihnen auch gefallen