قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 03-01-2020, 06:33 PM المشاركة 89   
افتراضي



تعرفنا انة توجد شروط ضرورية وشروط غير ضرورية
الشروط الضرورية هي .. الذي المدرسي .... الحضور باكراا للمدرسة

وهنا سوف نستخدم المنطق AND وكما يسمي باعربي ( و ) ونكت الأن كود للتحقق من حالة الشرطين
سيكون الكود هكذا if ( PORTD.f0 ==1 && PORTD.f1 ==1 ) { PORTB.F0=1; } OK

نشرح الكود بالتفصيل

حين نكت جملة if نخبر الميكرو أنه أمر شرط أو كما نسميها حلقة شرطيه ثم تأتي الأقواس وبداخله هذة التعليمات ( PORTD.f0 ==1 && PORTD.f1 ==1 ) ببساطة التعليمات الموجودة داخل هذة الأقواس هم الشرطان ./ الشرط الأول PORTD.f0 ==1 يقول هل البن رقم واحد في البورت D هل تساوي واحد .! اي مطبق عليها 5 فولت ..
والشرط الثاني PORTD.f1 ==1 يقول هل البن رقم اثنان في البورت D هل تساوي واحد .! اي مطبق عليها 5 فولت ..
وتوجد علامة المنطق && بين الشرطين هذا المنطق && يقول ( و ) بحيث تفسير الكود كامل في هذة الصورة



