العرض هو الجزء الضروري من أي جهاز سواء كان أي جهاز منزلي أو آلات صناعية. لا تعرض الشاشة خيارات التحكم لتشغيل الجهاز فحسب ، بل تعرض أيضًا حالة وإخراج المهمة التي يقوم بها هذا الجهاز. هناك العديد من أنواع الشاشات المستخدمة في الإلكترونيات مثل شاشة العرض ذات 7 شرائح ، وشاشة عرض 16x2 LCD ، وشاشة TFT تعمل باللمس ، وشاشة OLED ، إلخ.
شاشة LCD مقاس 16 × 2 هي أبسط وحدة عرض وتستخدم أيضًا في بعض المعدات الإلكترونية الصغيرة مثل الآلة الحاسبة والعداد الرقمي وما إلى ذلك. لقد قمنا بالعديد من المشاريع باستخدام شاشة LCD مقاس 16 × 2 بما في ذلك الواجهة الأساسية مع وحدات التحكم الدقيقة الأخرى:
- واجهة LCD مع متحكم 8051
- واجهة LCD مع متحكم ATmega32
- واجهة LCD مع متحكم PIC
- واجهات 16x2 LCD مع Arduino
- شاشة LCD مقاس 16 × 2 مع Raspberry Pi باستخدام Python
في هذا البرنامج التعليمي ، سنرى كيفية واجهة شاشة LCD مقاس 16 × 2 مع متحكم Atmega16 AVR وعرض رسالة ترحيب بسيطة.
المكونات مطلوبة
- اتميغا 16
- وحدة LCD 16x2
- صداري
- اللوح
مخطط الرسم البياني
برمجة Atmega16 لشاشة LCD مقاس 16 × 2
لا تتطلب البرمجة أي مكتبات خارجية. هنا تمت برمجة Atmega16 باستخدام USBASP و Atmel Studio7.0. يتم تقديم البرنامج الكامل وفيديو العمل في نهاية المشروع ، فقط قم بتحميل البرنامج في Atmega16 وقم بتدوير 10k POT لضبط سطوع شاشة LCD.حدد في البداية تردد وحدة المعالجة المركزية وقم بتضمين المكتبات الضرورية التي تأتي مع حزمة Atmel Studio مثل الوصول إلى دبابيس IO
حدد دبوس RS و EN لشاشات الكريستال السائل في البرنامج. يتم استخدام RS Pins لتحديد البيانات وسجل الأوامر. يقوم دبوس التمكين بتثبيت البيانات.
#define en PA3 #define rs PA2
حدد أيضًا أي PORT من Atmega16 سيتم استخدامه لواجهة LCD. هنا ، يتم استخدام PORTA.
#define lcdDirection DDRA #define lcdPort PORTA
الخطوة التالية هي إنشاء وظيفة تقبل أمرًا بتمرير معلمة. هناك العديد من أوامر LCD HEX. تُستخدم أوامر Hex لتحديد وظيفة شاشة LCD. نظرًا لأننا نستخدم وضع 4 بت لشاشة LCD ، فسيتم إرسال البايت (8 بت) في حزمتين. ستكون الحزم الأولى هي Upper Nibble (4 بت) والحزمة الأخرى ستكون أقل Nibble (4 بت).
lcdCommand باطل (أوامر char غير الموقعة) { lcdPort = (lcdPort & 0x0F) - (الأوامر & 0xF0) ؛ lcdPort & = ~ (1 <
ستكون الخطوة التالية هي قبول الأحرف وإغلاقها في منفذ شاشة LCD. ثم يتم إرسال الأحرف المتلقاة إلى شاشة LCD عن طريق nibble. تأخذ الوظيفة الحرف باستخدام تمرير بواسطة المعلمة ثم تأخذ الحلمة العلوية والسفلية. يتم تعيين الدبوس 'rs' على مستوى مرتفع لتسجيل البيانات ثم يتم إرسال نبضة متصاعدة لتأمين البيانات. وبالمثل ، يتم إرسال الحلمة السفلية عن طريق تغيير قيمة التمكين وإرسال النبض الصاعد للتمكين.
lcdChar باطل (سلسلة أحرف غير موقعة) { lcdPort = (lcdPort & 0x0F) - (string & 0xF0) ؛ lcdPort - = (1 <
تقوم هذه الوظيفة فقط بتحويل الحرف إلى سلسلة ويمكن استخدامها في البرنامج لاحقًا حيث يلزم كتابة سلسلة.
void lcdString (char * str) { int j؛ لـ (j = 0؛ str! = 0؛ j ++) { lcdChar (str)؛ } }
الآن يتم كتابة وظيفة فقط لمسح الشاشة. تحتاج فقط إلى إرسال الأمر 01 في HEX ثم قم فقط بتعيين المؤشر على الموضع الأولي.
void lcdClear () { lcdCommand (0x01) ؛ _delay_ms (2) ؛ lcdCommand (0x80) ؛ }
الآن في الوظيفة الرئيسية ، يتم تهيئة شاشة LCD. اضبط اتجاه المنفذ في البداية لشاشة LCD على الواجهة. هنا ، يتم تعيين المنفذ على أنه OUTPUT لذا قم بتعيين FF.
lcdDirection = 0xFF ؛ _delay_ms (20)
ثم اضبط شاشة LCD في وضع 4 بت بإرسال 02 في شكل سداسي. أرسل أيضًا 28 في سداسي عشري لتعيينه في السطر 2 ، بكسل المصفوفة 15 × 7 في وضع 4 بت.
lcdCommand (0x02) ؛ lcdCommand (0x28) ؛
يتم استخدام الأمر 0c و 06 للتحكم في موضع المؤشر. وأخيرًا ، امسح الشاشة بإرسال 01 باللون السداسي. سيؤدي ذلك إلى إنهاء تهيئة شاشة LCD.
lcdCommand (0x0c) ؛ lcdCommand (0x06) ؛ lcdCommand (0x01) ؛
بعد الانتهاء من التهيئة ، ما عليك سوى اختبار شاشة LCD عن طريق إرسال سلسلة. هنا فإننا نوجه سلسلة " LCD التواصل " في 1 شارع التوالي.
lcdString ("واجهة LCD") ؛
ثم حرك المؤشر إلى الصف التالي عن طريق إرسال الأمر c0 في سداسي عشري. وأخيرًا في هذا الموضع ، اكتب السلسلة "مع Atmega1 6".
lcdCommand (0xC0) ؛ lcdString ("مع Atmega16") ؛
ينهي هذا البرنامج التعليمي الكامل حول Interfacing شاشة LCD مقاس 16 × 2 مع Atmega16. لاحظ أنه إذا لم تحصل على أي صورة أو وحدات بكسل ، فقم إما بفحص الأسلاك وفقًا للرمز ومخطط الدائرة أو قم بتغيير قيمة POT المرفقة بدبوس V0 من LCD. إذا كان لديك أي شك أو اقتراح ، فيمكنك الوصول إلينا إما عن طريق الكتابة إلى منتدانا أو التعليق أدناه.