القائمة الرئيسية

الصفحات

توصيل شاشة LCD بالاردوينو


هل تريد لمشروعات Arduino الخاصة بك طريقة لعرض رسائل الحالة أو قراءات المستشعر؟ قد تكون شاشات الكريستال السائل مناسبة تمامًا. إنها شائعة للغاية وطريقة سريعة لإضافة واجهة قابلة للقراءة إلى مشروعك.

سيغطي هذا الدرس كل ما تحتاج إلى معرفته للاستفادة من شاشات LCD الخاصة بالأحرف. ليس فقط 16 × 2 (1602) ولكن أي شاشات LCD شخصية (على سبيل المثال ، 16 × 4 ، 16 × 1 ، 20 × 4 وما إلى ذلك) التي تستند إلى "رقاقة وحدة تحكم LCD واجهة متوازية من شركة هيتاشي يسمى HD44780". لأن مجتمع Arduino قد طور بالفعل مكتبة للتعامل مع شاشات HD44780 LCD ؛ لذلك سنواجهها في أي وقت من الأوقات.

تلميح

LCD  إختصار لـ"شاشات الكريستال السائل". هي في الأساس وحدة عرض تستخدم البلورات السائلة لإنتاج صورة مرئية.
عندما يتم تطبيق التيار على هذا النوع الخاص من الكريستال ، فإنه يصبح معتما فيحجب الإضاءة الخلفية التي تتواجد خلف الشاشة. نتيجة لذلك تصبح منطقة معينة مظلمة مقارنة بغيرها. وهذه هي الطريقة التي يتم بها عرض الأحرف على الشاشة.

نظرة عامة على الجهاز

تعد شاشات LCD هذه مثالية لعرض النص/الأحرف فقط ، ومن هنا جاءت تسميتها 'Character LCD'. تحتوي الشاشة على إضاءة خلفية LED ويمكنها عرض 32 حرفًا من أحرف ASCII في صفين مع 16 حرفًا في كل صف.

إذا نظرت عن كثب ، يمكنك بالفعل رؤية المستطيلات الصغيرة لكل حرف على الشاشة والبكسل التي تشكل حرفًا. كل من هذه المستطيلات هي شبكة من 5 × 8 بكسل.

على الرغم من أنها تعرض النص فقط ، إلا أنها تأتي بأحجام وألوان كثيرة: على سبيل المثال ، 16 × 1 ، 16 × 4 ، 20 × 4 ، مع نص أبيض على خلفية زرقاء ، مع نص أسود على الأخضر وغيرها الكثير.
والخبر السار هو أن جميع شاشات العرض هذه 'قابلة للتبديل' - إذا كنت تبني مشروعك بمشروع ، يمكنك فقط فصله واستخدام شاشة LCD مقاس / لون أخرى من اختيارك. قد يتعين على الكود الخاص بك أن يتكيف مع الحجم الأكبر ولكن على الأقل تكون الأسلاك هي نفسها!

منافذ الجهاز



  • GND يجب أن تكون مرتبطة بالمدخل الأرضي للاردوينو.
  • VCC هو مصدر الطاقة لشاشات الكريستال السائل التي نقوم بتوصيل دبوس 5 فولت على اردوينو.
  • Vo (تباين LCD) يتحكم في التباين والسطوع لشاشة LCD. باستخدام مقسم جهد بسيط مع مقياس الجهد ، يمكننا إجراء تعديلات دقيقة على التباين.
  • Rs يسمح لـ Arduino بإخبار شاشة LCD عما إذا كانت ترسل الأوامر أم البيانات. يستخدم هذا المدخل في الأساس لتمييز الأوامر عن البيانات. على سبيل المثال ، عند ضبط مدخل RS على LOW ، فإننا نرسل أوامر إلى شاشة LCD (مثل ضبط المؤشر إلى موقع معين ، ومسح الشاشة ، وانتقل العرض إلى اليمين وما إلى ذلك). وعندما يتم تعيين RS على HIGH ، فإننا نرسل البيانات / الأحرف إلى شاشة LCD.
  • R/W يعلق على شاشة LCD بالتحكم في ما إذا كنت تقرأ البيانات من شاشة LCD أو تكتب البيانات إلى شاشة LCD. نظرًا لأننا نستخدم شاشة LCD هذه كجهاز إخراج فقط ، فإننا سنربط هذا المدخل بـLOW. هذا يجعلها في وضع الكتابة.
  • E يستخدم لتمكين العرض. بمعنى ، عندما يتم تعيين هذا المدخل على LOW ، فإن شاشة LCD لا تهتم بما يحدث مع R/W ، RS ، وخطوط نقل البيانات ؛ وعندما يتم تعيين هذا المدخل على HIGH ، فإن LCD تعالج البيانات الواردة.
  • D0-D7 (ناقل البيانات) هي المسامير التي تحمل بيانات 8 بت التي نرسلها إلى الشاشة. على سبيل المثال ، إذا أردنا رؤية الأحرف الكبيرة 'A' على الشاشة ، فسنقوم بتعيين هذه المسامير على 0100 0001 (وفقًا لجدول ASCII) على شاشة LCD.
  • A-K تستخدم A-K (الأنود والكاثود) للتحكم في الإضاءة الخلفية لشاشة LCD.

