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

   

A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 10-01-2021, 11:27 PM المشاركة 9   
x5



السلام عليكم ورحمه الله

اسف انا كده مش فاهم المطلوب بالظبط
فضلا رتب الأوامر والحالات المطلبه مع زمن التشغيل
السلام عليكم اخي الكريم

المطلوب هو كود يحتوي عل مفتاحان و ليدان ::

المطلوب الاول:
عند الضغط على المفتاح الاول يضيئ الليد الاول..و بعد 5 ثواني يضيئ الليد الثاني لمدة ثانيه ثم ينطفئ .. مع بقائ اللد الاول مشتعل ..

المطلوب الثاني :
اذا قمنا بالضغط مره اخرى على المفتاح الاول يبقى الوضع كما هو .. اي لا يحدث شيئ و هذا طالما ان الليد الاول مشتعل .. اما اذا انطفئ الليد الاول ..و ضغطنا على المفتاح الاول نعيد الكّره السابقه من جديد .
و الليد الاول ينطفئ اذا قمنا بالضغط على المفتاح الثاني ..

المطلوب الثالث و هو ان ينطفئ ال portb بالكامل بعد مرور 5 دقائق و ذلك عن طريق التايمر كما فعلت في البرنامج السابق..

بالنسبه للمفاتيح على PORTA
بالنسبه لليدات على PORTB
المتحكم 16F628

يا رب اكون وصلت المعلومه لحضرتك .. و دمتم سالمين *****

اعلانات

A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 11-01-2021, 01:41 AM المشاركة 10   
افتراضي


السلام عليكم ورحمه الله

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

بالنسبه للبرنامج حاولت ارتب افكاري و يكون كلامي مفهوم ان شاء الله
محتويات الدائره مفتاحان و ليدان فقط و انا سأكمل الباقي ان شاء الله ..

المطلوب الاول :
عند الضغط على المفتاح الاول يضيئ الليد الاول .. و بعد مرور 5 ثواني يضيئ الليد الثاني لمدة ثانيه ثم ينطفء مع بقاء الليد الاول مشتعل ..

المطلوب الثاني :
عند الضغط مره اخرى على نفس المفتاح الاول يبقى الوضع كما هو عليه ..اي لا يحصل شيئ .. طالما ان الليد الاول مشتعل .. اما اذا انطفء الليد الاول و ضغطنا على المفتاح الاول نعيد الكرّه السابقه من جديد ..و الليد الاول ينطفئ اذا ضغطنا على المفتاح الثاني ..

المطلوب الثالث :
اطفاء ال portb بالكامل بعد مرور 5 دقائق ..عن طريق التايمر كما فعلت حضرتك في البرنامج الاخير..

PUTTON AT PORTA
LEDs AT PORTAB
PIC 16F628

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

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


السلام عليكم اخي الكريم

المطلوب هو كود يحتوي عل مفتاحان و ليدان ::

المطلوب الاول:
عند الضغط على المفتاح الاول يضيئ الليد الاول..و بعد 5 ثواني يضيئ الليد الثاني لمدة ثانيه ثم ينطفئ .. مع بقائ اللد الاول مشتعل ..

المطلوب الثاني :
اذا قمنا بالضغط مره اخرى على المفتاح الاول يبقى الوضع كما هو .. اي لا يحدث شيئ و هذا طالما ان الليد الاول مشتعل .. اما اذا انطفئ الليد الاول ..و ضغطنا على المفتاح الاول نعيد الكّره السابقه من جديد .
و الليد الاول ينطفئ اذا قمنا بالضغط على المفتاح الثاني ..

المطلوب الثالث و هو ان ينطفئ ال portb بالكامل بعد مرور 5 دقائق و ذلك عن طريق التايمر كما فعلت في البرنامج السابق..

بالنسبه للمفاتيح على PORTA
بالنسبه لليدات على PORTB
المتحكم 16F628

يا رب اكون وصلت المعلومه لحضرتك .. و دمتم سالمين *****
السلام عليكم ورحمه الله

تفضل أخي اليك ما طلبت

