وحدات العرض هي أهم أجهزة الإخراج في المشاريع المدمجة ومنتجات الإلكترونيات. 16x2 LCD هي واحدة من أكثر وحدات العرض استخدامًا. تعني شاشة LCD مقاس 16 × 2 أن هناك صفين يمكن عرض 16 حرفًا فيهما لكل سطر ، ويأخذ كل حرف مساحة مصفوفة 5 × 7 على شاشة LCD. في هذا البرنامج التعليمي ، سنقوم بتوصيل وحدة 16X2 LCD بالمتحكم 8051 (AT89S52). قد تبدو واجهة LCD مع متحكم 8051 معقدة للغاية بالنسبة للمبتدئين ، ولكن بعد فهم المفهوم سيبدو الأمر بسيطًا وسهلاً للغاية. على الرغم من أن الوقت قد يستغرق وقتًا طويلاً لأنك تحتاج إلى فهم وتوصيل 16 دبوسًا من LCD بالمتحكم الدقيق. لذلك دعونا أولاً نفهم الدبابيس الستة عشر لوحدة LCD.
يمكننا تقسيمها إلى خمس فئات ، دبابيس الطاقة ، دبوس التباين ، دبابيس التحكم ، دبابيس البيانات ودبابيس الإضاءة الخلفية.
الفئة |
رقم الدبوس |
اسم الدبوس |
وظيفة |
دبابيس الطاقة |
1 |
VSS |
الدبوس الأرضي ، متصل بالأرض |
2 |
VDD أو Vcc |
الجهد دبوس + 5V |
|
دبوس التباين |
3 |
V0 أو VEE |
إعداد التباين ، متصل بـ Vcc بمقاوم متغير. |
دبابيس التحكم |
4 |
RS |
تسجيل حدد دبوس ، RS = 0 وضع الأمر ، RS = 1 وضع البيانات |
5 |
RW |
قراءة / كتابة دبوس ، RW = 0 وضع الكتابة ، RW = 1 وضع القراءة |
|
6 |
ه |
تمكين ، تحتاج نبضة عالية إلى منخفضة لتمكين شاشة LCD |
|
دبابيس البيانات |
7-14 |
D0-D7 |
دبابيس البيانات ، تخزن البيانات المراد عرضها على شاشة LCD أو تعليمات الأوامر |
دبابيس الإضاءة الخلفية |
15 |
LED + أو A. |
لتشغيل الإضاءة الخلفية + 5 فولت |
16 |
LED- أو K. |
الخلفية الأرضية |
يمكن فهم جميع المسامير بوضوح من خلال أسمائها ووظائفها ، باستثناء دبابيس التحكم ، لذلك يتم شرحها أدناه:
RS: RS هو دبوس تحديد التسجيل. نحتاج إلى ضبطه على 1 ، إذا كنا نرسل بعض البيانات ليتم عرضها على شاشة LCD. وسنقوم بتعيينه على 0 إذا كنا نرسل بعض تعليمات الأوامر مثل مسح الشاشة (الكود السداسي 01).
RW: هذا دبوس قراءة / كتابة ، سنقوم بتعيينه على 0 ، إذا كنا سنكتب بعض البيانات على شاشة LCD. وقم بتعيينه على 1 ، إذا كنا نقرأ من وحدة LCD. بشكل عام ، يتم تعيين هذا على 0 ، لأننا لا نحتاج إلى قراءة البيانات من شاشة LCD. يلزم قراءة تعليمات واحدة فقط "الحصول على حالة LCD" في بعض الأحيان.
E: يستخدم هذا الدبوس لتمكين الوحدة عند إعطاء نبضة عالية إلى منخفضة لها. يجب إعطاء نبضة مقدارها 450 نانوثانية. يؤدي هذا الانتقال من HIGH إلى LOW إلى تمكين الوحدة.
توجد بعض تعليمات الأوامر المحددة مسبقًا في شاشة LCD ، وقد استخدمناها في برنامجنا أدناه لإعداد شاشة LCD (في وظيفة lcd_init ()). فيما يلي بعض تعليمات الأوامر المهمة:
كود الهيكس |
أمر إلى سجل تعليمات LCD |
0F |
LCD قيد التشغيل ، المؤشر قيد التشغيل |
01 |
شاشة عرض واضحة |
02 |
العودة إلى المنزل |
04 |
مؤشر الإنقاص (إزاحة المؤشر إلى اليسار) |
06 |
زيادة المؤشر (إزاحة المؤشر إلى اليمين) |
05 |
عرض التحول لليمين |
07 |
عرض التحول إلى اليسار |
0E |
عرض ON ، المؤشر يومض |
80 |
فرض المؤشر على بداية السطر الأول |
C0 |
فرض المؤشر على بداية السطر الثاني |
38 |
سطرين ومصفوفة 5 × 7 |
83 |
موضع سطر المؤشر 1 3 |
3 ج |
تفعيل الخط الثاني |
08 |
Display OFF ، المؤشر مغلق |
C1 |
انتقل إلى السطر الثاني ، الموضع 1 |
OC |
العرض ON ، المؤشر مغلق |
C1 |
انتقل إلى السطر الثاني ، الموضع 1 |
C2 |
انتقل إلى السطر الثاني ، الموضع 2 |
مخطط الدائرة وشرحها
يظهر الرسم التخطيطي لدائرة توصيل LCD مع متحكم 8051 في الشكل أعلاه. إذا كان لديك فهم أساسي لـ 8051 ، فيجب أن تعرف عن EA (PIN 31) و XTAL1 & XTAL2 و RST pin (PIN 9) و Vcc و Ground Pin لـ 8051 متحكم دقيق. لقد استخدمت هذه الدبابيس في الدائرة أعلاه. إذا لم يكن لديك أي فكرة عن ذلك ، فأوصيك بقراءة هذا المقال LED Interfacing مع 8051 Microcontroller قبل المرور عبر واجهة LCD.
لذلك بجانب هذه المسامير أعلاه ، قمنا بتوصيل دبابيس البيانات (D0-D7) من شاشة LCD بوحدة التحكم الدقيقة المنفذ 2 (P2_0 - P2_7). ودبابيس التحكم RS و RW و E إلى دبوس 12،13،14 (دبوس 2،3،4 من المنفذ 3) من متحكم دقيق على التوالي.
يتم توصيل PIN 2 (VDD) و PIN 15 (مصدر الإضاءة الخلفية) لشاشات الكريستال السائل بالجهد (5 فولت) ، ويتم توصيل PIN 1 (VSS) و PIN 16 (أرضي الإضاءة الخلفية) بالأرض.
يتم توصيل السن 3 (V0) بالجهد (Vcc) من خلال المقاوم المتغير 10 كيلو لضبط تباين شاشة LCD. يتم توصيل الجزء الأوسط من المقاوم المتغير بـ PIN 3 ويتم توصيل ساقين أخريين بمصدر الجهد والأرض.
شرح الكود
لقد حاولت شرح الكود من خلال التعليقات (في الكود نفسه).
كما أوضحت سابقًا حول وضع الأوامر ووضع البيانات ، يمكنك أن ترى أنه أثناء إرسال الأمر (الوظيفة lcd_cmd) قمنا بتعيين RS = 0 ، RW = 0 ، ونبضة عالية إلى منخفضة يتم إعطاؤها لـ E بجعلها 1 ، ثم 0. أيضًا عند إرسال البيانات (وظيفة lcd_data) إلى شاشة LCD ، قمنا بتعيين RS = 1 ، RW = 0 ويتم إعطاء نبضة من HIGH إلى LOW إلى E بجعلها من 1 إلى 0. تم إنشاء وظيفة msdelay () لإنشاء تأخير بالمللي ثانية ويتم استدعاؤه بشكل متكرر في البرنامج ، ويسمى ذلك بحيث يمكن أن يكون لوحدة LCD الوقت الكافي لتنفيذ العمليات والأوامر الداخلية.
تم إنشاء حلقة while لطباعة السلسلة ، والتي تستدعي وظيفة lcd_data في كل مرة لطباعة حرف حتى الحرف الأخير (null terminator- '\ 0').
لقد استخدمنا وظيفة lcd_init () لتجهيز شاشة LCD باستخدام تعليمات الأمر المحددة مسبقًا (الموضحة أعلاه).