Sunteți pe pagina 1din 3

#include <16f877a.h> #device adc=10 #fuses XT,NOWDT,PUT,NOBROWNOUT,NOLVP,NOCPD,NOWRT,NODEBUG,NOPROTECT #USE DELAY (CLOCK=4000000) #include <lcd.

c> #USE standard_IO(A) #USE standard_IO(d) void main(){ //Comienzo del programa float s=1; //Declaracion de variable para la convercion analoga-digit al como flotante float s1=1; //Declaracion de variable para la convercion analoga-digit al como flotante int horas=11; //Declaracion de variable:horas como entero int minutos=50; //Declaracion de variable:minutos como entero int segundos=50; //Declaracion de variable:segundos como entero int contador=0; //Declaracion del contador como entero int bandera=0; //Declaracion del estado bandera como entero long n=0; //Declaracion de variable:n como entero largo de 16 bits setup_adc(adc_clock_internal); //Definimos el reloj a trabajar:Reloj in terno setup_adc_ports(AN0_AN1_VSS_Vref); //Entradas analogicas que poseo en el ci rcuito lcd_init(); printf(lcd_putc,"FICHA 187438"); delay_ms(300); otro lcd_gotoxy(1,2); printf(lcd_putc,"SOLEDAD Y YO"); delay_ms(500); eracion lcd_init(); //Inicializa la LCD //Imprimo el codigo del curso //Retardo para pasar de un pantallazo a //Posicion del cursor en la LCD //Imprimo los integrantes del proyecto //Retardo para siguiente la siguiente op //Inicializa la LCD

//////////////////////////////////////////////////////////////////////////////// /// /////////////////////////////SECCION DE LOS POTENCIOMETROS////////////////////// /// //////////////////////////////CONVERCION ANALOGA/DIGITAL//////////////////////// /// //////////////////////////////////////////////////////////////////////////////// /// WHILE (1){ lcd_gotoxy(1,1); set_adc_channel(0); ste siendo utilizado n=read_adc (); ital analizado s=5.0*n/1023.0; ultado printf(lcd_putc,"VO1=%1.2f",s); VO1 con un entero y dos decimales lcd_gotoxy(1,2); set_adc_channel(1); existente n=read_adc (); s1=5.0*n/1023.0; ultado //Condicion WHILE para ciclo repetitivo //Posicion del cursor en la LCD //Analiza un canal Analogo/Digital que e //Lee el resultado del canal Analogo/Dig //Convercion Analogo/Digital para el res //Imprimo el resultado de la convercion //Posicion del cursor en la LCD //Analiza el otro canal Analogo/Digital //Lee el resultado de dicho canal //Convercion Analogo/Digital para el res

printf(lcd_putc,"VO2=%1.2f",s1); VO2 con un entero y dos decimales

//Imprimo el resultado de la convercion

//////////////////////////////////////////////////////////////////////////////// /// /////////////////////////////////SECCION DEL RELOJ////////////////////////////// /// //////////////////////////////////////////////////////////////////////////////// /// lcd_gotoxy(14,1); printf(lcd_putc,":%02u",segundos); el conteo de los segundos lcd_gotoxy(11,1); printf(lcd_putc,":%02u",minutos); el conteo de los minutos lcd_gotoxy(9,1); printf(lcd_putc,"%02u",horas); el conteo de las horas delay_us(1); contador contador=contador+1; //Posicion del cursor en la LCD //Imprimo el resultado de 2 enteros para //Posicion del cursor en la LCD //Imprimo el resultado de 2 enteros para //Posicion del cursor en la LCD //Imprimo el resultado de 2 enteros para

//Retardo para el conteo en segundos del //Inicia el contador aumentando en 1

if (contador==1){ //Condicion de posibilidad en caso de qu e el contador sea ==1 segundos=segundos+1; //Si dicha condicion se cumple, segundos aumentan en 1 contador=0; //Si dicha condicion se cumple, contador se resetea nuevamente para aumentar segundos en 1 } //Fin de la condicion if (segundos==60){ e segundos sea == 60 minutos=minutos+1; aumenta en 1 segundos=0; se resetea y vuelve a aumentar en 1 } //Condicion de posibilidad en caso de qu //Si dicha condicion se cumple, minutos //Si dicha condicion se cumple, segundos //Fin de la condicion

if (minutos==60){ //Condicion de posibilidad en caso de qu e minutos sea == 60 horas=horas+1; //Si dicha condicion se cumple, horas au menta en 1 minutos=0; //Si dicha condicion se cumple, minutos se resetea e inicia nuevo conteo a razon de 1 } //Fin de la condicion if (horas==12 && minutos==0 && segundos==0 && contador==0){ //Condicion de posibilidad AND, si se cumplen todas al mismo tiempo se ejecuta la orden if (bandera==0){ a para la diferenciacion de am y pm bandera=1; }else if (bandera==1){ bandera=0; //se utiliz

} } D

//Fin de la condicion de posibilidad AN

if (bandera==0){ //Condicion de posibilidad en caso de q ue bandera sea == 0 lcd_gotoxy(12,2); //Posicion del cursor en la LCD printf(lcd_putc,"am"); //Imprimimos "am" en caso de que la con dicion sea cierta }else if (bandera==1){ //Fin de la primera condicion. Si la pr imera condicion no se cumple entonces bandera == 1 lcd_gotoxy(12,2); // Posicion del cursor printf(lcd_putc,"pm"); //Imprimos "pm" en caso de que la segun da condicion sea cierta } //Fin de la segunda condicion if (horas==13){ //Condicion especial para que el reloj no muestre la hora militar de 24 horas sino la de 12 horas=1; //Si la condicion se cumple, entonces h acemos de horas 13 = horas 1 } //Fin de la condicion } } //Fin del WHILE infinito //Fin del programa

S-ar putea să vă placă și