- المكونات المطلوبة:
- شاشة LCD رسومية:
- عرض صورة على شاشة LCD رسومية باستخدام 8051:
- شرح الدائرة:
- شرح البرمجة:
في حياتنا اليومية ، نرى العديد من أنواع الأجهزة لعرض النصوص والصور والرسومات. تعد شاشات LCD من أكثر أجهزة العرض شيوعًا في الإلكترونيات وتستخدم في الغالب في جميع المشروعات التي تعرض نوعًا من المعلومات. هناك أنواع عديدة من شاشات الكريستال السائل المستخدمة في المشاريع الإلكترونية. لقد استخدمنا بالفعل 16X2 LCD في العديد من مشاريعنا واستخدمنا أيضًا شاشة TFT LCD مع Arduino. يمكنك العثور على جميع مشاريعنا ذات الصلة بـ 16X2 LCD باتباع هذا الرابط ، بما في ذلك التفاعل مع 8051 و AVR و Arduino وغيرها الكثير.
في هذا البرنامج التعليمي ، سنقوم بعمل واجهة تعامل LCD مع متحكم 8051. في هذا المشروع ، سوف نعرض كيفية عرض صورة على شاشة LCD الرسومية (GLCD).
المكونات المطلوبة:
- شاشة LCD رسومية
- متحكم AT89c52 8051
- 7805 منظم جهد
- مكثف 1000 فائق التوهج
- 10 فائق التوهج مكثف
- 10 كيلو المقاوم
- 10 كيلو وعاء
- مذبذب كريستال 12 م
- توصيل الأسلاك
- مجلس الخبز
- شرائط بورغ ذكر
- مزود الطاقة
- يؤدى
- 220 أوم المقاوم
- 1 كيلو المقاوم
شاشة LCD رسومية:
تحتوي شاشة LCD البسيطة مقاس 16 × 2 على 16 دبوسًا ولكن شاشة LCD الرسومية بها 20 سنًا. يتم إعطاء وصف الدبوس أدناه وفقًا لورقة البيانات الخاصة به:
رقم الدبوس | اسم الدبوس | وصف | وظيفة |
1 | VSS | أرض | 0 فولت |
2 | VDD | مزود الطاقة | 5 فولت |
3 | V0 | تعديل تباين LCD | |
4 | RS | القيادة / تسجيل اختيار البيانات | RS = 0: تحديد الأمر و RS = 1: تحديد البيانات |
5 | ص / دبليو | قراءة / كتابة تسجيل | R / W = 0: كتابة التحديد و R / W = 1: قراءة التحديد |
6 | ه | تمكين Signal | |
7 | DB0 | دبوس إدخال / إخراج البيانات (DB0-DB7) | 8 بت (DB0-DB7) |
8 | DB1 | ||
9 | DB2 | ||
10 | DB3 | ||
11 | DB4 | ||
12 | DB5 | ||
13 | DB6 | ||
14 | DB7 | ||
15 | CS1 | اختيار رقاقة | CS1 = 1 ، Chip Select Signal لـ IC1 |
16 | CS2 | اختيار رقاقة | CS2 = 1 ، Chip Select Signal لـ IC2 |
17 | RST | إعادة تعيين | إعادة تعيين GLCD |
18 | VEE | الجهد السلبي لبرنامج تشغيل LCD | |
19 | أ | ضوء خلفي LED | 5 فولت |
20 | ك | ضوء خلفي LED | أرض |
عرض صورة على شاشة LCD رسومية باستخدام 8051:
لإظهار صورة على شاشة LCD رسومية ، نحتاج أولاً إلى تحويل تلك الصورة إلى رمز التجميع ، بحيث يتمكن 8051 Microcontroller من فهمها وقراءتها. لذلك نحن بحاجة إلى اتباع الخطوات التالية لتحويل الصورة إلى كود HEX:
الخطوة 1: نحتاج أولاً إلى تنزيل تطبيق يقوم بتحويل الصورة (تنسيق BMP) إلى كود التجميع. لذا قم بتنزيل تطبيق تحويل الصور BMP2ASM من هذا الرابط ، فقط انقر بزر الماوس الأيمن على الرابط ثم انقر فوق حفظ الارتباط باسم…
الخطوة 2: بعد ذلك ، حدد الصورة التي تريد عرضها على شاشة LCD الرسومية وقم بتحويلها إلى BMP ، (إذا لم تكن بتنسيق BMP بالفعل) باستخدام أي تطبيق مثل MS Paint و Photoshop وما إلى ذلك أو يمكنك العثور على العديد من مواقع الويب على الإنترنت لتحويل تنسيق الصورة. لدينا أدناه صورة BMP ، بحجم 128 × 64:
الخطوة 3: الآن قم باستخراج ملف BMP2ASM.zip ، الذي قمنا بتنزيله في الخطوة 1 وافتح Bmp2asm.exe بداخله ، وحدد صورة BMP.
الخطوة 4: الآن اضغط على "تحويل" في نافذة تطبيق BMP2ASM.
الخطوة 5: ثم انسخ الكود الذي تم إنشاؤه والصقه في برنامج 8051 في Keil uVision. قم ببعض التغييرات وقم بتجميع الكود.
الآن الكود الخاص بك جاهز للتحميل في 8051 Microcontroller.
شرح الدائرة:
تعتبر توصيلات الدوائر ، من أجل Interfacing LCD الرسومية إلى متحكم 8051 ، سهلة وتقريباً مثل توصيل 16x2 LCD بـ 8051. لكن LCD 16x2 بها 16 دبوس و GLCD بها 20 دبوس.
يتم استخدام وعاء 10 كيلو لتعيين التباين لـ GLCD. تتصل دبابيس التحكم في GLCD RS و R / W و E مباشرة برقم دبوس 89C52 P1.0 و P1.1 و P1.2. يتم توصيل دبابيس تحديد الشريحة CS1 و CS2 لشاشات الكريستال السائل بالدبوس P1.3 و P1.4 على التوالي. دبابيس البيانات DB0-DB7 متصلة مباشرة في PORT P2. يتم استخدام منظم الجهد 7805 للإمداد العادي بجهد 5 فولت. في الفيديو التوضيحي ، استخدمت مصدر طاقة Arduino.
شرح البرمجة:
بادئ ذي بدء ، نقوم بتضمين ملفات الرأس المطلوبة في البرنامج وتحديد وحدات بت لدبابيس التحكم والبيانات الخاصة بـ GLCD.
#تضمن
بعد ذلك ، أنشأنا وظيفة تأخير.
تأخير باطل (int itime) {int i، j؛ لـ (أنا = 0 ؛ أنا
يتم استخدام وظيفة باطلة lcd_disp_on () لتشغيل الشاشة.
وظيفة setCursorY الفراغ (الباحث ذ) يتم إنشاء لتحديد عمود في GLCD وظيفة setCursorX الفراغ (كثافة العمليات خ) تم إنشاؤه لوضع صفحة على GLCD. ويرد ملف الكود الكامل في قسم الكود أدناه.
بعد تعيين العمود والصفحة ، قمنا بكتابة وظيفة لإرسال الأوامر والبيانات إلى GLCD.
lcdprint باطل (char dat، int size) {unsigned int i؛ لـ (أنا = 0 ؛ أنا
في الوظيفة الرئيسية () الفارغة ، قمنا بمسح GLCD ثم قمنا بتعيين العمود والصفحة. بعد ذلك ، أرسل البيانات إلى شاشة LCD باستخدام وظيفة طباعة LCD الفارغة (بيانات شار ، حجم كثافة العمليات) .
باطل رئيسي () {int x، y؛ P3 = 0xff ؛ بينما (1) {lcdclear () ؛ لـ (y = 0؛ y <8؛ y ++) {for (x = 0؛ x <128؛ x ++) {lcd_disp_on () ؛ setCursorX (ص) ؛ setCursorY (x) ؛ lcdprint (صورة ، x) ؛ }}…………………..
تدفق الكود:
- أولاً عندما نقوم بتشغيل النظام ، يقوم البرنامج بمسح GLCD وتشغيل الشاشة.
- ثم اضبط المؤشر على العمود ، حيث نريد كتابة البيانات.
- ثم اضبط المؤشر على الصفحة ، حيث نريد كتابة البيانات.
- الآن يرسل البرنامج البيانات إلى الموقع المحدد واحدًا تلو الآخر حتى 128 × 8 مرة. لأن GLCD بها 8 صفحات و 128 عمود.