اختبار شاشة الـLCD

نحن الآن وصلنا للأمور المثيرة للاهتمام. لنختبر شاشة LCD الخاصة بك.أولاً ،
 قم بتوصيل منافذ 5 فولط و GND لـ Arduino Uno بقضبان الطاقة في اللوحة وقم بشبك شاشة الكريستال السائل الخاصة بك مع اللوح.
الآن سنقوم بتشغيل شاشة LCD. شاشات الكريستال السائل لديها اثنين من توصيلات الطاقة منفصلتين. واحد (منفذ 1 و 2) لشاشات الكريستال السائل نفسها وآخر (منفذ15 و 16 ) للإضاءة الخلفية LCD. قم بتوصيل المنفذين 1 و 16 على شاشة LCD بـ GND والمنفذين 2 و 15 على شاشة LCD إلى 5فولط.

بعد ذلك ، سنقوم بتوصيل المنفذ 3 من شاشة LCD التي تتحكم في تباين الشاشة. من أجل ضبط التباين الدقيق ، سنقوم بتوصيل مقياس الجهد 10K بين 5 فولط و GND ؛ قم بتوصيل المنفذ الواقع في الوسط(ممسحة) من الجهد إلى المنفذ 3 من شاشات الكريستال السائل.

هذا هو! الآن قم بتشغيل Arduino ، سترى الإضاءة الخلفية مضاءة. وبينما تقوم بتدوير المقبض على مقياس الجهد ، يجب أن تلاحظ ظهور السطر الأول من المستطيلات. إذا حدث هذا ، مبروك! شاشات الكريستال السائل الخاصة بك على ما يرام.

قبل أن نصل إلى تحميل الكود وإرسال البيانات إلى الشاشة ، دعونا نربط شاشة LCD بأردوينو.
تحتوي شاشات الكريستال السائل على الكثير من المنافذ (16 منفذا في المجموع) والتي سنوضح لك كيفية التوصيل بها. لكن الخبر السار هو أنه ليس كل هذه المنافذ ضرورية بالنسبة لنا للاتصال بـ Arduino.
نعلم أن هناك 8 خطوط بيانات تحمل بيانات أولية إلى الشاشة. ولكن، تم تصميم شاشات LCD عالية الدقة HD44780 بحيث يمكننا التواصل مع شاشات الكريستال السائل باستخدام 4 منافذ للبيانات فقط (وضع 4 بت) بدلاً من 8 (وضع 8 بت). هذا يوفر لنا 4 منافذ!
ما الفرق بين وضع 4 بت ووضع 8 بت؟
من الأسرع استخدام وضع 8 بت حيث يستغرق استخدام وضع 4 بت نصف طوله. لأنه في وضع 8 بت تكتب البيانات دفعة واحدة فقط. أما في الوضع 4 بت ، يجب عليك تقسيم البايتة إلى 2 نيبلين، وإزاحة واحد منهم 4 بتات إلى اليمين ، وتنفيذ عمليتي كتابة.لذلك ، غالبًا ما يستخدم وضع 4 بت للإبقاء على منافذ I/O. ولكن ، يتم استخدام وضع 8 بت بشكل أفضل عندما تكون السرعة مطلوبة في أحد التطبيقات ويتوفر ما لا يقل عن 10 منافذ إدخال / إخراج.

