PROYECTO: Temporizador y contador en C con PIC16F877A + código + simulación proteus

Hey ¡SkullTraper! bienvenido a un nuevo post el día de hoy les traigo un proyecto muy fácil de elaborar más de allá de sólo compartir el código y ya, (Que es por lo que muchos vienen) voy a comentar a detalle todo el proyecto de 0 a 100 fácilmente y lo más entendible posible. 


¿DE QUÉ TRATA EL PROYECTO? 

Primero te dejamos este vídeo de nuestro canal ;)
 

El proyecto en cuestión es una pequeña práctica que hace poco realicé en la Universidad junto con dos compañeros más (era en grupo) el plantemiento inicialmente dice lo siguiente:

- Se desea implementar mediante un MCU de gama media, un temporizador regresivo programable de 0 a 99 segundos, de acuerdo con el diagrama y las especificaciones indicadas:


> El pulsador ‘ON/OFF’ permite prender o apagar la carga (para las pruebas un LED).

> Al oprimir el pulsador ‘Up’, se incrementa (de forma cíclica) el valor de temporización deseado.

> Al oprimir ‘Start’, el sistema realiza de forma autónoma un conteo regresivo de segundos (desde el valor previamente programado) y al llegar a cero, el estado de la carga conmuta y el sistema queda listo para volver a funcionar.



DESARROLLO COMPLETO DEL PROYECTO

Aclaro que para programar se usó el software de MPLAB la versión que se usó la tenemos en este blog compartida (Click aquí), además, de PIC C COMPILER también para compilar el código del proyecto, para simulaciones Proteus y para cargar el código al PIC el programa oficial de Pickit (Pickit 2 software), arranquemos:

1. Materiales 

Vamos a detallar que materiales son necesarios para el montaje de este proyecto más exactamente los que se usaron para hacerlo:

- x1 Programador de PICS (PICkit 2 el que usamos)
- x1 PIC 16F877A
- x2 Displays 7 segmentos (Ánodo Común)   
- x1 Fuente de voltaje, 5v está bien para trabajar.
- Jumpers o puentes de cable UTP para conexiones.
- x1 LED que será la carga, dicha en el planteamiento.
- x1 Capacitor de 22pF 
- x2 Resistencias de
- x3 pulsadores sencillos
- x1 Cristal de Cuarzo de 4Mhz
- x1 Protoboard

¡Sale! con esto empezamos sin problema alguno el proyecto.

2. Simulación

A continuación mostramos una imagen de la simulación en Proteus sería algo así:


Al final podrás descargar todo el proyecto completo con código + simulación.

3. Programando el PIC en C código del proyecto

El paso vital al que muchos quieren llegar, el código a usar es el siguiente:    
#include <16f877A.h>
#Fuses XT,NOWDT,NOPUT,NOPROTECT              
#use delay(clock=4000000)
#use fast_io(B)
#use fast_io(D)
#use fast_io(C)
#use fast_io(E)
int8 disp1,disp2, cont;
int8 const Deco[10]={0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 2, 0x78, 0, 0x18};


/*FUNCION DE INICIALIZACION DE PUERTOS*/
void ini_puertos(){
   port_B_pullups(true); //pull - up activos en port B
   set_tris_B(0xFF); // todo port B como entrada
   set_tris_D(0x00);
   set_tris_C(0x00);
  set_tris_E(0x00);
cont=0;
}

/*FUNCION DE INCREMENTO EN DISPLAYS POR LIMITE*/
void incrementa(){
cont++;
disp2++;
if(disp2==10){
disp2=0;
disp1++;
if(disp1==10){
disp1=0;
}}}

/*FUNCIÓN DE DECREMENTO EN DISPLAYS*/
void inicio(){
if((disp1!=0)||(disp2!=0)){
disp2--;
if(disp2==255 ){
disp2=9;
disp1--;

}
}

}
void main(){
      ini_puertos();
      disp1=0;
      disp2=0;
   output_D(Deco[disp1]);
   output_C(Deco[disp2]);
   output_high(pin_E0);       //Led apagado

while(true){
  if(!input(pin_B7)){   //CONTADOR CON BOTON 
       incrementa();
       output_D(Deco[disp1]);
       output_c(Deco[disp2]);
       delay_ms(200);   //Configuración tiempo de incremeto al pulsar el botón
   }

if(!input(pin_B5)){ //Encendido de LED ó prueba de carga
output_low(pin_E0);
delay_ms(200);
output_high(pin_E0);
}

if(!input(pin_B6)){     //descontador de #
       while(cont!=0){   
             inicio();
             output_D(Deco[disp1]);
             output_c(Deco[disp2]);
             delay_ms(1000);
            cont--;
}
if((disp1==0)||( disp2==0)){
output_high(pin_E0);
delay_ms(200);
output_low(pin_E0);
}
}

}

return;
}

Bien, muy bien el código tiene comentado lo más relevante no hace falta modificarlo si entiendes muy bien lenguaje C podrás interpretarlo completamente aunque es muy corto.

4. Montaje final 

Esta etapa y última no tiene porque ser igual para todos quiénes hagan este proyecto, de hecho a nosotros no nos quedó muy estético (de por sí ningún proyecto electrónico queda muy estético siempre <<jajaja>>) al final en foto algo así quedó:


Hasta aquí todo claro, puedes descargar todo el proyecto dando (CLICK AQUÍ)

Espero les guste el contenido propuesto, es todo, hasta la próxima.
Compartir:

8 comentarios:

  1. muito bom, continue contribuindo com o aprendizado de mais pessoas.

    ResponderEliminar
  2. en la simulacion me presenta un error diciendo que no se puede abrir el archivo hexadecimal lab 1. quien me ayuda ????

    ResponderEliminar
    Respuestas
    1. Hola que raro que te suceda eso Tienes como agregar un pantallazo ?

      Saludos

      Eliminar
  3. Hola una pregunta como hago para que todos los números este presentes en el display ya tengo todo pero no sé como hacer que se vean todos los números

    ResponderEliminar
    Respuestas
    1. Hola no comprendo muy cuando dices lo que todos los numeros estén presentes.

      Eliminar
  4. Hola como hago para que todos los números se puedan presentar en el display

    ResponderEliminar

SkullTrapers

Posts más vistos

 

CLICK AQUI PARA IR A NUESTRA TIENDA ON LINE ARDUINO, ELECTRÓNICA, COMPONENTES