Sei sulla pagina 1di 15

CIRCUITOS DIGITALES

Cronometro con PIC16F874A


Lipuma Daniel F.

RESUMEN
En este practico estudiamos la implementacin de un cronometro mediante programacin realizada en lenguaje Assembler sobre el PIC 16 !"A# compilado en MP$A% !&1# mediante " displa's de siete segmentos (nodo com)n con pulsador de stop*reset&

Cronometro P(gina

+ ,igitales III

INTRODUCCION

A continuacin se mostrara como se realizara el cronometro con pulsador de stop*reset# para ello se emplear(n " displa's de siete segmentos para cent.simas# d.cimas# unidades ' decenas de segundos respecti/amente El problema planteado es 0ue al encender el cronometro se /isualicen los displa's en cero# luego al presionar por primera /ez 0ue comience a contar# al presionar por segunda /ez se detenga la cuenta mostrando est(ticamente la misma lle/ada a cabo# ' 0ue al pulsar nue/amente se /uel/a a cero ' arran0ue El programa se logra bajo la utilizacin b(sicamente de interrupciones para realizar el mismo# la programacin en MP$A% !&1# en lenguaje Assembler # la grabacin del programa mediante Pic1it- ' la implementacin del mismo sobre el PIC 16 !"A&

Cronometro P(gina

+ ,igitales III

DIAGRAMA EN BLOQUE
Inicializacin de /ariables Inicio

,e3ino Puertos Con3iguro 4PTI45RE6 e I5TC45 %orro %andera de Control de 1ms

Interrupcin

R%0

Testeo si es por R%0 o TMR0

TMR0

Cargo TMR0708!9eteo %andera de Control de 1ms

Testeo bandera del pulsador 1 0

Cargo contador de 10ms para displa's

%ucle de control de 1ms

%orro displa's

Incremento cent# dec# seg# ' seg,ecremento contadores

Muestro displa's ' decremento contadores

Cronometro P(gina

+ ,igitales III

"

IMPLEMENTACION En un principio# se muestran todos los displa's en cero# al presionar el botn por primera /ez comienza a contar# al presionar por segunda /ez se detiene 0uedando el numero al 0ue se llego# luego se presiona ' se pone en cero ' cuenta# as: continua sucesi/amente# para ello el programa se basa en las interrupciones ' el botn se logra con interrupcin por R%4& $a multiple8acin de los " displa's se ;ar( por puerto A 0ue tiene < pines# con3igurado con todos sus pines como salidas& $a in3ormacin de tabla 0ue 3orma los n)meros en los displa's de siete segmentos se ;ar( por puerto % 0ue tiene ! pines# 0ue con3iguraremos de = salidas ' una de entrada 0ue es R%0 Al iniciar el programa de3inimos de los distintos registros# cuatro de ellos son cent# dec# seg ' seg - 0ue son los utilizados para almacenar los n)meros del cronometro# cent representa a las cent.simas# dec representa a las d.cimas# seg a los segundos ' seg- a las decenas de segundos& 9e de3ine la interrupcin ' se testea si es por R%0 o TMR0# si 3uese por R%0 0ue es el pin = del PIC o bit 0 del puerto %# /amos a la subrutina botn donde /emos si la cuenta debe parar ' mostrar el tiempo e8acto en el 0ue 3ue parado o borrar los registros ' comenzar a contar si se presiono por segunda /ez# para ello se testea al comenzar a incrementar si la bandera controlada por R%0 esta acti/ada o no& En el programa principal de3inimos el inicio# donde se ingresa al banco uno ' se de3ine puerto A# % ' C# luego se de3ine los bits del 4PTI45>RE6 se asigna prescaler al timer 0# el numero elegido para el prescaler es 1?!& Al tener 1?!# signi3ica 0ue si el tiempo es de 1 ms# eso e0ui/ale a 1000 @s# al di/idir por ! se tiene 1-< @s# a;ora el TMR4 debe llegar a -<<# la di3erencia entre -<< ' 1-<# es 120# sea cargamos 08!- al TMR0 Al pasar al banco 0 /emos TMR0 cargado con 08!- ' los puertos con3igurados 9e con3igura el registro I5TC45# donde Aabilitamos 6IE e interrupciones por o/er3loB del TMR0 Asignamos 10 para cont# 0ue se decrementa dentro de la interrupcin# la idea es 0ue dada la 3orma en 0ue se de3ini el TMR4 para tener 1 milisegundo# poder lograr 10 milisegundo para mantener encendido cada displa'& C
Cronometro P(gina + ,igitales III <

logramos la multiple8acin de los displa's mediante la asignacin de un puntero llamado displa' 9iempre primero multiple8amos los displa's por puerto A cada 10ms# ' luego incrementamos los registros cent# dec# seg ' seg- mostr(ndolos por puerto % 9i la bandera del pulsador esta borrada# no llega a incrementar sino 0ue /uel/e al bucle de multiple8acin dejando est(tica la cuenta para poder mostrar de todas 3ormas los n)meros 0ue ;a' en el cronometro ' no permite 0ue a/ance la cuenta A;ora se supone 0ue no se apret el botn# entonces decrementa los registros ,entro de botn lo primero limpiar el bit1 de I5TC45# 0ue indica la interrupcin por R%4& 9e testea el bit 0 de bandera# si esta en 1 borro la bandera para 0ue no cuente mas# sino la 9eteo ' borro los registros para 0ue /uel/a a contar $a cuenta consiste en incrementar de3iniendo cent con 10 ' comparando con D4R ' testeando status#z si esta en 1#si llega a 10 status#z esta seteado entonces pasa a incrementar el registro siguiente 0ue en este caso es dec 0ue se le asigna 10# si no llega a 10 /uel/e a la interrupcin ' no incrementa los otros registros# luego seg de igual manera ' seg- 0ue se le asigna 6 para contar ;asta <E?EE segundos entonces# al saltar entre registro ' registro se limpia el ultimo para /ol/er a El /alor de F 0ue corresponde a la ubicacin del registro# luego se suma al PC$ de esa 3orma se puede ingresar a la tabla 0ue muestra los n)meros en los displa's de siete segmentos siguiendo esta secuencia A# %# C# ,# E# # 6# R%0 0000+0011 G0G 1001+1111 G1G 0010+0101 G-G 0000+1101 G2G 1001+1001 G"G 0100+1001 G<G 0100+0001 G6G 0001+1111 G=G 0000+0001 G!G 0000+1011 GEG A# %# C# ,# E# # 6 representan los = segmentos usados en el displa'# ' el ultimo bit es R%0# como es de (nodo com)n# prendemos por 0 ' apagamos por 1& Al de/ol/erla tabla el n)mero se muestra a tra/.s del puerto % representando cada pata del mismo un bit del n)mero&
Cronometro P(gina + ,igitales III 6

El displa' ser( mostrado la misma posicin 10 ms# luego a/anza ' muestra otro ' as: sucesi/amente# resultando imperceptible al ojo ;umano& $a multiple8acin 0ue se realiza por tabla se ;ace por puerto A " transistores P5P& Prendiendo por 0 el displa' a mostrar 0000+1110 0000+1101 0000+1011 0000+0111 Hna /ez obtenido el n)mero sale de la tabla ' se muestra a tra/.s del puerto A

DESCRIPCION DEL CIRCUITO Micro controlador PIC16F8 A

Iiendo el diagrama de pines En los pines 1< ' 16 conectaremos el Cristal de " MAz en serie con capacitores de -- p los cuales /an a masa& En el pin " ponemos una resistencia de 10J K para el MC$R Para los " displa's de (nodo com)n# las resistencias empleadas son de --0K en el colector del transistor 0ue ser(n colocadas en serie entre puerto % de pin = a 12 ' diodos led de los displa's ' de -1L para la base en serie entre el puerto A de pin 1#-#2#1=#1! ' pata de (nodo com)n de cada displa'# por lo 0ue la corriente en los $E, del displa' est( en el orden de los 1<mA# los transistores son del tipo P5P 2-=-<&
Cronometro P(gina + ,igitales III =

Para el pulsador se emplea una resistencia de 1J K# ' un capacitor de 10n para lograr un anti rebote por ;ardBare en el pin R%0

Calculo de resistencias En corte? Resistencia de Colector

En saturacin? Resistencia de %ase

Cronometro P(gina

+ ,igitales III

DIAGRAMA DEL CIRCUITO

,iagrama del circuito para simulacion

,iagrama es0uem(tico para realizacin del PC%

Cronometro P(gina

+ ,igitales III

,iagrama para realizacin del PC%

PC% terminado MIista in3eriorN

Circuito terminado MIista superiorN

Cronometro P(gina

+ ,igitales III

10

Circuito completo con " displa's = segmentos a su salida

igura A + Cronometro corriendo# se puede /er claramente el e3ecto de numero 3antasma en los posiciones 0ue corren r(pidamente por 0ue la 3oto no es instant(nea

igura A

igura % + Cronometro parado# se puede /er claramente 0ue los n)meros se /en bien por0ue no est( incrementando el contador por presionar el botn de stop*reset

igura %

Cronometro P(gina

+ ,igitales III

11

!ARD"ARE UTILI#ADO

Resistencias Micro controlador Cristal


Capacitores

=8 --0K * "8 -J K* 18 <60 K* !81-0 K PIC16 !"A " MAz


-8 --p * 18 100u *1810n *18100n

Programador ,ispla's Transistores


Pulsador Regulador

TA4R " 8 Onodo Com)n <1-1%6+5 "8 2-=-< P5P&


- Tipo AraPa

=!0<

CONCLUSION

Aprendimos a usar# ' comprender el uso de los puertos como salidas ' entradas# el uso de las interrupciones e8ternas e internas# conjug(ndolo con el uso de tablas ' subrutinas para lograr satis3actoriamente un pro'ecto 0ue 3unciona& $os problemas ' los obst(culos 0ue presento la implementacin 3ueron muc;os# pero 3ueron sobrelle/ados ' 3ueron )tiles para conocer m(s nuestro PIC# no se obtiene un error perceptible por minuto del cronometro# ser:a interesante poder incrementar un puntero ' poder mostrar minutos para poder /er si e8iste alg)n error grosero al pasar el tiempo& El botn de stop# reset presentaba un rebote pero 3ue eliminado por prueba ' error cambiando la con3iguracin de capacitor ' resistencia ;asta lograr un buen pulsador&

Cronometro P(gina

+ ,igitales III

1-

PROGRAMA
$I9T P7PIC16 !"A QI5C$H,E P16 !"A&I5C RA,ID AED R ,E I5ICIS5 ,E IARIA%$E9 R C45TA,4R PARA RETAR,4 ,E 10M9 R CE5T PARA CE5TU9IMA9 ,E 9E6H5,49 R ,EC PARA $A9 ,UCIMA9 ,E 9E6H5,49 R 9E6 PARA $49 9E6H5,49 R 9E6- PARA $A9 ,ECE5A9 ,E 9E6H5,49 R %A5,ERA PARA E$ C45TR4$ ,E$ TIEMP4 R AHDI$IAR PARA 6HAR,AR F R AHDI$IAR PARA 6HAR,AR 9TATH9 R %A5,ERA THE TE9TEA R%0 R AHDI$IAR THE I5,ICA ,I9P$AC

C45T CE5T ,EC 9E6 9E6$A6 F>AHD 9T>AHD %A5,ERA ,I9P$AC 4R6 64T4 4R6

ETH ETH ETH ETH ETH ETH ETH ETH ETH ETH 0D00

0D-2 0D-= 0D-6 0D-< 0D-" 0D-! 0D-E 0D20 0D20D21

I5ICI4 0D0"

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVI5TERRHPCI45 1M9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV M4IF M4I M4IF %T 9C CA$$ %T 99 RET IE M4I$F M4IF %C %9 M4I M4IF M4I RET IE F>AHD 9TATH9#F 9T>AHD I5TC45#I5T %4T45 I5TC45#T0I 0D!TMR0 I5TC45#T0I $A6#0 9T>AHD#F 9TATH9 F>AHD#F RTE9TE4 9I I5TERRHPCI45 IIE5E P4R R%4 R9I E9 P4R R%0 I4C A %4T45 RTE9TE4 9I IIE5E P4R TMR0 RCAR64 TMR0 -<<+1-<7120 R$IMPIAM49 %IT THE I5,ICA I5TERRHPCI45 D TMR0 R9ETE4 %A5,ERA ,E C45TR4$ ,E TIEMP4

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %4T45 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %4T45 %C %T 9C 64T4 %9 C$R C$R C$R C$R %C RETHR5 %C RETHR5 I5TC45#I5T %A5,ERA#0 $44P %A5,ERA#0 CE5T ,EC 9E6 9E6%A5,ERA#1 R$IMPIAM49 %IT ,E I5TERRHPCI45 D R%4 R9I E9 7 1 %4RR4 %A5,ERA PARA THE 54 CHE5TE RE5CIE5,E E$ CR454METR4 C %4RRA RE6I9TR49

$44P

%A5,ERA#0

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV PR46RAMA PRI5CIPA$VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV I5ICI4 %C %9 M4I$F M4IF 9TATH9#6 9TATH9# < 0D01 TRI9% R I56RE94 A$ %A5C4 1

RPHERT4 % = 0HT* 1 I5

Cronometro P(gina

+ ,igitales III

12

C$R M4I$F M4IF %C M4I$F M4IF %C C$R

TRI9A 0DE4PTI45>RE6 9TATH9#< 0D%0 I5TC45 $A6#0 ,I9P$AC

RPHERT4 A < 4HT

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV,EM4RA9 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %HC$E1 %HC$E M4I$F M4IF %T 99 64T4 %C 0D0A C45T $A6#0 %HC$E $A6#0 RCAR64 C45T C45 10 PARA RETAR,4 ,E 10M9 RRETAR,4 ,E 1M9 MTE9TE4 %A5,ERA ,E PA94 1 M9N

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV%ARRI,4 ,E ,I9P$AC9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV M4I CA$$ M4IF M4I$F A,,F M4IF M4I CA$$ M4IF I5C A5,$F M4IF ,EC 9W 64T4 ,I9P$AC#0 P49ICI45 P4RTA 9E6,I9P$AC#0 9R I5, #0 TA%$A P4RT% ,I9P$AC#0 0D02 ,I9P$AC C45T %HC$E

R9AC4 P4R PHERT4 A $A P49ICI45 ,E$ ,I9P$AC

R9HM4 9E6- C45 ,I9P$AC

R9AC4 P4R PHERT4 % $49 ,I6IT49 A REPRE9E5TAR

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVI5CREME5T4 ,E CE5T#,EC#9E61 C 9E6-VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %T 99 I5CREME5TA 64T4 T4,4 I5C M4I$F D4RF %T 99 64T4 C$R I5C M4I$F D4RF %T 99 64T4 C$R I5C M4I$F D4RF %T 99 64T4 C$R I5C M4I$F D4RF CE5T# 0D0A CE5T#F 9TATH9#W %HC$E1 CE5T ,EC# 0D0A ,EC#F 9TATH9#W %HC$E1 ,EC 9E6# 0D0A 9E6#F 9TATH9#W %HC$E1 9E6 9E6-# 0D06 9E6-#F RI5CREME5TA CE5TE9IMA ,E 9E6H5,4 %HC$E1 R9I54# 54 I5CREME5TA MA9 ,EXA5,4 E9TATIC4 %A5,ERA#0 RTE9TE4 $A %A5,ERA ,E$ %4T45# 9I E9TA E5 1

RI5CREME5TA ,ECIMA9 ,E 9E6H5,49

RI5CREME5TA 9E6H5,49

RI5CREME5TA ,ECE5A9 ,E 9E6H5,49

Cronometro P(gina

+ ,igitales III

1"

%T 9C C$R 64T4

9TATH9#W 9E6%HC$E1

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTA%$A ,E $E,9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV TA%$A A,,F PC$#

RET$F RET$F RET$F RET$F RET$F RET$F RET$F RET$F RET$F RET$F

%Y10000001Y R %Y11110011Y R %Y01001001Y R %Y01100001Y R %Y00110011Y R %Y00100101Y R %Y00000101Y R %Y11110001Y R %Y00000001Y R %Y00100001Y R

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTA%$A ,E P49ICI45 ,E ,I9P$AC9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV P49ICI45 A,,F RET$F RET$F RET$F RET$F %Y0111Y %Y1110Y %Y1101Y %Y1011Y PC$#

E5,

Cronometro P(gina

+ ,igitales III

1<

Potrebbero piacerti anche