burada picin rb4 ve rb5 i sensörden gelen sıcaklık bilgisinin dijitaline yani sıcaklık değişkeninin değerine göre 1 veya sıfır oluyor ama bu bir türlü çalışmıyor lcd de yazı bile yazmıyor.yardımlarınızı bekliyorum.
saygılarımla
şeması
(http://img105.imageshack.us/img105/8695/adszwo4.th.jpg) (http://img105.imageshack.us/my.php?image=adszwo4.jpg)
kodu
#include<pic.h>
#include<delay.c>
#include<stdio.h>
#include<lcd.c>
void main()
{
const float lsb=5.0/1024.0;
unsigned char gerilim;
int sicaklik;
unsigned char sicak[]="SICAKLIK";
TRISB=0;
TRISA=1;
DelayMs(250);
lcd_init();
lcd_clear();
ADCON1=0x8E;
ADCON0=0x41;
for(;;)
{
ADCON0=0x45;
while((ADCON0 & 4)!=0);
gerilim=ADRESH;
gerilim=256*gerilim+ADRESL;
sicaklik=(int)(gerilim*lsb*100.0);
sprintf(sicak+11,"%dC",sicaklik);
lcd_goto(0x00);
lcd_puts(sicak);
if(sicaklik < 10 )
{
RB4=0;
RB5=1;
lcd_goto(0x40);
lcd_puts("ISITICI ACIK");
DelayMs(250);
continue;
}
else if(sicaklik >= 10 && sicaklik < 20)
{
RB4=0;
RB5=0;
lcd_goto(0x40);
lcd_puts("ORTAM NORMAL");
DelayMs(250);
continue;
}
else if(sicaklik >20 )
{
RB4=1;
RB5=0;
lcd_goto(0x40);
lcd_puts("KLIMA ACIK");
DelayMs(250);
continue;
}
}
}
Arkadaşım, bende buna benzer bir proje yapmıştım hemde bire bir aynısıydı fakat sprintf fonksiyonunu paralel lcdler için kullanamamıştım fakat seri lcdde sorun çıkarmamıştı. Eğerki bu fonksiyonla yapabilirsen lütfen banada haber et.
Merhaba,
kodun içinde söyle bir kod var.
unsigned char sicak[]="SICAKLIK";
sprintf(sicak+11,"%dC",sicaklik);
Burada hata var. Neden sicak dizisine 11 ekliyorsun. Dizinin uzunluğu zaten 8 bayt. 11 ekleyerek dizinin dışına taşıyorsun. Bunu düzeltirsen sanırım çalışır.
Selamlar.