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

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

احمدمخيمر
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2011
الدولة: مصر
المشاركات: 99
نشاط [ احمدمخيمر ]
قوة السمعة:0
قديم 04-04-2019, 07:22 PM المشاركة 1   
افتراضي طلب تكملة كود Twitter FaceBook Google+



عندى كود سيعمل على pic16f628a
الكود مكتوب بلغة السى
على برنامج ميكروسى
الكودتمام
من ناحية البرمجة وتعريف الدخول والخروج
مشروع
DTMF
المهم المكتوب فى الكود فان ( مروحه)
نضغط على رقم ٢ تعمل ٣ تطفى
تمام
كل ماينقصنى
هو تفعيل eeproom
لكى لو انقطعت الكهربائ والمروحه شغالة
وجت الكهرباء تضل شغاله
ولو انقطعت الكهرباءوهى غير شغالة
وجت الكهرباء تضل مفصولة
.... .
الملخص عايز المروحه تحتفظ بوضعها التى كانت علية
قبل انقطاع التيار
وسأرفق لكم الكود للاضافه علية
بس لا اعلم كيف ارفقه

اعلانات

احمدمخيمر
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2011
الدولة: مصر
المشاركات: 99
نشاط [ احمدمخيمر ]
قوة السمعة:0
قديم 04-04-2019, 07:27 PM المشاركة 2   
افتراضي


عندى كود سيعمل على pic16f628a
الكود مكتوب بلغة السى
على برنامج ميكروسى
الكودتمام
من ناحية البرمجة وتعريف الدخول والخروج
مشروع
DTMF
المهم المكتوب فى الكود فان ( مروحه)
نضغط على رقم ٢ تعمل ٣ تطفى
تمام
كل ماينقصنى
هو تفعيل eeproom
لكى لو انقطعت الكهربائ والمروحه شغالة
وجت الكهرباء تضل شغاله
ولو انقطعت الكهرباءوهى غير شغالة
وجت الكهرباء تضل مفصولة
.... .
الملخص عايز المروحه تحتفظ بوضعها التى كانت علية
قبل انقطاع التيار
وسأرفق لكم الكود للاضافه علية
بس لا اعلم كيف ارفقه
________________________________________


كود:
#define  new_click                   porta.f0
#define  new_click_dir               trisa.f0
#define  DTMF0                       portb.f0
#define  DTMF0_dir                   trisb.f0
#define  DTMF1                       portb.f1
#define  DTMF1_dir                   trisb.f1
#define  DTMF2                       portb.f2
#define  DTMF2_dir                   trisb.f2
#define  DTMF3                       portb.f3
#define  DTMF3_dir                   trisb.f3

#define  fan                         porta.f2
#define  fan_dir                     trisa.f2
void init();
void main()
{
init();
fan  =1;
delay_ms(1000);
fan=0;
while(1)
         {
           if(new_click ==1){
                              if(DTMF0==0 && DTMF1==1 && DTMF2==0 && DTMF3==0)
                                           {
                                             fan =1;
                                           }
                               if(DTMF0==1 && DTMF1==1 && DTMF2==0 && DTMF3==0)
                                           {
                                             fan = 0;
                                           }
                                           
                                           
                             }
                             
         }


}
void init()
{ cmcon=7;
 DTMF0_dir=1;
 DTMF1_dir=1;
 DTMF2_dir=1;
 DTMF3_dir=1;
 

 fan_dir=0;

 }
____________________________________
معرفش ليه الكود بينزل معكوس
فى المنتدى
ومش عارف ارفق ملف


التعديل الأخير تم بواسطة : ماجد عباس محمد بتاريخ 05-04-2019 الساعة 05:02 AM السبب: استخدام "كود"
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

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


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

طلبك ينقصه تحديد مداخل ومخارج Pins اللتي سوف نستخدمها من الأفضل كان ارفاق صوره لمخطط الدائره او المحكاة

علي أي حال أخي لقد صممت لك طلبك تفضل

كود