حتى نلخص ، سنقوم بربط شاشات الكريستال السائل باستخدام الوضع 4 بت ، وبالتالي نحن بحاجة فقط إلى 6 منافذ: RS و EN و D7 و D6 و D5 و D4 للتواصل مع شاشة LCD.
الآن ، دعونا نقوم بتوصيل شاشة LCD إلى Arduino. سيتم توصيل أربعة منافذ بيانات (D4-D7) من شاشة LCD بمنافذ Arduino الرقمية من رقم 4-7. سيتم توصيل منفذ التمكين En على شاشة LCD ب Arduino # 2 وسيتم توصيل منفذ RS على شاشة LCD ب Arduino # 1.
يوضح لك الرسم البياني التالي كيفية توصيل كل شيء.



بذلك ، أنت الآن جاهز لتحميل بعض الأكواد والحصول على طباعة على الشاشة.

كود اردوينو

سيقوم كود الاختبار التالي بطباعة رسالة 'Hello World!' على شاشة LCD. جرب الكود ثم سنقوم بشرحه مع شيء من التفصيل.
// include the library code:
#include <LiquidCrystal.h>

// Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() 
{
 // set up the LCD's number of columns and rows:
 lcd.begin(16, 2);

 // Clears the LCD screen
 lcd.clear();
}

void loop() 
{
 // Print a message to the LCD.
 lcd.print("hello, world!");

 // set the cursor to column 0, line 1
 // (note: line 1 is the second row, since counting begins with 0):
 lcd.setCursor(0, 1);
 // Print a message to the LCD.
 lcd.print("5");
}

يبدأ الكود بتضمين مكتبة LiquidCrystal. فلدى مجتمع Arduino مكتبة تسمى LiquidCrystal تجعل برمجة وحدة LCD أقل صعوبة. يمكنك استكشاف المزيد عن المكتبة على الموقع الرسمي لأردوينو.

// include the library code:
#include <LiquidCrystal.h>
التالي علينا إنشاء كائن LiquidCrystal. يستخدم هذا الكائن 6 قيم ويحدد منافذ Arduino المتصلة بمنفذ RS الخاص بشاشات الكريستال السائل ، ومنفذ التمكين En ، ومنافذ البيانات: d4 و d5 و d6 و d7.
// Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
الآن بعد أن أعلنت عن كائن LiquidCrystal ، يمكنك الوصول إلى الإجراءات الخاصة (المسمات دوال) الخاصة بشاشات الكريستال السائل.
في الدالة 'setup': سنستخدم دالتين: أولا الدالة begin(). يستخدم هذا لتحديد أبعاد الشاشة ، أي عدد الأعمدة والصفوف الموجودة في الشاشة. إذا كنت تستخدم شاشة LCD بحجم 16 × 2 حرفًا ، فمرر القيمتين 16 و 2 ؛ إذا كنت تستخدم شاشة LCD 20 × 4 ، فمرر القيمتين 20 و 4.

الدالة الثانية هي clear(). تقوم بمسح شاشة LCD ونقل المؤشر إلى الزاوية اليسرى العليا.
lcd.begin(16, 2);
lcd.clear();
في الإجراء 'loop': سنستخدم دالة print () التي تعرض الرسالة التي نراها في السطر الأول من الشاشة.
// Print a message to the LCD.
lcd.print(" hello, world!");
بعد ذلك ، سنقوم بتعيين موضع المؤشر على الصف الثاني ، عن طريق استدعاء الدالة setCursor () يحدد موضع المؤشر الموقع الذي تحتاج إلى عرض النص الجديد فيه على شاشة LCD. الزاوية العليا اليسرى يعبر عنها بـ col = 0 ، row = 0

lcd.setCursor(0, 1);
lcd.print("5");
إذا سارت الأمور على ما يرام ، يجب أن ترى شيئًا كهذا على الشاشة.

دوال مفيدة أخرى في مكتبة LiquidCrystal

