آموزش راه اندازی LCD کاراکتری ۲×۱۶ با آردوینو
آموزش راه اندازی LCD کاراکتری ۲×۱۶ با آردوینو | LCD های کاراکتری یک نمایشگر متنی هستند که به دلیل قیمت مناسب و استفاده آسان، گزینههای محبوبی برای نمایش دادهها در پروژههای الکترونیکی هستند. LCD های ۲×۱۶ یکی از پرکاربردترین LCD ها برای استفاده در پروژه ها هستند که میتوانند تا ۳۲ کاراکتر را در دو ردیف شانزده تایی نمایش دهند. البته با توجه به نیاز میتوان از انواع LCD های دیگر که بر مبنای چیپ کنترلر HD44780 هیتاچی هستند نیز استفاده کرد.
در این مقاله که توسط خانه رباتیک ایران آماده شده است میخواهیم نحوه راه اندازی LCD کارکتری با آردوینو را به شما آموزش دهیم.
آشنایی با LCD :
LCD مخفف عبارت Liquid Crystal Display و به معنای « صفحه نمایش کریستال مایع » است. در واقع LCD دو شیشه که نوعی فیلتر هستند و کریستال مایع که هم ویژگی جامدات و هم مایعات را دارد (که همین امر سبب بکارگیری این ماده در چنین تکنولوژی شده است) را داراست. کریستالهای مایع میان دو شیشه پلاریزه قرار دارند و هنگامی که نور وارد این دو فیلتر میشود، اگر الگوی مناسب آنها را نداشته باشد توانایی عبور از آنها را نخواهد داشت.
LCD کاراکتری همانطور که از اسمش پیداست تنها برای نمایش پیام متنی و یا کاراکتری ساخته شده است. این LCD دارای یک LED برای نور پس زمینه است که اگر بادقت به آن نگاه کنید، میتوانید ۳۲ بلوک مستطیلی شکل در دو ردیف شانزده تایی را مشاهده کنید، که هر یک از این مستطیلها به شکل شبکهای از ۵×۸ پیکسل است.
اگرچه این LCD ها فقط نمایش دهنده متن و کاراکتر هستند اما در اندازه و رنگها متفاوتی وجود دارند. مانند صفحات نمایش ۱×۱۶، ۴×۱۶ و ۴×۲۰ با متن سفید در زمینه آبی یا متن سیاه در زمینه سبز.
پینهای ماژول LCD کاراکتری ۲×۱۶ :
قبل از راه اندازی این LCD با آردوینو، ابتدا نگاهی به پینهای LCD میاندازیم:
۱- پین GND: به پین GND آردوینو وصل میشود.
۲- پین VCC: تغذیه الکتریکی LCD است و به پین ۵ ولت آردوینو وصل میشود.
۳- پین Vo: جهت کنترل کنتراست (Contrast) و نور LCD مورد استفاده قرار میگیرد. با استفاده از یک تقسیم کننده ولتاژ و یک پتانسیومتر میتوانید کنتراست را بهسادگی تنظیم کنید تا متن به خوبی قابل مشاهده باشد.
۴- پین RS: (ثبت انتخاب) به آردوینو اجازه میدهد که به LCD اطلاع دهد که آیا در حال ارسال دیتا یا ارسال دستورات است. این پین اصولا برای ایجاد تمایز بین دستورات و دیتا مورد استفاده قرار میگیرد. به عنوان مثال هنگامیکه مقدار پین RS بهصورت Low باشد، در واقع شما در حال ارسال دستوری از آردوینو به LCD هستید (دستورهایی مانند دستور تنظیم مکان نما در یک مکان خاص، دستور پاک کردن صفحه نمایش، دستور رفتن به سمت راست صفحه نمایش و یا …. ). اما زمانیکه پین RS بهصورت High باشد، شما در حال ارسال دیتا یا کاراکتر از آردوینو بر روی LCD هستید.
۵- پین R/W: ( خواندن / نوشتن ) بر روی LCD به شما نشان میدهد که آیا در حال نوشتن دیتا بر روی LCD هستید یا در حال خواندن دیتا از آن هستید. با توجه به اینکه در این پروژه از این LCD تنها به عنوان خروجی استفاده میکنیم، باید مقدار این پین را LOW تنظیم کنید. زمانیکه این پین LOW باشد، LCD در مد نوشتن ( Write ) قرار میگیرد و شما میتوانید به LCD دیتا ارسال کنید.
۶- پین En: (فعال) جهت فعالسازی LCD استفاده میشود. یعنی زمانیکه این پین LOW باشد، در حقیقت LCD اهمیتی به مقادیر پینهای R/W ،RS و خطوط باس دیتا نمیدهد. اما با High شدن این پین، LCD اطلاعات ورودی را پردازش خواهد کرد.
۷- پینهای (data bus) D0-D7: برای انتقال دیتای ۸ تا ۱۴ بیتی مورد استفاده قرار میگیرند که شما برای LCD ارسال میکنید. به عنوان مثال اگر بخواهید کاراکتر A را بر روی LCD مشاهده کنید، باید این هشت پین را با کد ۰۱۰۰۰۰۰۱ ( براساس جدول اسکی ) تنظیم کنید. به این شکل LCD کاراکتر A را نمایش خواهد داد.
۸- پینهای A-K (آند و کاتد): برای کنترل نور پس زمینه LCD مورد استفاده قرار میگیرند.
آموزش راه اندازی LCD کاراکتری ۲×۱۶ با آردوینو
سیم کشی و تست LCD کاراکتری ۲×۱۶ :
اکنون برای سیم کشی و تست LCD نیاز به وسایل زیر دارید:
- برد آردوینو UNO
- LCD کاراکتری ۲×۱۶
- پتانسیومتر ۵ کیلو اهم (برای تنظیم کنتراست)
- مقاومت ۲۲۰ اهم
- سیم جامپر
- مینی برد بورد
- کابل USB
بعد از تهیه وسایل باید به ترتیب مراحل زیر را طی کنید:
- ابتدا پین GND و ۵ ولت آردوینو را به ریلهای برد بورد و سوکت LCD را نیز به برد بورد متصل کنید.
- سپس پین شماره ۳ (Vo) LCD که برای کنترل کنتراست و روشنایی پس زمینه ال سی دی است را به پایه وسط یک پتانسیومتر ۵ کیلو اهمی بین پینهای GND و ۵ ولت وصل کنید.
در نهایت تغذیه الکتریکی را از طریق سیم و برد بورد به LCD اعمال کنید. LCD دارای ۲ رابط برای اتصال تغذیه الکتریکی است. رابطهای LCD عبارتند از پینهای ۱ (GND) و ۲ (VCC) که برای تغذیه الکتریکی LCD به کار میرود و دیگری پین ۱۵ (Anode) و ۱۶ (Kathod) که برای نور پس زمینه است. پین ۱ و ۱۶ LCD را به GND و پین ۲ و ۱۵ را به ۵ ولت وصل کنید.
البته توجه کنید که بیشتر LCD ها در مسیر تغذیه نور پس زمینه دارای مقاومتهای داخلی هستند. اگر LCD شما دارای این مقاومت الکتریکی نبود میبایست یک مقاومت در مسیر اتصال پین ۵ ولت به پایه ۱۵ قرار دهید. برای اینکه بفهمید مقاومت مناسب برای این LCD چقدر است باید به دیتاشیت LCD مراجعه کنید و با استفاده از اطلاعتی از قبیل حداکثر جریان نور پس زمینه و افت ولتاژ معمول آن از طریق قانون اهم مقدار مقاومت مورد نیاز را محاسبه کنید. چنانچه اگر به دیتاشیت LCD دسترسی نداشتید میتوانید با رعایت اصول ایمنی از یک مقامت ۲۲۰ اهمی استفاده کنید. اگر نور پس زمینه LCD شما تا حدودی ضعیف شود گویای این است که مقدار مقاومت مورد استفاده LCD زیادی است.
خانه رباتیک ایران
همانطور که مشاهده میکنید با روشن کردن آردوینو خواهید دید که نور پس زمینه LCD نیز روشن میشود و با چرخاندن پتانسیومتر میتوانید کنتراست LCD را تنظیم کنید.
اگر بتوانید با چرخاندن پتانسیومتر خط اول بلوکهای مستطیلی شکل را مشاهده کنید یعنی به درستی LCD را به آردوینو متصل کردهاید.
بعد از کسب اطمینان خاطر بابت درستی نصب LCD اکنون باید برای استفاده LCD از آردوینو باید مابقی پینها را از LCD به آردوینو متصل کنید. LCD کاراکتری ۲×۱۶ دارای ۱۶ پین است که نیازی به اتصال تمام پینها نیست.
آموزشگاه رباتیک ایران
بیشتر بدانید:
برای انتقال دیتا به صفحه نمایش ۸ خط دیتا وجود دارد. اما LCD های HD44780 طوری طراحی شده اند که با وجود ۸ پین تنها با استفاده از ۴ پین (مد ۴ بیتی) میتوان دیتا را انتقال داد. از این منظور میتوان برای صرفه جویی در استفاده از پینهای ورودی / خروجی بکار برد. هرچند که انتقال دیتا در مد ۸ بیتی از سرعت بیشتری برخوردار است و به همین خاطر حداقل ۱۰ پین در دسترس شما وجود دارد. البته شما در اینجا از مد ۴ بیتی استفاده میکنید.
برای نوشتن پیام بر روی LCD فقط نیاز به ۶ پین RS ،EN ،D4 ،D5 ،D6 و D7 داریم:
- پین ۴ (RS) LCD را به دیجیتال پین شماره ۱۲ آردوینو وصل کنید.
- پین ۵ (R/W) LCD را به GND آردوینو وصل کنید.
- پین ۶ (En) LCD را به پین ۱۰ آردوینو وصل کنید.
- پین ۱۱ (D4) LCD را به پین ۵ آردوینو وصل کنید.
- پین ۱۲ (D5) LCD را به پین ۴ آردوینو وصل کنید.
- پین ۱۳ (D6) LCD را به پین ۳ آردوینو وصل کنید.
- پین ۱۴ (D7) LCD را به پین ۲ آردوینو وصل کنید.
آموزش راه اندازی LCD کاراکتری ۲×۱۶ با آردوینو
پس از سیم کشی و اتصال پینها به آردوینو حالا برای نمایش دیتا بر روی LCD سراغ کد نویسی بروید.
کد نویسی با آردوینو:
قسمتی از راه اندازی LCD کاراکتری ۲×۱۶ مربوط به کد نویسی است.
کد زیر پیام ” Khaneh Robotic Iran ” را بر روی LCD نمایش میدهد.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ |
// include the library code: #include <LiquidCrystal.h> // Create an LCD object. Parameters: (rs, En, D4, D5, D6, D7) LiquidCrystal lcd(۱۲, ۱۱, ۵, ۴, ۳, ۲); void setup() { //Setting the number of LCD columns and rows: lcd.begin(۱۶, ۲); // The command to clear the LCD: lcd.clear(); } void loop() { // Display character location: lcd.setCursor(۱, ۰); // Print a message to the LCD. lcd.print("Khaneh Robotic"); // Display character location: lcd.setCursor(۵, ۱); // Print a message to the LCD. lcd.print(" Iran "); } |
شرح کد:
ابتدا قبل از ورود به توابع setup و loop باید کتابخانه liquidcrystal را برای راه اندازی سادهتر LCD که بصورت پیش فرض در آردوینو قرار دارد، فراخوانی کنید.
۱ ۲ |
// include the library code: #include <LiquidCrystal.h> |
در گام بعدی باید شی LCD را ایجاد کنید که از ۶ پارامتر RS ،Enو D4 تا D7 استفاده میکند و مشخص میکند که کدام یک از پینهای آردوینو به یکی از این ۶ پارامتر متصل است.
۱ ۲ |
// Create an LCD object. Parameters: (rs, En, D4, D5, D6, D7) LiquidCrystal lcd(۱۲, ۱۱, ۵, ۴, ۳, ۲); |
اکنون که شی LCD را ایجاد کردید وارد بخش setup میشوید. در این بخش باید ۲ تابع ()begin و ()clear استفاده کنید.
تابع ()begin برای مشخص کردن ابعاد LCD است. برای مثال شما در اینجا از LCD 2×۱۶ استفاده میکنید پس باید پارامترهای تابع را به صورت ۲ و ۱۶ قرار دهید. اگر ابعاد LCD متفاوت بود مثلا ۱۶×۱ بود باید پارامترهای تابع را ۱ و ۱۶ قرار دهید.
تابع ()clear صفحه را پاک میکند و مکان نمای کاراکتر را در گوشه بالا سمت چپ قرار میدهد.
آموزش راه اندازی LCD کاراکتری ۲×۱۶ با آردوینو
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ |
void setup() { //Setting the number of LCD columns and rows: lcd.begin(۱۶, ۲); // The command to clear the LCD: lcd.clear(); } |
در بخش loop، از تابع ()print برای چاپ متن مورد نظر و از تابع ()setCursor برای تنظیم مکانمای متن استفاده میکنیم. در این LCD که دارای ۲ سطر است در سمت راست تابع ()setCursor میتوانید از اعداد ۰ و ۱ (چون در زبان برنامه نویسی شماره گذاریها از ۰ شروع میشود) برای مشخص کردن سطر و در سمت چپ تابع میتوانید از اعداد ۰ تا ۱۵ برای مشخص کردن ستون متن برای شروع نمایش متن استفاده کنید.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ |
void loop() { // Display character location: lcd.setCursor(۱, ۰); // Print a message to the LCD. lcd.print("Khaneh Robotic"); // Display character location: lcd.setCursor(۵, ۱); // Print a message to the LCD. lcd.print(" Iran "); } |
اگر تمام نکات بالا را رعایت کرده باشید در آخر باید خروجی شما به شکل زیر باشد:
شعبه بابل: پل کارگر به سمت کشوری، روبروی ماکروویو، جنب فروشگاه جانبو
شعبه بابل: پل کارگر به سمت کشوری، روبروی ماکروویو، جنب فروشگاه جانبو