#include <16f877.h>

#device ADC=10

#fuses XT, NOWDT , NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay (clock=4000000)

#use fast_io(a)

#define use_PORTB_lcd TRUE

#include <lcd.c>
unsigned long int bilgi;
float voltaj, sicaklik;

void main ()
{
setup_psp(PSP_DISABLED) ; // FSP birimi devre dışı
setup_timer_1 (T1_DISABLED) ; // Tl zamanlayıcısı devre dışı
setup_timer_2 (T2_DISABLED,0,1) ; // T2 zamanlayıcısı devre dışı
setup_CCP1 (CCP_OFF) ; // CCP1 birimi devre dışı
setup_CCP2 (CCP_OFF) ; // CCP2 birimi devre dışı

set_tris_a(0x01) ; // RAO Giriş olarak yönlendiriliyor

setup_adc(adc_clock_div_32) ; // ADC clock frekansı fosc/32
setup_adc_ports(AN0); //RA0/AN0 girişi analog
lcd_init() ; // LCD hazır hale getiriliyor

set_adc_channel (0) ;
a delay_us (20) ;
printf (lcd_putc, "\fSicaklik=") ; // LCD'ye yazı yazdırılıyor

while(1)
{
bilgi=read_adc() ;
voltaj=(0.0048828125*bilgi)*1000;
sicaklik=(voltaj/10)+2;
lcd_gotoxy(10,1);
printf(lcd_putc,"%5.1f'C",sicaklik);
delay_ms(100);
}
}


böyle bir programımız var ancak portb yerine portd'den geliyor bilgi. hata nerededir?

lm35 ile sıcaklık ölçümü devresi

 

lcd.c dosyasının içine gidip portd olan kısımları portb yapın.

#define use_PORTB_lcd TRUE satırı library içinde hiçbirşeyi tanımlamıyor olabilir.

orpheus
1

mobil görünümden çık