يمكن عرض جميع الرسائل المكونة من الحروف الانجليزية والأرقام ورموز خاصة مثل ( علامات الترقيم، الرموز الرياضية) وكذلك بعض الاحرف اليابانية و اليونانية على شاشة الـ LCD . ولكن كيف يمكننا عرض الحروف العربية أو رموز الخاصة بك على الشاشة ؟!
في هذا المشروع سنقوم بكتابة كلمات باللغة العربية و رسم رموز مخصصة عن طريق الرسم على شاشة LCD.
القطع المطلوبة:
الأدوات التي تحتاجها لهذا المشروع :
لوح تجارب حجم متوسط (Half size breadboard )
اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)
طباعة الحروف العربية او الرموز الخاصة بك على شاشة العرض LCD ليس من الصعب جدا، يتطلب ذلك معرفة CG-RAM لشاشة LCD .
ذاكرة CG-RAM
CG-RAM هي العنصر الأساسي لإنشاء الرسومات و الاحرف الخاصة بك . حيث تقوم بتخزين الرسومات التي تم إنشاءها بمجرد اعلانها بالكود .
– حجم ذاكرة CG-RAM هو 64 بايت(64-byte) . ولذلك يمكنك تشكيل 8 احرف في وقت واحد، وكل حرف يتكون من 8 بايت (8-Byte) . ثمانية احرف كل منها 8بايت (8-characters* 8-byte) تساوي 64-Byte .
– يبدأ عنوان الذاكرة CG-RAM من (0x40 Hex (64 decimal.
سنقوم بإنشاء الاحرف العربية او رسومات على هذه الذاكرة. بمجرد إنشاء هذة الاحرف يمكننا عرضها على شاشة LCD في اي وقت عن طريق ارسل امر معين الى شاشة الـ LCD .
في الجدول التالي يتم توضيح عناوين الاحرف و الرسومات التي سيتم إنشاءها وأوامر الطباعة الخاصة بهم:
في الجدول اعلاه ستلاحظ العنوان الذي سيبدأ به كل رمز خاصة بك مع امر الطباعة الخاص به. مثلا اول حرف يتم انشاؤه وتخزينة على الموقع من 0x40 الى 0x47 في الذاكرة، ثم يتم طباعته على شاشة الـ LCD بواسطة ارسال الامر 0 الى شاشة الـ LCD. والحرف الثاني تبدأ تخزينة من الموقع 0x48 الى 0x4F ويتم طباعتة من خلال ارسل الامر 1 الى الشاشة.
كيف يتم إنشاء أحرف مخصصة في CG-RAM
يتم تشكيل كل حرف او رمز على الشاشة في مصفوفة تكون ابعادها 8×5. حيث ان 5 تمثل عدد الاعمدة و 8 تمثل عدد الصفوف.
اولا: قم برسم مصفوفة 8*5 بكسل، ثم قم برسم الرمز او الحرف الخاص بك في داخل المصفوفة، ثم قم بوضع على كل خلية ملون قيمة 1 , و قيمة صفر على الباقي.
ثانيا: قم بتحويل تلك المصفوفة الى 8-Bytes.
تصميم لوح التجارب
قم بتوصيل الدائرة الكهربائية على لوحة التجارب كما هو موضح بالصورة :
توصيل شاشة الـ LCD :
Arduino | LCD |
Pin 12 | RS pin |
Pin 11 | Enable pin |
Pin 5 | D4 pin |
Pin 4 | D5 pin |
Pin 3 | D6 pin |
Pin 2 | D7 pin |
يمكنك العودة إلى الدرس الثاني عشر للإطلاع على طريقة توصيل شاشة الـ LCD .
الكود البرمجي للأردوينو
قم برفع البرنامج التالي على الاردوينو:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); byte M[8] = { 0b00000, 0b00000, 0b00110, 0b01001, 0b11001, 0b00110, 0b00000, 0b00000 }; byte R[8] = { 0b00000, 0b00000, 0b00010, 0b00010, 0b00011, 0b00100, 0b01000, 0b10000 }; byte H[8] = { 0b00000, 0b01100, 0b10010, 0b00001, 0b11111, 0b00000, 0b00000, 0b00000 }; byte BA[8] = { 0b10000, 0b10000, 0b10000, 0b10010, 0b11111, 0b00000, 0b00100, 0b00000 }; byte logo[8] = { 0b11111, 0b10101, 0b11111, 0b11111, 0b01110, 0b01010, 0b11011, 0b00000 }; void Word1() { lcd.setCursor(12,0); lcd.write(byte(0)); lcd.write(1); lcd.write(2); lcd.write(3); } void Logo1() { lcd.setCursor(10,0); lcd.write(4); } void setup() { lcd.createChar(0, BA); // char (با) lcd.createChar(1, H); //char ( ح ) lcd.createChar(2, R); //char (ـر) lcd.createChar(3, M); //char (مـ) lcd.createChar(4, logo); lcd.begin(16, 2); } void loop() { Word1(); Logo1(); }
شرح الكود :
تم رسم الأحرف داخل مصفوفة و تحويلها الى 8-byte :
byte M[8] = { 0b00000, 0b00000, 0b00110, 0b01001, 0b11001, 0b00110, 0b00000, 0b00000 }; byte R[8] = { 0b00000, 0b00000, 0b00010, 0b00010, 0b00011, 0b00100, 0b01000, 0b10000 }; byte H[8] = { 0b00000, 0b01100, 0b10010, 0b00001, 0b11111, 0b00000, 0b00000, 0b00000 }; byte BA[8] = { 0b10000, 0b10000, 0b10000, 0b10010, 0b11111, 0b00000, 0b00100, 0b00000 };
يتم استخدام createChar لتشكيل رمز يمكن طباعته على شاشة LCD و تكون ابعادة 8×5 بكسل.
lcd.createChar(0, BA); // char (با) lcd.createChar(1, H); //char ( ح ) lcd.createChar(2, R); //char (ـر) lcd.createChar(3, M); //char (مـ)
وليتم رسمه على شاشة الـ LCD يتم استخدام الامر write
lcd.write(byte(0)); lcd.write(1); lcd.write(2); lcd.write(3);
بعد رفع الكود البرمجي على لوحة الأردوينو سيتم عرض كلمة مرحبا و رمز على شاشة الـ LCD .