sábado, 8 de octubre de 2016

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:

0 comentarios:

Publicar un comentario

SkullTrapers

 

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