es QUE ya le e buscado y no lo puedo compilar y me urge poR QUE es para un trabajo aQUi lEs dEjo el programa espero QUE mE ayuden para simularlo y cargarlo al pic
#include "16f877.h"
#device adc=10 //Usa resolución de 10 bits.
#use delay(clock=4000000)
#fuses xt,nowdt,noput,nobrownout,nolvp,noprotect
#include "lcd.c" //libreria q maneja la lcd 2x16
#use standard_io (D)
void main (void)
{
float A,B,C,DD,D,medicion,medi,TCJ;
// set_tris_b (0x00);
lcd_init(); //Inicia LCD
lcd_putc(" Termometro\n"); //Saca texto
lcd_putc(" Digital"); //Saca texto
delay_ms(1000);
lcd_putc("\f"); //Limpia pantalla
lcd_putc("Temperatura\n"); //Saca texto
lcd_putc("actual"); //Saca texto
delay_ms(1000);
lcd_putc("\f"); //Limpia pantalla
lcd_gotoxy(11,2); //Acomoda cursor LCD
lcd_putc("T4=");
lcd_gotoxy(11,1);
lcd_putc("T2=");
lcd_gotoxy(1,2); //Acomoda cursor LCD
lcd_putc("T3=");
lcd_gotoxy(1,1);
lcd_putc("T1=");
while (1)
{
setup_adc (adc_clock_div_32);
//Elige terminales análogicas
//RA0,RA1,RA2 y RA4 miden, RA3 es Vref (5V)
setup_adc_ports (all_analog);
set_adc_channel (0); //Elige canal a medir RA0
delay_us (20);
medicion=read_adc (); //Hace conversión AD
set_adc_channel (1); //Elige canal a medir RA1
delay_us (20);
DD=read_adc (); //Hace la conversion AD
set_adc_channel (2); //Elige canal a medir RA2
delay_us (20);
TCJ=read_adc (); //Hace la conversion AD
set_adc_channel (4); //Elige canal a medir RA4
delay_us (20);
medi=read_adc (); //Hace la conversion AD
setup_adc (adc_off); //Apaga ADC
A=(medi*(0.48875)); //Pasa binario a °C
B=(medicion*(0.48875));// EL NUMERO (0.48875) viene de dividir (5/1023) y el resultado
C=(TCJ*(0.48875)); // multiplicarlo por 100.el numero 5 sale del voltaje aplicado a Vref,
D=(DD*(0.48875)); //y el numero 1023 sale de los 10 bit q estamos utilizando del ADC del PIC.
lcd_gotoxy(14,2);
lcd_putc(" ");
printf(lcd_putc,"%02.1f",A); //xxx.x °C
delay_ms (1);
lcd_gotoxy(4,1);
lcd_putc(" ");
printf(lcd_putc,"%02.1f",B); //xxx.x °C
delay_ms (1);
lcd_gotoxy(4,2);
lcd_putc(" ");
printf(lcd_putc,"%02.1f",C); //xxx.x °C
delay_ms (1);
lcd_gotoxy(14,1);
lcd_putc(" ");
printf(lcd_putc,"%02.1f",D); //xxx.x °C
delay_ms (1);
}
}
#include "16f877.h"
#device adc=10 //Usa resolución de 10 bits.
#use delay(clock=4000000)
#fuses xt,nowdt,noput,nobrownout,nolvp,noprotect
#include "lcd.c" //libreria q maneja la lcd 2x16
#use standard_io (D)
void main (void)
{
float A,B,C,DD,D,medicion,medi,TCJ;
// set_tris_b (0x00);
lcd_init(); //Inicia LCD
lcd_putc(" Termometro\n"); //Saca texto
lcd_putc(" Digital"); //Saca texto
delay_ms(1000);
lcd_putc("\f"); //Limpia pantalla
lcd_putc("Temperatura\n"); //Saca texto
lcd_putc("actual"); //Saca texto
delay_ms(1000);
lcd_putc("\f"); //Limpia pantalla
lcd_gotoxy(11,2); //Acomoda cursor LCD
lcd_putc("T4=");
lcd_gotoxy(11,1);
lcd_putc("T2=");
lcd_gotoxy(1,2); //Acomoda cursor LCD
lcd_putc("T3=");
lcd_gotoxy(1,1);
lcd_putc("T1=");
while (1)
{
setup_adc (adc_clock_div_32);
//Elige terminales análogicas
//RA0,RA1,RA2 y RA4 miden, RA3 es Vref (5V)
setup_adc_ports (all_analog);
set_adc_channel (0); //Elige canal a medir RA0
delay_us (20);
medicion=read_adc (); //Hace conversión AD
set_adc_channel (1); //Elige canal a medir RA1
delay_us (20);
DD=read_adc (); //Hace la conversion AD
set_adc_channel (2); //Elige canal a medir RA2
delay_us (20);
TCJ=read_adc (); //Hace la conversion AD
set_adc_channel (4); //Elige canal a medir RA4
delay_us (20);
medi=read_adc (); //Hace la conversion AD
setup_adc (adc_off); //Apaga ADC
A=(medi*(0.48875)); //Pasa binario a °C
B=(medicion*(0.48875));// EL NUMERO (0.48875) viene de dividir (5/1023) y el resultado
C=(TCJ*(0.48875)); // multiplicarlo por 100.el numero 5 sale del voltaje aplicado a Vref,
D=(DD*(0.48875)); //y el numero 1023 sale de los 10 bit q estamos utilizando del ADC del PIC.
lcd_gotoxy(14,2);
lcd_putc(" ");
printf(lcd_putc,"%02.1f",A); //xxx.x °C
delay_ms (1);
lcd_gotoxy(4,1);
lcd_putc(" ");
printf(lcd_putc,"%02.1f",B); //xxx.x °C
delay_ms (1);
lcd_gotoxy(4,2);
lcd_putc(" ");
printf(lcd_putc,"%02.1f",C); //xxx.x °C
delay_ms (1);
lcd_gotoxy(14,1);
lcd_putc(" ");
printf(lcd_putc,"%02.1f",D); //xxx.x °C
delay_ms (1);
}
}
Última edición por un moderador: