InicioHazlo Tu MismoReloj Digital Con PIC 16F84A Y Display 7 Seg

Reloj Digital Con PIC 16F84A Y Display 7 Seg

Hazlo Tu Mismo1/9/2016
Hola, taringueros. Hoy les traigo un proyecto sencillo con el PIC 16F84A. Estoy empezando con esto de la programación en C y este es uno de mis primeros proyectos que me gustaría compartir.

Componentes:
4 Display 7 segmentos cátodo común.
7 resistencias de 330 ohm.
PIC 16F84A.
Cristal 4Mhz.
2 capacitores de 22 pF.
3 pulsadores.
3 resistencias 10 Kohm.
Fuente de 5V DC. (Yo uso un cable USB con eso alimento el circuito).


Diagrama del circuito:



Ahora vamos a la programación. Estoy programando en PIC C.

----------------------------------------------------------------------------------------------------------------------
//*****************************************************************************
//******************Reloj Digital con display 7 segmentos**********************
//*******************************Por catatbcd**********************************
//*****************************************************************************

#include <16f84a.h> //pic a utilizar
#use delay (clock=4000000) //Fosc=4Mhz
#fuses XT,NOWDT,NOPROTECT,PUT //ordenes para el programador
// XT es el tipo de oscilador a utilizar.
//NOWDT desactiva el perro guardian.
//NOPROTECT desactiva proteccion del codigo.
#include <math.h> // libreria para hacer operaciones matematicas
void main (void){
//Declaración de variables.
int seg=0, min1=0,min2=0, hora1=0,hora2=0;
int16 i=0; // entero de 16 Bit ya que con 8 bit solo llega hasta 255 y debe llegar a 1000
//Tabla con los datos correspondientes 0,1,2,3,4,5,6,7,8,9. en Hexadecimal
int tab7seg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};
//Configuración de puertos.
set_tris_b(0b10000000); //RB7 como entrada y el resto del puerto b como salida
set_tris_a(0x11110000); //RA4 como entrada y el resto del puesto a como salida
disable_interrupts(GLOBAL); //todas las interrupciones desactivadas

while(TRUE)
{
seg++; //incrementa Segundos
if (seg==60) { //condicion para incrementar el primer digito de los minutos
min1++;
seg=0;
}
if (min1==10) { //condicion para incrementar el segundo digito de los minutos
min2++;
min1=0;
}
if (min2==6) { //condicion para incrementar el primer digito de las horas
min2=0;
min1=0;
hora1++;
}
if (hora1==10) {//condicion para incrementar el segundo digito de las horas
hora2++;
hora1=0;
}
if ((hora1==4)&&(hora2==2)) {// reinicia el conteo al cumplir 24 horas
hora1=0;
hora2=0;
}
//esta parte es para programar la hora
if (input(pin_A4)==0){ // al pulsar el boton conectado a RA4 incrementa las horas
delay_ms(250); //retardo para el rebote del pulsador
hora1++;
if (hora1==10) {
hora2++;
hora1=0;
}
if ((hora1==4)&&(hora2==2)) {
hora1=0;
hora2=0;
}
seg=0;
}
if (input(pin_B7)==0){//al pulsar el boton conectado a RB7 incrementa los min
delay_ms(250); //retardo para el rebote del pulsador
min1++;

if (min1==10) {
min2++;
min1=0;
}
if (min2==6) {
min2=0;
min1=0;
}
seg=0;
}
// ciclo para la visualizacion de los displays
for (i=1;i<=1000;i=i+20){
output_b(tab7seg[min1]); //muestra por portb digito 7 segmentos
output_a(0b00001110); //enciende 4 display
delay_ms(5);
output_b(tab7seg[min2]); //muestra por portb digito 7 segmentos
output_a(0b00001101); //enciende 3 display
delay_ms(5);
output_b(tab7seg[hora1]); //muestra por portb digito 7 segmentos
output_a(0b00001011); //enciende 2 display
delay_ms(5);
output_b(tab7seg[hora2]); //muestra por portb digito 7 segmentos
output_a(0b00000111); //enciende 1 display
delay_ms(5);
}
}
}
---------------------------------------------------------------------------------------------------------------------------

los archivos: se los paso por correo.
Datos archivados del Taringa! original
0puntos
14visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

c
catatbcd🇦🇷
Usuario
Puntos0
Posts2
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.