نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه

آموزش جامع کار با 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 باید در پوشه مربوط به کد های پروژتون باشه اما چراش رو نگفتم ، و این جلسه کلا مربوط به همین پوشه و فایل های درونش بود.
حالا شما میتونید فایا های درونش رو کم و زیاد کنید و حتی اسم این پوشه رو تغییر بدید یا اصلا توابعتون رو داخل این پوشه نذارید و یه راست بزارید کنار کد های اصلی پروژتون.
 

پسورد فایل های سایت :
www.dmf313.ir
جنگ ما فتح قدس را در پی خواهد داشت (امام خمینی) >>>>>> اگر از صدام بگذریم، اگر مسأله قدس را فراموش کنیم، اگر از جنایت های امریکا بگذریم از آل سعود نخواهیم گذشت. ان‌شاالله اندوه دلمان را را در وقت مناسب با انتقام از امریکا و ال سعود برطرف خواهیم کرد و داغ و حسرت حلاوت این جنایت بزرگ را بر دلشان خواهیم گذاشت و با برپایی جشن پیروزی حق بر جنود کفر و نفاق و آزادی کعبه از دست نااهلان و نامحرمان به مسجد الحرام وارد خواهیم شد (امام خمینی)
ارسال دیدگاه
27

1) تعداد حروف غیر فارسی از حروف فارسی بیشتر باشه دیدگاه به صورت خودکار حذف میشه.

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

3) برای گزاشتن کدهاتون از این سایت استفاده کنید : debian

  1. مهمان

    محمد شمس

    سلام
    با تشکر از زحمات شما .
    سوالم این است که آیا از برنامه داخلی فایل 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 جواب نمیدهد .!

    1397/02/13
    03:13
    • نویسنده این مطلب

      مهدی دمرچیلو

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

      1397/02/19
      07:05
  2. مهمان

    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);
    }
    }

    1396/07/14
    08:27
    • نویسنده این مطلب

      مهدی دمرچیلو

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

      1396/07/15
      12:25
  3. مهمان

    هومن نیکوکار

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

    1395/08/02
    09:41
    • مهمان

      reza

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

      1397/02/14
      05:48
  4. مهمان

    شروین

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

    1395/04/25
    12:28
    • نویسنده این مطلب

      مهدی دمرچیلو

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

      1395/04/26
      06:40
  5. مهمان

    سعید

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

    1395/02/14
    07:52
    • نویسنده این مطلب

      مهدی دمرچیلو

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

      1395/02/14
      07:56
  6. مهمان

    علی

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

    1395/01/16
    08:14
    • نویسنده این مطلب

      مهدی دمرچیلو

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

      1395/01/16
      08:59
      • مهمان

        علی

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

        1395/01/16
        09:15
        • نویسنده این مطلب

          مهدی دمرچیلو

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

          1395/01/16
          09:18
  7. مهمان

    بهار

    سلام و ممنون ازسایت خوب تون
    من میخوام پایه های داده رو هر کدوم به یک پورت وصل بشه
    توی برنامه نوشتم
    #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
    و همینطور تا آخر ولی ارور میده
    مثلا مینویسه سیمیکالن بذارم البته در خط های دستور
    باید چیکار کنم?

    1394/12/03
    04:35
    • نویسنده این مطلب

      مهدی دمرچیلو

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

      1394/12/03
      10:49
  8. مهمان

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

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

    1394/09/09
    02:53
  9. مهمان

    mohsen

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

    1394/06/23
    11:16
  10. مهمان

    وحید

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

    1394/04/25
    02:58
    • نویسنده این مطلب

      مهدی دمرچیلو

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

      1394/04/25
      06:14
  11. مهمان

    مهدی

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

    1393/08/22
    01:28
    • نویسنده این مطلب

      مهدی دمرچیلو

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

      1393/08/22
      03:12
  12. مهمان

    mohammad

    damet garm jaleb bood vali hichi nafahmidam

    1393/06/12
    11:09
    • نویسنده این مطلب

      مهدی دمرچیلو

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

      1393/06/13
      05:42
      • مهمان

        zoha

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

        1394/07/09
        11:02
        • نویسنده این مطلب

          مهدی دمرچیلو

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

          1394/07/10
          08:42