راه اندازی LCD گرافیکی 64×128 و درایور ST7920 با آردوینو

راه اندازی LCD گرافیکی 64x128 و درایور ST7920 با آردوینو
نوشته شده توسط

سلام خدمت همه شما مایکروالکامی ها. یکی از ادوات پر استفاده در پروژه هایی که به نحوی نیت نمایش یکسری از پارامتر ها را دارد LCD های می‌باشد. در این بین دو مدل LCD کاراکتری و گرافیکی یا GLCD ها وجود دارد. GLCD ها بدلیل تراکم پیکسلی بیشتر، قابلیت نمایش بیشتری از جمله عکس را نیز دارا می‌باشد. در این مطلب آموزش راه اندازی LCD گرافیکی مدل 64×128 با درایور ST7920 با آردوینو آموزش داده خواهد شد. پس با من تا انتهای مطلب همراه باشید. همچنین شما میتویند سایر مطالب من رو از این لینک مطالعه و بررسی کنید.


درایو LCD مدل ST7920

نحوه عملکرد LCD های گرافیکی را می‌توان گفت تقریبا مشابه هم می‌باشند. تفاوتی که در انواع مشابه وجود دارد مدل های مختلف درایور های آنها می‌باشد. درایور LCD های رایج معمولا شامل SSD1322 ،KS0108 ،SSD1306 ،SH1106 ST7920 و… می‌باشد. لذا پین کنترل آنها و درایور آن را قبل از خرید حتما بررسی نمایید.

پایه های LCD گرافیکی 64×128 با رابط ST7920

شماره پایه نام پایه عملکرد/توضیح
1 GND زمین
2 VCC 2.2-5.5VDC
3 Vo پایه تنظیم کنتراست
4 RS انتخاب رجیستر (CS در حالت سریال)
5 R/W کنترلر نوشتن/خواندن (ورود اطلاعات در حالت سریال)
6 E پایه فعال ساز (CLK در حالت سریال)
14…7 D0…D7 پایه های دیتا (مورد استفاده در حالت 4/8 بیت موازی)
15 PSB انتخاب نوع عملکرد (0: ارتباط سریال / 1: رابط 4 یا 8 بیت موازی)
16 NC بدون اتصال
17 RST Reset
18 Vout خروجی تقویت کننده LCD
19 BLA پایه آند LED بک لایت
20 BLK پایه کاتد LED بک لایت
LCD گرافیکی 64x128 با درایور ST7920
LCD گرافیکی 64×128 با درایور ST7920

نکته: همانطور که از پشت برد GLCD مشخص است یک پتانسیومتر SMD وجود دارد. از این مقاومت متغیر می‌توان برای تنظیم کنتراست صفحه بدون نیاز به مدار پایه Vo استفاده کرد. همچنین در برخی از LCD ها پایه PSB ممکن است بصورت پیشفرض به VCC یا GND متصل شده باشد. برای اطمینان از این حالت می‌توان با تست اتصال کوتاه مولتی متر از این بابت مطلع گردید.

نحوه راه اندازی

همانطور که پیشتر ذکر شد این LCD گرافیکی (GLCD) را می‌توان به 3 روش زیر راه اندازی نمود.

  • بصورت ارتباط سریال SPI که در این مطلب به آن پرداخته خواهد شد. (پایه PSB = 0 می‌شود. در این حالت پایه RS به RW، پایه CS به MOSI و پایه EN به SCK تبدیل شده و بهتر است پایه RST نیز متصل گردد.)
  • بصورت ارتباط 4 بیتی (پایه PSB = 1)
  • بصورت ارتباط 8 بیتی (پایه PSB = 1)

قطعات مورد نیاز


شماتیک

مدار راه اندازی LCD گرافیکی با درایور ST7920 با آردوینو
مدار راه اندازی LCD گرافیکی با درایور ST7920 با آردوینو

نمایش تصویر برروی LCD گرافیکی ST7920

