#include <pic.h>
#include <delay.c>
#include <lcd.c>
#include <stdio.h>
//----------------------------------------------------------
// eklenen k?s?m
//----------------------------------------------------------
#define mavi RB4
#define sari RB5
#define kirmizi RB6
#define dene RB7
//----------------------------------------------------------
main (void)
{
// Deg(is,ken tan?mlamalar?
const float lsb=5.0/1024.0;
unsigned char gerilim, ust, alt;
float sicaklik;
unsigned char sonuc[]="SICAKLIK = ";
// Port konfigürasyonu
TRISB=0; // PORTB ç?k?s,
TRISA=1; // RA0 analog giris
// Ön LCD is,lemleri
DelayMs(250); // 250ms bekle
lcd_init(); // LCD’yi haz?rla
lcd_clear(); // LCD'yi temizle
// ADC ayarlar?
ADCON1=0x8E; // AN0 analog giris,
ADCON0=0x41; // A/D aktif
for(;;){
// A/D çevrimi bas,lat
ADCON0=0x45;
// Dönüs,ümün bitmesini bekle
while((ADCON0&4)!=0);
// Dönüs,üm sonucunu kaydet
gerilim=ADRESH;
gerilim=256*gerilim+ADRESL;
// S?cakl?k bilgisini olus,tur
sicaklik=gerilim*lsb*100.0;
//----------------------------------------------------------
// eklenen k?s?m
//----------------------------------------------------------
if(sicaklik<20){ mavi=1; sari=0; kirmizi=0; dene=0;}
if(sicaklik>=20 && sicaklik<30){sari=1; mavi=0; kirmizi=0; dene=0;}
if(sicaklik>=30){kirmizi=1; sari=0; mavi=0; dene=1;}
//----------------------------------------------------------
// Tam ve ondal?k k?s?mlar? ay?r
//----------------------------------------------------------
ust=(int)sicaklik;
alt=(int)(10.0*(sicaklik-ust));
// LCD’ye yazd?rma is,lemlerini yap
sprintf(sonuc+11,"%d.%dC ",ust,alt);
// 1. sat?ra geç ve LCD’ye yaz
lcd_goto(0x00);
lcd_puts("LCD Termometre");
// 2. sat?ra geç ve s?cakl?k deg(erini yaz
lcd_goto(0x40);
lcd_puts(sonuc);
// Biraz bekle ve ekran? temizle
DelayMs(250);
lcd_clear();
} // Ölçümü tekrarla
} // Program?n sonu