25 Mayıs 2018, 11:03:15

Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H


mlx90614 pic18f4550

Başlatan sevda, 29 Temmuz 2017, 06:12:30

sevda

29 Temmuz 2017, 06:12:30 Son düzenlenme: 04 Ağustos 2017, 23:14:57 mehmet
Ben mlx90614 sensörünü kullanarak pic18f4550'de proje
yazıyorum ama derleyici void main kısmında çağırdığım
fonksiyon kısmında sürekli hata veriyor.
Nasıl düzeltebilirim veya nerede yanlış yapıyorum?

Kod Seç

sbit LCD_RS at RD4_bit
;
sbit LCD_EN at RD5_bit;
sbit LCD_D4 at RD0_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D7 at RD3_bit;

sbit LCD_RS_Direction at TRISD4_bit;
sbit LCD_EN_Direction at TRISD5_bit;
sbit LCD_D4_Direction at TRISD0_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D7_Direction at TRISD3_bit;




const  
_IR_THERMO_ADDR 0x5A;
const  
_AMB_TEMP 0x06;
const  
_OBJ_TEMP 0x07;

char Temp;

char ReadSensor(char Temp_Source){
unsigned int Temp_var;
  
I2C1_Start();
  
I2C1_Wr(_IR_THERMO_ADDR << 1);
  
I2C1_Wr(Temp_Source);
  
I2C1_Repeated_Start();
  
I2C1_Wr(_IR_THERMO_ADDR << 1);
  
Temp_var I2C1_Rd(0);
  
Temp_var = (I2C1_Rd(0) << 8) + Temp_var;
  
I2C1_Stop();
   return 
Temp_var;
}
void Display_Temperature(char Temp_Sourcefloat temperature){
char text[15];
FloatToStr(temperaturetext);
  if (
text[1] == '.')
  
text[4] = 0;
    if (
text[2] == '.')
    
text[5] = 0;
  if (
text[3] == '.')
    
text[6] = 0;
strcat(text"°C");
if (
Temp_Source == _AMB_TEMP)
Lcd_Out(21text);
  if (
Temp_Source == _OBJ_TEMP)
    
Lcd_Out(210text);

     }



  
void main(){
    
ADCON1 |= 0x0F;
  
CMCON |= 0x07;

  
Lcd_Init();
  
Lcd_Cmd(_LCD_CLEAR);
  
Lcd_Cmd(_LCD_CURSOR_OFF);
  
Lcd_Out(1,1,"Initialising I2C");

  
I2C1_Init(50000);
  
Delay_ms(1000);
  
Lcd_Cmd(_LCD_CLEAR);
  
Lcd_Out(1,1,"Init OK");
  
Delay_ms(1000);

  
Lcd_Cmd(_LCD_CLEAR);
  
Lcd_Out(1,1,"Amb. t: ");
  
Lcd_Out(1,9," Obj. t:");

   while(
1){
   
Temp ReadSensor(_AMB_TEMP); /* kod bu satıra kadar derleniyor ama bu satıra gelince hata veriyor bu kısmı fonksiyon alarak yazdım ama değişen bir şey olmadı arkadaşımın bilgisayarında derleyince kodu demo hatası verdi microc'nin demo sürümünden kaynaklı olduğunu düşünüyorum bi türlü main fonkiyonun içide bu kısmı çalıştıramıyorum   */
    
Temp = (Temp 0.02) - 273.15;
    
Display_Temperature(_AMB_TEMPTemp); //hata veriyor bu satırları silince sorun olmuyor


    
Temp ReadSensor(_OBJ_TEMP); //hata veriyor
    
Temp = (Temp 0.02) - 273.15;
    
Display_Temperature(_OBJ_TEMPTemp); //hata veriyor

    
Delay_ms(500);
   }

  }