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

أدوات الموضوع

منى حسين
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2011
المشاركات: 97
نشاط [ منى حسين ]
قوة السمعة:0
قديم 25-05-2020, 03:09 AM المشاركة 1   
yel مساعدة ببرنامج للبيك 12F675 Twitter FaceBook Google+



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

ارجو مساعدتى ببرنامج يستخدم البيك 12F675 وهو عبارة عن الاتى
استخدام 4 مفاتيح و3 ليدات ( يعنى 4 مداخل و 3 مخارج )
عند الضغط على المفتاح الاول يضىء الليد رقم 1
عند الضغط على المفتاح الثانى يطفىء الليد رقم 1 ويضىء الليد رقم 2
عند الضغط على المفتاح الثالث يطفىء الليد رقم 2 ويضىء الليد رقم 3
وعند الضغط على المفتاح الرابع يطفىء جميع الليدات
وهكذا
لاننى لا اجيد التعامل مع هذا النوع من البك
وشكرا مقدما لكل من يساعدنى

اعلانات

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


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

ارجو مساعدتى ببرنامج يستخدم البيك 12F675 وهو عبارة عن الاتى
استخدام 4 مفاتيح و3 ليدات ( يعنى 4 مداخل و 3 مخارج )
عند الضغط على المفتاح الاول يضىء الليد رقم 1
عند الضغط على المفتاح الثانى يطفىء الليد رقم 1 ويضىء الليد رقم 2
عند الضغط على المفتاح الثالث يطفىء الليد رقم 2 ويضىء الليد رقم 3
وعند الضغط على المفتاح الرابع يطفىء جميع الليدات
وهكذا
لاننى لا اجيد التعامل مع هذا النوع من البك
وشكرا مقدما لكل من يساعدنى
السلام عليكم

أختي / كل سنه وانتي طيبه عيد سعيد

طلبك اكثر من منافذ الميكرو هذا المتحكم يحتوي علي 6 منافذ تحكم فقط وانتي
تريدين التحكم في 7 منافذ

ولقد كتبت لك برنامج لتوفير المنافذ بستخدام مفتاح واحد فقط ويقوم بنفس المهمه

تفضلي

كود:
   

        unsigned X;


        void main() {
        ADCON0 = 0x07;
        ANSEL = 0X00; // AN0 & AN1 CONFIGURED AS ANALOGUE INPUT
        TRISIO = 0b00111000;
        GPIO = 0X00;
        CMCON =0;
       
       
       
          while(1)
       {
  
         if(GP3_bit==0){ X++;   delay_ms(250); }

         if(X==1){  GPIO = 1;   delay_ms(250); }
         if(X==2){  GPIO = 2;   delay_ms(250); }
         if(X==3){  GPIO = 4;   delay_ms(250); }
         if(X==4){  GPIO = 0;   delay_ms(250); }
       }
  }


رابط لتحميل
البرنامج والكود وملف محكاة https://drive.google.com/drive/folde..._7?usp=sharing

لو كان استخدام 4 مفاتيح الزامي اخبريني لكي اجد طريقه لتنفيذها

تحياتي

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً منى حسين ( شكر العضو على هذه المشاركة )
اعجاب منى حسين ( أعجبته المشاركة )
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

منى حسين
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2011
المشاركات: 97
نشاط [ منى حسين ]
قوة السمعة:0
قديم 26-05-2020, 08:23 PM المشاركة 3   
ha


السلام عليكم

أختي / كل سنه وانتي طيبه عيد سعيد

طلبك اكثر من منافذ الميكرو هذا المتحكم يحتوي علي 6 منافذ تحكم فقط وانتي
تريدين التحكم في 7 منافذ

ولقد كتبت لك برنامج لتوفير المنافذ بستخدام مفتاح واحد فقط ويقوم بنفس المهمه

تفضلي

كود:
   

        unsigned X;


        void main() {
        ADCON0 = 0x07;
        ANSEL = 0X00; // AN0 & AN1 CONFIGURED AS ANALOGUE INPUT
        TRISIO = 0b00111000;
        GPIO = 0X00;
        CMCON =0;
       
       
       
          while(1)
       {
  
         if(GP3_bit==0){ X++;   delay_ms(250); }

         if(X==1){  GPIO = 1;   delay_ms(250); }
         if(X==2){  GPIO = 2;   delay_ms(250); }
         if(X==3){  GPIO = 4;   delay_ms(250); }
         if(X==4){  GPIO = 0;   delay_ms(250); }
       }
  }


رابط لتحميل
البرنامج والكود وملف محكاة https://drive.google.com/drive/folde..._7?usp=sharing

لو كان استخدام 4 مفاتيح الزامي اخبريني لكي اجد طريقه لتنفيذها

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

وانت طيب وكل عام والاسرة الكريمة بخير وسلامة
شكرا كثيرا على سرعة الرد والاهتمام _ كما هو عادتك دائما سباقا فى الخير - كما انك مساعدا لكل الاخوة وتجود بما عندك من معلومات جعلها الله عز وجل فى ميزان حساناتك ان شاء الله