در ابتدا لازم است به این نکته اشاره کرد که ابعاد تصویر باید متناسب با LCD گرافیکی باشد. لذا باید تصویر بصورت 128 پیکسل در حالت افقی و 64 پیکسل در حالت افقی ذخیره گردد. برای این کار از نرم افزار Paint، فتوشاپ یا … می‌توان استفاده کرد. در مرحله بعد تصویر را باید با فرمت bmp. یا بیت مپ ذخیره نمایید.

تغییر اندازه تصویر برای نمایش روی LCD گرافیکی
تغییر اندازه تصویر برای نمایش روی LCD گرافیکی
تبدیل فرمت عکس برای نمایش برروی LCD گرافیکی ST7920
تبدیل فرمت عکس برای نمایش برروی LCD گرافیکی ST7920

تبدیل تصویر به کد های هگز جهت نمایش روی LCD گرافیکی

برای انجام این مرحله 2 راه وجود دارد. راه اول نصب نرم افزار GIMP 2 و استفاده از آن و راه دوم از طریق سایت های آنلاین براحتی می‌توان این کار را انجام داد. در این مطلب از روش اول استفاده شده است. ابتدا عکس تغییر سایز و فرمت داده شده را در نرم افزار GIMP باز کرده و مسیر زیر را طی نمایید.

Files > Export as…

بعد از طی مسیر بالا، در پنجره باز شده ابتدا یک نام انتخاب کرده و گزینه Select File Type را کلیک نمایید.

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

در نهایت در مسیر مشخص معرفی شده در مرحله اول یک فایل با پسوند “xbm” ذخیره می‌شود. این فایل را با نرم افزار ++Note Pad یا مشابه باز نمایید. و کد های هگز ایجاد شده را کپی و در تابع مربوطه پیست نمایید.

استخراج کد های هگز جهت نمایش برروی LCD گرافیکی
استخراج کد های هگز جهت نمایش برروی LCD گرافیکی

سورس کد

در ابتدا از اینکه کتابخانه U8glib در محیط برنامه نویسی آردوینو نصب باشد اطمینان حاصل فرمایید. برای دانلود می‌توانید از این لینک استفاده کنید. در مرحله بعد کد های هگز را وارد و مراحل برنامه نویسی را آغاز می‌کنیم.

U8GLIB_ST7920_128X64_4X u8g(10)

از این دستور برای معرفی اتصال پایه RS نمایشگر GLCD به پایه 10 آردوینو استفاده می‌شود.

معرفی متغیر کد های هگز تصویر

برای وارد کردن کد های هگز خروجی تصویر مورد نظر از تکه کد زیر استفاده می‌کنیم. در مرحله بعد باید با استفاده از تکه کد دوم این کد ها را فراخوانی کرده تا تصویر را به نمایش بگذاریم.

تابع وارد کردن کد های هگز تصویر

const uint8_t rook_bitmap[] U8G_PROGMEM = {
کد های هگز تصویر مورد را نظر را اینجا قرار دهید
};

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

در حقیقت دستور اصلی برابر “u8g.drawXBMP(x, y, width of image, height of image)” می‌باشد. که در X و Y همان نقطه شروع نمایش تصویر برروی LCD می‌باشد. همچنین اندازه تصویر را که نباید بیشتر از 128×64 باشد را نیز مشخص نماییم. در آخرین مقدار ورودی آرگومان این دستور تابع کد های هگز تصویر وارد می‌شود.

void picture(void) 
{
  u8g.drawXBMP( 0, 0, 128, 64, rook_bitmap);
}

مثال نمونه – نمایش تصویر برروی LCD گرافیکی ST7920

#include "U8glib.h"

U8GLIB_ST7920_128X64_4X u8g(10);

