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
}
}
}
//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
Publicar un comentario