Reloj básico con PIC 16F84A
2 participantes
PICELECTRONICA :: Inicio :: Microcontroladores :: Proyectos
Página 1 de 1.
Reloj básico con PIC 16F84A
EL RELOJITO
Durante alguna etapa de los estudiantes de electrónica o de los aficionados, como es en este caso, se desea realizar un proyecto útil y a la vez aplicar los conocimientos básicos que se adquieren a lo largo de un curso, pues bien, este es el caso, para el cual se aplicaran las instrucciones antes vistas, hay que aclarar que “NO SE UTILIZARA NINGÚN TIPO DE RELOJ Y TAMPOCO EL USO DE INTERRUPCIONES” simplemente se usaran los delayms y algunas sentencias de repetición, se aplicaran los ejemplos del contador 0000-9999 y algunos que contengan ciclos for, primero se describe el circuito a utilizar, para ello se usara el PIC de batalla, el famoso y viejito 16F84A, un decodificador 74LS48 y 6 display cátodo común como componentes principales.
El funcionamiento es sencillo, primeramente se realizan tres contadores (Horas, Minutos, Segundos) los cuales tendrán sus respectivos límites e incrementos en cadena, y un indicador del tipo bit para saber cuándo se ha incrementado un contador, hay dos pulsadores, los cuales ejercen el trabajo de incremento en minutos y horas, utilizando así casi todos los pines del microcontrolador. Los valores de los contadores serán mostrados por el PORTA estos a su vez serán conectados al decodificador, con ayuda de la instrucción DIG se imprimirán los valores de cada contador en el formato HH-MM-SS y se activarán los transistores relacionados al display en uso, por ejemplo; cuando sea la hora 12:35:23 se activará el display de segundos y con la instrucción DIG 0 se imprime en el porta el valor “3” de segundos y a la vez se activa el transistor correspondiente, se esperan 3 mS y se imprime el valor de DIG 1 el cual es “2” activando también el transistor correspondiente, así se tiene el primer dato Segundos = 23, este mismo principio se realiza para mostrar todos los datos, para entender un poco mejor el código se presentara a continuación:
Durante alguna etapa de los estudiantes de electrónica o de los aficionados, como es en este caso, se desea realizar un proyecto útil y a la vez aplicar los conocimientos básicos que se adquieren a lo largo de un curso, pues bien, este es el caso, para el cual se aplicaran las instrucciones antes vistas, hay que aclarar que “NO SE UTILIZARA NINGÚN TIPO DE RELOJ Y TAMPOCO EL USO DE INTERRUPCIONES” simplemente se usaran los delayms y algunas sentencias de repetición, se aplicaran los ejemplos del contador 0000-9999 y algunos que contengan ciclos for, primero se describe el circuito a utilizar, para ello se usara el PIC de batalla, el famoso y viejito 16F84A, un decodificador 74LS48 y 6 display cátodo común como componentes principales.
El funcionamiento es sencillo, primeramente se realizan tres contadores (Horas, Minutos, Segundos) los cuales tendrán sus respectivos límites e incrementos en cadena, y un indicador del tipo bit para saber cuándo se ha incrementado un contador, hay dos pulsadores, los cuales ejercen el trabajo de incremento en minutos y horas, utilizando así casi todos los pines del microcontrolador. Los valores de los contadores serán mostrados por el PORTA estos a su vez serán conectados al decodificador, con ayuda de la instrucción DIG se imprimirán los valores de cada contador en el formato HH-MM-SS y se activarán los transistores relacionados al display en uso, por ejemplo; cuando sea la hora 12:35:23 se activará el display de segundos y con la instrucción DIG 0 se imprime en el porta el valor “3” de segundos y a la vez se activa el transistor correspondiente, se esperan 3 mS y se imprime el valor de DIG 1 el cual es “2” activando también el transistor correspondiente, así se tiene el primer dato Segundos = 23, este mismo principio se realiza para mostrar todos los datos, para entender un poco mejor el código se presentara a continuación:
- Código:
Device = 16F84A
Xtal 4
TRISA = 0 ‘TRIS SE USA PARA DECLARAR EL ESTADO DEL PUERTO DEL PIC,YA SEA EL A O B (A=SALIDA)
TRISB = %11000000 ‘SE LE COLOCA 1 A LAS TERMINALES QUE SERAN ENTRADAS(BOTONES) 0 A LAS SALIDAS
Dim Horas As Byte ‘SE DECLARA HORAS QUE TENGA UN VALOR ENTRE 0 Y 255,YA QUE UN BYTE TIENE ESE VALOR
Dim Minutos As Byte
Dim Segundos As Byte
Dim Incremento As Bit ‘INCREMENTO ES DECLARADO QUE TOMARA SOLO VALORES DE 1 Y 0 POR SER BIT
Dim i As Byte
Horas = 23 ‘SE COLOCA LA HORA INICIAL DEL RELOJ 23:59:50
Minutos = 59
Segundos = 50
Incremento = 0 ‘INCREMENTO ES UNA VARIABLE AUXILIAR PARA SABER QUE SE A PULSADO UN BOTON
Inicio: ‘EMPIEZA EL PROGRAMA
For i=0 To 39 ‘ES UNA REPETICION QUE SE LLEVA 40 VECES(0 A 39)PARA APROXIMAR EL VALOR DE 1 SEG
PORTB=0 ‘SE MANDAN 0 A PUERTO B PARA LIMPIARLO
PORTA = Segundos Dig 0 ‘SE LE ASIGNA A PUETO A EL VALOR DE SEGUNDOS Y SE TOMA EL PRIMER DIGITO
PORTB = 32 ‘PARA QUE ENCIENDA EL DISPLAY DE SEGUNDOS SE MANDA UN 1 A BIT DEL PUERTO B
DelayMS 3 ‘LA PAUSA DE 3 MILISEGUNDOS ES PARA QUE TENGA EL EFECTO QUE ESTE ENCENDIDO
PORTA = Segundos Dig 1 ‘SE TOMA EL VALOR DE SEGUNDOS,SU SEGUNDO DIGITO
PORTB= 16 ‘ACTIVO EL SEGUNDO DISPLAY
DelayMS 3 ‘CON 3 MILESEGUNDOS NO SE VE EL ENCENDIDO Y APAGADO A SIMPLE VISTA
PORTA = Minutos Dig 0 ‘LE DAMOS EL VALOR DE MINUTOS A PORTA,PRIMER DIGITO
PORTB= 8
DelayMS 3
PORTA = Minutos Dig 1
PORTB= 4
DelayMS 3
PORTA = Horas Dig 0
PORTB = 2
DelayMS 3
PORTA = Horas Dig 1
PORTB = 1
DelayMS 3
PORTB=0
DelayMS 3
Next i ‘EN NEXT I SE USA PARA FINALIZAR EL CICLO DE REPETICION(FOR I)
If Incremento = 0 Then ‘SI INCREMENTO ES 0 ENTONCES HACE UNA PAUSA DE 12mS
DelayMS 13
Else
Incremento = 0 ‘SI INCREMENTO NO ES 0 LO VUELVE 0
EndIf
Segundos = Segundos + 1 ‘TOMA EL VALOR INICIAL DE SEGUNDOS(50)Y SUMA DE 1 EN 1
If Segundos > 59 Then ‘SI LLEGA A 59 VUELVE SEGUNDOS A 0
Segundos = 0
Minutos = Minutos + 1 ‘HACE QUE MINUTOS INCREMENTE DE 1 EN 1(59)
EndIf
If Minutos > 59 Then ‘SI MINUTOS VALE 59,LO REGRESA A 0 Y EMPIEZA A SUMAR HORAS
Minutos = 0
Horas = Horas + 1
EndIf
If Horas > 23 Then ‘CUANDO HORAS LLEGA A 23(11 PM) SE VUELVE 0 Y EMPIEZA TODO OTRA VEZ
Horas = 0
EndIf
If PORTB.7 = 0 Then ‘CUANDO PULSE EL BOTON DEL PUERTO B=7 AUMENTA LAS HORAS
Horas = Horas + 1 ‘ SE GUARDA EN LA VARIABLE HORA TOMANDOLA COMO VALOR INICIAL
If Horas > 23 Then
Horas = 0
EndIf
Incremento = 1 ‘HACE INCREMENTO 1 PARA QUE SEPA QUE HAY CAMBIO DE HORA
DelayMS 10
EndIf
If PORTB.6 = 0 Then ‘SI S EPULSA EL BOTON 6 AUNMENTA MINUTOS
Minutos = Minutos + 1
If Minutos > 59 Then
Minutos = 0
EndIf
Incremento = 1
DelayMS 10
EndIf
GoTo Inicio ‘VUELVE A INICIO PARA QUE SEA UN CICLO INFINITO
End ‘FIN DEL PROGRAMA
Por ahora no me deja escribir vínculos el foro, dice que debo esperar 7 días, así que hasta entonces publicare los link de descargas para los archivos, o pueden pasar por mi blog para verlos
Re: Reloj básico con PIC 16F84A
Aquí les dejo los archivos para que puedan descargarlos y tener sus propias deducciones
Reloj básico con PIC 16F84A
Un video de su funcionamiento, se ve mal y a eso se le aumenta la claridad, pero ustedes pueden mejorar la calidad del brillo usando resistencias de 100 Ohms
Reloj básico con PIC 16F84A
Un video de su funcionamiento, se ve mal y a eso se le aumenta la claridad, pero ustedes pueden mejorar la calidad del brillo usando resistencias de 100 Ohms
PICELECTRONICA :: Inicio :: Microcontroladores :: Proyectos
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.