اطلاعیه

Collapse
No announcement yet.

سوال در مورد دستکاری کردن مقدار ADCW برای پروژه دماسنج + برنامه + پروتئوس

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

    سوال در مورد دستکاری کردن مقدار ADCW برای پروژه دماسنج + برنامه + پروتئوس

    سلام به همگی

    من امروز بیکار بودم... :biggrin: خواستم یه برنامه دماسنج برای خودم بنویسم و نوشتم ولی نمیدونم چگونه باید خروجی ADCW از ماژول A2D رو مقدار دهی کرد تا خروجی رو درست روی lcd نمایش بده.

    برنامه اینه:

    کد:
    #include <mega16.h>
    #include <delay.h>
    #include <alcd.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    void main(void)
    {
    char buffer[10];
    
    PORTA=0x00;
    DDRA=0x00;
    PORTB=0x00;
    DDRB=0x00;
    PORTC=0x00;
    DDRC=0x00;
    PORTD=0x00;
    DDRD=0x00;
    
    ADMUX = 0b01100000;
    ADCSRA = 0b11100111;
    SFIOR = 0b00000000;
    
    lcd_init(16);
    lcd_gotoxy(0,0);
    lcd_puts("TEMP:  'C");
    while (1)
       {
       ADCW= (ADCW/4); 
       sprintf(buffer,"%d",ADCW);
       lcd_gotoxy(6,0); 
       lcd_puts(buffer);
       } 
    }
    آدرس فایل کدویژن به همراه فایل پروتئوس هم اینه: حجمش 96 کیلوبایت بیشتر نیست:
    http://s5.picofile.com/file/8103266692/termometer.rar.html

    یه کمکی بکنید...چیز زیادی از شما نمیخوام...فقط بفرمایید ضرب و تقسیم مقدار خروجی ADCW که شامل دو رجیستر هشت بیتی ADCH و ADCL هست چگونه باید باشد تا مقدار دما درست نشون داده بشه..

    اون تقسیم بر 4 رو هم همینجوری گذاشتم...چیز بهتری به ذهنم نرسید.


    در ضمن از سنسور LM35 برای پروژه استفاده کردم.

    ممنونم

    #2
    پاسخ : سوال در مورد دستکاری کردن مقدار ADCW برای پروژه دماسنج + برنامه + پروتئوس

    منتظرم....

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

    دیدگاه


      #3
      پاسخ : سوال در مورد دستکاری کردن مقدار ADCW برای پروژه دماسنج + برنامه + پروتئوس

      دوست عزیز ADCW 10 بیتی هست..پس دیگه به ADCH و ADCL نیازی نیست...
      مورد بعدی اینه که شما تو برنامه به ADCW مقدار دادی!!!! :eek: چه کاریه؟

      اگه میخوای ولتاژ ورودی به پایه ADC رو بدست بیاری باید اول اون عدد 10بیتی که درون ADCW ذخیره میشه رو تقسیم بر 10 بیت کنی و بعدش در ولتاژ رفرنس مبدل ضرب کنی ...(تو کد زیر من از 2.56 داخلی میکرو استفاده کردم)خروجی در این مرجله ولتاژ اعمال شده به پایه ADC هستش...حالا چون از LM35 استفاده کردی باید ولتاژ رو در 100 ضرب کنی تا مستقیما دما رو بدست بیاری...

      کد:
       unsigned int adc_data;
       adc_data=ADCW;
       temp=(adc_data*2.56)/1023;
       temp=temp*100;
      تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

      www.intelart.ir


      ساخت کنترلر دما PID فازي با AVR [آموزشی]

      دیدگاه

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