ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 14

موضوع: ds18b20

  1. #1
    2011/03/14
    31
    0

    ds18b20

    سلام
    یه مشکل در راه اندازی سنسور دما ds18b20 بروی 7seg دارم
    البته روی ال سی دی کاراکتری به نمایش در آوردم
    ولی هرکاری می کنم روی نمایشگر 7 segment نمی تونم اجرا کنم ( مشکلش اینه که عدد دما رو نشون می ده ولی این سنسور اینقدر سرعت میکرو رو پایین میاره که باعت چشمک زدن نمایشگر 7segment میشه

    از دوستان ..... کسی راه حل داره واسه این مشکل

    برنامه به زبان c نوشتم

    ....


    کد:
    /*****************************************************
    Chip type        : ATmega32
    Program type      : Application
    AVR Core Clock frequency: 16.000000 MHz
    Memory model      : Small
    External RAM size    : 0
    Data Stack size     : 256
    *****************************************************/
    
    #include <mega32.h>
    
    // 1 Wire Bus interface functions
    #include <1wire.h>
    #include <ds18b20.h>
    #include <delay.h>
    
    long int part1=0,part2=0,part3=0;
    flash long int c7seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
    
    float temp;
    
    
    // Declare your global variables here
    
    void HEX_to_seg(long int k){                      
    part3 = c7seg [k%10];
    part2 = c7seg [k/10%10]; 
    part1 = c7seg [k/10/10%10];                     
     } 
     
    void main(void)
    {
    // Declare your local variables here
    
    PORTB=0x8E;
    DDRB=0xF0;
    
    PORTC=0x00;
    DDRC=0xff;
    
    PORTD=0x00;
    DDRD=0xff;
    
    
    // TWI initialization
    // TWI disabled
    TWCR=0x00;
    
    // 1 Wire Bus initialization
    // 1 Wire Data port: PORTB
    // 1 Wire Data bit: 0
    // Note: 1 Wire port settings must be specified in the
    // Project|Configure|C Compiler|Libraries|1 Wire IDE menu.
    w1_init();
    
    while (1)
       {
    
        
       temp=ds18b20_temperature(0);
    
       HEX_to_seg(temp);
        
       PORTC=0b001;
       PORTD=part1;
       delay_ms(10);
    
       PORTC=0b010;
       PORTD=part2;
       delay_ms(10); 
       
       PORTC=0b100;
       PORTD=part3;
       delay_ms(10);      
         
    
       }
    }







  2. #2
    2009/05/05
    974
    165

    پاسخ : ds18b20

    تاخیرهات رو کمتر کن
    ... و (بدانيد) گرفتن تصميمهاى محكم (براى رسيدن به اهداف بزرگ) با خوش گذرانى و سفرهآ*هاى رنگين سازگار نيست و چه بسيار كه خواب شبانه تصميمهاى محكم روز را از ميان برده و تاريكيآ*ها، خاطره همتآ*هاى بلند را از يادها محو كرده است. (نهجآ*البلاغه، خطبه211)

    امام علي (ع):کسي که به وقت ياري رهبرش در خواب باشد، با لگد دشمنش بيدار مي شود (غررالحکم،ص 422)
  3. #3
    2013/12/15
    کاشان
    142
    10

    پاسخ : ds18b20

    سلام. کلا سرعت این سنسور خیلی پایینه. برای خواندن دما میکرو باید روی یک خط 700 میلی ثانیه متوقف شود و اگر در این زمان یکی از وقفه هات سرریز کند، دمای دریافتی اشتباه خوانده میشود. میتونی با یه آی سی دیگه مثل ATTINY2313 دما رو بخونی و بعد با پورت سریال برا میکروی اصلی بفرستی. دلیل اینکه میتونی رو ال سی دی نمایش بدی هم اینه که شما فقط یه بار به ال سی دی کد میفرستی ولی برای سون سگمنت باید مرتبا انرا رفرش کنی تا تمام سگمنت ها روشن به نظر بیایند که این 700 میلی ثانیه اجازه این کار را نمیدهد.
    سُبُّوحٌ قُدُّوسٌ رَبُّ الْمَلَائِکَةِ وَ الرُّوحِ

    (SMART DESIGN....(POWERFUL & QUICK

    موفقیت اتفاقی نیست......بابای پولدار میخواد
  4. #4
    2011/03/14
    31
    0

    پاسخ : ds18b20

    سلام
    دوستان ممنون از پاسختون

    ... ولی راه بهتری برای کاهش هزینه وجود نداره........؟؟؟؟
    اینطوری که هزینه بالا میره با attiny 2313
  5. #5
    2012/12/30
    کرمان
    1,119
    48

    پاسخ : ds18b20

    من اینو با بسکام راه انداختم تا دو رقم بعد اعشار روی سون سگمنت نشون میدادم براش مدار هم چاپ زدم خیلی عالیه کافیه یا تایمر بزاری و سنسور رو زیر اون تایمر توی وقفه سرریزی بخونی تا چشمک زدن تا حدودی حل بشه
  6. #6
    2015/01/09
    143
    16

    پاسخ : ds18b20

    خیر جناب زمانی باید برعکس عمل کنه!
    رفرش سون سگمنت رو با تایمر انجام بده و توی برنامه اصلی دما رو بخونه
    در ضمن این سنسور تو رده قیمت خودش بهترینه!
  7. #7
    2011/03/14
    31
    0

    پاسخ : ds18b20

    سلام
    این کارو با تایمر صفر انجام دادم ولی بازم افاقه نکرد
    اینطوری بود که هر یک ثانیه سر ریز میشد بعد سنسور رو می خوندم
    ولی خوب جواب نداد بازم
  8. #8
    2012/12/30
    کرمان
    1,119
    48

    پاسخ : ds18b20

    من با بیسیک این کار کردم خوب جواب میداد
  9. #9
    2011/03/14
    31
    0

    پاسخ : ds18b20

    اینو با تایمر انجام دادم در رفرش صفحه مشکلی ندارم ولی حالا دما رو نشون نمیده بجاش عدد p نشون میده

    اینم کد برنامه
    کسی میتونه ایرادشو بگیره .... لطفا کمک کنید.

    کد:
    #include <mega16.h>
    
    // 1 Wire Bus interface functions
    #include <1wire.h>
    
    // DS1820 Temperature Sensor functions
    #include <ds18b20.h>
    #include <delay.h>
    
    long int part1=0,part2=0,part3=0;
    flash long int c7seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
    
    float temp;
    
    
     
    long int b , i;
    // Timer 0 overflow interrupt service routine
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
     TCNT0=0x37;
     b++;
     if(b==800){b=0;i++;}
     if(i==2){i=0;}
    
    
    
        
       PORTC=0b01;
       PORTD=part1;
       delay_ms(i);
    
       PORTC=0b10;
       PORTD=part2;
       delay_ms(i); 
       
       
    
    
    }
    
    void HEX_to_seg(long int k){                      
    part2 = c7seg [k%10];
    part1 = c7seg [k/10%10]; 
                        
     } 
    
    // Declare your global variables here
    
    void main(void)
    {
    PORTA=0x00;
    DDRA=0x00;
    
    PORTB=0x00;
    DDRB=0xFF;
    
    PORTC=0x00;
    DDRC=0xFF;
    
    PORTD=0x00;
    DDRD=0xFF;
    
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 16000.000 kHz
    // Mode: Normal top=0xFF
    // OC0 output: Disconnected
    TCCR0=0x01;
    TCNT0=0x37;
    OCR0=0x00;
    
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x01;
    
    
    // TWI initialization
    // TWI disabled
    TWCR=0x00;
    
    w1_init();
    
    // Global enable interrupts
    #asm("sei")
    
    while (1)
       {     
         temp=ds18b20_temperature(0);
         HEX_to_seg(temp);
    
       }
    }
  10. #10
    2012/12/30
    کرمان
    1,119
    48

    پاسخ : ds18b20

    برنامه مربوط به نمایش دادن عدد بر روی سون سگمنت رو توی حلقه whileبزار و اونی که سنسور رو میخونه توی سر ریز تایمر
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 14

موضوعات مشابه

  1. دقت در DS18B20 ؟
    توسط AMIN GHAFFARI در انجمن سنسورها
    پاسخ: 8
    آخرين نوشته: 2019/01/18, 20:53
  2. DS18B20
    توسط em_eca در انجمن مدار هاي ديجيتال
    پاسخ: 2
    آخرين نوشته: 2015/09/07, 09:25
  3. DS18B20
    توسط em_eca در انجمن مدار هاي ديجيتال
    پاسخ: 0
    آخرين نوشته: 2015/07/16, 12:52
  4. ds18b20
    توسط saeedxs در انجمن ابزار دقیق
    پاسخ: 0
    آخرين نوشته: 2015/02/19, 23:05
  5. ds18b20
    توسط zamanimahdi در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2015/01/23, 07:02

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •