#include <16f877.h>
#device *=16
#device adc=10
#fuses XT,NOWDT,NOPROTECT
#use delay (clock=20000000)
#include <ds18b20.c>
char display1_onlar,display1_birler,display2_onlar,display2_birler,display3_onlar,display3_birler,temp;
const int display_digit[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; // ortak anotlu için
unsigned long int sicaklik_bilgisi;
float sicaklik;
void sicaklik_tara()
{
output_d(0b00000001);
output_b(display_digit[display1_onlar]);
delay_ms(2);
output_d(0b00000010);
output_b(display_digit[display1_birler]);
delay_ms(2);
output_d(0b00000100);
output_b(0x9c); // derece simgesi
delay_ms(2);
output_d(0b00001000);
output_b(0xc6); // C harfi
delay_ms(2);
output_d(0b00000000);
}
//------- ana program ----------------------------------------------------------
void main ()
{
output_a(0x00);
output_b(0x00);
output_d(0x00);
delay_ms(2);
setup_adc(adc_clock_internal);
setup_adc_ports(AN0);
for(;;)
{
sicaklik_tara();
sicaklik = ds1820_read(); //Sıcaklık bilgisi okunuyor ve çevriliyor
temp = sicaklik;
display1_birler=temp%10;
display1_onlar=(temp/10);
sicaklik_tara();
delay_ms(5);
}
}