السلام عليكم
كما وعدتكم أقدم لكم كيفية تشغيل شاشة LCD بسعة 16x2 حرف على PIC16F84A على لغة CCS C (لغة C)
آسف على تأخري في طرح الموضوع لكني منشغل في الماجستير
على العموم سأكتفي الآن بإرسال البرنامج مع الملفات المهمة معه مع شرح بسيط، وعند وجود أي سؤال الرجاء طرحه لأجيب عليه لأنني لا أملك الوقت لشرح كل شيء بالتفصيل الممل
على العموم الملف LCD.c الذي يحتوي على التعليمات الأساسية معدل نوعاً ما ليتوافق مع PIC16F84A:
تعمل الشاشة LCD على أساس الملف الرأسي LCD.c الموجود ضمن الملف المرفق.
كل تعليمات الملف LCD.c والطريقة التوصيل موجودة داخل الملف نفسه على شكل تعليقات.
سأشرح بعض هذه التعليمات للأخوة ضعيفي اللغة:
تملك الشاشة LCD 16x2 ستة عشر 16 Pin، الوصل سيتم كما يلي ليعمل البرنامج:
من 16F84A إلى الشاشة:
من B0 إلى Enable في الشاشة أي Pin رقم 6
من B1إلى RS في الشاشة أي Pin رقم 4
من B2 إلى RW في الشاشة أي Pin رقم 5
من B4 إلى D4 في الشاشة أي Pin رقم 11
من B5 إلى D5 في الشاشة أي Pin رقم 12
من B6 إلى D6 في الشاشة أي Pin رقم 13
من B7 إلى D7 في الشاشة أي Pin رقم 14
أما تغذية الشاشة LCD ستكون كما يلي:
Pin رقم 2 و 16 على 5V وهما تغذية الشاشة والإضاءة على الترتيب
Pin رقم 1 و 15 على الخط الأرضي (0V) وهما تأريض الشاشة والإضاءة على الترتيب
اترك Pin ذات الأرقام7 و 8 و 9 و 10 دون وصل
Pin رقم 3 صله إلى مقاومة متغيرة من 10 إلى 20 كيلوأوم ثم إلى التغذية أو إلى التغذية مباشرة، وعمل هذا الخط هو تحديد تباين اللون Contrast من حيث كونه غامق أو فاتح، في حال كان على الأرضي سيكون أغمق ما يمكن.
أما في ملف LCD.c يمكنك استعمال الأوامر التالية بعد تضمينه في برنامجك:
أمر بدأ التشغيل:
;()lcd_init
يجب أن تبدأ بهذا الأمر قبل أي أمر آخر كي تتمكن من استخدام الشاشة.
أمر الكتابة:
("lcd_putc("Custom text
يمكنك عن طريق هذا الأمر الكتابة على الشاشة، لا تنسى أن الكتابة الشاشة يشبه الكتابة على الكمبيوتر، فعندما تكتب على الكمبيوتر يوجد مؤشر يحدد لك مكان الكتابة، وأيضاً في الشاشة يوجد مؤشر يجب أن تكون على علم بموضعه
لتكتب على الشاشة أدخل بدلاً من Custom text ما تريد كتابته
يمكنك أيضاً استخدام هذا الأمر من أجل تصفير الشاشة ومحو كل ما عليها وإعادة المؤشر إلى البداية في السطر الأول، يمكنك استخدام هذا الأمر عن طريق كتابة ما يلي:
(“lcd_putc(”\f
ويمكنك أيضاً إضافة ما تريد من كلمات بعد هذا الأمر مثلاً:
(“lcd_putc(”\fHi I am Samer
ستكتب Hi I am Samer بعد مسح كل ما هو مكتوب على الشاشة
يمكنك أيضاً الانتقال إلى السطر الثاني عن طريق إضافة “n” إلى كلماتك فمثلاً:
(“lcd_putc(”\fHi I am
Samer
ستمسح الشاشة أولاً ثم ستكتب Hi I am في السطر الأول ثم Samer في السطر الثاني.
ويمكنك أيضاً إرجاع المؤشر خطوة إلى الوراء عن طريق إضافة “b” بنفس الطريقة.
ويمكنك أيضاً تحريك المؤشر إلى الموضع الذي تريد عن طريق التابع التالي:
(lcd_gotoxy(x,y
حيث x,y أعداد صحيحة تدل على الإحداثي الذي تريد أن يذهب المؤشر عليه، x رقم العمود وy رقم السطر، والإحداثي 1,1 هو في أقصى اليسار في الأعلى
ويمكنك أيضاً استرجاع معلومة مكتوبة على الشاشة، مثلاً لتعرف ما هو الحرف المكتوب في الموضع 1,2 تستخدم التابع التالي بعد تعريف a على أنه متغير من نوع char أو كلمة
(a=lcd_getc(x,y
يخزن هذا التابع قيمة المكتوب على الشاشة في الإحداثي x,y على المتغير a فمثلاً من أجل الإحداثي 1,2 أي العمود الأول السطر الثاني:
(a=lcd_getc(1,2
يتضمن الملف المرفق ملف hex. الذي يمكنك ارساله مباشرة إلى PIC16F84A
ملاحظة: الملف المرفق هو برنامج مجهز لـPIC16F84A بهزاز كريستالي بتردد 4MHz (أي 4000000Hz)، إذا أردت استخدام كريستالة ذات تردد مختلف غير السطر التالي:
(use delay(clock=4000000
واكتب بدلا من 4000000 التردد الذي تريده.
انتهى الشرح…
للأسف حاولت أن أتضمن في موضوعي برنامج PIC-C كاملاً لكن للأسف لم أجد موقع رفع ملفات مناسب فالرجاء أن يدلني أحد على موقع لا يذلنا على رفع الملف ولا يذل المستخدمبن على تنزيل الملف.
وأخيراً وليس آخراً أتمنى التوفيق للجميع، وأتمنى أن تطرحوا أسئلتكم وأن تكونوا صبورين معي على الإجابة لأني مشغول جداًّ
والسلام، ولا تنسوني من حسن دعائكم