Al-Nassim الكتابة باللغة العربية على شاشة الـ Lcd بإستخدام الاردوينو

Ahmad Altonji

Administrator
طاقم الإدارة
الكتابة باللغة العربية على شاشة الـ LCD بإستخدام الاردوينو

هل حاولت من قبل عرض الحروف العربية أو الرموز الخاصة بك على شاشة LCD كما نفعل في اللغة الإنجليزية , وهل حاولت أيضا فهم كيف يتم عرض الاحرف عليها او رسم بعض الأشكال الخاصة بك؟!

في هذا المشروع سنقوم بكتابة كلمة باللغة العربية عن طريق الرسم على شاشة LCD.

ولكي نقوم بطباعة الحروف العربية او الرموز الخاصة بنا على شاشة العرض LCD يجب ان نتعرف على ذاكرة ال CG-RAM لشاشة LCD .

ذاكرة CG-RAM

CG-RAM هي العنصر الأساسي لعملية انشاء الرسومات و الاحرف الخاصة بك على شاشة العرض LCD، بحيث تقوم بتخزين الرسومات التي نقوم بإنشائها في الكود.

– حجم هذه الذاكرة هو 64 بايت, بحيث يمكنها تخزين 8 احرف في وقت واحد، وكل حرف يتكون من 8 بايت

– يبدأ عنوان الذاكرة CG-RAM من (0x40 Hex (64 decimal.

في الجدول التالي يتم توضيح عناوين الاحرف و الرسومات التي سيتم إنشاءها وأوامر الطباعة الخاصة بهم:

do.php


في الجدول اعلاه ستلاحظ العنوان الذي سيبدأ به كل رمز خاص بك مع امر الطباعة الخاص به. مثلا اول حرف يتم انشاؤه وتخزينه على الموقع من 0x40 الى 0x47 في الذاكرة، ثم يتم طباعته على شاشة الـ LCD بواسطة ارسال الامر 0 الى شاشة الـ LCD. والحرف الثاني يبدأ تخزينه من الموقع 0x48 الى 0x4F ويتم طباعته من خلال ارسال الامر 1 الى الشاشة.

كيف يتم إنشاء أحرف مخصصة في CG-RAM

يتم تشكيل كل حرف او رمز على الشاشة في مصفوفة تكون ابعادها 8×5، حيث ان 5 تمثل عدد الاعمدة و 8 تمثل عدد الصفوف.

do.php


اولا: قم برسم مصفوفة 8*5 بكسل، ثم قم برسم الرمز او الحرف الخاص بك في داخل المصفوفة، ثم قم بوضع على كل خلية ملونة قيمة 1 , و قيمة صفر على الخلايا الأخرى.

فمثلا اذا اردنا ان ننشئ حرف ا في هذه المصفوفة يتم انشاؤه بالطريقة التالية:

do.php


يتم استبدل كل لون احمر بالرقم ١ و المربع الغير ملون (بحسب الصورة اعلاه - اخضر )نستبدله ب 0.

وبهذه الطريقة، عندما نريد كتابة أي حرف او شكل يجب ان يكون بداخل المصفوفة التي حجمها 8×5، بحيث يتم مكان كتابة النقطة المراد اضاءتها ١ و النقاط الاخرى 0.

بعد ذلك نقوم بتحويلها الى مصفوفة مكونة من 8-Bytes كالتالي:

do.php


و تكون كتابة كل صف من المصفوفة ضمن الكود بهذا الشكل

0b00000

مع مراعاة ترتيب الرقمين 0 للمطفئ و 1 للمضاء

مثال لكتابتها ضمن الكود وليكن لحرف الالف

PHP:
byte A[8] = {

0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00000,
};

توصيل شاشة الـ LCD :

do.php


الكود البرمجي للأردوينو

قم برفع البرنامج التالي على الاردوينو:


و يوجد نسخة أخرى اسفل الموضوع و بالمرفقات

PHP:
#include <LiquidCrystal.h>
//www.altonji.net
//منتدى العلوم و الهندسة
//syria
//+963935888592
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


byte A[8] = {
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
};
byte L[8] = {
0b00001,
0b00001,
0b00001,
0b00001,
0b11111,
0b00000,
0b00000,
0b00000,
};
byte T[8] = {
0b01110,
0b00000,
0b00100,
0b00100,
0b11111,
0b00000,
0b00000,
0b00000,
};byte O[8] = {
0b00000,
0b00000,
0b01110,
0b01010,
0b01111,
0b00010,
0b01110,
0b00000,
};
byte N[8] = {
0b00000,
0b00100,
0b00001,
0b00001,
0b11111,
0b00000,
0b00000,
0b00000,
};
byte J[8] = {
0b00000,
0b00000,
0b01100,
0b00010,
0b11111,
0b00000,
0b00100,
0b00000,
};
byte I[8] = {
0b00000,
0b00000,
0b00000,
0b10011,
0b11110,
0b00000,
0b01100,
0b00000,
};



void Word1()
{
lcd.setCursor(4,0);
lcd.write(7);
lcd.write(byte(0));
lcd.write(1);
lcd.write(2);
lcd.write(3);
lcd.write(4);
lcd.write(5);
lcd.write(6);
lcd.write(7);
lcd.setCursor(2,1);
lcd.print("AHMAD-ALTONJI");
lcd.write(7);


}
void Logo1()
{
lcd.setCursor(7,0);
}

void setup() {
lcd.createChar(0, I); // char (ـي)
lcd.createChar(1, J); //char ( ـجـ )
lcd.createChar(2, N); //char (نـ)
lcd.createChar(3, O); //char (ـو)
lcd.createChar(4, T); //char (ـتـ)
lcd.createChar(5, L); //char (لـ)
lcd.createChar(6, A); //char (ا)
lcd.begin(16, 2);
}

void loop() {
Word1();
}

توضيح رسم الاحرف بالمصفوفات

do.php


مع مراعات ترتيب ارقام كل مصفوفة

do.php


النتيجة بعد رفع الكود على الاردوينو

do.php



لتحميل الملفات التالية
- محاكاة DNS
- كود ino
- كود hex
يرجى الضغط هنا


أرجو أن أكون وفقت بالشرح و التوضيح
تحياتي لكم
 

المرفقات

  • ino-DNS-hex.rar
    16.7 KB · المشاهدات: 3
التعديل الأخير:

Eng Mohamad

مدير عام
طاقم الإدارة
دائما متميز بمواضعيك استاذ احمد
بوركت وسلمت يداك
اطروحة اكثر من رائعة علها تفيد الاخوة الكرام وخاصة من يجبذ استخدام لغتنا الجميلة - اللغة العربية -
 

Ahmad Altonji

Administrator
طاقم الإدارة
دائما متميز بمواضعيك استاذ احمد
بوركت وسلمت يداك
اطروحة اكثر من رائعة علها تفيد الاخوة الكرام وخاصة من يجبذ استخدام لغتنا الجميلة - اللغة العربية -
تشكر استاذي الكريم

و اعتبر ردك بمثابة وسام على صدري
 
أعلى