تم تنزيل الكود البرمجى وكذا ملف المحاكاه - وكما ذكرت ان هذه البيك لها 6 اطراف تستخدم كخرج ودخل بالاضافة الى طرفى التغذية البرنامج يعمل تماما 100% ولكن ليس به الاستمرارية - يعنى عند الوصول الى الـــ OFF وعند الضغط مرة اخرى على المفتاح كضغطة اولى لا يعمل اطلاقا انا اريد ان يعمل باستمرار وليس لمرة واحدة فقط
كما اطمع من حضرتك شررح كل سطر من البرنامج ( اعطينى ســــنارة ) !!!!
اكرر شكرى وامتنانى لحضرتك على هذا المجهود المميز ...ودمتم


الصورة الرمزية assed
assed
:: عضو فضي ::
تاريخ التسجيل: Jul 2014
الدولة: العراق - بغداد
المشاركات: 1,036
نشاط [ assed ]
قوة السمعة:97
قديم 26-05-2020, 09:44 PM المشاركة 4   
افتراضي


السلام عليكم

أختي / كل سنه وانتي طيبه عيد سعيد

طلبك اكثر من منافذ الميكرو هذا المتحكم يحتوي علي 6 منافذ تحكم فقط وانتي
تريدين التحكم في 7 منافذ

ولقد كتبت لك برنامج لتوفير المنافذ بستخدام مفتاح واحد فقط ويقوم بنفس المهمه

تفضلي

كود:
   

        unsigned X;


        void main() {
        ADCON0 = 0x07;
        ANSEL = 0X00; // AN0 & AN1 CONFIGURED AS ANALOGUE INPUT
        TRISIO = 0b00111000;
        GPIO = 0X00;
        CMCON =0;
       
       
       
          while(1)
       {
  
         if(GP3_bit==0){ X++;   delay_ms(250); }

         if(X==1){  GPIO = 1;   delay_ms(250); }
         if(X==2){  GPIO = 2;   delay_ms(250); }
         if(X==3){  GPIO = 4;   delay_ms(250); }
         if(X==4){  GPIO = 0;   delay_ms(250); }
       }
  }


رابط لتحميل
البرنامج والكود وملف محكاة https://drive.google.com/drive/folde..._7?usp=sharing

لو كان استخدام 4 مفاتيح الزامي اخبريني لكي اجد طريقه لتنفيذها

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

احصائية الشكر والاعجاب - 0 شكراً, 0 عدم اعجاب, 2 اعجاب
اعجاب منى حسين, عبدالله حجازى ( أعجبته المشاركة )

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


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

وانت طيب وكل عام والاسرة الكريمة بخير وسلامة
شكرا كثيرا على سرعة الرد والاهتمام _ كما هو عادتك دائما سباقا فى الخير - كما انك مساعدا لكل الاخوة وتجود بما عندك من معلومات جعلها الله عز وجل فى ميزان حساناتك ان شاء الله

تم تنزيل الكود البرمجى وكذا ملف المحاكاه - وكما ذكرت ان هذه البيك لها 6 اطراف تستخدم كخرج ودخل بالاضافة الى طرفى التغذية البرنامج يعمل تماما 100% ولكن ليس به الاستمرارية - يعنى عند الوصول الى الـــ OFF وعند الضغط مرة اخرى على المفتاح كضغطة اولى لا يعمل اطلاقا انا اريد ان يعمل باستمرار وليس لمرة واحدة فقط
كما اطمع من حضرتك شررح كل سطر من البرنامج ( اعطينى ســــنارة ) !!!!
اكرر شكرى وامتنانى لحضرتك على هذا المجهود المميز ...ودمتم
وعليكم السلام ورحمه الله

شكرا جزيلا علي كلامك الطيب..

بالنسبة للكود
نبدأ من هنا
كود:
   unsigned X;
تم تعريف متغير X
لكي يتم استخدامه في البرنامج وهو جوهر واساس فكرة البرنامج وسوف نتعرف
علي هذا !!!