const uint8_t rook1_bitmap[] U8G_PROGMEM = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58,
  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x13, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
  0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x80, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x4f, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff,
  0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xb0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xff,
  0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xfc, 0xff, 0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0xff, 0x0f, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
  0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0xe0,
  0xff, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xd8, 0xc7, 0x0f, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf3, 0x7f, 0xfe, 0xff, 0x01, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x39, 0xe0,
  0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xfe, 0xcc, 0x8f, 0xf9, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x30, 0xfb, 0xff, 0x27, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x93, 0x6f,
  0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xf0, 0xcf, 0xd8, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0xf0, 0xff, 0xff, 0xbf, 0x01,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xe3, 0x1f, 0x3f, 0xe7,
  0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
  0xff, 0x7f, 0x9e, 0xcf, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x9c, 0xcf, 0xff, 0xff, 0xff, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x99, 0xcf,
  0xff, 0xff, 0xff, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
  0xff, 0xff, 0x99, 0xe7, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xc0, 0xdf, 0xff, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x7f, 0xf0, 0x03, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07,
  0x7e, 0xf0, 0x83, 0x0f, 0xf0, 0x0f, 0xf0, 0x80, 0x7f, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xe0, 0x07, 0x7e, 0xf0, 0x83, 0x0f, 0xf8, 0x1f, 0xfc, 0xe0,
  0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x7e, 0xe0, 0x83, 0x0f,
  0xfc, 0x0f, 0xfe, 0xf0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07,
  0x7e, 0xe0, 0x83, 0x0f, 0xfe, 0x0f, 0xfe, 0xf8, 0xff, 0x03, 0x00, 0x00,
  0x00, 0x00, 0xe0, 0x07, 0x7e, 0xe0, 0x83, 0x0f, 0xff, 0x07, 0xff, 0xf8,
  0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x7e, 0xe0, 0x83, 0x0f,
  0x3f, 0x00, 0x3f, 0xfc, 0xe1, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07,
  0x7e, 0xe0, 0x83, 0x0f, 0x1f, 0x00, 0x1f, 0xfc, 0xc0, 0x07, 0x00, 0x00,
  0x00, 0x00, 0xe0, 0x07, 0x7e, 0xe0, 0x83, 0x8f, 0x1f, 0x00, 0x1f, 0x7c,
  0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x7e, 0xe0, 0x83, 0x8f,
  0x1f, 0x00, 0x1f, 0x7c, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07,
  0x7e, 0xe0, 0x83, 0x8f, 0x1f, 0x00, 0x1f, 0x7c, 0xc0, 0x07, 0x00, 0x00,
  0x00, 0x00, 0xe0, 0x07, 0x7e, 0xe0, 0x83, 0x0f, 0x1f, 0x00, 0x1f, 0xfc,
  0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x7e, 0xe0, 0x83, 0x0f,
  0x7f, 0x04, 0x1f, 0xfc, 0xf1, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07,
  0x7e, 0xe0, 0x83, 0x0f, 0xff, 0x07, 0x1f, 0xf8, 0xff, 0x07, 0x00, 0x00,
  0x00, 0x00, 0xe0, 0x07, 0x7e, 0xe0, 0x83, 0x0f, 0xfe, 0x0f, 0x1f, 0xf8,
  0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x7e, 0xe0, 0x83, 0x0f,
  0xfc, 0x0f, 0x1f, 0xf0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07,
  0x7e, 0xe0, 0x83, 0x0f, 0xf8, 0x1f, 0x1f, 0xe0, 0xff, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xe0, 0x07, 0x7e, 0xe0, 0x83, 0x0f, 0xe0, 0x0f, 0x1f, 0x80,
  0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x29,
  0x29, 0x09, 0x7f, 0x72, 0xe7, 0xbc, 0x3c, 0x9c, 0xf3, 0x07, 0x00, 0x00,
  0x00, 0x00, 0xa0, 0x2d, 0x29, 0x09, 0x49, 0x0b, 0x93, 0xa4, 0x24, 0xc6,
  0xb4, 0x0d, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe6, 0xee, 0x0e, 0x49, 0x0b,
  0x91, 0x87, 0x0c, 0xc6, 0xb4, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc6,
  0xc6, 0x06, 0x49, 0x1b, 0x91, 0x84, 0x04, 0xc4, 0xb4, 0x0d, 0x00, 0x00,
  0x00, 0x00, 0x40, 0x46, 0x46, 0x44, 0x49, 0x72, 0xe1, 0xb8, 0x38, 0x99,
  0x93, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00
};

const uint8_t rook2_bitmap[] U8G_PROGMEM = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03,
  0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x80, 0xff, 0x1f, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xfe, 0xff, 0x1f, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
  0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff,
  0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff,
  0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,
  0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff,
  0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff,
  0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f,
  0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00
};

