مقاله های سیسوگ, توصیه شده, معرفی

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

در این مطلب به نحوه راه‌اندازی کتابخانه u8g2 در محیط نرم‌افزار Atmel Studio 7.0 با نمایشگر تک‌رنگ گرافیکی 64×128 با میکروکنترلر Atmeag128A خواهیم پرداخت. U8g2 یک کتابخانه گرافیکی است و برای ایجاد رابط گرافیکی بر پایه نمایشگرهای تک‌رنگ و OLED طراحی‌شده است. این کتابخانه توسط آقای الیور کروس (Oliver Kraus) نوشته‌شده و به‌صورت متن‌باز در اختیار عموم قرار داده‌شده. این کتابخانه حجم کمی دارد و به‌راحتی می‌توان در سیستم‌های نهفته که محدودیت حافظه  و سخت‌افزار وجود دارد بکار برد. درنتیجه  می‌توان با میکروکنترلر های هشت بیتی همانند میکر وکنترلرهای AVR سری ATmega مورداستفاده قرار گیرد. یکی از محبوبیت‌های u8g2 پشتیبانی از رنج وسیعی از نمایشگرهای موجود در بازار می‌باشد. به‌عنوان مثال این کتابخانه قادر به پشتیبانی از درایورهای پرکاربرد همانند KS0108,SSD1306, ST7920 و خیلی از نمایشگرهای دیگر است. برای دستیابی به لیست کامل درایورهای پشتیبانی شده از لینک اینجا استفاده کنید. این کتابخانه به زبان C/C++ نوشته‌شده است. بنابراین می‌توانید آن را با تمام بردهای اردینو استفاده کنید. بعلاوه این کتابخانه را می‌توان با  معماری‌های دیگر همانند ARM بکار برد.

از قابلیت‌های u8g2 می‌توان به مورد زیر اشاره کرد:

  • قابلیت ترسیم اشکال هندسی همانند خط، چهار ضلعی، دایره، باکس، دکمه و غیره.
  • بسیاری از فونت‌ها را پشتیبانی می‌کند، (تقریباً) هیچ محدودیتی در ارتفاع فونت وجود ندارد.
  • نمایش رشته‌ای که به‌صورت UTF-8 کدگذاری شده است.

آموزش‌های زیادی در مورد نحوه به‌کارگیری u8g2 با استفاده از اردوینو وجود دارد، اما اطلاعاتی چندانی در مورداستفاده از این کتابخانه در محیط Atmel Studio و استفاده از AVR سری Atmega وجود ندارد. لذا در این مطلب سعی شده نحوه به‌کارگیری این کتابخانه در محیطی غیر از اردینو توضیح و تشریح شود. در این مقاله سعی شده که به‌صورت مرحله‌به‌مرحله و با یک مثال کاربردی نحوه استفاده از کتابخانه در محیط Atmel Studio توضیح داده شود تا اینکه به‌راحتی بتوان از این کتابخانه در پروژه‌های صنعتی مبتنی بر میکروکنترلرهای AVR استفاده کرد. 

این مطلب از سه قسمت تشکیل‌شده، در قسمت اول اتصال نمایشگر با کنترلر توضیح داده‌شده است. در قسمت دوم به نحوه پیکربندی کتابخانه u8g2 در محیط نرم‌افزار Atmel Studio 7.0 پرداخته‌شده است. در قسمت پایانی این مقاله یک مثال ساده برای تست نمایشگر فراهم‌شده. با سیسوگ همراه باشید.  

 

سخت افزار و اتصال نمایشگر به میکروکنترلر

همان‌طور که پیش‌تر اشاره شد نمایشگر مورداستفاده یک نمایشگر گرافیکی با وضوح 64×128 و درایور KS0108 و ارتباط نمایشگر با میکروکنترلر به‌صورت هشت بیتی می‌باشد. نحوه اتصال میکروکنترلر با نمایشگر در شکل 1، شکل 2 و شکل 3 نمایش داده‌شده.

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 1. اتصال میکروکنترلر با نمایشگر.

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 2. سیگنال ریست میکروکنترلر .

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 3. اتصالات مورد نیاز نمایشگر.

تغذیه مدار از یک مبدل 5 ولت و 2.4 آمپر فراهم‌شده است. مطابق شکل 1 میکروکنترلر با فرکانس 8MHz کار می‌کند و همچنین از طریق سوئیچ S1 ریست می‌شود. هشت بیت درگاه E به پایه‌های دیتا نمایشگر وصل شده و از طریق چهار بیت اول درگاه B میکروکنترلر می‌توان نمایشگر را کنترل کرد. بیت صفرم درگاه G میکروکنترلر و ترانزیستور Q1 برای کنترل نور پس‌زمینه نمایشگر در نظر گرفته‌شده است. کنتراست نمایشگر با مقاومت R1 قابل تنظیم می‌باشد.

 

