اطلاعیه

Collapse
No announcement yet.

مشکل این برنامه در کجاست؟(دماسنج با lm35)

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

    مشکل این برنامه در کجاست؟(دماسنج با lm35)

    [code=c]
    #fuses hs
    #use delay(clock=4000000)
    #define lcd_type 2
    #include <lcd.c>
    float a;
    void main(){
    lcd_init();
    setup_adc_ports(an0);
    setup_adc(adc_clock_div_4);
    setup_adc(adc_clock_internal);
    set_adc_channel(0);
    set_tris_a(0xff);
    while (true){
    a=read_adc(adc_start_and_read);
    a*=0.488;
    lcd_gotoxy(1,1);
    printf(lcd_putc,"temp=%f",a);
    delay_ms(50);
    }}
    [/code]

    این برنامه دما رو درست نشون نمیده،از انالوگ به دیجیتال 8 بیتی استفاده کردم،مشکلش چیه؟

    #2
    پاسخ : مشکل این برنامه در کجاست؟(دماسنج با lm35)

    نوشته اصلی توسط m.a.m.electro
    این برنامه دما رو درست نشون نمیده،از انالوگ به دیجیتال 8 بیتی استفاده کردم،مشکلش چیه؟
    مشکل تو این خط برنامه اسa*=0.488;
    اگه ازمبدل 10بیتی استفاده میکردی این دستور درست بود چون وقتی از ده بیتی استفاده کنی میکرو ولتاز رو به 1023 قسمت تقسیم میکنه
    یعنی5000میلی ولت تقسیم بر10234برابر است با5000/1023=4.88یعنی میکرو به ازای هر4.88میلی ولت یک واحد افزایش میده متغیری که عدد ولتاژرو روش میریزی
    حالا شما از مبدل8بیتی استفاده کردی پس باید5000میلی ولت رو تقسیم بر255کنی یعنی5000/255=19.6 پس میکرو به ازای هر19.6میلی ولت یه واحد عددافزایشمیده عدد متغیر رو

    پس کاری که باید انجام بدی به جای این خط ازبرنامهa*=0.488;
    a*=19.6رو قرار بده(چون با کامپایلری که برنامه رو نوشتی اشنایی ندارم اگه بازم درست جواب ندادبه جای19.6 1.96 یا0.196رو قرار بده
    اگریک فلج مادر زاد در مسابقه دو ماراتون نفراول نشود مقصر فقط وفقط خودش است...

    دیدگاه

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