اطلاعیه

Collapse
No announcement yet.

مشکل در نمایش یک سطر در ال سی دی (DHT22)

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

    #16
    پاسخ : مشکل در نمایش یک سطر درlcd

    سلام ..
    --
    تویه پرتئوس،اشکالی بخصوصی وجود نداره...
    کدها رو اینطور به کدویژن بدید، و بعد با پرتئوس امتحان کنید (اخطار حذف شده...)
    [code=c]/************************************************** *****
    Project :
    Version :
    Date : 05/30/2015
    Author :
    Company :
    Comments:

    Chip type : ATmega8A
    Program type : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 256
    ************************************************** *****/
    // DHT22 humidity and Temprature sensor & USART Project
    #include <mega8.h>
    #include <delay.h>
    #include <stdio.h>
    #include <alcd.h>
    #include "DHT22.h"

    void main(void)
    {
    float temperature,humidity;
    char str[10],str2[10],temp[10],hum[10];
    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: Off
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 9600
    UCSRA=0x00;
    UCSRB=0x08;
    UCSRC=0x06;
    UBRRH=0x00;
    UBRRL=0x33;
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    lcd_init(16);
    lcd_gotoxy(0,0);//انتخاب سطر اول،برای ثابت ماند ارور روی ال سی دی
    lcd_putsf("please wait.." //متن مورد نظر شما
    delay_ms(3000); // سه ثانیه تاخیر
    lcd_clear(); //دستور پاک سازی ال سی دی
    while (1)
    {

    ftoa(temperature,1,temp);
    //sprintf(str,"Temp=%s",buff);
    //putsf("Temp ="
    //puts(str);
    ftoa(humidity,1,hum);
    sprintf(str,"Temp=%s C",temp);
    sprintf(str2,"Hum=%s %%",hum);
    //putsf("Hum ="
    lcd_clear();
    lcd_gotoxy(0,0); //انتخاب سطر اول ال سی دی
    lcd_puts(str); //نمایش دما
    lcd_gotoxy(0,1); //انتخاب سر دوم ال سی دی
    lcd_puts(str2); //نمایش رطوبت

    delay_ms(2000); //مدت زمان تاخیر برای خواندن مجدد سنسور
    }
    }

    [/code]
    باتشکر.

    دیدگاه


      #17
      پاسخ : مشکل در نمایش یک سطر درlcd

      ممنون: ولی باز درست نشد! هم توی پرتئوس تست کردم و هم روی مدار! البته توی کد ویژن 3 تا warning داده بود! من که شاخ در اوردم از دست این برنامه!




      سپاس

      دیدگاه


        #18
        پاسخ : مشکل در نمایش یک سطر درlcd

        سلام
        من خیلی وارد نیستم. اما خط آخر اررور میگه فایل DHT22.H حذف شده. لینکر زمانی این کار رو میکنه که فانکشنی یا پارامتری تعریف بشه اما استفاده نشه.
        این فایل رو توی پروژه قرار دادین؟

        دیدگاه


          #19
          پاسخ : مشکل در نمایش یک سطر درlcd

          نوشته اصلی توسط dariai
          سلام
          من خیلی وارد نیستم. اما خط آخر اررور میگه فایل DHT22.H حذف شده. لینکر زمانی این کار رو میکنه که فانکشنی یا پارامتری تعریف بشه اما استفاده نشه.
          این فایل رو توی پروژه قرار دادین؟
          بله: کلاس include شده به پروژه: گمان کنم هر چی هست سر این کلاسی(dht22) هست که به پروژه وصل هست!! کلاس اش مثل اینکه مشکل داره!!
          سپاس

          دیدگاه


            #20
            پاسخ : مشکل در نمایش یک سطر درlcd

            پس با این شکل include کردن یعنی هدر فایلش توی فولدر پروژتون هست؟
            یه پبشنهاد دارم.
            توی while اون lcd_clear() رو بر دارید فرقی حاصل میشه؟

            دیدگاه


              #21
              پاسخ : مشکل در نمایش یک سطر درlcd

              نوشته اصلی توسط dariai
              پس با این شکل include کردن یعنی هدر فایلش توی فولدر پروژتون هست؟
              یه پبشنهاد دارم.
              توی while اون lcd_clear() رو بر دارید فرقی حاصل میشه؟
              بله فایل هدر توی پوشه هست.
              lcd_clear را پاک کردم هیچ تاثیری نداشت !!
              همین پروژه با زبان بیسیک اش را دارم ولی ای سی اش مگا 16 هست و چند مشکل دیگه داره! ولی تست نکردم اش! نمیدانم چرا ملت همه با بیسیک کار می کنند!! اصلا پروژه درست و حسابی با زبان سی خیلی کم هست!
              سپاس

              دیدگاه


                #22
                پاسخ : مشکل در نمایش یک سطر درlcd

                سلام بر شما
                ---
                بخاطره این با بسکام استفاده میکنند چون اسون تره...(ولی محدودیت های خودش رو داره)

                کاری به به اون سه اخاطر نداشته باشه(بخاطره برداشتن اون دستورات ،اون اخطار ظاهر شدن)

                شما این خط برنامه رو به وضعیت زیر اصلاح کنید،ببینید چه نتیجه می گیرید...
                [code=c]sprintf(str,"Temp=%s C",temp);[/code]
                به
                [code=c]sprintf(str,"Temp=%s",temp);[/code]

                در صورتی که بازم مشکل برطرف نشد ..
                کدهای زیر رو حذف کنید
                [code=c] sprintf(str2,"Hum=%s %%",hum);
                [/code]
                [code=c] lcd_gotoxy(0,1); //انتخاب سر دوم ال سی دی
                lcd_puts(str2); //نمایش رطوبت [/code]
                بعد ببینید بازم دما نمایش داده نمیشه؟
                باتشکر.

                دیدگاه


                  #23
                  پاسخ : مشکل در نمایش یک سطر درlcd

                  ممنون ولی باز این طلسم شکسته نشد: تغییراتی که گفتید انجام دادم و نتیجه اش عکس زیر شد:
                  میگم بهتر نیست به یک سبک دیگه بنویسم: اگر جواب نداد یعنی برنامه مشکل داره!!

                  مثلا یک کد دیدم که از این سبک استفاده کرده بود !!

                  کد:
                  char  lcd_buf[32];
                  sprintf(lcd_buf,"Temp=%3.1f\xdfC\nHigh Temp=%i",temp,compare);

                  دیدگاه


                    #24
                    پاسخ : مشکل در نمایش یک سطر در ال سی دی (DHT22)

                    سلام بر شما
                    ---
                    فایل پرتئوس رو درست کردم (میتونید مثل واقعی ازش ستفاده کنید)
                    مشکل شما رو هم برطرف کردم.به احتمالا 99 درصد الان درست کل می کنه(انشالله)
                    می تونید از اینجا دانلود کنید.
                    باتشکر.

                    دیدگاه


                      #25
                      پاسخ : مشکل در نمایش یک سطر در ال سی دی (DHT22)

                      نوشته اصلی توسط SINASET
                      سلام بر شما
                      ---
                      فایل پرتئوس رو درست کردم (میتونید مثل واقعی ازش ستفاده کنید)
                      مشکل شما رو هم برطرف کردم.به احتمالا 99 درصد الان درست کل می کنه(انشالله)
                      می تونید از اینجا دانلود کنید.
                      باتشکر.
                      ممنون دوست عزیز: خیلی لطف کردید :applause:
                      روی برد برد بستم خوشبختانه جواب داد ولی لطفا یک کاری کنید که واژه دما و رطوبت را کامل روی lcd نمایش بده !! من هر کاری کردم نشد!!
                      مثل این عکس:

                      سپاس

                      دیدگاه


                        #26
                        پاسخ : مشکل در نمایش یک سطر در ال سی دی (DHT22)

                        میشه بگید مشکل از چی بود؟
                        تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                        www.intelart.ir


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

                        دیدگاه


                          #27
                          پاسخ : مشکل در نمایش یک سطر در ال سی دی (DHT22)

                          نوشته اصلی توسط ircaspianhero
                          ممنون دوست عزیز: خیلی لطف کردید :applause:
                          روی برد برد بستم خوشبختانه جواب داد ولی لطفا یک کاری کنید که واژه دما و رطوبت را کامل روی lcd نمایش بده !! من هر کاری کردم نشد!!
                          مثل این عکس:

                          سپاس
                          سلام ..
                          خوب بسلامتی .خدا شکر..

                          این کدها رو بدید .. تا مشکل جدیدتون هم برطرف بشه
                          [code=c]/************************************************** *****
                          Project :sinaset
                          Version :v2
                          Date : 08/27/2015 //1394.6.5
                          Author :
                          Company :
                          Comments:

                          Chip type : ATmega8A
                          Program type : Application
                          AVR Core Clock frequency: 8.000000 MHz
                          ************************************************** *****/
                          // DHT22 humidity and Temprature sensor & USART Project
                          #include <mega8.h>
                          #include <delay.h>
                          #include <stdio.h>
                          #include <alcd.h>
                          #include "DHT22.h"

                          void main(void)
                          {
                          float temperature,humidity;
                          char str[16],str2[16],temp[10],hum[10];
                          // USART initialization
                          // Communication Parameters: 8 Data, 1 Stop, No Parity
                          // USART Receiver: Off
                          // USART Transmitter: On
                          // USART Mode: Asynchronous
                          // USART Baud Rate: 9600
                          UCSRA=0x00;
                          UCSRB=0x08;
                          UCSRC=0x06;
                          UBRRH=0x00;
                          UBRRL=0x33;
                          // Analog Comparator initialization
                          // Analog Comparator: Off
                          // Analog Comparator Input Capture by Timer/Counter 1: Off
                          ACSR=0x80;
                          SFIOR=0x00;
                          lcd_init(16);
                          lcd_gotoxy(0,0);//انتخاب سطر اول،برای ثابت ماند ارور روی ال سی دی
                          lcd_putsf("LODING.." //متن مورد نظر شما
                          delay_ms(3000); // سه ثانیه تاخیر
                          lcd_clear(); //دستور پاک سازی ال سی دی
                          while (1)
                          {
                          if(dht22_read(&temperature,&humidity) == 0)
                          {
                          lcd_gotoxy(0,0);//انتخاب سطر اول،برای ثابت ماند ارور روی ال سی دی
                          lcd_putsf("DHT22 ERROR "
                          }
                          else
                          {
                          ftoa(temperature,1,temp);
                          //sprintf(str,"Temp=%s",buff);
                          //putsf("Temp ="
                          //puts(str);
                          ftoa(humidity,1,hum);
                          sprintf(str,"Temp=%s",temp);
                          sprintf(str2,"Humidity=%s %",hum);
                          //putsf("Hum ="
                          lcd_clear();
                          lcd_gotoxy(0,0); //انتخاب سطر اول ال سی دی
                          lcd_puts(str); //نمایش دما
                          lcd_gotoxy(0,1); //انتخاب سر دوم ال سی دی
                          lcd_puts(str2); //نمایش رطوبت
                          lcd_gotoxy(14,1);//انتخاب سطر دوم ،ستون 14 دهم
                          lcd_puts("%" //نمایش دادن درصد
                          lcd_gotoxy(10,0); //انتخاب سطر اول و ستون دهم
                          lcd_puts("C" //نشان دادن علامت دما
                          }
                          delay_ms(2000); //مدت زمان تاخیر برای خواندن مجدد سنسور
                          }
                          }

                          [/code]

                          میشه بگید مشکل از چی بود؟
                          سلام..
                          ---
                          مشکل از بعد های ارایه های متغیر های str و str2 بود که به صورت 10 بعدی تعریف شده بود که با تعویض به 16 بعدی،مشکل برطرف شد (باید تعداد اریه ها به تعداد ستون ها LCD یک باشد. lcd مورد استفاده ما 16 ستون و 2 سطر دارد16X2)
                          باتشکر.

                          دیدگاه


                            #28
                            پاسخ : مشکل در نمایش یک سطر در ال سی دی (DHT22)

                            سلام برشما

                            ببخشید اینو ندیدم...من خودم یه آرایه 32 تایی تعریف میکنم و همه چی رو یه جا با sprintf میریزم داخلش و بعدش روی LCD نشون میدم...
                            موفق باشید
                            تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                            www.intelart.ir


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

                            دیدگاه


                              #29
                              پاسخ : مشکل در نمایش یک سطر در ال سی دی (DHT22)

                              ممنون : ولی بد تر شد !! کلا روی مدار ارور dht22 میده !! و توی شبیه سازی ظاهرا کار می کنه ولی قسمت دما اش ناقص می افته یعنی درصد نداره!!

                              سپاس

                              دیدگاه


                                #30
                                پاسخ : مشکل در نمایش یک سطر در ال سی دی (DHT22)

                                مشکل حل شد: جسارتا ان کدی که دادید مشکل داره!! کد قبلی تان را ویرایش کردم و مشکل حل شد!
                                دوست عزیز: الان به مدار جدیدتان توی شبیه سازی دیدم اسلیسکوپ اضافه کردید !! ایا مدار از لحاظ ان سیستم نویز گیر تغییر کرده ؟؟!! البته خروجی را هم به 6 تغییر دادید !!که مهم نیست!
                                سپاس

                                دیدگاه

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