پیکربندی کتابخانه u8g2 در محیط نرم افزار Atmel Studio 7.0

قبل از شروع پیکربندی لازم می‌دانم مقدمه کوتاهی از کتابخانه‌ای موردنظر ارائه دهم. کتابخانه u8g2 نسبتاً کم‌حجم است که به زبان C/C++ نوشته‌شده است. این کتابخانه برای پروژه‌هایی با سیستم‌های نهفته با منابع سخت‌افزاری محدود مناسب می‌باشد. U8g2 منبع باز بوده و می‌توان از لینک زیر دانلود کرد.

لینک کتابخانه

برای پیکربندی کتابخانه در محیط Atmel Studio مراحل زیر بایستی انجام شود:

مرحله 1: ایجاد یک پروژه در زبان C به شکل 4 مراجعه شود.

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 4. ایجاد پروژه جدید.

 

مرحله 2: انتخاب میکروکنترلر Atmega128A به شکل 5 مراجعه شود.

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 5 انتخاب میکروکنترلر.

 

مرحله3 : دو پوشه به نام‌های lib و csrc در پروژه طبق شکل 6 ایجاد کنید.

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 6. درست کردن پوشه های موردنیاز.

مرحله 4: فایل‌های موردنیاز از پوشه csrc از کتابخانه u8g2 طبق شکل‌های زیر به پروژه اضافه کنید. برای اضافه کردن فایل‌های موردنیاز روی پوشه  csrc در پروژه کلیک راست کنید و روی گزینه Add/Existing Item کلیک کنید. حال وارد پوشه کتابخانه که قبلاً دانلود کردید بشوید و تمامی فایل‌های درون پوشه csrc را انتخاب کنید و به‌صورت Add as link به پروژه اضافه کنید(به شکل 8 مراجعه کنید).

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 7. اضافه کردن فایل های مورد نیاز از پوشه csrc

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 8. لینک کردن فایل های csrc.

مرحله 5: فایل‌های موردنیاز از پوشه avr_libc از کتابخانه u8g2 طبق شکل‌های زیر به پروژه اضافه کنید. برای اضافه کردن فایل‌های موردنیاز روی پوشه lib در پروژه کلیک راست کنید و روی گزینه Add/Existing Item کلیک کنید. و فایل‌های u8x8_avr.c و u8x8_avr.h از پوشه u8g2-master\sys\avr\avr-libc\lib انتخاب کرده و به‌صورت Add as link به پروژه اضافه کنید (به شکل 9 مراجعه کنید).

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 9. اضافه کردن فایلهای مورد نیاز از پوشه lib .

 

مرحله 6: در این مرحله فرکانس میکروکنترلر را در پروژه مشخص می‌کنیم. بنابراین در Solution  Explorer روی پروژه کلیک راست کرده و بعد روی گزینه Properties کلیک کنید، (به شکل 10 مراجعه کنید) حال طبق شکل 11 روی گزینه Toolchain\AVR GNU C Compiler\Symbols کلیک کنید. سپس در قسمت Define Symbols (-D) روی Add Item کلیک کنید و فرکانس میکروکنترلر را به پروژه اضافه کنید. به شکل‌های 12 و 13 برای اطلاعات بیشتر مراجعه کنید. 

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 11. گزینه Properties

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 10. گزینه Symbols

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 12. اضافه کردن سیمبل به پروژه.

 

لازم به ذکر است فرکانس میکروکنترلر می‌تواند متغیر باشد و همراهان عزیز می‌توانند فرکانس موردنیاز خود را به پروژه اضافه کنند.

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 13.اضافه کردن فرکانس 8Mhz به پروژه

 

مرحله 7: در مرحله پیشین فایل‌های کتابخانه که خارج از پوشه پروژه قرار داشتند به پروژه اضافه شد. بنابراین نیاز است که محل فایل‌های اضافه‌شده برای کامپایلر (Compiler) مشخص شود. طبق مرحله قبل در منوی <Project> Properties روی گزینه Toolchain/Directories کلیک کنید (به شکل 14 مراجعه کنید).

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 14. تعیین مسیر کتابخانه

حال در قسمت AVR/GNU C Compiler/Directories روی دکمه Add Item کلیک کنید و پوشه‌های lib و csrc را برای کامپایلر تعیین کنید. مراحل در شکل 15 نشان داده‌شده است.

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 15. اضافه کردن مسیر فایلهای استقاده شده

سپس تغییرات ایجادشده را ذخیره کنید، در قسمت بعدی روش استفاده از کتابخانه با یک مثال ساده نشان خواهیم داد.

 