كود:
  
      // ENG ABDALLA HYGAZY //
       // TEMIR CONTROL //
      #define  LED1            PORTB.F0
      #define  LED2            PORTB.F1
      #define  ALL_OFF_TEMIR   TEMR1=0; TEMR2=0; TEMR3=0; TEMR4=0; TEMR5=0;
      #define  ALL_OFF         X1=0; X2=0; X3=0; PORTB=0;
      #define  OFF    0;
      #define  ON     1;
       unsigned int X1=0,X2=0,X3=0;
       unsigned int TEMR1=0,TEMR2=0,TEMR3=0,TEMR4=0,TEMR5=0;

    //Timer0
   //Prescaler 1:8; TMR0 Preload = 6; Actual Interrupt Time : 1 ms
   //Place/Copy this part in declaration section
   void InitTimer0(){
   OPTION_REG = 0x82;
   TMR0       = 6;
   INTCON     = 0xA0;
  }

    void Interrupt(){
    if (TMR0IF_bit){
    TMR0IF_bit = 0;
    TMR0       = 6;
    //Enter your code here
       
       TEMR3++;
       if( X1==1 && X3==0 ) { TEMR1++;                            }
       if( TEMR1==2500    ) { LED2=ON; X2=1;                      }
       if( X2==1          ) { TEMR2++;                            }
       if( TEMR2==500     ) { LED2=OFF; TEMR1=0; TEMR2=0;  X3=1;  }
       
       if( TEMR3==500    ) { TEMR4++;  TEMR3=0;                   }
       if( TEMR4==60     ) { TEMR5++; TEMR4=0;                    }
       if( TEMR5==5      ) { ALL_OFF_TEMIR      ALL_OFF           }
  }
  }

         void main() {
         PORTB=0; TRISB=0;
         PORTA=0; TRISA=3;
         InitTimer0();
       //   dcon1=0x06;
         CMCON=7;
         
          while(1){

        if( PORTA.F0==1 ) {  LED1=ON;   X1=1;  }
        if( PORTA.F1==1 ) {  LED1=OFF;  X3=0;  }

     }
  } 

لو هناك أي شئ أو تعديل أخبرني

لو تريد تطوير هذا المشروع بستخدام شاشه وضبط الوقت وحالة البورت بستخدام
سويتشات اختيار اعدادات الوقت والحاله
مثل أجهزة PLC للتحكم المنطقي .. في خطوط الإنتاج والسيطرة ..

بالتوفيق والنجاح ان شاء الله


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 11-01-2021, 11:06 AM المشاركة 12   
افتراضي


السلام عليكم ورحمه الله

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


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 11-01-2021, 11:17 AM المشاركة 13   
افتراضي


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

شكرا استاذي .. وجدته مكنتش شايفه ... شكرا لحضرتك و انشاء الله اي ملاحظه رح احكيلك


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 11-01-2021, 11:23 AM المشاركة 14   
x5


السلام عليكم ورحمه الله

تفضل أخي اليك ما طلبت

كود:
  
      // ENG ABDALLA HYGAZY //
       // TEMIR CONTROL //
      #define  LED1            PORTB.F0
      #define  LED2            PORTB.F1
      #define  ALL_OFF_TEMIR   TEMR1=0; TEMR2=0; TEMR3=0; TEMR4=0; TEMR5=0;
      #define  ALL_OFF         X1=0; X2=0; X3=0; PORTB=0;
      #define  OFF    0;
      #define  ON     1;
       unsigned int X1=0,X2=0,X3=0;
       unsigned int TEMR1=0,TEMR2=0,TEMR3=0,TEMR4=0,TEMR5=0;

    //Timer0
   //Prescaler 1:8; TMR0 Preload = 6; Actual Interrupt Time : 1 ms
   //Place/Copy this part in declaration section
   void InitTimer0(){
   OPTION_REG = 0x82;
   TMR0       = 6;
   INTCON     = 0xA0;
  }

    void Interrupt(){
    if (TMR0IF_bit){
    TMR0IF_bit = 0;
    TMR0       = 6;
    //Enter your code here
       
       TEMR3++;
       if( X1==1 && X3==0 ) { TEMR1++;                            }
       if( TEMR1==2500    ) { LED2=ON; X2=1;                      }
       if( X2==1          ) { TEMR2++;                            }
       if( TEMR2==500     ) { LED2=OFF; TEMR1=0; TEMR2=0;  X3=1;  }
       
       if( TEMR3==500    ) { TEMR4++;  TEMR3=0;                   }
       if( TEMR4==60     ) { TEMR5++; TEMR4=0;                    }
       if( TEMR5==5      ) { ALL_OFF_TEMIR      ALL_OFF           }
  }
  }

         void main() {
         PORTB=0; TRISB=0;
         PORTA=0; TRISA=3;
         InitTimer0();
       //   dcon1=0x06;
         CMCON=7;
         
          while(1){

        if( PORTA.F0==1 ) {  LED1=ON;   X1=1;  }
        if( PORTA.F1==1 ) {  LED1=OFF;  X3=0;  }

     }
  } 

