2
« en: Domingo 27 de Febrero de 2005, 01:05 »
Wenas peña, haber si me podeis ayudar, resulta que quiero hacer un sensor de CO2, y necesito usar este convertidor, el programa es calcado a un termometro, pero en este caso un sensor de CO2 y no uno de temperatura.
Pues la cuestion es haber si me podeis poner un ejemplo de programa en C para visualizar en un LCD la temperatura recibida por un lm35(ya os digo k es calcado al k necesito).
Os puedo comentar que he hexo este programa
#include <16F876.h>
#use delay(clock=4000000, RESTART_WDT)
#include <lcd2.c>
int Medir_Temperatura(int porta);
void Visualizar_Temp(temp);
main()
{
int temp;
lcd_init();
setup_adc_ports(RA0_RA1_ANALOG_RA3_REF); //configura RA0 RA1 como entrada
//analogicas y RA3 la Vref
//si utiliza 8 bits el ADC seria el calculo 256/vref*Valor del conversor
while(1){
temp=Medir_Temperatura(0);
Visualizar_Temp(temp);
/*temp=Medir_Temperatura(1);
Visualizar_Temp_xy(8,2,temp);*/
delay_ms(250);
}
}
int Medir_Temperatura(int)
{
int temp;
setup_adc(adc_clock_internal);
set_adc_channel(0); //configura el adc para que se centre en la patilla
//de A que le indiquemos (0=A0 1=A1...)
delay_us(20);
temp = read_adc();
setup_adc(adc_off);
return temp;
}
void Visualizar_temp(temp)
{
printf (lcd_putc,"%u", temp);
}
y otro que tengo orientado pero que era un voltimetro digital es este
#include <16F876.h>
#device adc=10 // Conversión con 10 bits
//#device adc=8 // Conversión con 8 bits
// Si no se pone ningún device toma 8 bits
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, WRT
#use delay (clock=4000000)
#include <LCD2.c>
void main( void )
{
float valor;
// float const resoluc= 5.0/256.0; // Conversión es con 8 bits
// float const resoluc= 5.0/1024.0; // Conversión es con 10 bits
float voltios;
setup_adc_ports ( ALL_ANALOG ); // Entrada analógica por RA0
setup_adc ( ADC_CLOCK_INTERNAL ); // Reloj interno para el ADC
set_adc_channel ( 0 ); // Canal 0 para convertir
lcd_init();
while ( 1 )
{
valor = read_adc();
lcd_gotoxy(1,1);
voltios= valor/* * resoluc*/;
printf ( lcd_putc, "%1.2f voltios ", voltios );
delay_ms(200); // Convierte cada 200ms--*
}
}