كود:
   
     // ENG/ABDALLA HYGAZY
    //  FAN   CONTROL //
    // DATA 2019 / 4 / 5 //
      // PIC 16F628A //

    unsigned int DC_TEST_VOLT;
  //==========================================//
           void EEPROM() 
       {
         EEPROM_Write(0, DC_TEST_VOLT);
         delay_ms(10);
       }
   //=========================================//
     void main() {
     TRISB = 131;  PORTB = 0;

     DC_TEST_VOLT = EEPROM_Read(0); delay_ms(10);
     
     while (1){
        
     if (Button(&PORTB, 0, 10, 1)) { DC_TEST_VOLT=1; }
     if (Button(&PORTB, 1, 10, 1)) { DC_TEST_VOLT=0; }
     if (Button(&PORTB, 7, 1, 0)) { EEPROM();}


     if ( DC_TEST_VOLT==1 ) { PORTB.f2=1; }
     if ( DC_TEST_VOLT==0 ) { PORTB.f2=0; }

  }

 }
صوره المحكاة




تم تصميم البرنامج لحفظ حالة المروحة تشغيل او اطفاء عند انقطاع الطاقه عن الدائرة

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

وهنا في تصميم الدائرة استخدمت حيله اعتقد انها مجديه وهي ربط مقاومتين علي طرف PORTB.F7 كما هوا موضح في الدائره اعلاه وهنا عند وجود الطاقه من مصدر التغذيه للدائره سيكون هناك 5 فولت عابره من المقاومه 5K الي Pin 7 في PORTB وهناك مقاومه أخري مربوطه علي نفس الطرف وقيمتها 15K ولماذا 15K لأن هذه المقاومه مربوطه مع الأرضي وهناك المقاومه الأخري5K مربوطه مع 5فولت وهنا ستكون نسبة الإشاره أو الجهد الموجب علي PORTB.F7 اكثر من الإشاره السالبه وهنا لم يتحقق الشرط ولا يكتب علي ذاكرة EEPROM وهنا عند غياب مصدر الطاقه عن الدائره تنقطع ال 5 فولت عن PORTB.F7 ويحل مكانها الإشاره السالبه ويتحقق شرط الكتابة علي ذاكرة EEPROM

وهنا تأتي اهمية المكثف 1000 فاراد لأنه سوف يوفر طاقه للميكرو قد تصل الي واحد او اثنين من السواني وهوا وقت كافي جداا ليقوم الميكرو بالكتابة علي ذاكرة EEPROM قبل ان يفرغ المكثف من الطاقه ويتوقف الميكرو عن العمل

كان من الممكن الكتابه علي ذاكرة EEPROM في كل من الضغط علي فتاح تشغيل او اطفاء المروحه ولكن كان هذا يقلل من عمر ذاكرة EEPROM من كثرة الكتابه عليها

ملحوظه المفتاح K3 موضوع فقط لغرض المحكاة عند تنفيذ الدائرة العملية يمكنك الإستغناء عنة او الإبقاء عليه
لو محتاج تعديل انا حاضر بالتوفيق


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

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 05-04-2019, 05:22 AM المشاركة 4   
افتراضي


لكى تجعل الكود يظهر بالصورة الصحيحة انقر على الزر الخاص بالكود مكتوب عليه # وقد صححت لك ما رفعت

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

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

احمدمخيمر
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2011
الدولة: مصر
المشاركات: 99
نشاط [ احمدمخيمر ]
قوة السمعة:0
قديم 05-04-2019, 05:52 AM المشاركة 5   
افتراضي السلام عليكم ورحمة الله وبركاتة


