كيفية إنشاء وعرض الأحرف المخصصة ؟

معلومات فنية :
تحتوي شاشات LCD المستندة إلى وحدة التحكم Hitachi HD44780 LCD على نوعين من الذاكرة : CGROM و CGRAM (اختصار Character Generator ROM and RAM ) . تنشئ الذاكرة CGROM جميع أنماط الحرف المكون من 5 x 8 dot من أكواد الحرف 8-bit القياسى . يمكن للذاكرة CGRAM إنشاء أنماط الحرف المعرف من قبل المستخدم.
للشاشات 5 x 8 dot ، يمكن للذاكرة CGRAM كتابة ما يصل إلى 8 أحرف مخصصة custom characters وفى النوع 5 x 10 dot تكون 4 أحرف . لمزيد من المعلومات ، انظر الداتا شيت .
الدالة createChar() :
الوصف :
تقوم بإنشاء حرف مخصص (حرف رسومي) لاستخدامه على شاشة LCD. يتم دعم ما يصل إلى ثمانية أحرف من 5 × 8 بكسل (مرقمة من 0 إلى 7). يتم تحديد مظهر كل حرف مخصص بواسطة مصفوفة من ثمانية بايت ، بايت واحد لكل صف. تحدد البتات الخمسة الأدنى أهمية لكل بايت البيكسلات الموجودة في هذا الصف. لعرض حرف مخصص على الشاشة ، استخدم الدالة write() لرقمه .
ملحوظة:
عند الإشارة إلى الحرف المخصص "0" ، إذا لم يكن في متغير ، فأنت بحاجة إلى تحديد نوعة cast على هيئة بايت byte ، وإلا فإن المترجم يعطى خطأ. انظر المثال أدناه.
الصيغة :
كود:
lcd.createChar(num, data)
البارامترات :
lcd : متغير من النوع LiquidCrystal .
num : رقم الحرف المراد إنشاؤه (0-7) .
data : بيانات بكسلات الحرف .
من خلال الدالة createChar() ، من الممكن إنشاء وعرض الأحرف المخصصة على شاشة LCD. يعد هذا مفيدًا بشكل خاص إذا كنت تريد عرض حرف ليس جزءًا من مجموعة أحرف ASCII القياسية.
مثال الأحرف المخصصة مع الاردوينو
المثال التالي لبرنامج يقوم بإنشاء وعرض ثمانية أحرف مخصصة (مرقمة من 0 إلى 7).
كود:
/* Example sketch to create and display custom characters on character LCD with Arduino and LiquidCrystal library. */
#include <LiquidCrystal.h>
// Creates an LCD object. Parameters: (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd = LiquidCrystal(2, 3, 4, 5, 6, 7);
// Make custom characters:
byte Heart[] = {
B00000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
byte Bell[] = {
B00100,
B01110,
B01110,
B01110,
B11111,
B00000,
B00100,
B00000
};
byte Alien[] = {
B11111,
B10101,
B11111,
B11111,
B01110,
B01010,
B11011,
B00000
};
byte Check[] = {
B00000,
B00001,
B00011,
B10110,
B11100,
B01000,
B00000,
B00000
};
byte Speaker[] = {
B00001,
B00011,
B01111,
B01111,
B01111,
B00011,
B00001,
B00000
};
byte Sound[] = {
B00001,
B00011,
B00101,
B01001,
B01001,
B01011,
B11011,
B11000
};
byte Skull[] = {
B00000,
B01110,
B10101,
B11011,
B01110,
B01110,
B00000,
B00000
};
byte Lock[] = {
B01110,
B10001,
B10001,
B11111,
B11011,
B11011,
B11111,
B00000
};
void setup() {
// Specify the LCD's number of columns and rows:
lcd.begin(16, 2);
// Create a new characters:
lcd.createChar(0, Heart);
lcd.createChar(1, Bell);
lcd.createChar(2, Alien);
lcd.createChar(3, Check);
lcd.createChar(4, Speaker);
lcd.createChar(5, Sound);
lcd.createChar(6, Skull);
lcd.createChar(7, Lock);
// Clears the LCD screen:
lcd.clear();
// Print a message to the lcd:
lcd.print("Custom Character");
}
void loop() {
// Print all the custom characters:
lcd.setCursor(0, 1);
lcd.write(byte(0));
lcd.setCursor(2, 1);
lcd.write(byte(1));
lcd.setCursor(4, 1);
lcd.write(byte(2));
lcd.setCursor(6, 1);
lcd.write(byte(3));
lcd.setCursor(8, 1);
lcd.write(byte(4));
lcd.setCursor(10, 1);
lcd.write(byte(5));
lcd.setCursor(12, 1);
lcd.write(byte(6));
lcd.setCursor(14, 1);
lcd.write(byte(7));
}
يجب أن تشاهد الإخراج التالي على شاشة LCD:

كيف يعمل الكود :
• بعد تضمين المكتبة وإنشاء الكائن LCD ، يتم تعريف مصفوفات الأحرف المخصصة. تتكون كل مصفوفة من 8 بايتات ، بايت واحد لكل صف. في هذا المثال ، يتم إنشاء 8 أحرف مخصصة.
كود:
// Make custom characters:
byte Heart[] = {
B00000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
عند النظر عن كثب في المصفوفة ، سترى ما يلي. يتكون كل صف من 5 أرقام تقابل 5 بكسل في حرف 5 × 8 نقطة. يعني 0 إيقاف off البكسل و 1 يعني تشغيل on البكسل .
من الممكن تعديل (تحرير) كل صف يدويًا ، لكنني أوصي باستخدام هذه الأداة المرئية على الموقع https://maxpromer.github.io/LCD-Character-Creator/ . يقوم هذا التطبيق تلقائيًا بإنشاء مصفوفة الحرف ويمكنك النقر فوق البكسل لتشغيله أو إيقاف تشغيله.
• في الدالة setup() ، يتم إنشاء الأحرف المخصصة باستخدام الدالة lcd.createChar(num, data) .
الوسيط الأول في هذه الدالة هو رقم الحرف المخصص (0-7) والوسيط الثانى هي مصفوفة الحرف التي أنشأناها.
كود:
// Create a new characters:
lcd.createChar(0, Heart);
lcd.createChar(1, Bell);
lcd.createChar(2, Alien);
lcd.createChar(3, Check);
lcd.createChar(4, Speaker);
lcd.createChar(5, Sound);
lcd.createChar(6, Skull);
lcd.createChar(7, Lock);
• في الدالة loop() يتم عرض جميع الأحرف باستخدام الدالة lcd.write() . كبارامتر ، نستخدم رقم الحرف الذي نحتفظ به.
كود:
lcd.setCursor(0, 1);
lcd.write(byte(0));
|