داليه البداية اللتي يبدأ البرنامج منها
كود:
   void main() {
---------------------------------------------------------------------------------

هذا المتحكم يحتوي علي مبدل تشابهي ADC ولكي يتم ايقافه ونجعل الأطراف التماثليه
تستخدم ك اطراف رقميه نكتب هذه التعليه
كود:
   ADCON0 = 0x07;
--------------------------------------------------------------------------------------

كود:
   TRISIO = 0b00111000;
هذة التعليمه لتهيئة اطراف المتحكم
ك دخل أو خرج

هذا المتحكم pic12f675 له تعليمات خاصه لتعليمات التحكم في المنافذ
كود:
   GPIO = 0X00;
هذة التعليمه تجعل كل مخارج المتحكم = 0 فولت
ويمكننا كتابتها هكذا
كود:
   GPIO = 0;
او نكتبها هكذا
كود:
 GPIO = 0b00000000;

حلقه تكرار لا نهائيه لوب
كود:
 while(1)
       {
كود:
   if(GP3_bit==0){ X++;   delay_ms(250); }
أمر شرطي يختبر هل تم الضغط علي المفتاح أم لا

شرح تفصيلي
كود:
 GP3_bit==0
هذة التعليمه من داخل الأمر الشرطي وهي تختبر البن رقم 3 هل == 0 لو تساوي 0 ينفذ
الشرط بين القوسين
كود:
{ X++;   delay_ms(250); }
وهنا يتم ذيادة المتغير X بواحد
كل ما يتم الضغط علي المفتاح
ونأتي الأن لأهميه المتغير X في البرنامج

طبعا في البدايه تكون قيمة X تساوي صفر
وعند الضغط علي المفتاح يتحقق الشرط وتصبح قيمة X تساوي 1
وهنا يأتي دور هذة الأوامر الشرطيه

كود:
 if(X==1){  GPIO = 1;   delay_ms(250); }
         if(X==2){  GPIO = 2;   delay_ms(250); }
         if(X==3){  GPIO = 4;   delay_ms(250); }
         if(X==4){  GPIO = 0;   delay_ms(250); X=0; }

ببساطه مجموع من الأوامر الشرطيه
الشرط الأول
كود:
  if(X==1){  GPIO = 1;   delay_ms(250); }
هذا الشرط يختبر قيمة X لو تساوي 1 ينفذ الشرط
كود:
 {  GPIO = 1;   delay_ms(250); }
ويجعل قيمه البورت
كود:
   GPIO = 1;
تساوي 1 ويضوي الليد الأول

كود:
  if(X==2){  GPIO = 2;   delay_ms(250); }
ايضا هذا الشرط يختبر قيمة X لو تساوي 2 اجعل قيمه المنفذ GPIO تساوي 2
وهكذا
وهنا ننتبه لشيئ مهم جداا

حضرتك ذكرتي أن البرنامج يشتغل دورة واحدة فقط

وهذا بسبب أنه لا يتم تصفير قيمة X لكي يبدأ دورة جديده

نلاحظ في هذا الشرط
كود:
  if(X==4){  GPIO = 0;   delay_ms(250); X=0; }
عند الضغط علي المفتاح كل ضغطه تزيد قيمة X بواحد
ويجب عندما تكون قيمة X تساوي 4 يتحقق هذا الشرط
كود:
  if(X==4){  GPIO = 0;   delay_ms(250); X=0; }
ويطفئ الليد الثالث ويجعل قيمة X تساوي صفر

وهنا اشترطنا في الأربع حالات بقيمة المتغير X

لو X = واحد يضوي الليد الأول
لو X = اثنان يضوي الليد الثاني ويطفئ الأول
لو X = ثلاثة يضوي الليد الثالث ويطفئ الثاني
لو X = اربعه يطفئ الليد الثالث ويجعل قيمة X = صفر

تم اضافة التعديل علي الكود لعمل بستمرار .. فضلا ملاحظة الفرق



كود:
   

        unsigned X;


        void main() {
        ADCON0 = 0x07;
      //  ANSEL = 0X00; // AN0 & AN1 CONFIGURED AS ANALOGUE INPUT
        TRISIO = 0b00111000;
        GPIO = 0X00;
        CMCON =0;
       
       
       
          while(1)
       {
  
         if(GP3_bit==0){ X++;   delay_ms(250); }

         if(X==1){  GPIO = 1;   delay_ms(250); }
         if(X==2){  GPIO = 2;   delay_ms(250); }
         if(X==3){  GPIO = 4;   delay_ms(250); }
         if(X==4){  GPIO = 0;   delay_ms(250); X=0; }
       }
  }
بالتوفيق



التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 27-05-2020 الساعة 01:37 AM
احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً منى حسين ( شكر العضو على هذه المشاركة )
اعجاب منى حسين ( أعجبته المشاركة )

منى حسين
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2011
المشاركات: 97
نشاط [ منى حسين ]
قوة السمعة:0
قديم 27-05-2020, 11:05 PM المشاركة 6   
win كل الشكر للمهندس عبد حجازى


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

اشكر سعة صدرك واستمرارك مع السائل حتى يتم ما يريد
شــــرح رائع سلس فهمت كل ما شرحته - اكرر شكرى لك
ودمتم

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً عبدالله حجازى ( شكر العضو على هذه المشاركة )
اعجاب عبدالله حجازى ( أعجبته المشاركة )

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


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

اشكر سعة صدرك واستمرارك مع السائل حتى يتم ما يريد
شــــرح رائع سلس فهمت كل ما شرحته - اكرر شكرى لك
ودمتم
لا شكر علي واجب
بالتوفيق ان شاء الله

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025