استاذى مهندس عبد الله
شكرا على مساعدتك لى
اخجلتنى بردك وشرحك الوافى
انا لم اكن اتوقع الرد الشافى
زادك الله من علمه
وادام عليك الصحه واسبل عليك ستره فى الدنيا والاخره
انا كنت فاكر انى اى حد فاهم هيضيف سطر للكود الذى ارفقته وانتهى المشوار
لاكن انت وافييت وكفييت بل وذدت على ماتوقعت
اتمنى يسع صدرك وتستحملنى
عارف انك تعبت فى رسم الدائره وكتابة كود
انا لم اكتب هذا الكود فى الحقيقة
واتمنا منك تتقبلنى بدون زعل
وانا والله لم اقصد تعبك ولا اهدار وقتك
انا استخدم هذه الدائره لترييح شبكة واى فاى
باستخدام خاصية DTMF
نربط معها جوال ونفعل خاصية الرد التلقائى
مثلا نضغط 1 تعمل نضغط 2 تفصل
مع حفظ الحالة
دا كل ما اقصد ليس اكثر
سيطرأ فى بالك انى قولت مروحة
وانت نفذت دائرة على هذا القبيل
بكرر اسفى
اصلا انا لم اكتب الكود
اطررت امشى عل كوده واستخدم ترانزيستور وريلاى للتحكم فى جهد 220 (الشبكة)
ولم اذكر ما ذكرته الان بسبب لن يختلط الامر
انا قولت اى حد يضيف تفعيل الابروم اهو سطر هيضاف وليس بداعى
انما انت وفييت وصممت وجزاك الله خير
بكرر اسفى لتعبك
اتمنى من حضرتك
تساعدنى فى عمل ذلك
بأستخدام مفكك التشفير M8870 ومايكروكنترولر 16F628A
وان لزم الامر استخدام ابروم خارجى
مع طريقة توصيلة
دون الالتفات الى الكود الذى كتبته سابق
شكرا لك


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

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


أخي لا شكر علي واجب اهلا ومرحبا بك

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

وايضاا المفتاح رقم 2 من الهاتف المتصل يصدر نغمه مختلفه عن الأولي وايضا يفك تشفيرها وتذهب النبضه للميكرو وهكذا

أعي انك تريد استخدام الميكرو لكي يحفظ لك الحاله ON او OFF

لقد اضفت لك اوامر الكتابه والقرأه لذاكرة ابروم الخاصه بهذا الميكرو اللذي ذكرته

لاحظ السطور بالون الأزرق


كود:
      
   #define  new_click        porta.f0
   #define  new_click_dir    trisa.f0
   #define  DTMF0            portb.f0
   #define  DTMF0_dir        trisb.f0
   #define  DTMF1            portb.f1
   #define  DTMF1_dir        trisb.f1
   #define  DTMF2            portb.f2
   #define  DTMF2_dir        trisb.f2
   #define  DTMF3            portb.f3
   #define  DTMF3_dir        trisb.f3

   #define  fan              porta.f2
   #define  fan_dir          trisa.f2
    void init();
    void main()
   {
       init();
       
       fan  =1;
       delay_ms(1000);
       fan=0;
       
       fan = EEPROM_Read(0);  delay_ms(10);
       
           while(1)
   {
         
       if(new_click ==1)
      {
           
           if(DTMF0==0 && DTMF1==1 && DTMF2==0 && DTMF3==0)
           {
             fan =1;
             EEPROM_Write(0, fan);  delay_ms(10);

           }
         
         
            if(DTMF0==1 && DTMF1==1 && DTMF2==0 && DTMF3==0)
            {
              fan = 0;
              EEPROM_Write(0, fan);  delay_ms(10);
            }
      }

   }


 }
 
       void init()
     {
         cmcon=7;
         DTMF0_dir=1;
         DTMF1_dir=1;
         DTMF2_dir=1;
         DTMF3_dir=1;
         fan_dir=0;

     }
بالنسبه لمفكك التشفير نحتاج هنا لخبرات مهندسنا القدير د/ ماجد عباس

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

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

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

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 05-04-2019, 07:25 AM المشاركة 7   
افتراضي


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

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

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

احمدمخيمر
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2011
الدولة: مصر
المشاركات: 99
نشاط [ احمدمخيمر ]
قوة السمعة:0
قديم 05-04-2019, 12:02 PM المشاركة 8   
افتراضي


بالظبط هو ماتفضلت به
مائه بالمائه

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


التعديل الأخير تم بواسطة : احمدمخيمر بتاريخ 05-04-2019 الساعة 12:05 PM
إضافة رد

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

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

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


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

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