الوصف(Description):-
توجد هذه الوحدات غالبا فى ساعات الراديو وفى أجهزة تسجيل الفديو وفى أفران
الميكروويف وفى الألعاب وفى كثير من الأجهزة . هذه الوحدات تستخدم أساسا فى عرض
الأعداد العشرية ولكنها يمكن أن تعرض أيضا بعض الحروف الأبجدية والحروف الأخرى .هذا
التدريب يتناول الربط بين هذه الوحدات والميكروكونترولر PIC16F88 .سوف نقوم بعمل عداد سداسى
عشر والذى يقوم بالعد من 0 (00h) إلى 15 (0Fh) وعرض القيمة على وحدة العرض ذات شرائح الليد السبعة ..
المعلومات النظرية المطلوبة ( Required Theory)
وحدة العرض ذات شرائح الليدات
السبعة هى تشكيل خاص من سبعة عناصر ليدات بغرض تشكيل شكل مستطيل يستخدم شريحتين
رأسيين فى كل جانب مع شريحة أفقية فى القمة وأخرى فى الوسط وثالثة فى القاع
.بتوصيل ON أو فصل OFF الشرائج كل على
حدة (منفردة) يمكن عرض الأرقان من 0 إلى 9 وبعض
الحروف . فى بعض الأحيات تمتلك وحدة العرض شريحة ثامنة لعرض النقطة ( العلامة )
العشرية . لذلك فإن وحدة العرض ذات شرائح الليدات السبعة تتطلب سبعة مخارج من
الميكروكونترولر لعرض عدد ومخرج إضافى إذا رغبنا فى عرض العلامة العشرية أيضا .
تعلم ( تسمى – ترمز ) الشرائح
بالحروف الصغيرة a, b, c, d, e, f, g , dp حيث dp هى رمز العلامة
العشرية .يمكن تنظيم (ترتيب) الثمانى ليدات الموجودة بداخل وحدة العرض فى هيئة
" بمهبط (كاثود) مشترك" أو " بمصعد (أنود) مشترك".
فى المهبط
المشترك يتم ربط (توصيل) جميع مهابط
ليدات الشرائح مع بعضها ويجب توصيل هذه النقطة المشتركة بالأرضى . عندما نريد
توصيل (إضاءة) ليد شريحة نقوم بتوصيل جهد المنطق المرتفع 1 إلى مصعده
.
فى وحدات العرض ذات المصعد
المشترك يتم ربط (توصيل) جميع المصاعد
مع بعضها وتوصيل النقطة المشتركة إلى الجهد الموجب Vcc . عندما نريد توصيل
(إضاءة) ليد شريحة معينة نقوم بتوصيل جهد المنطق المنخفض 0 إلى مهبطه
.
فى حالة الرغبة فى استخدام أكثر
من وحدة عرض نستخدم تقنية "الانتخاب"multiplexing لتقليل عدد أطراف
الميكروكونترولر المطلوبة . سوف نتناول هذه التقنية فى تدريب لاحق .
الشكل التالى يبين وحدة عرض ذات مهبط مشترك وهى
ذات10أطراف
.
جميع المهابط متصلة ببعضها ونقطة
المهبط المشترك متاحة على الأطراف 3 و 8 . يتم تشغيل المصاعد
من خلال أطراف المداخل / المخارج للميكروكونترولر من خلال مقاومات توالى لتحديد
للتيار . عرض الرقم المطلوب يتطلب توصيل وفصل ليدات الشرائح المناسبة . على سبيل
المثال لعرض الرقم 7 يتم توصيل
ليدات الشرائح a, b, , c فقط .
مخطط الدائرة (Circuit Diagram)
البرنامج (Software)
sbit seg_a at Rb0_bit;
sbit seg_b at Rb1_bit;
sbit seg_c at Rb2_bit;
sbit seg_d at Rb3_bit;
sbit seg_e at Rb4_bit;
sbit seg_f at Rb5_bit;
sbit seg_g at Rb6_bit;
unsigned short count=0;
void main() {
ANSEL = 0b00000000; //All I/O pins are configured as digital
TRISb = 0b00000000; //
PORTC All Outputs
TRISA = 0b00001000; // PORTA All
Outputs, Except RA3
OSCCON = 0b01100000;
do {
switch (count) {
case 0 : seg_a=1;
seg_b=1; seg_c=1;
seg_d=1; seg_e=1; seg_f=1; seg_g=0;
break;
case 1 : seg_a=0;
seg_b=1; seg_c=1; seg_d=0;
seg_e=0; seg_f=0; seg_g=0;
break;
case 2 : seg_a=1;
seg_b=1; seg_c=0; seg_d=1;
seg_e=1; seg_f=0; seg_g=1;
break;
case 3 : seg_a=1;
seg_b=1; seg_c=1; seg_d=1;
seg_e=0; seg_f=0; seg_g=1;
break;
case 4 : seg_a=0;
seg_b=1; seg_c=1; seg_d=0;
seg_e=0;
seg_f=1; seg_g=1;
break;
case 5 : seg_a=1; seg_b=0;
seg_c=1; seg_d=1;
seg_e=0;
seg_f=1; seg_g=1;
break;
case 6 : seg_a=1;
seg_b=0; seg_c=1; seg_d=1;
seg_e=1;
seg_f=1; seg_g=1;
break;
case 7 : seg_a=1;
seg_b=1; seg_c=1; seg_d=0;
seg_e=0;
seg_f=0; seg_g=0;
break;
case 8 : seg_a=1;
seg_b=1; seg_c=1; seg_d=1;
seg_e=1;
seg_f=1; seg_g=1;
break;
case 9 : seg_a=1;
seg_b=1; seg_c=1; seg_d=0;
seg_e=0;
seg_f=1; seg_g=1;
break;
case 10 : seg_a=1;
seg_b=1; seg_c=1; seg_d=0;
seg_e=1;
seg_f=1; seg_g=1;
break;
case 11 : seg_a=0;
seg_b=0; seg_c=1; seg_d=1;
seg_e=1;
seg_f=1; seg_g=1;
break;
case 12 : seg_a=1;
seg_b=0; seg_c=0; seg_d=1;
seg_e=1;
seg_f=1; seg_g=0;
break;
case 13 : seg_a=0;
seg_b=1; seg_c=1; seg_d=1;
seg_e=1;
seg_f=0; seg_g=1;
break;
case 14 : seg_a=1;
seg_b=0; seg_c=0; seg_d=1;
seg_e=1;
seg_f=1; seg_g=1;
break;
case 15 : seg_a=1;
seg_b=0; seg_c=0; seg_d=0;
seg_e=1;
seg_f=1; seg_g=1;
break;
}
count ++;
if(count ==16)
count =0;
Delay_ms(1000); // Wait for 1 sec before updating the display
} while(1); // Infinite
Loop
}
|
شرح البرنامج
يتم تشغيل ليدات الشرائح من خلال
المنفذ Port B لذلك يجب إعدادها كمخارج . يقوم البرنامج بالعد من 0 إلى 15 بفاصل زمنة قدره واحد ثانية ويعاد (يلف)
العد مرة أخرى . قيم العداد تعرض على وحدة العرض فى شكل : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
.
العبارة switch….case
:
عبارة if جيدة للاختيار بين زوج من المتغيرات ولكنها تكون مرهقة وبطيئة جدا
عند تواجد بدائل كثيرة . لهذا الغرض توفر لك لغة السى عبارة switch .
أى أن : عبارة switch مكافئة للعديد من عبارات if-else .
يتم اختبار (مقارنة) المتغير
بقائمة من الثوابت constants من نوع الأعداد الصحيحة أو الحروف . عند
تواجد توافق (تطابق) يتم تنفيذ مجموعة العبارات statements المصاحبة لهذا الثابت حتى نصل إلى عبارة break . إذا لم يوجد هناك تطابق يتم تنفيذ العبارة المصاحبة لعبارة
"الوضع الافتراضى" default . مع ملا حظه ان عبارة default اختيارية .
التعليق على البرنامج
تنفيذ تعبير switch (count) أى :
تقييم قيمة المتغير count (وهو فى الوضع الابتدائى بصفر) ثم مقارنة نتيجة التقييم بجميع
الحالات التى يذكر فى بدايتها كلمة case
يليها ثابت وهو هنا من صفر إلى 15 . الحالة التى يتم فيها تطابق التقييم مع
المقارنة يتم تحويل مسار البرنامج إليها أى تنفيذ التعليمات التى تتضمنها .وبما أن
المتغير count يبدأ بالصفر فإن التطابق يحدث مع case 0 : ومن ثم يتم تنفيذ محتويات هذه الحالة وهى :
جعل الشرئح المناظرة للرقم صفر فى الحالة المرتفعة 1
حتى تضىء هذه الشرائح لعرض الرقم صفر . تنتهى محتويات الحالة بكلمة break حيث يتم الخروج عبارة switch (count){ …..}
مع ملا حظه هنا ان كل حاله caseنقوم بأعطاء اوامر لخرج الميكرو بأن يتشكل
بحيث يضئ الرقم المطلوب فمثلا الرقم صفر يحتاج ليضئ ان نجعل جميع اطراف الميكرو
بواحد ماعدا Rb6 يمثل الحرف g في السفن سجمنت كما في الجدول التالي حيث كل رقم يناظره الحروف
التي يجب اضائتها في السفن سجمنت وبمعرفه هذه البتات يتم البرمجه علي اساسها كل
حاله من حالات ال case
تطوير البرنامج
يلاحظ
ان البرنامج كبير نوعا ما ويمكن اختصار هذا البرنامج بالرنامج التالي
في هذا
البرنامج نعرف مصفوفه متغيرات بأسمsegmentهذه المصفوفه تعتبر كمسك اي غطاء او بمعني
اخر بها اكواد السفن سجمنت من صفر الي حرف f كما بالرنامج والبرنامج الاساسي يتكون من
حلقه من صفر الي 15 يتم فيها عرض بيانات
المصفوفه segment بالتتابع علي حسب تغير المتغير x من الصفراالي 15 وكل حلقه تقوم بأستدعاء
قيمه المتغير x من المصفوفه
ملاحظه
تم عمل الارقام التي بداخل المصفوفه بمساعه بعض الادوات
المتوفره داخل الميكر سي وهي الاداه التي بالصوره حيث تسمح لنا بكتابه الرقم
المراد عرضه ونأخذ كوده علي حسب نوع السفن سجمنت وهنا نحن نستعمل سفن سجمنت من نوع
common cathodكما بالشكل
تجريب التجربه علي Proteus
فيديو التجربه
اللهم صلي على سيدنا محمد وعلى آل سيدنا محمد عدد كل درة الف ألف مرة وسلم وبارك ملئ السموات وملئ الأرض وملئ ما بينهما عدد خلقك ورضا نفسك وزنة ومداد كلماتك يارب وسلم
ردحذف