هناك بعض الدوال المفيدة التي يمكنك استخدامها مع كائن LiquidCrystal. هذه بعضها:
  • إذا كنت ترغب فقط في وضع المؤشر في الجزء العلوي الأيسر من شاشة LCD دون مسح الشاشة ، فاستخدم home ()
  • هناك العديد من التطبيقات مثل برنامج turbo C ++ أو برنامج notepad ++ ، حيث يؤدي الضغط على مفتاح 'insert' في لوحة المفاتيح إلى تغيير المؤشر. تمامًا مثل ذلك يمكنك تغيير المؤشر على شاشة LCD باستخدام blink () أو lcd.cursor ().
  • تعرض دوال blink () كل البكسلات للمنطقة عرض الحرف التي تبلغ 5 × 8 بكسل ، بينما تعرض شاشة lcd.cursor () الشرطة السفلية (_) في الموضع الذي سيتم كتابة الحرف التالي به.
  • يمكنك استخدام الدالة noBlink () لإيقاف تشغيل مؤشر LCD الوامض و lcd.noCursor () لإخفاء مؤشر LCD.
  • يمكنك تمرير محتويات الشاشة مسافة واحدة إلى اليمين باستخدام lcd.scrollDisplayRight () أو مسافة واحدة لليسار باستخدام lcd.scrollDisplayLeft (). 
إذا كنت ترغب في التمرير النص باستمرار ، فأنت بحاجة إلى استخدام هذه الدوال داخل الإجراء 'loop'.

توليد حرف مخصص لشاشة LCD مقاس 16 × 2

إذا كنت تبحث عن أحرف على الشاشة مملة وغير مثيرة ، فيمكنك إنشاء أحرف مخصصة (رموزًا) ورموز لشاشتك LCD. إنها مفيدة للغاية عندما تريد عرض حرف ليس جزءًا من مجموعة أحرف ASCII القياسية.

ملحوظة

تحتوي جميع شاشات LCD المستندة إلى وحدة تحكم Hitachi HD44780 على نوعين من الذكريات التي تخزن الأحرف المحددة المسماة CGROM و CGRAM (Character Generator ROM & RAM).
 ذاكرة CGROM ميتة ولا يمكن تعديلها ؛ ذاكرة CGRAM مرنة ويمكن تعديلها في أي وقت.
يستخدم CGROM لتخزين جميع الخطوط العادية التي يمكن عرضها باستخدام رمز ASCII الخاص بهم. 
على سبيل المثال ، إذا كتبنا 0x41 ، فحينئذٍ نظهر على الحرف 'A' على الشاشة. 
CGRAM هي ذاكرة أخرى يمكن استخدامها لتخزين الأحرف المعرفة من قبل المستخدم.
تقتصر ذاكرة الوصول العشوائي هذه على 64 بايت. بمعنى ، في شاشات الكريستال السائل على أساس 5 × 8 بكسل ؛ يمكن تخزين ما يصل إلى 8 أحرف معرفة من قبل المستخدم في CGRAM. ولشاشة LCD مقاس 5 × 10 بكسل ، يمكن فقط تخزين 4 أحرف معرفة من قبل المستخدم.

كما ناقشنا سابقًا في هذا الدرس ، يتم تشكيل حرف على الشاشة في مصفوفة 5 × 8 بكسل بحيث تحتاج إلى تحديد الطابع المخصص الخاص بك داخل تلك المصفوفة. لتعريف الحرف الذي ستستخدمه createChar () دالة موجودة في مكتبة LiquidCrystal.
لاستخدام createChar () قم أولاً بإعداد مصفوفة من 8 بايت. كل بايت (يتم اعتماد 5 بت فقط) في المصفوفة يحدد صفًا واحدًا من الأحرف من المصفوفة 5 × 8. بينما تشير الأصفار والواحدات إلى البيكسلات الموجودة في الصف يجب تشغيلها وتلك التي يجب إيقاف تشغيلها.

المصدرLast minute engineers
الترجمة: CirtaTeam
            cirta2030@gmail.com

author-img
مدون عربي يسعى لإثراء المحتوى العربي بكل ما هو جديد ومفيد في شتى المجالات.

تعليقات

تعليق واحد
إرسال تعليق

إرسال تعليق