آزمایش عملی کتابخانه u8g2 با میکروکنترلر Atmega128A و نمایشگر گرافیکی

بعد از پیکربندی مراحل استفاده از کتابخانه عبارت‌اند از:

مرحله 1: هدر فایل‌های زیر را به فایل main.c اضافه کنید.

مرحله 2: ایجاد یک تابع برای تنظیم پین‌های ورودی و خروجی و ایجاد تأخیر لازم برای کنترل پین‌های میکروکنترلر.

در این آزمایش از یک نمایشگر با درایور KS0108 استفاده‌شده است حال نیاز است که تمامی پایه‌های استفاده‌شده میکروکنترلر برای کتابخانه مشخص و تعیین شود، بعلاوه نیاز به یک تابع تأخیر می‌باشد. در این تست تابع زیر ایجادشده. برای اطلاعات بیشتر در مورد این تابع به لینک گیت هاب که در پایان این بخش ارائه شده مراجعه کنید.

مرحله  3: استفاده از تابع زیر برای تنظیمات نمایشگر.

برای راه‌اندازی نمایشگر طبق تابع بالا به چهار آرگومان نیاز است.

  • یک استراکچر خالی.
  • چرخش روی نمایشگر برای اطلاعات بیشتر به جدول 1 مراجعه کنید.
  • نوع ارتباط با نمایشگر به‌عنوان‌مثال ارتباط سریال SPI, I2C و غیره. برای اطلاعات بیشتر به جدول 2 مراجعه کنید.

تابعی که در مرحله‌ای دوم برای تنظیم پین‌های ورودی و خروجی ساخته شد.

چرخش روی نمایشگر

توضیحات

U8G2_R0

بدون چرخش

U8G2_R1

چرخش 90 درجه در جهت عقربه های ساعت

U8G2_R2

چرخش 180 درجه در جهت عقربه های ساعت

U8G2_R3

چرخش 270 درجه در جهت عقربه های ساعت

U8G2_ MIRROR

بدون چرخش، محتوای نمایشی را منعکس می کند. نیاز به ورژن 2.6.x هست.

 

ارتباط با نمایشگر

توضیحات

u8x8_byte_4wire_sw_spi

ارتباط سریالSPI با 8 بیت استفاده با پین های  (SCK, MOSI, DC, CS)

u8x8_byte_3wire_sw_spi

ارتباط 9 بیتی با “سه پین” (SCK، MOSI، CS)

u8x8_byte_8bit_6800mode

رابط موازی با فرمت 6800

u8x8_byte_8bit_8080mode

رابط موازی با فرمت 8080

u8x8_byte_sw_i2c

ارتباط I2C

u8x8_byte_ks0108

ارتباط برای درایور KS0108

 

مرحله 4: در این مرحله یک اپلیکشن ساده فراهم شده که چند عبارت را روی صفحه نمایش نشان دهد.  

نمونه کامل کد مربوطه در لینک زیر پیوست شده است.

لینک گیت هاب

مرحله 5: بعد از دانلود کد و تنظیم پروژه طبق مراحل پیشین آن را کامپایل و سپس میکروکنترلر را پروگرم کنید. نتیجه در شکل 16 نمایش داده‌شده است.

راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

شکل 16. نمایش عبارت با u8g2

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

9 دیدگاه در “راه اندازی نمایشگر گرافیکی 64×128 با کتابخانه U8g2

  1. Avatar for حمید حمید گفت:

    سلام، این کتابخانه تابع برای نمایش تصاویر کد هگز داره؟

  2. Avatar for حمید حمید گفت:

    سلام، میخواهم از این کتابخونه برای ATMEGA32 استفاده کنم، لطفا راهنمایی کنید.

  3. Avatar for حمیدرضا حمیدرضا گفت:

    سلام مهندس امکان این هست که توضیح بیشتر در مورد این که پایه ها میکرو چگونه برای کتابخانه تعریف کردید ولینک گت هاب بیشتر توضیح بدهید ممنون

  4. Avatar for حمید رضا حمید رضا گفت:

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

  5. Avatar for ایوب عین الهی ایوب عین الهی گفت:

    asghar@ امید وارم مطالب این نوشته مفید باشه براتون. موفق باشید.

  6. Avatar for asghar asghar گفت:

    خیلی باحالی :))) یه ماهه دنبال کتابخونه هستم برای ssd1306
    ممنون🌹🌹

    1. Avatar for elahe elahe گفت:

      نظر لف شماست
      یادتون نره سیسوگ رو به دوستانتون معرفی کنین🎉

  7. Avatar for فرهاد فرهاد گفت:

    بسیارعالی سپاس از مطلب مفیدتون.

    1. Avatar for ایوب عین الهی ایوب عین الهی گفت:

      ممنون از شما که وقت گذاشتید و خوندید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *