Está en la página 1de 9

///////////////////////////////////////////////////////////////// ////// /////////////////////// DANIEL JAIMES JHON PARRA////////////////// ///// #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) #use standard_IO(b)// #use standard_IO(c)//c0=di-0, c1=di-1, c3=pwm void main (){ ///inicializa del programa//// float s=1; //Declaracion de variable para la convercion anal oga-digital como flotante// float s1=1; // " " " " " " " " " " // float s2=1; // " " " " " " " " " " // long n=1; //declaracion de la variable / n como entero larg o de 16 bits // int horas=11; ///Declaracion de la variable:horas como entero/// int minutos=57; ///Declaracion de la variable:minutos como entero/ // int segundos=55; ///Declaracion de la variable:segundos como entero /// int contador=0; //Declaracion del contador como entero int bandera=0; //Declaracion del estado bandera como en tero// setup_adc(adc_clock_internal); un Reloj interno/// setup_adc_ports(AN0_AN1_AN3); to// //Declaramos el reloj para que trabaje con //input analogicas que contiene el circui

lcd_init(); //inicializa el led// printf(lcd_putc,"FICHA 187438"); //imprimimos// delay_ms(300); lcd_gotoxy(1,2); //pongo el cursor en la LCD/// printf(lcd_putc,"daniel y jhon"); //imprimimos// delay_ms(500); lcd_init(); //inicializa la lcd// while (1){ //ciclo repetitivo// lcd_gotoxy(14,1); //pongo el cursor en la LCD/// printf(lcd_putc,":%02u", segundos); //imprimimos la variable segundos // lcd_gotoxy(11,1); //pongo el cursor en la LCD/// printf(lcd_putc,":%02u", minutos); //imprimimos la variable minutos// lcd_gotoxy(9,1); printf(lcd_putc,"%02u", horas); delay_ms(10); e segundos del contador/// contador=contador+1; //pongo el cursor en la LCD/// //imprimimos la variable horas // ///se hace un retardo para el conteo d

