راه‌اندازی نمایشگر TFT LCD ILI9341 با میکروکنترلر STM32

ماژول نمایشگر TFT LCD
ماژول نمایشگر TFT LCD با درایور ILI9341

مقدمه

نمایشگرها نقش مهمی در پروژه‌های مختلف دارند و راه‌اندازی آن‌ها حائز اهمیت است. ILI9341 یکی از معروف‌ترین چیپ‌ست‌های راه‌انداز یا درایور LCD است. هر صفحه نمایش از این نوع از یک تراشه‌ی راه‌انداز (Driver)، یک حافظ فرّار داخلی و یک مدار تبدیل ولتاژ تشکیل شده است. تراشه‌ی راه‌انداز به صورت دیجیتال (موازی 8/16 بیتی یا سریال مانند SPI) به پردازنده متصل می‌شود. تعداد از خطوط ارتباطی به داده و تعدادی دیگر به سیگنال‌های کنترلی اختصاص می‌یابند.
اولین گام در راه‌اندازی یک نمایشگر بررسی نحوه‌ی ارتباط با تراشه‌ی راه‌انداز است. این تراشه معمولاً از تعدادی رجیستر تشکیل شده که پارامترهای مختلفی از جمله ترتیب پر شدن پیکسل‌ها، تعداد رنگ، غلظت رنگ، گاما و … را تنظیم می‌کنند.

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

اصول راه‌اندازی

برای روشن کردن هر پیکسل از نمایشگر کافی است یک عدد 16 بیتی را (که بیانگر رنگ پیکسل است) در آدرس مخصوصی از حافظه‌ی داخلی نمایشگر بنویسیم. تعداد بیت‌ها رزولوشن تصویر را مشخص می‌کند. با 16 بیت داده می‌توان 65536 رنگ مختلف تولید کرد. معمولاً هر عدد 16 بیتی بیانگر فرمت RGB565 است. یعنی 5 بیت برای رنگ قرمز، 6 بیت برای سبز و 5 بیت برای آبی.
تا زمانی که صفحه نمایش به منبع ولتاژ متصل باشد و تغییری در وضعیت آن ایجاد نشود، پیکسل با رنگ مشخص‌شده روشن خواهد ماند.
راه‌اندازی تمام نمایشگرها به پیاده‌سازی تابعی با نام عمومی drawPixel ختم می‌شود:

void drawPixel(uint16_t x, uint16_t y, uint16_t color);

دستورهای بعدی از کشیدن خط و دایره گرفته تا نمایش یک عکس همه بر پایه‌ی همین دستور بنا می‌شوند.
تراشه‌های راه‌انداز متعددی برای نمایشگرهای TFT وجود دارد که ILIxx و STxx از معروف‌ترین نمونه‌های آن‌ها در ایران به شمار می‌روند. در این نوشته به راه‌اندازی یک نمایشگر TFT 3.2 اینچی با راه‌انداز ILI9341 می‌پردازیم. برای استفاده از این نمایشگر باید ابتدا یک کتابخانه تهیه کرد که تمام دستورها را شامل شود. ساختن چنین کتابخانه‌ای مشکل نیست اما زمانبر و طاقت‌فرساست.

افزودن کتابخانه به محیط Keil

برای راحتی کار یک کتابخانه برای پردازنده‌های ARM سری STM32 تهیه شده که بر پایه‌ی کتابخانه‌ی HAL این شرکت بنا شده است.
برای اضافه کردن کتابخانه به پروژه پیمودن گامهای زیر لازم است:
1- ابتدای فایل‌های کتابخانه را دانلود کنید. سپس در پوشه‌ای که نرم‌افزار STM32CubeMX ساخته یک پوشه‌ی جدید بسازید و فایل‌ها را درون آن کپی کنید.

فایل‌های کتابخانه، شماتیک و کتابخانه‌ی آلتیوم مربوط به LCD با چیپست ILI9341 را از اینجا دریافت کنید.

برای خرید نمایشگر با درایور ILI9341 و تاچ مقاومتی به فروشگاه آفتاب‌رایانه مراجعه فرمایید.

برای خرید ماژول نمایشگر TFT LCD با درایور ILI9341 به فروشگاه آفتاب‌رایانه مراجعه فرمایید.

2- در نرم‌افزار Keil، از منوی Flash، گزینه‌ی Configure Flash Tools را انتخاب نمایید. در پنجره‌ی نمایش‌داده‌شده سربرگ C/C++ را انتخاب و در قسمت میانی پنجره، رو‌به‌روی گزینه‌ی Include Paths دکمه‌ی سه‌نقطه را فشار دهید. در پنجره‌ی جدید از ردیف بالا دکمه‌ی New (Insert) را بزنید. یک ردیف جدید در فهرست موجود ایجاد می‌شود. با فشار دادن دکمه‌ی سه نقطه نشانی پوشه‌ای را که فایل‌های کتابخانه در آن کپی شده انتخاب کنید. با فشردن کلید OK تنظیمات را اعمال کنید. (شکل 1)

افزودن کتابخانه به Keil
شکل ۱- افزودن مسیر کتابخانه

3- در گام بعدی (مطابق شکل 2) روی نام پروژه درقسمت Project کلیک‌راست نموده و گزینه‌ی Add Group را انتخاب نمایید. با این کار پوشه‌ی New Group به سلسله مراتب پروژه‌ی شما افزوده می‌شود. بر روی آن کلیک کنید. دکمه‌ی F2 را فشار دهید و یک نام مناسب برای آن انتخاب کنید. (مثلاً LCD Library) در نهایت روی این گزینه دوبار کلیک کنید و در پنجره‌ی انتخاب فایل، فایل‌های مربوط به کتابخانه را که قبلاً در پوشه‌ای کپی کرده‌اید، انتخاب کنید. حال کتابخانه با موفقیت به پروژه‌ی شما اضافه شده است و کافی است آن را در کد main.c اضافه کنید.

اضافه کردن گروه
شکل ۲- افزودن گروه برای کتابخانه

4- گام مهم بعدی اعمال تنظیم سخت‌افزار و نحوه‌ی ارتباط برد شما با درایور است. نمایشگری که ما در اختیار داریم 8 بیت داده (D0 تا D7) و 5 بیت سیگنال کنترلی دارد. این 5 پایه RS، RST، CS، WR و RD نام دارند. در نتیجه باید این 13 خط را به 13 پایه‌ی GPIO میکروکنترلر خود متصل کنید. سپس در فایل *.h این تنظیمات را دقیقاً مشخص نمایید:

// (2): Pinout definition
#define LCD_CS_Pin GPIO_PIN_14
#define LCD_CS_GPIO_Port GPIOE
#define LCD_RST_Pin GPIO_PIN_13
#define LCD_RST_GPIO_Port GPIOE

5- حال همه چیز برای شروع آماده است. برای راه‌اندازی نمایشگر کافی است سه دستور زیر را به ترتیب اجرا نمایید. پس از آن با مراجعه به فایل *.h دستورهای مختلف را پیدا و از آن‌ها استفاده کنید.

ILI9341_Init();
ILI9341_setRotation(2);
ILI9341_fillScreen (BLACK) ;

دیدگاه‌ خود را بنویسید

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