p18f4550 ve DS18B20 ile sıcaklık ölçer yapımı ?

Başlatan furkan_aytac, 29 Haziran 2012, 07:29:07

furkan_aytac

Merhaba arkadaşlar başlıkta da belirttiğim gibi pic18f4550 ve DS18B20 ile sıcaklık ölçer yapacağım.Dahili osilatörünü kullandığım zaman isiste hata veriyor.Uygulamada da çalışmıyor.Çalışmıyor dediğim de LCD de "SICAKLIK:" stringi yazıyor fakat gelen değer alakasız ve sensörü çıkardığımız zaman bile aynı değer orda kalıyor.Programı veriyorum.Kesirli değerler ve negatif değerlerle işim olmadığı için o bilgileri kullanmayacak şekilde yazdım.
sbit LCD_RS at RD2_bit;
sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;


char *text="000.0000";
unsigned ISI;
unsigned  deger;



void main() {
ADCON0 = 0;
ADCON1 |= 0x0F;
ADCON2 = 0;
CMCON |= 7;

TRISE = 0xff;
LATE = 0;
PORTE = 0;

Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1,1,"SICAKLIK: ");




do{
Ow_Reset(&PORTE, 2);
Ow_Write(&PORTE, 2, 0xCC);
Ow_Write(&PORTE, 2, 0x44);
Delay_us(200);

Ow_Reset(&PORTE, 2);
Ow_Write(&PORTE, 2, 0xCC);
Ow_Write(&PORTE, 2, 0xBE);
delay_us(200);

ISI = Ow_Read(&PORTE, 2);
ISI = (Ow_Read(&PORTE, 2)<<8) + ISI;
deger=ISI>>4;
text[0]=(deger/100)%10+48;
text[1]=(deger/10)%10+48;
text[2]=deger%10+48;

Lcd_Out(2,4,text);
Delay_ms(500);
}while(1);
}
Hata nerde ben bir türlü bulamadım.Yardım edecek arkadaşlara şimdiden teşekkür ederim...