لو هناك أي شئ أو تعديل أخبرني

لو تريد تطوير هذا المشروع بستخدام شاشه وضبط الوقت وحالة البورت بستخدام
سويتشات اختيار اعدادات الوقت والحاله
مثل أجهزة PLC للتحكم المنطقي .. في خطوط الإنتاج والسيطرة ..

بالتوفيق والنجاح ان شاء الله

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


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 11-01-2021, 11:01 PM المشاركة 15   
افتراضي


السلام عليكم ورحمه الله

تفضل أخي اليك ما طلبت

كود:
  
      // ENG ABDALLA HYGAZY //
       // TEMIR CONTROL //
      #define  LED1            PORTB.F0
      #define  LED2            PORTB.F1
      #define  ALL_OFF_TEMIR   TEMR1=0; TEMR2=0; TEMR3=0; TEMR4=0; TEMR5=0;
      #define  ALL_OFF         X1=0; X2=0; X3=0; PORTB=0;
      #define  OFF    0;
      #define  ON     1;
       unsigned int X1=0,X2=0,X3=0;
       unsigned int TEMR1=0,TEMR2=0,TEMR3=0,TEMR4=0,TEMR5=0;

    //Timer0
   //Prescaler 1:8; TMR0 Preload = 6; Actual Interrupt Time : 1 ms
   //Place/Copy this part in declaration section
   void InitTimer0(){
   OPTION_REG = 0x82;
   TMR0       = 6;
   INTCON     = 0xA0;
  }

    void Interrupt(){
    if (TMR0IF_bit){
    TMR0IF_bit = 0;
    TMR0       = 6;
    //Enter your code here
       
       TEMR3++;
       if( X1==1 && X3==0 ) { TEMR1++;                            }
       if( TEMR1==2500    ) { LED2=ON; X2=1;                      }
       if( X2==1          ) { TEMR2++;                            }
       if( TEMR2==500     ) { LED2=OFF; TEMR1=0; TEMR2=0;  X3=1;  }
       
       if( TEMR3==500    ) { TEMR4++;  TEMR3=0;                   }
       if( TEMR4==60     ) { TEMR5++; TEMR4=0;                    }
       if( TEMR5==5      ) { ALL_OFF_TEMIR      ALL_OFF           }
  }
  }

         void main() {
         PORTB=0; TRISB=0;
         PORTA=0; TRISA=3;
         InitTimer0();
       //   dcon1=0x06;
         CMCON=7;
         
          while(1){

        if( PORTA.F0==1 ) {  LED1=ON;   X1=1;  }
        if( PORTA.F1==1 ) {  LED1=OFF;  X3=0;  }

     }
  } 

لو هناك أي شئ أو تعديل أخبرني

لو تريد تطوير هذا المشروع بستخدام شاشه وضبط الوقت وحالة البورت بستخدام
سويتشات اختيار اعدادات الوقت والحاله
مثل أجهزة PLC للتحكم المنطقي .. في خطوط الإنتاج والسيطرة ..

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

انه عند ضغط المفتاح الاول يضيئ اللد الاول و بعد 5 ثواني يضيئ اللد الثاني لمدة ثانيه ثم ينطفئ الى هنا تمام لكن عند اطفاء اللد الاول عن طريق المفتاح الثاني RA1 و اعادة تشغيله مره اخرى يشتغل اللد الاول فقط ولا يشتغل الثاني لمدة 5 ثواني كالمرّه السابقه (الا اذا قمت بوقف المحاكاه stop و اعادة التشغيل من جديد play (اي فصل التيار في الدائره الحقيقيه ) انا اريد التكرار عند الحاجه بدون فصل التيار


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


تمام ان شاء الله اختبره علي المحكاة وارفع لك الكود



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