رابط کاربری
همهی سیستمهای کامپیوتری بخشی برای ارتباط با کاربر دارند. این بخش میتواند بهسادگی قرار دادن تعدادی کلید و چراغ، تا اَشکال کاملتری چون نمایشگر رنگی و ورودیهای اشارهگر مثل USB، موس، ورودی و خروجی موردنیاز دستگاه را تأمین نماید. بهطورکلی به این بخش از سیستمهای کامپیوتری چه در سیستمهای گسترده و چه در سیستمهای نهفته (Embedded)، “رابط کاربری” یا “User Interface” میگویند.
رابط کاربری از لحاظ ساختار داخلی شامل موارد زیر است:
- بخش نمایشگر یا خروجی (مثل چراغ، buzzer، TFT LCD و …)
- بخش ورودی (مثل کلید، Touch Screen، موس و …)
از طرف دیگر انواع آن، به دو دستهی کلی زیر تقسیم میشوند:
- رابط کاربری غیرگرافیکی (Non Graphical User Interface[NGUI])
- رابط کاربری گرافیکی (Graphical User Interface[GUI])
واضح است که در نوع GUI، ازآنجا که نیاز به نمایش اطلاعات موردنیاز از طریق نمایشگر گرافیکی (ماژولی که تصویر دلخواهی را به نمایش میگذارد) و همچنین در نظر گرفتن اشارهگری مناسب به عنوان ورودی است، پیچیدگی بیشتر است. البته پیچیدگی این نوع رابطهای کاربری مزایایی را برای محصول نهایی در بر دارند که به برخی از آنها در زیر اشاره شده است:
- انجام سریع تنظیمات پیکربندی از طریق خود دستگاه
- نمایش اطلاعات آنلاین و بازنگری اطلاعات گذشته از طریق خود دستگاه
- اضافه کردن قابلیت کاربرپسندی به دستگاه
- بازار و فروش بهتر برای دستگاه
توجه: در این نوشته، نمایشگر گرافیکی به ماژولی اطلاق میشود که تصویر دلخواهی را به نمایشمیگذارد. لذا شامل مواردی چون نمایشگر کاراکتری نمیشوند.
با پیشرفت روزافزون در فرآیند تولید ماژولهای نمایشگر و تنوعبخشی به آنها، هزینهی تحمیلی به پروژهها برای در نظر گرفتن آنها در بخش رابط کاربری کاهش یافته است. از این لحاظ طراحی رابط کاربری به شکل گرافیکی اگر نگوییم به یک الزام در ساخت دستگاههای کامپیوتری، اقلاً به یک مزیت قابل دسترس و معقول در اکثر پروژهها بدل شده است.
بدون توجه به تکنولوژی ساخت ماژولهای نمایشگر و نوع ورودی آن، میتوان دستهبندی کلی زیر را برای رابطهای کاربری گرافیکی در نظر گرفت:
- رابط کاربری گرافیکی با نمایشگر گرافیکی تکرنگ (Monochrome Display)
- رابط کاربری گرافیکی با نمایشگر گرافیکی رنگی (Color Display)
که پیچیدگی استفاده از آنها به همان ترتیب بالا است.
یکی از مشکلات اساسی بهکارگیری ماژولهای نمایشگر در پروژهها، پیچیدگی پیادهسازی و زمان لازم برای تطبیق پروژه تا ورود به بازار است. اصطلاحاً زمان طراحی و ساخت تا ورود محصول به بازار زیاد شده و توجیه کاربرد آنها را زیر سؤال میبرد. از طرف دیگر، گاها استفاده از ادوات سختافزاری و نرمافزاری یک رابط کاربری گرافیکی در یک پروژه، به راحتی برای پروژههای دیگر و نسخههای دیگر قابل استفاده نیست و عملاً برای هر پروژه باید از نو همه چیز طراحی و برنامهنویسی شود.
برای رفع این مشکلات اساسی، تلاشهای فراوانی شدهاست تا امکانات سختافزاری (شامل بهکارگیری واسطهای سختافزاری استاندارد در انواع و برندهای مختلف) و امکانات نرمافزاری سطح بالا(شامل کتابخانههای همهکارهای که در زبانهای برنامهنویسی مختلف قابل استفاده باشند) ایجاد شود. که البته که این تلاشها در حال پیشرفت است و هر روز امکانات جدیدی برای سادهسازی استفاده از رابطهای کاربر گرافیکی ارائه میشود.
در این نوشته قصد داریم تا به معرفی راهکار مناسب استفاده از ماژول نمایشگر گرافیکی بپردازیم. نگاه این نوشته به پروژههایی است که بر بستر سیستمهای نهفته (Embedded systems) اجرا میشوند و از پردازندههایی که واحد گرافیکی مستقل دارند استفاده نشده است. اجرا میشوند. از سوی دیگر ملاحظات سختافزاری را در این متن بررسی نمیکنیم و تنها به امکانات نرم افزاری (کتابخانههایی) برای برطرف کردن مشکل پیچیدگی راهاندازی بخش نمایشگر گرافیکی واسطهای کاربری اشاره میکنیم و در نهایت دو مورد مناسب را برای نمایشگرهای تکرنگ و رنگی، معرفی میکنیم.
اصول ارتباط سختافزاری نمایشگر گرافیکی
بلوک دیاگرام ارتباط سختافزاری میان یک نمایشگر و پردازندهی اصلی در شکل زیر مشخص شدهاست.
همانطور که در شکل مشخص شده است، شامل سه بخش اصلی است که در ادامه به توضیح مختصر هر یک میپردازیم.
- نمایشگر: شامل دو بخش اصلی چیپ درایور (Display Driver Chip) و مدار تغذیه است. البته بخشی که شامل سلولهای نورانی است و معمولاً از طریق تحریک ترانزیستورهای FET تصویر را به نمایش درمیآورند نشان داده نشده است. این سلولها به تعداد Resolution افقی و عمودی در دو بعد صفحه قرارگرفتهاند. وظیفهی روشن، خاموش کردن این ترانزیستورها با چیپ درایور است که معمولاً به شکل Chip on Glass Package و در پشت صفحهی نمایشگر تعبیه میشوند. مدارات تغذیه هم برای ایجاد سطوح مثبت و منفی مورد نیاز Backlight و سلولهای نورانی طراحی میشوند. ارتباط ماژول نمایشگر از طریق واسط سختافزاری که مثلاً در ماژولهای رنگی واسط موازی RGB (تعبیهشده در چیپ درایور) است، برقرار میگردد.
- بورد کنترلر: این بخش شامل چیپ کنترلر (Display Controller Chip) است که وظیفهی آن شامل موارد زیر است:
- داشتن بافر (حافظهی RAM) لازم که دیتای pixelهای نمایشگر را در خود دارد.
- تبدیل واسط ارتباطی پردازنده به واسط چیپ درایور (مثلا واسط RGB)
- تولید سیگنالهای زمانی مورد نیاز برای Refresh کردن ماژول نمایشگر با فرکانس مناسب.
استفاده از چیپ کنترلر، همانطور که از وظایف آن مشخص است، بار محاسباتی زیادی را از روی دوش پردازندهی اصلی برمیدارد و همچنین از اشغال حافظهی سیستم جلوگیری میکند. البته در پردازندههایی که دارای واسط RGB هستند، استفاده از چیپ کنترلی الزامی نیست و پردازنده میتواند مستقیما برای کنترل ماژول نمایشگر پیکربندی شود. ازسویدیگر در راهاندازی نمایشگرهای بزرگ که به حافظهی زیادی برای نگهداری اطلاعات Frame نمایشی نیاز دارد، معمولا از چیپ حافظهی خارجی استفاده میشود تا فضای حافظهی داخلی میکروکنترلر برای کاربردهای دیگر حفظ شود.
توجه: چیپ درایور(Display Driver) و چیپِ کنترلر(Display Controller) وظایف کاملا متفاوتی دارند، لذا باید به درستی به هر یک در جایگاه خود اشاره کرد.
- بورد اصلی (میکروکنترلر): برای ارتباط میکروکنترلرها با ماژولهای نمایشگر رنگی و تکرنگ، برخی واسطهای سختافزاری استاندارد سریال و موازی در زیر آورده شده است:
- واسط سریال SPI
- واسط سریال I2C
- واسط موازی RGB
- واسط موازی Intel 8080
- واسط موازی Motorola 6800
در طراحی سیستم واسط کاربری، بسته به تجهیز میکروکنترلر و نمایشگر به هر یک از این واسطها، میتوان بهینهترین را انتخاب نمود و در صورت لزوم بخش بورد کنترلر را حذف کرد. در حالت کلی استفاده از واسطهای سریال مزیت اشغال پینهای کمتر و عیب سرعت ارتباطی کمتر را با خود دارند. این مقایسه برای واسطهای موازی برعکس است.
در این قسمت کلیتی از اصول سختافزاری ماژول نمایشگر گرافیکی ارائه شد. هر یک از بخشهای مورد اشاره دارای جزییاتی است که برای آشنایی بهتر با آنها میتوان به Application Note های مختلف مراجعه کرد. برای نمونه از لینک زیر استفاده کنید.
منبع: سیسوگ