Ir al contenido principal

Código del proyecto

Ya teniendo nuestra idea clara y de lo que vamos a hacer , vamos a comenzar con el codigo de nuestro proyecto

//Reloj Con visor de Temperatura
//Integrantes :
//Laura Taco Max Angelo
//Leon Alvarez Piero Sebastian 
//Parque Rosas Thania Angelix
//Valdivia Silva Jose Alexander
// Only enjoy :)

#include <16f877A.h>//Declaramos el PIC con el cual vamos a trabajar
#device * = 16 
#device adc = 10 //Declaramos la conversion analogica digital que va a realizar el PIC
#fuses HS
#use delay(clock=20M)  //Declaramos con cuanto de reloj vamos a trabajar
#include <DS1307.c>   //Declaramos nuestro reloj en tiempo real
#define LCD_DB4   PIN_B4 //Declaramos los pines con los que vamos a trabajar
#define LCD_DB5   PIN_B5
#define LCD_DB6   PIN_B6
#define LCD_DB7   PIN_B7
#define LCD_RS    PIN_B2
#define LCD_E     PIN_B3
#include <LCD1.c> //Declaramos nuestro LCD

int sec=0,min=25,hora=12; //Declaramos como enteros nuestras variables

int16 segundos=0,reloj=1,temperature=0; //Declaramos como enteros de 16 bits nuestras variables

#int_TIMER0 //Declaramos la funcion de interrupcion con temporizador de TIMER0

void TIMER(VOID) 
{
   ++segundos; //Aumentamos los segundos
  
   if (segundos>=0 && segundos<=1500 ) //Condición en la cual se ejecutara nuestra primera interrupción
      {
      reloj=0;
      temperature=1;
      }
      
   if (segundos>1500 && segundos<=3000 )//Condición en la cual se ejecutara nuestra segunda interrupción
      {
      reloj=1;
      temperature=0;
      }
      
   if (segundos>3000 )//Condición la cual regresa nuestra variable a 0 y así repite un bucle infinito
      {
      segundos=0;
      } 
      
    
   set_timer0(100); //reinicar cuenta desde 99



void main()

{
   lcd_init();
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64); //configuración del timer0

   enable_interrupts (INT_TIMER0);   //habilita interrupción de timer0
   enable_interrupts (GLOBAL); //todas las interrupciones activadas
   
   ds1307_get_time(hora,min,sec);             /// se obtiene la hora
         
   setup_adc_ports(RA0_ANALOG);//entrada del LM35
   setup_adc(ADC_CLOCK_INTERNAL);//Proporciona el reloj con el cual trabajara nuestro LM 35
   set_adc_channel(0);//Selecciona el canal de conversión adc
   
   WHILE (true) //Bucle infinito
   {
   printf(lcd_putc,"\f"); //Borra todo lo que ya tenemos escrito en el LCD
   
      while (reloj==1)//Primera condición , cuando reloj sea igual a 1
    
      {
         ds1307_get_time(hora,min,sec);             /// se obtiene la hora
         printf(lcd_putc,"Hora Satelital");            ///se escribe en la pantalla Hora Satelital
         
      if (hora>=13 && hora<=24)   //Configuramos nuestro reloj para formato de 12 horas
      hora=hora-12;
      
         printf(lcd_putc, "\n%02u:%02u:%02u         ",hora, min, sec); //Imprime los mins,sec y Horas
         
         delay_ms(200);
      }
      
      printf(lcd_putc,"\f"); /// Limpia de nuevo todo lo que hay escrito en nuestro LCD
      
      while (temperature==1)//Primera condición , cuando temperature sea igual a 1
      
      {
         int temperatura; //Definimos temperatura como una variable entera
         temperatura=(int)read_adc()/2; //Fórmula para que nos de la temperatura correcta en el LCD
         lcd_gotoxy(3,1);
         printf(lcd_putc,"%i  grados    \n   Temperatura  ",temperatura); //Imprime la temperatura en el LCD
         
      }
   }
}

Comentarios