نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
مهدی دمیرچیلو

آموزش جامع کار با LCD گرافیکی جلسه دوم

به نام خدا

آموزش جامع کار با LCD گرافیکی جلسه دوم

آموزش جامع کار با LCD گرافیکی جلسه دوم
تو جلسه قبل (  پروژه lcd گرافیکی به همراه آموزش کامل ) اصل قضیه رو گفتیم و تو این جلسه میریم سراغ جزئیات.انشااالله جلسات بعدی میریم سراغ LCD رنگی. blum

اگه مطلب جلسه قبلی رو خوب خونده باشید (که نخوندید ^_^) تو قسمت کدنویسیش ۵ خط اول مربوط به تعریف کتاب خانه بود

تو دو خط آخر یعنی

منظور ما ایین بود که دادا من برا این که مقدار کد این پروژه کم بشه و کد ها دسته بندی بشه و … میاد یه سری کد رو تو یه فایل های متنی با فرمت h. قرار میدم و این فایل متنی داخل پوشه ای به نام  Includes قرار میدم و این فایل رو به صورت کتاب خونه با کد زیر

برات تعریف میکنم  و تو باید این فایل رو بخونی.(با این کار ما انگار کد هایی که ما در این فایل با فرمت h. قرار داده بودیم مثل این هستش که در پروژه اصلی قرار دادیم.)
البته تو کتاب خونه

هم از این روش برا تعریف کد های مربوط به فونت استفاده شده یعنی در این فایل در قسمت تعریف کتاب خانه کد زیر آورده شده

یعنی تو کتاب خونه GLCD هم کتاب خونه مربوط به فونت با این روش تعریف شده.
توجه کنید که بر خلاف تعریف کتاب خونه های قبلی توسط ما ، این کتاب خونه(برا فونت رو میگم) به صورت زیر نیست

علتش هم معلومه چون این کتابخونه (فونت) و کتابخونه GLCD ( که کتاب خونه فونت توش تعریف شده) در یک پوشه و کنار هم هستن.
 
حالا اگه شما پروژه رو دانلود کرده باشید و خواسته باشین مثلا پایه های lcd گرافیکی رو به یه پورت دیگه ای از پورت های میکروکنترلر تون وصل کنید میبینید که برنامه اجرا نمیشه.
چرا؟؟  چراش رو تو زیر میگم.
تعریف این که پایه های lcd به کدام پایه میکرو باید  وصل شود ، در فایل مربوط به کتابخانه زیر آورده شده و تعریف شده.

منم هی میخواستم پایه های LCD گرافیکی رو به یه پورت دیگه وصل کنم هرکاری میکردم نمیشد ، آخر سر فهمیدم باید تو فایل GLCD.h این کار رو انجام بدم و پورتی که ال سی دی باید بهش وصل بشه رو تغییر بدم.(علتش هم معلومه….)
 
در چلسه قبل اگه فایلی که برا دانلود گزاشتم رو دانلود کنید و کدهاش رو بررسی کنید متوجه میشید که در کد اصلی ، دو تا کتاب خونه به نام های زیر تعریف شدن

و تو فایل

هم یه کتاب خونه که مربوط به فونت هست آورده شده
حالا ما میخوایم این کد ها رو یکی کنیم (یعنی کد های سه کتاب خونه زیر رو تو فایل GLCD.h قرار بدیم. )

 
کد های glcd.h به صورت زیر میشود
(به کد های بعد از “تعریف عکس-عکس gif  و تعریف فونت”  دقت شود که مربوط به تعین پورتی از میکرو که lcd ما باید به آن وصل شود میباشد)

 

