|
تحميل كتب مجانية, مراجع للتحميل كتب مجانية, كتب عربية للتحميل, كتب ألكترونية, كتب اجنبية, كتب تعليمية, مراجع عربية,كتب للتحميل, كتب للقراءة. |
| LinkBack | أدوات الموضوع | انواع عرض الموضوع |
#41
| ||
| ||
1- مقدمة (رأس) البرنامج /* 2- تعريفات وإعلانات :PIC16F628 Seven segment display */ # تعريف أطراف الميكروكونترولر بأسماء الشرائح لتسهيل فهم وتتبع البرنامج فعلى سبيل المثال الطرف RB0 متصل بالشريحة a فيعرف : sbit seg_a at RB0_bit; . // Define seven segment connections # الإعلان عن متغير بالاسم count مع إسناد (تخصيص) قيمة ابتدائية له هى الصفر count=0sbit 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; 3- بداية الدالة الرئيسية : void main() { · تهيئة المنافذ والأطراف : جميع أطراف المنفذ PORTB والمنفذ PORTA كمخارج فيما عدا الطرف RA5 فهو مدخل الإعادة MCLRTRISB = 0b00000000; // PORTC All Outputs TRISA = 0b00100000; // PORTA All Outputs, Except RA5 = MCLR do { # تنفيذ تعبير switch (count) أى :أ- تقييم قيمة المتغير count (وهو فى الوضع الابتدائى بصفر) ثم ب- مقارنة نتيجة التقييم بجميع الحالات التى يذكر فى بدايتها كلمة case يليها ثابت وهو هنا من صفر إلى 15 . ت- الحالة التى يتم فيها تطابق التقييم مع المقارنة يتم تحويل مسار البرنامج إليها أى تنفيذ التعليمات التى تتضمنها . وبما أن المتغير count يبدأ بالصفر فإن التطابق يحدث مع case 0 : ومن ثم يتم تنفيذ محتويات هذه الحالة وهى : جعل الشرئح المناظرة للرقم صفر فى الحالة المرتفعة 1 حتى تضىء هذه الشرائح لعرض الرقم صفر . تنتهى محتويات الحالة بكلمة break حيث يتم الخروج عبارة switch (count){ …..} switch (count) { # بعد الخروج من عبارة switch يتم تزايد العداد بواحد فيصبح count = 1 للتجهيز لعرض الرقم 1case 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; } //case end count ++; # بعد الانتهاء من عرض الأرقام من 0 إلى 15 يتم إعادة العرض مرة أوخرى ويتم ذلك عن طريق عبارة الشرط if بمعنى إذا كانت محتويات المتغير تساوى 16 يتم وضع صفر بدلا منها . if(count ==16) count =0; Delay_ms(1000); // Wait for 1 sec before updating the display } while(1); // Infinite Loop }
__________________ angel4angel4angel4angel4angel4 |
#42
| ||
| ||
__________________ angel4angel4angel4angel4angel4 |
#43
| ||
| ||
تفاصيل الاتصال التسلسلى بين الكومبيوتر والميكروكونترولر والمحول MAX232 والتدريب عليها الرابط http://www.eeecb.com/vb/showthread.php?t=440
__________________ angel4angel4angel4angel4angel4 |
#44
| ||
| ||
__________________ angel4angel4angel4angel4angel4 |
#45
| ||
| ||
مشروع عداد السرعة الدورانية (اللفات) RPM بدون تلامس Contactless Tachometer الرابط http://vb.arabseyes.com/t275560.html
__________________ angel4angel4angel4angel4angel4 التعديل الأخير تم بواسطة ظل الكيو كو شن كاي ; 09-23-2011 الساعة 05:42 AM |
مواقع النشر (المفضلة) |
| |