اطلاعیه

Collapse
No announcement yet.

راهنمایی سنسور دما ds18b20

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    راهنمایی سنسور دما ds18b20

    سلام خدمت دوستان و اساتید محترم این برنامه رو برای سنسور ds18b20 نوشتم ولی موقع خوندن دما مقدار صفر برمی گردونه کسی می تونه کمک کنه؟
    #include <mega16.h>
    #include <delay.h>
    #include <stdio.h>
    #include <ds18b20.h>
    // 1 Wire Bus functions
    #asm
    .equ __w1_port=0x1B ;PORTA
    .equ __w1_bit=0
    #endasm
    #include <1wire.h>

    // Alphanumeric LCD Module functions
    #asm
    .equ __lcd_port=0x15 ;PORTC
    #endasm
    #include <lcd.h>
    #define MAX_DEVICES 8
    // Declare your global variables here
    unsigned char rom_codes[MAX_DEVICES][9];
    char str[];
    void main(void)
    {
    // Declare your local variables here
    unsigned char i,j,devices;
    // Input/Output Ports initialization
    // Port A initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTA=0x00;
    DDRA=0x00;

    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0x00;

    // Port C initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTC=0x00;
    DDRC=0x00;

    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTD=0x00;
    DDRD=0x00;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // 1 Wire Bus initialization
    w1_init();

    // LCD module initialization
    lcd_init(16);
    devices=w1_search(0xf0,rom_codes);
    sprintf(str,"DEVICE(S) %d DETECTED",devices);//پیدا کردن سنسور ها
    lcd_puts(str);
    delay_ms(1000);
    lcd_clear();
    if (ds18b20_init(NULL,0,150,DS18B20_12BIT_RES))//مقدار دهی اولیه
    {
    lcd_putsf("OK"
    lcd_clear();
    }
    else
    {
    lcd_putsf("NOT ready"
    while(1);
    }
    while (1)
    {
    // Place your code here //
    sprintf(str,"%d c",ds18b20_temperature(NULL)); // خواندن دما
    lcd_puts(str);
    delay_ms(1000);
    lcd_clear();

    };
    }
    ممنون می شم کمکم کنین
    اینم مدارم : Madar.JPG
    اینم کدش تو کد ویژن : 1.c

    #2
    پاسخ : راهنمایی سنسور دما ds18b20

    سلام دوستان
    در رابطه با سنسور ds18b20 به مشکلی خوردم لطفا راهنمایی بفرمایید.
    ابتدا یک سنسور را به میکرو وصل کردم برنامه چند سنسور را ساپورت میکرد.
    تمامی دما ها را یکسان نشان میداد
    یه لحظه اشتباهی دو سنسور دیگر را در حال کار به میکرو وصل کردم (بدون قطع برق)
    حالا سنسورها عدد صفر را نشان میدهند حتی وقتیکه سنسورها را تک تک وصل میکنم، ممکنه سنسور ها سوخته باشن؟

    دیدگاه

    لطفا صبر کنید...
    X