Hola amigos, estoy tratando de programar una balanza electrónica que cuenta con las siguientes características:
--> Una celda de carga junto a un circuito de ampificacion, entregan de 0 a 5 voltios a la entrada (AN0) del pic 16f877A .
--> Luego, uso el modulo del ADC para obtener una salida digital del peso de (0 a 30 kg), este peso es proporcional al voltaje de entrada
--> Después, el peso se muestra en un LCD.
Al realizar las características mencionadas anteriormente no tengo problemas en hacerlo; pero también necesito conectar un keypad 3x4 para poner el precio por unidad de quilo, del producto; y ese precio que se multiplique por el peso y así obtener el precio total que se va a pagar. ahi es donde entra mi problema, ya que según he estado leyendo el pic solo puede realizar una sola tare a la vez; asi que no puede estar Usando el Modulo ADC y a la vez detectando el numero que se esta pulsando en el keypad. el codigo de la primera parte es la siguiente:
#INCLUDE <16F877A.H>
#DEVICE ADC = 10
#FUSES HS
#USE DELAY(CLOCK = 20M)
#INCLUDE <lcd.c>
#include <kbd4x4_1.c>
#define use_portd_lcd TRUE //Configuración puerto D control lcd
float peso;
int16 ADC;
void main ()
{
SETUP_ADC(ADC_CLOCK_INTERNAL);
SETUP_ADC_PORTS(ALL_ANALOG);
SET_ADC_CHANNEL(0);
delay_us(20);
lcd_init();
lcd_putc("\f Balanza \n");
lcd_putc(" Electronica ");
delay_ms(1000);
lcd_putc("\f"); // Limpia pantalla
lcd_putc("Peso = ");
lcd_gotoxy(15,1); // Acomoda cursor LCD
lcd_putc("Kg");
delay_ms(50);
lcd_putc("\nValor =");
lcd_gotoxy(9,2); // Acomoda cursor LCD
lcd_putc("s/");
delay_ms(50);
while (TRUE)
{
ADC = READ_ADC();
peso = 30.0*ADC/1023.0;
lcd_gotoxy(8,1);
printf(lcd_putc,"%02.2g",peso);
delay_ms(100);
}
}
EL CIRCUITO EN PROTEUS LES DEJO MAS ABAJO
--> como habia dicho anteriormente el codigo que puse solo realiza la primera parte, ¿podrían ayudarme con la ultima parte ? por ahi vi que tenia que hacer con interrupciones pero como recien estpy iniciando en programacion todavia no entiendo de que se trata.
estoy utilizando PIC C COMPILER GRACIAS........
