- 16x2 Dot Matrix LCD Controller IC HD44780:
- عرض حرف مخصص على شاشة LCD مقاس 16 × 2:
- شرح البرمجة والعمل:
- توصيلات الدائرة والاختبار:
في البرنامج التعليمي السابق ، تعلمنا كيفية التعامل مع شاشة LCD مقاس 16 * 2 مع متحكم PIC. نوصيك بتصفحها قبل المضي قدمًا ، إذا كنت مبتدئًا في الميكروكونترولر PIC. سابقًا تعلمنا أيضًا أساسيات الموافقة المسبقة عن علم باستخدام برنامج وميض LED والمؤقتات في PIC Microcontroller. يمكنك هنا التحقق من جميع البرامج التعليمية حول Learning PIC Microcontrollers باستخدام برنامج التحويل البرمجي MPLABX و XC8.
في هذا البرنامج التعليمي ، دعنا نجعلها أكثر تشويقًا من خلال إنشاء شخصياتنا المخصصة وعرضها على شاشة LCD الخاصة بنا باستخدام متحكم PIC16F877A PIC. هناك أيضًا بعض الأحرف المخصصة المستخدمة في الغالب المحددة مسبقًا والمقدمة من HD44780A IC نفسها ، وسنرى أيضًا كيف يمكننا استخدامها. كما هو موضح في البرنامج التعليمي السابق لدينا ، تحتوي شاشة LCD الخاصة بنا على وحدة تحكم Hitachi HD44780 مضمنة فيها والتي تساعدنا على عرض الأحرف. كل حرف نعرضه محدد مسبقًا بالفعل داخل ذاكرة القراءة فقط لـ HD44780 IC. سنتعرف على وحدة تحكم LCD IC HD44780 ، قبل عرض الحرف على شاشة LCD.
16x2 Dot Matrix LCD Controller IC HD44780:
من أجل عرض شخصية مخصصة ، علينا أن نقول بطريقة ما لـ IC كيف سيبدو الحرف المخصص. للقيام بذلك ، يجب أن نعرف عن الأنواع الثلاثة من الذكريات الموجودة داخل وحدة تحكم HD44780 LCD IC:
ROM Generator ROM (CGROM): إنها ذاكرة للقراءة فقط ، كما ذكرنا سابقًا ، تحتوي على جميع أنماط الأحرف المحددة مسبقًا بداخلها. ستختلف ذاكرة القراءة فقط هذه عن كل نوع من أنواع IC للواجهة ، وقد يحتوي بعضها على بعض الأحرف المخصصة المحددة مسبقًا.
عرض بيانات ذاكرة الوصول العشوائي (DDRAM): هذه ذاكرة وصول عشوائي. في كل مرة نعرض فيها حرفًا ما ، سيتم جلب نمطه من CGROM ونقله إلى DDRAM ثم يتم وضعه على الشاشة. لتبسيط الأمر ، سيكون للذاكرة DDRAM أنماط جميع الأحرف التي يتم عرضها حاليًا على شاشة LCD. بهذه الطريقة لكل دورة ، لا يحتاج IC إلى جلب البيانات من CGROM ، ويساعد في الحصول على تردد تحديث قصير
ذاكرة الوصول العشوائي لمولد الأحرف (CGRAM): هذه أيضًا ذاكرة وصول عشوائي ، لذا يمكننا كتابة وقراءة البيانات منها. كما يوحي الاسم ، ستكون هذه الذاكرة هي التي يمكن استخدامها لإنشاء الحرف المخصص. يتعين علينا تشكيل نمط للحرف وكتابته في CGRAM ، ويمكن قراءة هذا النمط وعرضه على الشاشة عند الحاجة.
الآن ، منذ أن حصلنا على فهم أساسي لأنواع الذاكرة الموجودة في واجهة HD44780 IC. دعونا نلقي نظرة على ورقة البيانات الخاصة به لفهم المزيد.
كما تشير ورقة البيانات إلى أن HD44780 IC قد قدمت 8 مواقع لتخزين أنماطنا المخصصة في CGRAM ، أيضًا على اليمين يمكننا أن نرى أن هناك بعض الأحرف المحددة مسبقًا والتي يمكن عرضها أيضًا على شاشة LCD الخاصة بنا. دعونا نرى كيف يمكننا القيام بذلك.
عرض حرف مخصص على شاشة LCD مقاس 16 × 2:
لعرض حرف مخصص ، يجب أولاً إنشاء نمط له ثم حفظه في CGRAM. نظرًا لأن لدينا وظائف المكتبة معنا بالفعل ، يجب أن يكون من السهل القيام بذلك ببعض الأوامر البسيطة. هنا مكتبة وظائف LCD ، ولكن هنا قمنا بنسخ جميع وظائف Library في البرنامج نفسه ، لذلك لا داعي لتضمين ملف الرأس هذا في برنامجنا. تحقق أيضًا من هذه المقالة لمعرفة عمل LCD الأساسي و Pinouts الخاص به.
الخطوة الأولى هي إنشاء نمط أو حرف مخصص. كما نعلم ، كل حرف هو مزيج من 5 * 8 نقاط. علينا تحديد النقطة (بكسل) التي يجب أن ترتفع وأيها يجب أن تظل منخفضة. ما عليك سوى رسم مربع مثل أدناه وتظليل المناطق بناءً على شخصيتك. شخصيتي هنا رجل عصا (آمل أن تبدو واحدة). بمجرد التظليل ، اكتب ببساطة القيمة الثنائية المكافئة لكل بايت كما هو موضح أدناه.
ما عليك سوى وضع "1" على المنطقة المظللة و "0" على المنطقة غير المظللة لكل بايت ، وهذا هو نمطنا المخصص جاهز. وبالمثل ، فقد صنعت 8 رموز نمطية مخصصة لمساحات الذاكرة الثمانية لدينا ، وهي تقدم CGROM. تم سردها في الجدول أدناه.
S.NO: |
شخصية مخصصة |
رمز النمط |
1 |
0b01110 ، 0b01110 ، 0b00100 ، 0b01110 ، 0b10101 ، 0b00100 ، 0b01010 ، 0b01010 |
|
2 |
0b00000 ، 0b00000 ، 0b01010 ، 0b00100 ، 0b00100 ، 0b10001 ، 0b01110 ، 0b00000 |
|
3 |
0b00100 ، 0b01110 ، 0b11111 ، 0b11111 ، 0b01110 ، 0b01110 ، 0b01010 ، 0b01010 |
|
4 |
0b01110 ، 0b10001 ، 0b10001 ، 0b11111 ، 0b11011 ، 0b11011 ، 0b11111 ، 0b00000 |
|
5 |
0b01110 ، 0b10000 ، 0b10000 ، 0b11111 ، 0b11011 ، 0b11011 ، 0b11111 ، 0b00000 |
|
6 |
0b00000 ، 0b10001 ، 0b01010 ، 0b10001 ، 0b00100 ، 0b01110 ، 0b10001 ، 0b00000 |
|
7 |
0b00000 ، 0b00000 ، 0b01010 ، 0b10101 ، 0b10001 ، 0b01110 ، 0b00100 ، 0b00000 |
|
8 |
0b11111 ، 0b11111 ، 0b10101 ، 0b11011 ، 0b11011 ، 0b11111 ، 0b10001 ، 0b11111 |
ملاحظة: ليس من الضروري تحميل جميع المساحات الثمانية المتوفرة في CGRAM.
شرح البرمجة والعمل:
الآن أصبحت أكواد الأنماط جاهزة ، علينا فقط تحميلها على CGRAM من LCD وعرضها باستخدام متحكم PIC. لتحميلهم في CGRAM ، يمكننا تشكيل مجموعة 5 * 8 من العناصر وتحميل كل بايت باستخدام ' for loop '. يتم عرض مصفوفة رمز النمط أدناه:
const unsigned short Custom_Char5x8 = {0b01110،0b01110،0b00100،0b01110،0b10101،0b00100،0b01010،0b01010 ، // كود لمساحة ذاكرة CGRAM 1 0b00000،0b00000،0b01010،0b00100،011000100،0b1 مساحة ذاكرة CGRAM 2 0b00100،0b01110،0b11111،0b11111،0b01110،0b01110،0b01010،0b01010 ، // رمز مساحة ذاكرة CGRAM 3 0b01110،0b10001،0b10001،0b1111،0b11011،0b11،00 space 4 0b01110،0b10000،0b10000،0b11111،0b11011،0b11011،0b11111،0b00000 ، // كود مساحة ذاكرة CGRAM 5 0b00000،0b10001،0b01010،0b10001،0b00100،0b01110،0b001000 0b00000،0b00000،0b01010،0b10101،0b10001،0b01110،0b00100،0b00000 ، // رمز مساحة ذاكرة CGRAM 7 0b11111،0b11111،0b10101،0b11011،0b11011،0b11111،0b10001}
يتم تحميل كل مساحة ذاكرة بنمط الأحرف المحترم لتحميل هذا النمط في HD44780 IC ، يجب إحالة ورقة البيانات الخاصة بـ HD44780 ، ولكنها مجرد أسطر أوامر يمكن استخدامها لتعيين عنوان CGRAM
// *** تحميل حرف مخصص في CGROM *** ////// Lcd_Cmd (0x04) ؛ // تعيين عنوان CGRAM Lcd_Cmd (0x00) ؛ //.. تعيين عنوان CGRAM لـ (i = 0 ؛ i <= 63 ؛ i ++) Lcd_Print_Char (Custom_Char5x8) ؛ Lcd_Cmd (0) ، // العودة إلى الصفحة الرئيسية Lcd_Cmd (2) ؛ //.. return to Home // *** تحميل أحرف مخصصة كاملة *** //////
هنا ، داخل ' for loop' يتم تحميل كل قيمة ثنائية في CGROM. بمجرد تحميل النمط ، يمكن عرض الأحرف المخصصة ببساطة عن طريق استدعاء موقع النموذج باستخدام وظيفة Lcd_Print_Char (بيانات char) الفارغة كما هو موضح أدناه.
Lcd_Print_Char (0) ، // عرض الأحرف المخصصة 0 Lcd_Print_Char (1) ؛ // عرض الحرف المخصص 1 Lcd_Print_Char (2) ؛ // عرض الحرف المخصص 2 Lcd_Print_Char (3) ؛ // عرض الأحرف المخصصة 3 Lcd_Print_Char (4) ؛ // عرض الأحرف المخصصة 4 Lcd_Print_Char (5) ؛ // عرض الأحرف المخصصة 5 Lcd_Print_Char (6) ؛ // عرض الأحرف المخصصة 6 Lcd_Print_Char (7) ؛ // عرض الحرف المخصص 7
طباعة الأحرف الخاصة المحددة مسبقًا:
يحتوي HD44780 IC على بعض الأحرف الخاصة المحددة مسبقًا والمخزنة في DDROM. يمكن طباعة هذه الأحرف مباشرة على الشاشة بالإشارة إلى قيمتها الثنائية في ورقة البيانات.
على سبيل المثال: القيمة الثنائية للحرف "ALPHA" هي 0b11100000. يمكن فهم كيفية الحصول على هذا من الشكل أدناه ، وبالمثل يمكنك الحصول على قيمة لأي شخصية خاصة محددة مسبقًا في IC.
بمجرد معرفة القيمة الثنائية ، يمكن طباعة الحرف المقابل على الشاشة ببساطة باستخدام وظيفة Lcd_Print_Char (بيانات char) الفارغة كما هو موضح أدناه ،
Lcd_Print_Char (0b11100000) ؛ // القيمة الثنائية لـ alpha من ورقة البيانات
و رمز كاملة تعطى لهذا المشروع أدناه في قسم القانون، أيضا التحقق من التفاصيل فيديو شرح في نهاية هذا البرنامج التعليمي.
توصيلات الدائرة والاختبار:
لا يحتوي هذا المشروع على أي متطلبات إضافية للأجهزة ، فقد استخدمنا ببساطة نفس الاتصالات من البرنامج التعليمي السابق لتوصيل شاشات الكريستال السائل واستخدمنا نفس اللوحة التي أنشأناها في البرنامج التعليمي الوامض LED كما هو الحال دائمًا ، لنحاكي البرنامج باستخدام Proteus للتحقق من مخرجاتنا.
بمجرد تشغيل المحاكاة كما هو متوقع ، دعنا ننسخ الكود مباشرة في إعداد الأجهزة لدينا. و خرج البرنامج يجب أن يكون شيء من هذا القبيل:
هذه هي الطريقة التي يمكنك بها عرض أي حرف مخصص على شاشة LCD مقاس 16 × 2 باستخدام متحكم PIC مع مترجم MPLABX و XC8. تحقق أيضًا من سلسلة التعلم الكاملة للمتحكم الدقيق PIC هنا.