الشاشة الكريستالية 1602 Liquid crystal
هذا النوع من الشاشات الكريستالية هو الأشهر و الأكثر انتشارا بين هواة
الالكترونيات و في المشاريع الإلكترونية , نظراً لتوفرها بسعر زهيد و سهولة
برمجتها .
و قبل البدء بالحديث عن الشاشات الكريستالية , نقاط مهمة
تساعدك على أختيار الشاشة المناسبة لمشروعك ألا و هي :
تساعدك على أختيار الشاشة المناسبة لمشروعك ألا و هي :
1) أبعاد الشاشة
2) نوع المتحكم المدمج معها .
3) التطبيق الذي تحتاجه من الشاشة " وجود الألوان , إظهار الصور و المؤثرات الحركية , الكتابة بخطوط مختلفة , ألخ من التطبيقات "
ما سنتحدث عنها اليوم هي الشاشة الكريستالية LCD1602 التي تحتوي على سطرين و 16 عموداً , و التي تعتمد في تشغيلها على المتحكم Hitachi HD44780 driver و التي يمكن تملك ناقل خط Data bus 8 bit .
سنلقي نظرة بداية على هذا النوع و عن كيفية توصيله و برمجته و عرض النصوص و
البيانات و الأرقام على هذه الشاشه .
لحسن الحظ هناك مكتبة مثبتة في لغة أردوينو تدعم هذه الشاشات , إضافة لكم
هائل من المكتبات الخاصة التي قام المهتمون بالبرمجة بإضافتها على موقع أردوينو
الرسمي لتناسب الأنواع المختلفة من الشاشات .
البنية العامة للشاشة الكريستالية :
للشاشات الكريستالية نظام اتصال على التوازي و يبين الرسم التالي التوزيع
للمرابط الخاصة بهذه الشاشة :
سنتحدث بشكل مبسط و مختصر عن كل مربط و وظيفته ...
RS
اختيار المسجل : هذا المربط يحدد لنا في
أي ذاكرة نحن نكتب البيانات ! يتم
الأختيار ما بين مسجل البيانات , أو مسجل التعليمات
R/W خيار القراءة أو الكتابة , هذا المربط يحدد إما أختيار وضعية القراءة أو
الكتابة .
enable pin يسمح هذا المربط في حال تفعيله
بالكتابة للمسجلات الخاصة بالشاشة الكريستالية .
data pin (D0-D7) : هي المرابط التي نمرر البيانات
عبرها للمسجلات .
هناك ايضاً مرابط للتغذية و التأريض و للأضاءة الخلفية الداخلية .
هذه لمحة عامة عن المرابط الخاصة بهذه الشاشة , سنتكلم عن توصيل هذه الشاشة
مع بطاقة الأردوينو .
سنوصل المرابط كالتالي :
LCD RS
……..D12
LCD Enable
…….D11
LCD D4 ……D5
LCD D5……D4
LCD D6……D3
LCD D7……D2
و التوصيل كما في الصورة ....
و أيضا سنوصل الرجل رقم 15 مع مصدر التغذية الموجب و الرجل رقم 16 مع
السالب في حال أردنا تشغيل الإضاءة الداخلية .
المكتبة الاساسية الخاصة بالشاشات الكريستالية :
يجب عليك الإلمام بهذه المكتبة لأنها تمكنك من التعامل مع اغلب الشاشات
الكريستالية .
أوامرها سهلة و بسيطة و يمكنك الإطلاع عليها هنا .
سنقوم بداية بكتابة عدة برامج للإلمام بأكبر قدر من الأوامر و التطبيقات .
عند كتابة البرنامج , نقوم بتعريف المداخل المربوطة مع الشاشة باستخدام الأمر LiquidCrystal
و يكتب على الصورة التالية :
و تكتب المرابط المربوطة بالشاشة بأكثر من صيغة , و أكثر الصيغ استعمالاً هي :
و يجب أن لا ننسى أن نقوم بتهيئة الشاشة للبدء باستخدامها بواسطة الأمر
حيث نقوم بكتابة ابعاد الشاشة المستخدمة عن طريق هذا الأمر .
في حالتنا هذه تكتب الشاشة بالصيغة :
هذان الأمران هما أهم أمرين يجب كتابتهما في جملة التثبيت void setup
البرنامج الأول : برنامج لطباعة جملة Hello world! الشهيرة .
البرنامج الأول سيبين لنا كيفية إظهار الكلمات على الشاشة .
حسناً لنأخذ هذا المثال , ستحتاج فقط لمقاومة متغيرة مربوطة مع المدخل A0 من الأردوينو للتحكم بسرعة تحرك النص .// this simple program taken from : //This example code is in the public domain. //http://www.arduino.cc/en/Tutorial/LiquidCrystal //modified by Mohannad Rawashdeh // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); } void loop(){}
#include <LiquidCrystal.h> int t=300; // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int y =1; void setup() { lcd.begin(16, 2); lcd.cursor(); lcd.autoscroll(); }char Phone[]={"0786739233"};char Name[]={"Mohannad Rawashdeh "}; char Email[]={"Genotronex@Gmail.com "};
void timing_delay(){ int A=analogRead(A0); delay(5); t=map(A,0,1023,30,1000); t= constrain(A, 30, 1000); } void loop(){ timing_delay(); lcd.setCursor(15, 0); for (int i=0;i<20;i++){ lcd.print(Name[i]); timing_delay(); delay(t); } lcd.clear(); lcd.setCursor(15, 0); for (int i=0;i<21;i++){ lcd.print(Email[i]); timing_delay(); delay(t); } lcd.clear(); lcd.setCursor(15, 0); for (int i=0;i<11;i++){ lcd.print(Phone[i]); timing_delay(); delay(t); } delay(2000); lcd.clear(); }
و في الختام , هذا الفيديو للبرنامج الأخير الذي كتبناه , تحياتي
يوجد خطأ في تعريف الامر : lcd.prine(phone[i])
ردحذفشكراً عمر , فعلاً هناك خطأ و قد تم تعديله شكراً لمشاركتك
ردحذفهل من الضروري استخدام مقاومة متغيره
ردحذفنعم
حذفمعني constrain ايه
ردحذف