Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: deserteagle - 14 Mayıs 2007, 21:52:34

Başlık: termometre sorunu
Gönderen: deserteagle - 14 Mayıs 2007, 21:52:34
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;
   }
   }
}
Başlık: termometre sorunu
Gönderen: fatihsatir - 15 Mayıs 2007, 14:45:29
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.
Başlık: termometre sorunu
Gönderen: arslan74 - 19 Mayıs 2007, 19:23:44
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.