if(contador==1){ //Condicion de posibilidad en caso d e que el contador sea ==1// segundos=segundos+1; //Si dicha condicion se cumple, seg undos aumentan en 1// contador=0; //Si dicha condicion se cumple, con tador se resetea nuevamente para aumentar segundos en 1// } //finalizacion de la condicion// if (segundos==60){ //Condicion de posibilidad en caso de que segundos sea == 60 // minutos=minutos+1; //Si dicha condicion se cumple, min utos aumenta en 1 ///// segundos=0; //Si dicha condicion se cumple, seg undos se resetea y vuelve a aumentar en 1// } //finalizacion de la condicion /// if (minutos==60){ //Condicion de posibilidad en caso de que minutos sea == 60// horas=horas+1; //Si la condicion se cumple, horas aumenta en 1// minutos=0; //Si la condicion se cumple, minuto s se resetea e inicia nuevo conteo a razon de 1 // } //finalizacion de la condicion // if (horas==12 && minutos==0 && segundos==0 && contador==0){ //Condicion de posi bilidad AND, si se cumplen todas al mismo tiempo se ejecuta la orden if (bandera==0){ y pm/// bandera=1; }else if (bandera==1){ bandera=0; } } osibilidad AND/// ///se utiliza para cuando es am

//finalizacion de la condicion de p

if (bandera==0){ //Condicion de posibilidad en caso de que bandera sea == 0 // lcd_gotoxy(12,2); //Posiciona el cursor en la LCD// printf(lcd_putc,"am"); //Imprime "am" en caso de que la co ndicion sea cierta// }else if (bandera==1){ //finalizacion de la primera condic ion. Si la primera 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 s egunda condicion sea cierta// } //Finalizacion de la segunda condic ion// if (horas==13){ //Condicion especial para que el re loj no muestre la hora militar de 24 horas sino la de 12// horas=1; //Si la condicion se cumple, entonc es hacemos de horas 13 = horas 1// } //Finalizacion de la condicion// if(input(pin_c0)==0 & input(pin_c1)==0){ //Condicion de posibilidad pregunt ando por los pines CO y C1, si es lo correcto haga lo siguiente// switch(contador){ //Condicion de casos a partir de l a anterior posibilidad//

case 0: output_b(0b10000001); lidas, y muestro las secuencias de led // contador++; break; siguiente caso// case 1: output_b(0b01000010); contador++; break; case 2: output_b(0b00100100); contador++; break; case 3: output_b(0b00011000); contador++; break; case 4: output_b(0b00111100); contador++; break; case 5: output_b(0b10100101); contador++; break; case 6: output_b(0b01000010); contador++; break; case 7: output_b(0b10000001); contador=0; cia // break; default: contador=0; break; encia /// }

//Caso # 0 // //Declaro todo el puerto B como sa //Hago que el contador ascienda// //Cumplido el caso #0 me salto al

///Inicia el contador para comienza la secuen ///se salto para la siguiente orden // ///Me salgo del switch case/// ///Reinicio el contador/// ///se salta para seguir con la siguiente secu ///finalizacion del switch case /// //fin de la primera condicion // siguiente,luego pregunto po

}else if (input(pin_c0)==1 & input(pin_c1)==1){ de posibilidad y inicia la// r el estado de los pines C0 y C1// switch(contador){ ir de la anterior posibilidad/// case 0: output_b(0b10101001);

//Condicion de los casos a part //Caso # 0// //declaro todo el puerto B como salidas, y

muestro las secuencias de led // contador++; //hago que el contador ascienda// break; //cuando se Cumple el caso:0 se salta al siguiente caso// case 1: output_b(0b01011010); contador++; break; case 2: output_b(0b00111100); contador++; break; case 3: output_b(0b00011000); contador++; break; case 4: output_b(0b00100100); contador++; break; case 5: output_b(0b01100110); contador++; break; case 6: output_b(0b10000001); contador++; break; case 7: output_b(0b01010101); contador=0; iense secuencia//// break; n////////// default: contador=0; break; siguiente secuencia//////// } //////// While(1) { if (input (pin_c0)==1 & input(pin_c1)==0){ contador = contador+1; }} ///////declaramos los potenciometros///////////////// ///////para la conversion analoga-digital ////////////

//////inicio el contador para com /////se salta a la siguiente orde ////me salgo del switch case// /////se reinicia el contador// /////salto para continuar con la ////finalizacion del switch case/

lcd_gotoxy(1,1); set_adc_channel(0); iendo utilizado// n=read_adc (); analizado // s=5.0*n/1023.0; o // printf(lcd_putc,"VO1=%1.2f",s); 1 con un entero y dos decimales

//Posiciona el cursor en la LCD // //Analiza un canal Analogo/Digital que este s //Lee el resultado del canal Analogo/Digital //Convercion Analogo/Digital para el resultad //me imprime el resultado de la convercion VO

/////////modulacion del 20%//////////////// output_high(pin_c3); delay_ms(20); output_low(pin_c3); delay_ms(80); //Pongo en alto //Retardo de 20 //Pongo en bajo //Retardo de 80 el pin C3/// ms// nuevamente el pin C3// ms//

//////////////MODULACION DEL PWM 20%/////////////// output_high(pin_c3); delay_ms(20); output_low(pin_c3); delay_ms(80); //Pongo en alto el pin C3 //hago unRetardo de 20 ms// //Pongo en bajo nuevamente el pin C3 // //hago un Retardo de 80 ms //

/////////////////////SECUENCIA DE LEDS///////////// }else if (input(pin_c0)==1 & input(pin_c1)==1){ nal de posibilidad, inicio de la siguiente,// ado de los pines C0 y C1/// switch(contador){ rtir de la anterior posibilidad// case 0: output_b(0b11100100); B como salidas, y muestro las secuencias de led// contador++; nda // break; to al siguiente caso// case 1: output_b(0b01110000); contador++; break; case 2: output_b(0b00111000); contador++; break; case 3: output_b(0b00111100); contador++; break; case 4: output_b(0b00101110); contador++; break; case 5: output_b(0b01000111); //Condicional de casos a pa //Caso # 0 // //Declaro todo en el puerto //Hago que el contador ascie //Cumplido el caso #0 me sal //fin de la primera condicio // luego pregunto por el est

contador++; break; case 6: output_b(0b10000011); contador++; break; case 7: output_b(0b10001001); contador=0; a secuencia // break; nte orden // default: contador=0; break; on la siguiente secuencia// }

//Inicia el contador para comienz //se hace un Salto para la siguie //me salgo del switch case // //reinicio el contador // // se hace un salto para seguir c //finalizacion del switch case //

///////////declaramos los potenciometros////////// //////////para la conversion analoga-digital////// lcd_gotoxy(1,1); set_adc_channel(1); ste utilizando// n=read_adc (); l analizado // s1=5.0*n/1023.0; ado // printf(lcd_putc,"VO2=%1.2f",s1); VO2 con un entero y dos decimales// //pongo el cursor en la LCD // //Analiza un canal Analogo/Digital que se e //Lee el resultado del canal Analogo/Digita //Convercion Analogo/Digital para el result //me imprime el resultado de la convercion

///////////////modulacion del pwm 50% //////// output_high(pin_c3); delay_ms(50); output_low(pin_c3); delay_ms(50); //Pongo en alto el pin C3// //hago un Retardo de 50 ms// //Pongo en bajo el pin C3 // //hago un Retardo de 50 ms

///////////////SECUENCIA DE LEDS///////////// }else if (input(pin_c0)==1 & input(pin_c1)==0){ dicion de posibilidad e inicio de la siguiente,// do de los pines C0 y C1 // switch(contador){ partir de la anterior posibilidad// case 0: output_b(0b10100000); omo salidas, y muestro las secuencias de led // contador++; aumenta // break; e salto al siguiente caso // case 1: //Condicion de casos a //Caso #0 // //Declaro el puerto B c //Hago que el contador //Cumplido el caso #0 m //Fin de la primera con // pregunto por el esta

output_b(0b01010000); contador++; break; case 2: output_b(0b00101000); contador++; break; case 3: output_b(0b00010100); contador++; break; case 4: output_b(0b00001010); contador++; break; case 5: output_b(0b00000101); contador++; break; case 6: output_b(0b00000010); contador++; break; case 7: output_b(0b00000001); contador=0; miense secuencia/// break; ente orden/// default: contador=0; break; on la siguiente secuencia/// }

///Inicia el contador para que co ///se hace un salto para la sigui ///me salgo del switch case/// /// se reinicia el contador/// /// se hace un salto para seguir c ///finalizacion del switch case///

///////////declaramos los potenciometros////////// //////////para la conversion analoga-digital////// lcd_gotoxy(1,1); set_adc_channel (3); l que este siendo utilizado n=read_adc(); ogo/Digital analizado s2=5.0*n/1023.0; el resultado printf(lcd_putc,"VO3=%1.2f",s2); ercion VO3 con un entero y dos decimales //Posicion del cursor en la LCD //Analiza un canal Analogo/Digita //Lee el resultado del canal Anal //Convercion Analogo/Digital para //Imprimo el resultado de la conv

///////////////MODULACION DEL PWM 80%///////////////// output_high(pin_c3); //Pongo en alto el pin C3//

delay_ms(80); output_low(pin_c3); delay_ms(20);

// hago un Retardo de 80 ms // //Pongo en bajo el pin C3// // hago un Retardo de 20 ms///

}else if (input(pin_c0)==0 & input(pin_c1)==1){ //finalizacion de la pr imera condicional de posibilidad e inicio de la siguiente,// // pregunto por el esta do de los pines C0 y C1 // switch(contador){ partir de la anterior posibilidad // case 0: output_b(0b00000000); o B como salidas, y muestro las secuencias de led // contador++; aumente // break; 0 se salta al siguiente caso // case 1: output_b(0b11111111); contador++; break; case 2: output_b(0b10000001); contador++; break; case 3: output_b(0b01111110); contador++; break; case 4: output_b(0b11000011); contador++; break; case 5: output_b(0b00111100); contador++; break; case 6: output_b(0b11100111); contador++; break; case 7: output_b(0b00011000); contador=0; se la secuencia // break; // default: contador=0; break; ente secuencia // //Condicion de casos a //Caso #0 // //Declaro todo el puert //Hago que el contador //Cumplidose el caso #

//Inicia el contador para que comien // se salto para la siguiente orden //Me salgo del switch case // //Reinicio el contador // me salto para seguir con la sigui

//finalizacion delswitch case// ////////////////MODULACION DEL PWM 0%//////////////

output_high(pin_c3); //Pongo en alto el pin C3 y lo ajus to a la velocidad de los demas datos recibidos // delay_ms(123); //Retardo para ajustar velocidad de transmision // } } es anteriores // //Terminacion de las 2 condicional

} /////////////////////// ///////////////// /////////////////////// /////////////////

finalizacion del programa

////////////// //////////////