You are on page 1of 4

DESARROLLO DEL PROGRAMA EN PIC C

#include<16f877a.h>

//Declaracin de ficheros.

#device (adc=10)
#use delay(clock=4000000)
#include<lcd.c>
#byte port_c=0x07 //definicion de registro
Calculo_Peso(); //NOMBRE DE SUBRUTINA

floatpeso_real, kilogramos, libras, tara , captura , CAPCONT , CONTPIEZA , luchex; //


creacion de registros
int formato, flag_tara, funcion_1,formato_1,formato_2,funcion_2,hold,valor;
Void main(void) // funcion principal
{
setup_adc_ports(an0);
//A0 Entradaanalgica.
set_tris_a(0b00000001);
//
set_tris_c(0b00000000);
set_tris_d(0b00001111);
//D1-D3 Entradas.
setup_adc(adc_clock_div_8); //Reloj ADC sobre 8
lcd_init(); //Configura Puerto B e Inicializa LCD.

port_c=0b00000000;
//Limpia Puerto C.
formato=0; //Formato Kilogramos y Libras.
flag_tara=0;
funcion_1=0;
formato_1=0;
formato_2=0;
funcion_2=0;
hold=0;
captura=0;

for(valor=0;valor<=9;valor++)
{
printf(lcd_putc,"\f BALANZAS JBC...");
lcd_gotoxy(valor,2);
printf(lcd_putc,">>>>%02D",valor);
delay_ms(700);
printf(lcd_putc,"\f");

delay_ms(200);
}
output_high(pin_c4);
delay_ms(100);
output_low(pin_c4);
delay_ms(100);
printf(lcd_putc,"\f INDICADOR DE ");
printf(lcd_putc,"\n PESO >>");
delay_ms(2000);
printf(lcd_putc,"\f");
Calculo_Peso();
flag_tara=1;
tara=kilogramos;
do
{
if (input(pin_d0)==0)
{
delay_ms(20);
while(input(pin_d0)==0);
if (funcion_1==0) funcion_1=1; else funcion_1=0;
}
while(funcion_1==1)
{
printf(lcd_putc,"\f");
printf(lcd_putc,"\f INDICADOR
");
printf(lcd_putc,"\n CUENTA-PIEZAS ");
delay_ms(2000);
printf(lcd_putc,"\f");
while(funcion_1==1)
{
Calculo_Peso();
tara=kilogramos;
CAPCONT = 200/captura;
while(funcion_1==1)
{
Calculo_Peso();
kilogramos = kilogramos - tara;
CONTPIEZA = (CAPCONT * kilogramos)/200;
if(kilogramos<199)
{
lcd_gotoxy(1,1);
printf(lcd_putc," CUENTA PIEZAS: \n");
printf(lcd_putc," %01.0g
",CONTPIEZA);
output_low(pin_c3);

output_low(pin_c4);
}
else
{
lcd_gotoxy(1,1);
printf(lcd_putc," ADVERTENCIA! ");
printf(lcd_putc,"\n EXCESO DE PESO ");
output_high(pin_c4);
output_high(pin_c3);
delay_ms(100);
output_low(pin_c3);
}
if (input(pin_d0)==0)
{
delay_ms(20);
while(input(pin_d0)==0);
if (funcion_1==0) funcion_1=1; else funcion_1=0;
}
}
}
}

if(funcion_1==0)
{
Calculo_Peso();
if (input(pin_d1)==0)
{
delay_ms(20);
while(input(pin_d1)==0);
if (formato==0) formato=1; else formato=0;
}
if (input(pin_d2)==0)
{
delay_ms(20);
while(input(pin_d2)==0);
flag_tara=1;
tara=kilogramos;
output_high(pin_c0);
output_high(pin_c4);
delay_ms(50);
output_low(pin_c4);
delay_ms(50);
}
if (flag_tara==1) kilogramos = kilogramos - tara;

libras = kilogramos * 2.204;


do
{
if (input(pin_d3)==0)
{
delay_ms(20);
while(input(pin_d3)==0);
if (hold==0) hold=1; else hold=0;
if (hold==0) output_low(pin_c1);
if (hold==1) output_high(pin_c1);
captura=kilogramos;
output_high(pin_c4);
delay_ms(50);
output_low(pin_c4);
delay_ms(50);
}
if(kilogramos<199)
{
lcd_gotoxy(1,1);
printf(lcd_putc," PESO ACTUAL: \n");
if (formato==0) printf(lcd_putc," %01.1g Kg.
if (formato==1) printf(lcd_putc," %01.1g Lb.
output_low(pin_c3);
output_low(pin_c4);
}
else
{
lcd_gotoxy(1,1);
printf(lcd_putc," ADVERTENCIA! ");
printf(lcd_putc,"\n EXCESO DE PESO ");
output_high(pin_c4);
output_high(pin_c3);
delay_ms(100);
output_low(pin_c3);
}
}
while(hold==1);
}
}while(1);
}

",kilogramos);
",libras);

Calculo_Peso()
{
set_adc_channel(0);
delay_us(50);
peso_real=read_adc();
peso_real=peso_real * 0.0048828 * 40;
kilogramos=peso_real;
}

You might also like