اطلاعیه

Collapse
No announcement yet.

اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

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

    اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

    سلام نمیدونم چرا تو تایپیک FSK جوابمو ندادید :cry2:حقم دارید چون همیشه وقت برای جواب دادن نیست :NO:اما اگه میشه بگید اشکال کار من چیه؟
    من با استفاده از دوتا Tiny2313 ارتباط سریال یکطرفه برقرار کردم برای میکرو گیرنده یه LCD گذاشتم برنامه با CodeVision است و به این صورت که فرستنده آرایه پشت سرهم میفرستد ولی گیرنده داخل حلقه while بایت به بایت میگیرد و روی LCD نشان میدهد توی پروتئوس درست بود ولی در عمل دو حرف اول رو درست نشون نمیده بعدش درست میشه بعدش حرف اول یا آخر رو دوبار تکرار میکنه بعد یه دفعه صفحه سفید میشه بعد هم خط بالای LCD سیاه میشه یا کنتراستش تغییر میکنه و از یه زاویه ای بهش نگاه کنیم میبینیم که به سرعت دیتای بی معنی میفرسته اگر LCD رو برداریم دوباره بزاریم بعضی وقتا کلا خرابه وقتهای دیگه اولش خرابه و بعد وضعیت قبلی پیش میاد بین دو سر تغذیه خازن گذاشتم اول دیتای بی معنی میفرسته بعد هم خراب میشه
    اساتید اگر میتونین چون پروژه مال کسیه زودتر بگین چی کار کنم دیگه چیزی به ذهنم نمیرسه
    فکر کنم نویز باشه یا تغذیه کم میاره

    #2
    پاسخ : اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

    کسی میتونه راهنمایی بکنه؟

    دیدگاه


      #3
      پاسخ : اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

      تا برنامه رو نذازی که نمیتونیم کومکی کنیم!
      تشکر لازم نیست!

      دیدگاه


        #4
        پاسخ : اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

        فرستنده
        کد:
        #include <tiny2313.h>
        #include <stdio.h>
        #include <delay.h>
        void main(void)
        {
        #pragma optsize-
        CLKPR=0x80;
        CLKPR=0x00;
        #ifdef _OPTIMIZE_SIZE_
        #pragma optsize+
        #endif
        UCSRA=0x00;
        UCSRB=0x08;
        UCSRC=0x06;
        UBRRH=0x03;
        UBRRL=0x40;
        ACSR=0x80;
        
        while (1)
           {
           // Place your code here
           delay_ms(100);
           putsf("shahryar");
           delay_ms(100);
           putsf("S-rajab~");
           delay_ms(100);
           putsf("<~shah~>");
           };
        }
        گیرنده
        کد:
        #include <tiny2313.h>
        #asm
          .equ __lcd_port=0x18 ;PORTB
        #endasm
        #include <lcd.h>
        #include <stdio.h>
        char a[8];
        void main(void)
        {
        #pragma optsize-
        CLKPR=0x80;
        CLKPR=0x00;
        #ifdef _OPTIMIZE_SIZE_
        #pragma optsize+
        #endif
        UCSRA=0x00;
        UCSRB=0x10;
        UCSRC=0x06;
        UBRRH=0x03;
        UBRRL=0x40;
        ACSR=0x80;
        lcd_init(16);
        while (1)
           {
           // Place your code here
           gets(a,8);
           lcd_puts(a);   
           };
        }
        این دفعه نسبت به دفعات قبل بهتر شد(بیشتر طول کشید)ولی یه دفعه صفحه پاک میشه و خط بالاش سیاه میشه و کنتراستش یه جوریه که باید از یه زاویه خاص اونو دید ولی مثل اینکه درست میفرسته
        بعد هم نگاه کردم یه سری چرت و پرت روی LCD نشون میداد
        مشکل چیه؟سرعت پایین LCD یه LCD خرابه میکرو نویزیه ...؟

        دیدگاه


          #5
          پاسخ : اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

          اشکال چیه؟ :cry2:
          کم دیگه موندم چی کار کنم :cry2:

          دیدگاه


            #6
            پاسخ : اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

            :cry2:
            چی کار کنم :angry:

            دیدگاه


              #7
              پاسخ : اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

              من پیشنهاد می کنم بجای استفاده از gets از وقفه دریافت سریال استفاده کن.
              https://www.linkedin.com/in/mohammadhosseini69

              http://zakhar.blog.ir

              دیدگاه


                #8
                پاسخ : اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

                شما فکر نمیکنید سرعت LCD پایینه آخه باود ریت 600 است اول درسته بعد خراب میشه بعد درست میشه بعد خراب میشه...

                دیدگاه


                  #9
                  پاسخ : اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

                  آره یکی از مشکلات کدویژن کم بودن سرعت کار با ال سی دی !!
                  ولی با این حال فکر نمی کنم وقفه مشکل ایجاد کنه!!
                  اتفاقا بنظرم gets کارو خراب میکنه. تا حالا باهاش کار نکردم. چطوریه؟ منتظر میمونه تا اطلاعات بیاد، بخونه و از تابع خارج بشه؟
                  https://www.linkedin.com/in/mohammadhosseini69

                  http://zakhar.blog.ir

                  دیدگاه


                    #10
                    پاسخ : اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

                    نوشته اصلی توسط محمد حسینی
                    آره یکی از مشکلات کدویژن کم بودن سرعت کار با ال سی دی !!
                    بله به نظر میاد پایین باشه
                    نوشته اصلی توسط محمد حسینی
                    ولی با این حال فکر نمی کنم وقفه مشکل ایجاد کنه!!
                    مشکل من اینه که باید پشت سر هم بیاد و هر اطلاعاتی رو که ارسال میکنه روی LCD نشون بده وقفه کار رو سخت تر میکنه شاید هم برنامه رو کندتر
                    نوشته اصلی توسط محمد حسینی
                    اتفاقا بنظرم gets کارو خراب میکنه. تا حالا باهاش کار نکردم. چطوریه؟ منتظر میمونه تا اطلاعات بیاد، بخونه و از تابع خارج بشه؟
                    نه به نظر نمیاد خراب کنه بله منتظر میشه تا اطلاعات بیاد هر چند بایت که براش معین کنی رو منتظر میشه که بگیره بعد میره خط بعدی
                    ولی من در کل فکر میکنم اشکال از سرعت پایین LCD باشه

                    دیدگاه


                      #11
                      پاسخ : اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

                      بخاطر همین میگم از وقفه استفاده کن. اگه دریافت اطلاعات رو به وقفه بسپری دیگه کاری به ال سی دی و ... نداره. هرموقع اطلاعاتی اومد تو بافر ذخیره میشه.
                      البته خودمم الان با winavr همین مشکل رو دارم...
                      https://www.linkedin.com/in/mohammadhosseini69

                      http://zakhar.blog.ir

                      دیدگاه


                        #12
                        پاسخ : اشکال چیه؟RS232 یا LCD یا چیز دیگه؟

                        من پیشنهاد می کنم بجای استفاده از gets از وقفه دریافت سریال استفاده کن
                        بهترین راه همینه.
                        تابع get فقط کاراکتر رو تا r\ و 0\ میخونه. اینطوری باید برا خوندن کل رشته از شرط استفاده کنی و حلقه. اما وقفه سریال دیگه......
                        تشکر لازم نیست!

                        دیدگاه

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