Hola Zonadjarn.
Mira voy de salida a la escuela, vi tu post de manera rápida, en cuanto regrese te ayudo.
La semana pasada nos dejaron una practica, utilizar el adc para leer un lm35, desplegar la temperatura en dos displays de 7 segmentos y que encendiera un led cuando llegara a cierta temperatura, te paso el código del programa, para que lo cheques espero que te sea utili, en cuanto regrese te paso la simulacion. Saludos.
#include <18F4525.h>
#device adc=8
#FUSES NOWDT, HS, NOBROWNOUT, NOPUT, NOCPD, NODEBUG, NOWRT, NOWRTD,MCLR, NOLVP
#use delay(clock=20000000)
#include <stdlib.h>
void main()
{
int x=0, temp=0, digito1=0,digito2=0;
float vadc=0;
byte const display[10] = {0b00111111, //0
0b00000110, //1
0b01011011, //2
0b01001111, //3
0b01100110, //4
0b01101101, //5
0b01111101, //6
0b00000111, //7
0b01111111, //8
0b01100111}; //9
setup_adc(ADC_CLOCK_DIV_32);
setup_adc_ports(AN0|VSS_VREF);
set_adc_channel(0);
output_low(PIN_B0);
while(1)
{
output_d(display[digito1]);
delay_us(100);
output_c(0b00000010);
delay_us(100);
output_c(0b00000000);
vadc=read_adc();
temp=(int) ((vadc * 391) / 1000);
digito1=(temp/10);
digito2=temp%10;
output_d(display[digito2]);
delay_us(100);
output_c(0b00000001);
delay_us(100);
output_c(0b00000000);
delay_us(100);
if(temp>=30)
output_high(PIN_B0);
else
output_low(PIN_B0);
}
}
GAMBARIMASU