void draw1_picture(void)
{
  u8g.drawXBMP( 0, 0, 128, 64, rook1_bitmap);
}

void draw2_picture(void)
{
  u8g.drawXBMP( 0, 0, 128, 64, rook2_bitmap);
}

void setup()
{
// تنظیم رنگ  
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // pixel on
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255, 255, 255);
  }
}

void loop()
{
//نمایش تصویر اول 
 u8g.firstPage();
  do {
    draw1_picture();
  } while ( u8g.nextPage() );

  delay(3000);
//پاک کردن صفحه
  u8g.firstPage();
  do {
  } while ( u8g.nextPage() );
// نمایش تصویر دوم
  u8g.firstPage();
  do {
    draw2_picture();
  } while ( u8g.nextPage() );
  
  delay(3000);
}

مشاهده نتیجه


نوشتن متن برروی LCD گرافیکی 128×64 با درایور ST7920

جهت نوشتن متن برروی GLCD بایستی فونت مورد نظر خود را انتخاب نماییم. فونت مد نظر بایستی در کتابخانه تعریف شده باشد. جهت مشاهده فونت های قابل پشتیبانی در کتابخانه U8glib از این لینک اقدام نمایید.

مشخص کردن فونت

فونت مورد نظر خود را پس از بررسی و انتخاب نام آن وارد آرگومان دستور زیر نمایید.

u8g.setFont(u8g_font_unifont);

نوشتن متن/رشته مورد نظر

پس از مشخص کردن نقطه شروع در محور X و Y (پارامتر های اول و دوم) که در این مثال 7 و 35 می‌باشد در بخش سوم آرگومان این تابع بین دابل کوتیشن متن مورد نظر خود را وارد نمایید.

u8g.drawStr( 07, 35, "Microelecom Blog");

مثال نمونه – نوشتن متن برروی LCD گرافیکی ST7920

#include "U8glib.h"

U8GLIB_ST7920_128X64_4X u8g(10);

void setup()
{
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // pixel on
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255, 255, 255);
  }
  u8g.setFont(u8g_font_unifont);
  u8g.drawStr(  7, 35, "Microelecom Blog");
  delay(2000);
}

void loop()
{
  //clear LCD
  u8g.firstPage();
  do {
  } while ( u8g.nextPage() );

  u8g.firstPage();
  do {
    u8g.setFont(u8g_font_6x12);
    u8g.drawStr( 17, 15, "Microelecom Blog");
    u8g.drawStr( 12, 40, "blog.microele.com");
  } while ( u8g.nextPage() );
  delay(3000);

  //clear LCD
  u8g.firstPage();
  do {
  } while ( u8g.nextPage() );

  u8g.firstPage();
  do {
    u8g.setFont(u8g_font_fub11);
    u8g.drawStr( 22, 16, "Interfacing");
    u8g.drawStr( 8, 36, "Graphical LCD");
    u8g.drawStr( 13, 56, "with Arduino");
  } while ( u8g.nextPage() );

  delay(3000);
}

مشاهده نتیجه


جمع بندی

در این مطلب به مقدمه ای بر نمایشگر گرافیکی 128×64 با چیپ (درایور) ST7920 پرداخته شد. همچنین در این مطلب از این LCD در حالت سریال استفاده شد تا از تعداد پایه کمتری استفاده شود. طبیعتا هر چه تصویر دارای پیچیدگی کمتری باشد موقع نمایش، بهتر برروی LCD نمایان خواهد شد.

امیدوارم از این آموزش کمال بهره را برده باشید. در صورت داشتن هرگونه نظر یا سوال درباره این آموزش اون رو در انتهای همین صفحه در قسمت دیدگاه ها قرار بدید. در کوتاه ترین زمان ممکن به اون ها پاسخ خواهم داد. اگر این مطلب براتون مفید بود، اون رو حتما به اشتراک بگذارید. همینطور میتونید این آموزش را پس از اجرای عملی توی اینستاگرام با هشتگ microelecom# به اشتراک بگذارید و پیج مایکروالکام (microelecom@) رو هم منشن کنید.

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

نشانی ایمیل شما منتشر نخواهد شد.