نحلل الشرح الموجود علي الصورة نبدأ من أول الشرطين if( PORTD.f0 ==1 && PORTD.f1 ==1 ) OK دوما الميكرو ينظر ويختبر الأوامر الموجودة داخل هذة الأقواس ولا يذهب ولا ينظر ولا ينفذ الأوامر الموجودة داخل هذة الأقواس { ;(PORTB.f0 = ~ PORTB.f0; delay_ms(250 } الا عند تحقق الشرطان الموجودان داخل الأقواس بعد جملة if وهنا لازم انت يتحقق الشرطان ولو تحقق شرط واحد فقط من الإثنان لا ينفذ الأوامر في هذة الأقواس { } لأننا استخدمنا منطق.( AND ) يعني ( و ) وهنا يقول الكود يجب تحقق الشرط الأول والثاني لكي يعبر بوابة المنطق ( AND )

ونذهب الأن للشرطان الغير ضرورية هي .. مظهر الشعر يكون قصير ... حذاء اسود اللون

ونكتب كود بمنطق بوابة ( أو ) ( OR )

لاحظ الفرق في هذ الكود .. الكود الأول استخدمنا منطق ( و ) ( AND ) ويكتب في البرنامج هكذا ( && )
وسوف نستخدم في الشرطان الغير ضروري المنطق ( أو ) ( OR ) ويكتب في البرنامج هكذا ( || )

لاحظ الكودif( PORTD.f2==1 || PORTD.f3 ==1 ){ PORTB.f1 = ~ PORTB.f1; delay_ms(250); } OK. لاحظ الفرق بين الكود الأول والثاني هوا حالة المنطق ( و ) و ( أو )

وهنا لو تحقق شرط واحد من الإثنان أو تحقق الشرطان سوف ينفذ الكود

واليك الكود كامل واتركك لتجربته علي محكاة



كود:





              void main() 
     {
             TRISB=0;   //  TRISB=0B00000000;
             PORTB=0;   //  PORTB=0B00000000;
             TRISD=15;  //  TRISD=0B00001111;
             PORTD=0;   //  PORTD=0B00000000;
             
               while(1)
         {

            if( PORTD.f0 ==1 && PORTD.f1 ==1 )
         
             {
          
                PORTB.f0  = ~  PORTB.f0;
               
                delay_ms(250);
         
             }

                  if( PORTD.f2==1 || PORTD.f3==1 )
               {
           
                  PORTB.f1 = ~ PORTB.f1;
                
                  delay_ms(250);
            
               }
             
         }
    }



انتظر الإستفسارات حول هذا الدرس

بالتوفيق

__________________________________________________ ___





السلام عليكم
جاري العمل على شحن المعالج بالبرنامج ( هل يصح قول شحن المعالج بالبرنامج ام تعتمدون تسمية اخرى ) .
ماشاء الله شرحك وافي و بسيط الفهم و عميق المعنى .
شكرا جزيلا اخي عبد الله ...اتمنى ان تتابع الشرح من هنا مع اخوتي الاكارم .
تحياتي


التعديل الأخير تم بواسطة : مسلم11 بتاريخ 03-01-2020 الساعة 07:11 PM
اعلانات

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 03-01-2020, 07:09 PM المشاركة 90   
افتراضي


اخي الكريم هل هذه هي المبرمجة .


ان كانت هي اين يوضع المعالج ... هل توصيلاته بالخلف او قاعدته بالخلف .. خلف المبرمجة
لاحظ هنا المخطط

لماذا وضعوا التوصيلات التي على يمين المخطط وعليه التسميات
MCL_ VDD_ VSS_ CLK_ DAT _ AUX
من اجل ماذا
ايضا تكلم الاخ DELTA عن دارة رفع جهد لماذا رفع الجهد مستخدم هنا ولماذا لا يوضع جهد عال ويتم تخفيض جزء من التيار الى المعالج حسب الجهد العالي المطلوب .
هل انفذ هذه المبرمجة ( هل هي جيدة وتناسب المعالج 16F877A ) .
اعرف هذه المبرمجة كان لدي واحدة مثلها
http://upload.qariya.info/up2019/106...5010FC8D99.jpg
كنت لاقول ان الاخ عريبي من قام بكتابة ذلك الموضوع نفس التنسيق و التوقيع .
حياكم الله


التعديل الأخير تم بواسطة : مسلم11 بتاريخ 03-01-2020 الساعة 07:27 PM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 04-01-2020, 02:41 AM المشاركة 91   
افتراضي


اخي الكريم هل هذه هي المبرمجة .


ان كانت هي اين يوضع المعالج ... هل توصيلاته بالخلف او قاعدته بالخلف .. خلف المبرمجة
لاحظ هنا المخطط

لماذا وضعوا التوصيلات التي على يمين المخطط وعليه التسميات
MCL_ VDD_ VSS_ CLK_ DAT _ AUX
من اجل ماذا
ايضا تكلم الاخ DELTA عن دارة رفع جهد لماذا رفع الجهد مستخدم هنا ولماذا لا يوضع جهد عال ويتم تخفيض جزء من التيار الى المعالج حسب الجهد العالي المطلوب .
هل انفذ هذه المبرمجة ( هل هي جيدة وتناسب المعالج 16F877A ) .
اعرف هذه المبرمجة كان لدي واحدة مثلها
http://upload.qariya.info/up2019/106...5010FC8D99.jpg
كنت لاقول ان الاخ عريبي من قام بكتابة ذلك الموضوع نفس التنسيق و التوقيع .
حياكم الله

اخي جواب سؤالك هذا
لماذا وضعوا التوصيلات التي على يمين المخطط وعليه التسميات
MCL_ VDD_ VSS_ CLK_ DAT _ AUX
في شرح الاخ DELTA


لاحظ في الصورة موضح بالأطراف اين تصل. كل طرف من المبرمجة والمتحكم وستكون هذة الأطراف متوافقة مع الكثير من المتحكمات ..

وهذة صورة توضح طريقة التوصيل لعدد مختلف من المتحكمات



تقريبا المتحكمات ذات ال 40 طرف متشابها تماما في ترقيم الأطراف المسؤولة عن شحن البرنامج علي المتحكم
ايضا بالمثل في المتحكمات ذات ال 28 طرف و 18 طرف و 8 طرف عند شحنها تجد ان معظم الأطراف مطابقة في اماكنها

هنا لكي تنفذ هذ المبرمجة سوف تقع في معضلة ( البيضة اولا ام الدجاجة) لأن هذة المبرمجة تعتمد دائرتها علي متحكم pic18f2550 ويحتاج الي شحنة ببرنامج لأدارة المبرمجة .. في هذه الحالة سوف تحتاج الي استعارة مبرمجة لكي تشحن بها هذا المتحكم او تصنع واحدة تعمل علي المنفذ التسلسلي للحاسب

pickit 2 programmer

هذة المبرمجة ممتازة جداا وتدعم الكثير من المتحمات لعائلة pic وتبرمج ايضا الأبرومات انا امتلك واحدة مثلها وانصحك لو تريد شراء مبرمجة اشتري هذة فهي ممتازة جداا وتقرأ الميكرو وتتعرف علية ..


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 04-01-2020 الساعة 05:06 AM

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 04-01-2020, 03:18 AM المشاركة 92   
افتراضي


السلام عليكم
جاري العمل على شحن المعالج بالبرنامج ( هل يصح قول شحن المعالج بالبرنامج ام تعتمدون تسمية اخرى ) .
ماشاء الله شرحك وافي و بسيط الفهم و عميق المعنى .
شكرا جزيلا اخي عبد الله ...اتمنى ان تتابع الشرح من هنا مع اخوتي الاكارم .
تحياتي
وعليكم السلام ورحمه الله
المسميات لا تهم نقول شحن البرنامج او حرق البرنامج الخ..


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 04-01-2020, 04:38 AM المشاركة 93   
افتراضي السلام عليكم ورحمه الله


نكمل انشاء الله في الحديث عن الأوامر الشرطية وأقول أن متعة البرمجة وقوتها في الأوامر الشرطية

خلينا ننفذ عداد مكون من خانة واحدة ويكون تصاعدي تنازلي بستخدام مفتاحين للذيادة العد او للنقصان
الدائرة الألكترونية



كود

كود:



     unsigned short mask(unsigned short num);
      unsigned int SEGMENT1=0;

            void main() {
          TRISB=0; PORTB=0;
          TRISD=7; PORTD=0;
           
             while(1){
              PORTB=mask(SEGMENT1);

      if( PORTD.F0==1 ) { SEGMENT1++; delay_ms(250);}
      if( PORTD.F1==1 ) { SEGMENT1--; delay_ms(250);}

      if( SEGMENT1 >9  ) { SEGMENT1=9; delay_ms(10); }
      if( SEGMENT1 <=0 ) { SEGMENT1=0; delay_ms(10); }

        
  }
    }
    

  unsigned short mask(unsigned short num){
  switch (num){
 case 0 : return 192;
 case 1 : return 249;
 case 2 : return 164;
 case 3 : return 176;
 case 4 : return 153;
 case 5 : return 146;
 case 6 : return 130;
 case 7 : return 248;
 case 8 : return 128;
 case 9 : return 144;

 
}
}
سوف نقوم بتطوير البرنامج الي الوصول ل 8 شاشات وبعدها نشرح كل برنامج وسوف نستخدم أو ننفذ عداد ذاتي وايضا عداد مربوط بأوامر شرطية وايضا عداد قابل للضبط واختيار الأعداد ..



الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 04-01-2020, 05:01 AM المشاركة 94   
افتراضي السلام عليكم ورحمه الله


نستكمل ونطور العداد ليصبح ب 2 شاشة

الدائرة




كود
كود:

     unsigned short mask(unsigned short num);
      unsigned int SEGMENT1=0,SEGMENT2=0;

            void main() {
          TRISB=0; PORTB=0;
          TRISD=7; PORTD=0;
          TRISC=0; PORTC=0;
             while(1){
             
          PORTC=1; PORTB = mask ( SEGMENT1 ); delay_ms(1);
              
          PORTC=2; PORTB = mask ( SEGMENT2 ); delay_ms(1);
              
      if( PORTD.F0==1 ) { SEGMENT2++; delay_ms(250);}
      if( PORTD.F1==1 ) { SEGMENT1--; delay_ms(250);}

      if( SEGMENT2 >9  ) { SEGMENT2=0;  SEGMENT1++;  }
      if( SEGMENT1 >9  ) { SEGMENT2=9;  SEGMENT1=9; }


        
  }
    }
    

  unsigned short mask(unsigned short num){
  switch (num){
 case 0 : return 192;
 case 1 : return 249;
 case 2 : return 164;
 case 3 : return 176;
 case 4 : return 153;
 case 5 : return 146;
 case 6 : return 130;
 case 7 : return 248;
 case 8 : return 128;
 case 9 : return 144;

 
}
}
انشاء الله سوف اقوم بشرح هذة البرامج ومن ثم نكمل في تطوير العداد ليصبح ب ثلاث شاشات الي ان نصل ل 8 شاشات ويمكننا اضافة ما نشاء من الشاشات

فقط سوف احضر الشرح واقوم برفعة معذرة للتأخير لأن هذة البرامج توجد بها تعليمات جديدة وسوف تأخذ وقت لتفصيلها وشرحها برجاء اعطائي بعض الوقت

تحياتي للجميع


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 04-01-2020, 07:10 AM المشاركة 95   
افتراضي السلام عليكم ورحمه الله


الأن نبدأ في شرح بعض النقاط الهامة في مشروع العداد
كما نعلم ان شلشة ال 7SEGMENT هي عبارة عن 7 ليدات وهنا يتم اشعال هذة الليدات لتشكل من رقم صفر الي رقم 9 وبعض الحروف مثل H F E L P
ويوجد منها نوعان انود الليدات مشترك والنوع الثاتي كاثود الليدات مشترك مثل هذة الصور


كما نلاحظ ان هذة الشاشة من نوع الكاثود المشترك ويعني هذا أن كل اطراف سالب الليدات السبعة مشتركين مع بعض من ناحية الطرف السالب

والنوع الأخر هوا انود مشترك



كما نلاحظ هنا هذة الشاشة اطراف الأنود أو الموجب للسبعة ليدات مشتركة
وهنا لا فرق بين الشاشتين فقط عند تصميم الدائرة تختار ما يناسب خرج جهد المتكاملات في الدائرة

وهنا نتعرف علي هذة الشاشة ونأخذ الشاشة المستخدمة في مشروع العداد اعلاة وهي من نوع انود مشترك يعني موجب الليدات مشترك

وهنا مثلا لو نريد اظهار رقم صفر علي هذة الشاشة سوف نوصل جهد 5 فولت علي طرف الأنود وايضا نوصل صفر أو سالب علي كل الليدات من أول ليد A معادا الليد G ولو نلاحظ ترتيب هذة الليدات سوف يظهر لنا عند اشعال هذ الليدات رقم صفر ..
تمام خلينا نظهر رقم واحد طبعا طرف الأنود نوصلة ب 5 فولت ونوصل طرف B و C بصفر فولت وهنا يشتعل الليد B و C ويظهر لنا علي الشاشة رقم واحد وهكذا بنفس الطريقة يمكننا اظهار ما بين 0 الي 9 علي الشاشة وايضا يمكننا اظهار بعض الحروف مثل H F E L P
الأن تعرفنا علي طريقة تشغيل هذة الشاشة
والأن خلينا نشوف كيف يمكننا التحكم واظهار ارقام علي هذة الشاشة بستخدام الميكرو كنترول


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 04-01-2020, 07:52 AM المشاركة 96   
افتراضي السلام عليكم ورحمه الله


الأن نكمل الشرح

كود:
     unsigned short mask(unsigned short num);
      unsigned int SEGMENT1=0;

            void main() {
          TRISB=0; PORTB=0;
          TRISD=7; PORTD=0;
           
             while(1){
              PORTB=mask(SEGMENT1);

      if( PORTD.F0==1 ) { SEGMENT1++; delay_ms(250);}
      if( PORTD.F1==1 ) { SEGMENT1--; delay_ms(250);}

      if( SEGMENT1 >9  ) { SEGMENT1=9; delay_ms(10); }
      if( SEGMENT1 <=0 ) { SEGMENT1=0; delay_ms(10); }

        
  }
    }
    

  unsigned short mask(unsigned short num){
  switch (num){
 case 0 : return 192;
 case 1 : return 249;
 case 2 : return 164;
 case 3 : return 176;
 case 4 : return 153;
 case 5 : return 146;
 case 6 : return 130;
 case 7 : return 248;
 case 8 : return 128;
 case 9 : return 144;

 
}
}
لو نظرنا الي هذا الكود سوف نتعرف علي عدد من التعليمات قد تم شرحها في مشاركات اخري
وهنا سوف نشرح ونتكلم علي التعليمات الجديدة ونبدأ من فوق اول الكود

هنا تم الإعلان عن متغيران الأول ( num ) والثاني ( SEGMENT1 ) وسوف نتعرف علي فائدة هذة المتغيرات

اولا ننظر الي هذا الكود لكي نفهم دور المتغير ( num )

كود:
 unsigned short mask(unsigned short num){
  switch (num){
 case 0 : return 192;
 case 1 : return 249;
 case 2 : return 164;
 case 3 : return 176;
 case 4 : return 153;
 case 5 : return 146;
 case 6 : return 130;
 case 7 : return 248;
 case 8 : return 128;
 case 9 : return 144;

 
}
}
هنا في هذ الكود هوا كود تحويل لنظام الأرقام المتحكم لا يتعامل مع المكونات الإكترونيه بالنظام العشري للإرقام بال يتعامل مع الأشياء بالنظام الثنائى أو كما نسميها لغة الألة وهي صفر وواحد ..
تمام لاحظ هذة التعليمة
كود:
case 0 : return 192;
هذة التعليمة وظيفتها هي استقبال قيمة رقمية ثم تحويلها الي قيمة رقمية أخري وهنا تعليمة case 0 : return 192 هذة التعليمة تقول لو جالك قيمة صفر حولها أور ارجعها بقيمة 192 حسنا مذا يعني هذا الرقم 192 ..
حسنا لكي نفهم هذا الرقم وفيما نستخدمة نذهب لنافذة برنامج الميكرو سي



نلاحظ في هذة النافذة وجود محاكي لشاشة 7 سجمنت وهنا وبكل سهولة نشكل الرقم علي الشاشة واتوماتك تولد لنا رقم مكافئ لإضاءة العارضات المسؤلة عن تشكيل الرقم اللذي كتبناة وهنا نلاحظ تم تشكيل او كتابة رقم صفر علي محاكي شاشة ال 7 سيجمنت وظهر لنا قيمة رقمية نستطيع استخدامها مع شاشة انود مشترك وهوا 192 ورقم أخر تستطيع استخدامة مع شاشة كاثود مشترك وهوا 63 ولأننا نستخدم شاشة انود مشترك اخذنا 192 اللذي يعبر بالثنائي بهذا الشكل 11000000
وهنا هذة النافذة المحاكي لشاشة 7 سجمنت توفر علينا الوقت والمجهود في تشكيل الأرقام وهنا لو تلاحظ ان الشاشة المستخدمة هي انود مشترك ولذالك سيكون علينا اخراج صفر فولت علي هذا المنفذ في الميكرو كما وضحنا اعلاة بهذا الرقم 192 وكان بالثنائي هذا 11000000

الأن عرفنا ان فائدة هذا الكود هوا استلام قيمة معينة ةتسليمها بقيمة أخري وفي الحالتين نحن من نكتب لهة القيمتين
مثال case 9 : return 144 هنا قولنا للبرنامج لو جالك رقم 9 حولة الي رقم 144 واحفظة في هذا المتغير
كود:
 unsigned short mask(unsigned short num);
وسوف نتعرف ماذا نفعل مع هذة القيمة

للموضوع بقية



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 06:59 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)