اطلاعیه

Collapse
No announcement yet.

مشکل با چاپ روی lcd با کتابخانه های موجود برای avr studio

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

    مشکل با چاپ روی lcd با کتابخانه های موجود برای avr studio

    سلام دوستان
    من میخام روی lcd پیغامی را چاپ کنم اما در یک مورد یکی از برنامه ها اصلا lcd راه اندازی اولیه initialize نمیشه و در یک برنامه دیگه با همون تابع lcd init، چاپ روی lcd انجام میشه و لی درست عملیات چاپ انجام نمی گیره. این در حالی است هر دو مورد بالا روی پروتئوس درست جواب میدن.
    به نظر شما مشکل از چیه؟!!!!
    خدایا! از من در گذر آنچه را از من بدان داناتری و اگر بار دیگر به آن بازگردم، تو نیز به بخشایش باز گرد.
    خدایا! آنچه از اعمال نیکو تصمیم گرفتم و انجام ندادم ببخشای.
    خدایا! ببخشای آنچه را که با زبان به تو نزدیک شدم ولی با قلب آن را ترک کردم.
    خدایا! ببخشای نگاه های اشارت آمیز و سخنان بی فایده و خواسته های بی مورد دل و لغزش های زبان را.

    #2
    پاسخ : مشکل با چاپ روی lcd با کتابخانه های موجود برای avr studio

    این هم تابع مربوط به راه اندازی اولیه ال سی دی

    void LCDinit(void)//Initializes LCD
    {
    _delay_ms(15);
    LDP=0x00;
    LCP=0x00;
    LDDR|=1<<LCD_D7|1<<LCD_D6|1<<LCD _D5|1<<LCD_D4;
    LCDR|=1<<LCD_E|1<<LCD_RW|1<<LCD_ RS;
    //---------one------
    LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D 5|1<<LCD_D4; //4 bit mode
    LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_R S;
    _delay_ms(1);
    LCP&=~(1<<LCD_E);
    _delay_ms(1);
    //-----------two-----------
    LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D 5|1<<LCD_D4; //4 bit mode
    LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_R S;
    _delay_ms(1);
    LCP&=~(1<<LCD_E);
    _delay_ms(1);
    //-------three-------------
    LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D 5|0<<LCD_D4; //4 bit mode
    LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_R S;
    _delay_ms(1);
    LCP&=~(1<<LCD_E);
    _delay_ms(1);
    //--------4 bit--dual line---------------
    LCDsendCommand(0b00101000);
    //-----increment address, cursor shift------
    LCDsendCommand(0b00001110);


    }
    خدایا! از من در گذر آنچه را از من بدان داناتری و اگر بار دیگر به آن بازگردم، تو نیز به بخشایش باز گرد.
    خدایا! آنچه از اعمال نیکو تصمیم گرفتم و انجام ندادم ببخشای.
    خدایا! ببخشای آنچه را که با زبان به تو نزدیک شدم ولی با قلب آن را ترک کردم.
    خدایا! ببخشای نگاه های اشارت آمیز و سخنان بی فایده و خواسته های بی مورد دل و لغزش های زبان را.

    دیدگاه


      #3
      پاسخ : مشکل با چاپ روی lcd با کتابخانه های موجود برای avr studio

      سلام به همه
      صلوات
      کدهارو چپ چین کردی؟
      کدهارو با گزینه " قرار دادن کد " بزار تو تایپیک تا بشه راحت خوندشون
      میتونه اشکال از نوع درایورها باشه که توی proteus نشون میده و در عمل نه.
      یا میتونه مشکل از نویز ، طراحی مدار باشه
      چرا از یه کتابخونه کامل و مطمئن استفاده نمیکنی؟

      ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
      شهید دکتر مصطفی چمران
      اللهم صل علی محمد و ال محمد و عجل فرجهم
      ; C is not for children

      دیدگاه


        #4
        پاسخ : مشکل با چاپ روی lcd با کتابخانه های موجود برای avr studio

        سلام
        مثلا چه کتابخونه ای مدنظرتونه؟
        ضمنا نوع کنترلر lcd من 1602A است.
        بعید میدونم از نویز مدار باشه چون که با توابع lcd کدویژن درست جواب میده و راه اندازی میشه.
        این هم کدهای برنامه
        initialize

        کد:
        void LCDinit(void)//Initializes LCD
        {
          _delay_ms(15);
          LDP=0x00;
          LCP=0x00;
          LDDR|=1<<LCD_D7|1<<LCD_D6|1<<LCD_D5|1<<LCD_D4;
          LCDR|=1<<LCD_E|1<<LCD_RW|1<<LCD_RS;
          //---------one------
          LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|1<<LCD_D4; //4 bit mode
          LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;   
          _delay_ms(1);
          LCP&=~(1<<LCD_E);
          _delay_ms(1);
          //-----------two-----------
          LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|1<<LCD_D4; //4 bit mode
          LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;   
          _delay_ms(1);
          LCP&=~(1<<LCD_E);
          _delay_ms(1);
          //-------three-------------
          LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|0<<LCD_D4; //4 bit mode
          LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;   
          _delay_ms(1);
          LCP&=~(1<<LCD_E);
          _delay_ms(1);
          //--------4 bit--dual line---------------
          LCDsendCommand(0b00101000);
          //-----increment address, cursor shift------
          LCDsendCommand(0b00001110);
        
        
        }
        خدایا! از من در گذر آنچه را از من بدان داناتری و اگر بار دیگر به آن بازگردم، تو نیز به بخشایش باز گرد.
        خدایا! آنچه از اعمال نیکو تصمیم گرفتم و انجام ندادم ببخشای.
        خدایا! ببخشای آنچه را که با زبان به تو نزدیک شدم ولی با قلب آن را ترک کردم.
        خدایا! ببخشای نگاه های اشارت آمیز و سخنان بی فایده و خواسته های بی مورد دل و لغزش های زبان را.

        دیدگاه


          #5
          پاسخ : مشکل با چاپ روی lcd با کتابخانه های موجود برای avr studio

          مهندس یه کتابخونه جامع تو تاپیک کوچ از کدویژن به اتمل استودیو هستش که فکر کنم آقای موسوی زحمت کشیدن
          اونو بکار ببر
          خیلی گویا و راحت و همراه با توضیحاته کامله
          نیم نگاهی به سخت افزار هم داشته باش
          شدیدا از پروتئوس پرهیز کن که خیانت به تجربیات ارزشمندیست که میخوای به دست بیاری :angry: :angry:
          موفق باشی

          دیدگاه


            #6
            پاسخ : مشکل با چاپ روی lcd با کتابخانه های موجود برای avr studio

            سلام به همه
            صلوات
            مثلا چه کتابخونه ای مدنظرتونه؟
            یکیش رو که دوستمون گفتن اما تا چند وقت دیگه برای Atmel Studio یه کتابخونه کامل که از انواع سایزها ، فونت ها ، بیت های ارتباطی و .. پشتیبانی میکنه قرار میدم.
            بعید میدونم از نویز مدار باشه چون که با توابع lcd کدویژن درست جواب میده و راه اندازی میشه.
            اگر اینجوره پس مشکل از نویز نیست.
            برنامت رو خوندم کمی گیج شدم
            اصول و مرحله انجام INIT کردن رو میزارم:
            1- تمامی پایه های ارتباطی بین LCD و میکروکنترلر رو خروجی میکنیم
            2- تمامی پایه های ارتباطی بین LCD و میکروکنترلر رو low (صفر) میکنیم
            3- حدود 100 میلی ثانیه تاخیر
            4- lcd رو برای حالت 8بیتی و یک خطی تنظیم میکنیم
            5- روی پایه های دیتای lcd مقدار صفر رو میفرستیم
            6- lcd رو برای حالت دلخواه (بیت ، فونت ، تعداد خط) تنظیم میکنیم
            7- lcd رو اگر برای 4بیت تنظیم کردیم باید دوباره این کار رو انجام بدیم اما به شیوه ارسال دستور 4 بیتی
            8- صفحه نمایش رو خاموش میکنی
            9- lcd رو پاک میکنی
            10- حدود 10 میلی ثانیه تاخیر
            11 - مد lcd رو (lcd با هر بار وارد شدن یک کاراکتر به چه شکلی عمل کند را) تنظیم میکنی
            12- صفحه نمایش رو روشن میکنی
            بین تمامی قسمت هایی که گذاشتم 240 میکرو ثانیه تاخیر اضافه کن
            اگر از شیوه 4بیتی میخوای استفاده کنی تا قبل از مرحله 7 باید تمامی دستورات رو برای حالت 8 بیتی ارسال کنی و چون 4سیم ارتباطی داری و به 4 بیت بالای lcd هم وصل هستن کافیه فقط از هر دستور مورد نظر قسمت 4 بیت بالا رو ارسال کنی
            اگر باز هم کارت راه نیفتاد بگو تا بیشتر روش کار کنیم
            انشاالله تا چند روز دیگه هم کتابخونه ای رو که گفتم قرار میدم و انشاالله به یک کتابخونه رفرنس در این زمینه تبدیل میشه
            ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
            شهید دکتر مصطفی چمران
            اللهم صل علی محمد و ال محمد و عجل فرجهم
            ; C is not for children

            دیدگاه

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