دانلود این کد به صورت کامل

 
ودر کد های اصلی پروژمون دیگه فقط کتاب خونه زیر رو تعریف میکنیم. و دیگر هیچ

 
حالا تصمیم با خودتونه که کد های پروژه مثل حالت قبل (فایلی که تو جلسه قبل گزاشتم ) باشه یا به این صورت. یکی کد های اصلی پروژه و یکی کتاب خونه glcd.h یعنی دو تا فایل.
چیز خاصی نگفتم ولی امید وارد متوجه شده باشید.
تو جلسه قبل گفتم که یه پوشه به نام Includes باید در پوشه مربوط به کد های پروژتون باشه اما چراش رو نگفتم ، و این جلسه کلا مربوط به همین پوشه و فایل های درونش بود.
حالا شما میتونید فایا های درونش رو کم و زیاد کنید و حتی اسم این پوشه رو تغییر بدید یا اصلا توابعتون رو داخل این پوشه نذارید و یه راست بزارید کنار کد های اصلی پروژتون.
 

گروه پرسش و پاسخ الکترونیکی در سروش
مهدی دمیرچیلو گوگل میفرماید : إِنَّ اللّه مَعَ السارِچین ( خداوند با سرچ کنندگان است )
ارسال دیدگاه
27

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

4) پسورد فایل های سایت : www.dmf313.ir

  1. Avatar

    مهمان

    محمد شمس

    سلام
    با تشکر از زحمات شما .
    سوالم این است که آیا از برنامه داخلی فایل c میتوان به نحوه و شماره پایه های lcd .پی برد .؟ برنامه نوشته شده c در کد ویژن برای lcd 128×64 به یک نحوی بود . و در برنامه جدید برای lcd 240×128 مسیر پایه ها را نمتوانم پیدا کنم . . ممنون میشم راهنماییم کنید .
    lcd 128×64
    GLCDINIT_t glcd_init_data;
    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: On
    // INT2 Mode: Falling Edge
    // INT3: Off
    // INT4: Off
    // INT5: Off
    // INT6: Off
    // INT7: Off
    EICRA=0x20;
    EICRB=0x00;
    EIMSK=0x04;
    EIFR=0x04;
    // Graphic LCD initialization
    // The KS0108 connections are specified in the
    // Project|Configure|C Compiler|Libraries|Graphic LCD menu:
    // DB0 – PORTC Bit 0
    // DB1 – PORTC Bit 1
    // DB2 – PORTC Bit 2
    // DB3 – PORTC Bit 3
    // DB4 – PORTC Bit 4
    // DB5 – PORTC Bit 5
    // DB6 – PORTC Bit 6
    // DB7 – PORTC Bit 7
    // E – PORTA Bit 6
    // RD /WR – PORTA Bit 4
    // RS – PORTA Bit 5
    // /RST – PORTD Bit 6
    // CS1 – PORTD Bit 5
    // CS2 – PORTD Bit 7
    lcd 240×128
    GLCDINIT_t glcd_init_data;
    unsigned int mainWiperPos=0;
    // External Interrupt(s) initialization // U P D A T E D— V2-2
    // External Interrupt(s) initialization
    // INT0: On
    // INT0 Mode: Falling Edge
    // INT1: Off
    // INT2: Off
    // INT3: Off
    // INT4: Off
    // INT5: Off
    // INT6: Off
    // INT7: Off
    EICRA=0x02;
    EICRB=0x00;
    EIMSK=0x01;
    EIFR=0x01;
    // Graphic LCD initialization
    // The T6963C connections are specified in the
    // Project|Configure|C Compiler|Libraries|Graphic LCD menu:
    // DB0 – PORTC Bit 3
    // DB1 – PORTC Bit 2
    // DB2 – PORTC Bit 1
    // DB3 – PORTC Bit 0
    // DB4 – PORTG Bit 1
    // DB5 – PORTG Bit 0
    // DB6 – PORTD Bit 7
    // DB7 – PORTD Bit 6
    // CD – PORTC Bit 5
    // /CE – PORTC Bit 6
    // /RD – PORTC Bit 7
    // /WR – PORTG Bit 2
    // /RESET – PORTC Bit 4
    پپایه های مربوطه که در دو تا برنامه آمده را بصورت صحیح وصل میکنم 128.64 درست کار میکند اما 240.128 جواب نمیدهد .!

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام-خب ببیند پایه هایی که به میکرو وصل میشه یکسان هستش – بعد ببینید از پایه i/o استفاده میکنن یا با پایه های پروتکول خاصی کار میکنن – که خب این پایه هارو به پایه های i/o میکرو نمشه وصل کرد و یکم داستان که حس نوشتنش نی الان.

  2. Avatar

    مهمان

    homa

    سلام من این کد رو برای ks0108 مینوسم ولی زیرش خط سیاه میوفته چراا؟؟
    #include
    #include
    // on the graphic display
    #include
    //#include
    void main(void)
    {
    GLCDINIT_t glcd_init_data;
    glcd_init_data.font=font5x7;
    glcd_init(&glcd_init_data);
    while (1)
    {
    glcd_outtextxy(50,10,”hello”);
    //glcd_outtextf(“hello”);
    delay_ms(15);
    }
    }

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      کد + عکس از مدار که میگی خط سیاه میوفته رو زیپ کن ایمیل کن برام یا تلگرام بفرست
      @dmf313

  3. Avatar

    مهمان

    هومن نیکوکار

    از این کتابخونه استفاده کردم چرا در عمل نصف صفحه ال سی دی دوباره در نصف صفحه دیگه تکرار میشه؟یعنی عملا کد 64 تا 128 در 0 تا 63 دوباره ریخته میشه؟اما در پروتئوس درسته تمام پایه ها هم درستن

    • Avatar

      مهمان

      reza

      پایه cs2 رو درست متصل نکردی

  4. Avatar

    مهمان

    شروین

    سلام خواستم بگم کارتون خیلی درسته….درود بر شما
    راستی از چه ورژن کدویژنی استفاده می کنید/؟
    واسه من به دستور delay_us که توی کتابخونه GLCD هستش گیر میده چون نداره همچین دستوری تو کتابخونه ش. واسه همین به دستور delay_ms تغییرش دادم..کار میکنه ولی توی گیف خیلی ضایع میشه جون عکسها به آرومی عوض میشن..!!

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      اون موقع یادم نمیاد یا 3.12 یا 2.4

  5. Avatar

    مهمان

    سعید

    سلام آقا برای راه اندازی ال سی دی گرافیکی برا آردوینو چه کنیم؟؟؟

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      چند روز دیگه قراره(100% نیست) برا یکی راه اندازش کنم بعدش مطلبش رو میزارم سایت

  6. Avatar

    مهمان

    علی

    سلام اقا مهدی
    من یک پروژه ال سی دی گرافیکی شبیه پروژه شما که توی سایت قرار داده اید رو بسته ام ولی در پروتئوس فقط جواب می گیرم و در مدار فقط وقتی پتانسیومتر را تغییر می دهم کل صفحه پر و خالی می شود
    خواهشمند است کمک نمایید.
    با تشکر

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      1) به پروتوس کاری نداشته باشید چون مشکلاتی داره، مثلا من در عمل مدار رو بستم و جواب داد ولی تو پروتئوس جواب نمیداد و حالا برا شما برعکس شده laugh دلیلش هم میتونه جیزای مختلفی باشه، مثلا ولتاژ غیر 5 ولت دادی به مدار، از میکرویی غیر از میکروی من استفاده کردی، فرکانس رو با فیوز بیت ها 8 میگ نکردی، اتصالات اشتباه، تغییر اشتباه کد ها(به نظرم کد همین مطلب رو تست کن)
      2) نظرات مطلب جلسه 1 رو بخون

      • Avatar

        مهمان

        علی

        ممنون از پاسخ گویی سریعت
        ولتاژ دقیقا 5 ولت هست با 7805 دادم
        مجداد کل کدنویسی ها رو انجام دادم و میکرو را atmega16 گذاشتم و همچنین کد ویزارد
        فرکانس 8 مگ داخلی هست اتصلات 3 بار چک شده
        اون نظرات رو هم خوندم
        دلیل دیگه ای هم هست؟؟

        • مهدی دمرچیلو

          نویسنده این مطلب

          مهدی دمرچیلو

          همین پروژه ای که من گزاشتم رو اول تست کن و بعد پروژه خودت رو
          فرکانس 8میگ داخلی با فیوز بیت ها هااااا……با فیوز بیت تغییر دادی یا کدویژن؟
          دلایل دیگه : پایه های cs رو جابجا کن—تا جایی که یادمه بقیه سر این دو پایه مشکل داشتن اکثرا
          بازم به نظرم اتصالات اشتباه باید باشن مگه این که ولتاژ بالا داده باشی و نمایشگر رفته باشه فضا

  7. Avatar

    مهمان

    بهار

    سلام و ممنون ازسایت خوب تون
    من میخوام پایه های داده رو هر کدوم به یک پورت وصل بشه
    توی برنامه نوشتم
    #define data port. 0 porta. 0
    #define dataddr.0 ddra.0
    #define data pine. 0 pins.
    #define data port. 1 portd.2
    #define data Dr. 1 ddrd.2
    #define data pin. 1 pins. 2
    و همینطور تا آخر ولی ارور میده
    مثلا مینویسه سیمیکالن بذارم البته در خط های دستور
    باید چیکار کنم?

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      فک کنم تو نظرات بگردی قبلا جواب دادم
      باید برید داخل کتابخونه و از اونجا تغییر بدید و از داخل برنامه هم تغییر بدید

  8. Avatar

    مهمان

    مرتضی سنخواستی

    سلام..پایه reset نمایشگر رو نمیخواد تعریف کنیم؟
    راستش با تغییر پایه ها بازم اطلاعات نمایش داده نشد!!

  9. Avatar

    مهمان

    mohsen

    سلام
    میشه لطفا دستورات : putit , putchar, puts رو بیشتر توضیح بدی؟

  10. Avatar

    مهمان

    وحید

    سلام
    این کتابخونه حرف “پ” نداره. چیکار کنیم؟ چطور باید براش تعریف کرد؟
    کلا با فونت فارسی مشکل داره چون وقتی آدرس میدیم که از کدوم خونه شروع به نوشتن کنه اینکارو دقیق انجام نمیده. راهی نداره؟
    مرسی

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      برا طراحی فونت جلسه سوم این آموزش رو بخونید

  11. Avatar

    مهمان

    مهدی

    سلام
    اگر قرار باشه یه شمارنده رو ال سی دی گرافیکی بسازیم داستان چه شکلی میشه
    من اینو نوشتم کار نکر
    for(i=0;i<101;i++)
    {
    itoa(i,s);
    glcd_puts(s,7,20,5,1,0);
    delay_ms(200);
    glcd_clear();
    }

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      اگه منظورت اینه که اعداد ۱ تا ۱۰۰ رو نشون بدی که کد هات این کار رو انجام میده فقط باید خط ۴ به صورت زیر باشد
      glcd_puts(s,7,20,1,4,0);

  12. Avatar

    مهمان

    mohammad

    damet garm jaleb bood vali hichi nafahmidam

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      شاید من بد توضیح دادم
      کل بحث مربوط بود به کتاب خونه lcd گرافیکی>>>که اگه چیزی نفهمیدید زیاد اشکال نداره>>>بحثش زیاد مهم نبود…

      • Avatar

        مهمان

        zoha

        سلام. اقای دمرچیلو در تهران تدرس خصوصی می کنید؟

        • مهدی دمرچیلو

          نویسنده این مطلب

          مهدی دمرچیلو

          سلام
          پاسخ میلتون رو دادم