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

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

salim2
:: مهندس ::
تاريخ التسجيل: Aug 2007
الدولة: الجزائر
المشاركات: 38
نشاط [ salim2 ]
قوة السمعة:0
قديم 30-12-2019, 10:51 AM المشاركة 1   
افتراضي طلب مساعدة في هذا البرنامج Twitter FaceBook Google+



بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
هذا البرنامج البسيط يقوم بالعمل التالي: عند الضغط على السويتش يشتعل الليد ثم ينتظر لمدة 500 ميلي ثانية ثم ينطفئ لمدة 500 ميلي ثانية ويكرر نفس العمل وهذا باستعمال البيك 16f84a والمذبذب 4.00 ميجاهرتز ، ولكن بعد التطبيق الفعلي على الواقع لاحظت وجود مشكلة وهي عند تغذية الدائرة فإن الليد في كثير من الأحيان يشتعل مباشرة من تلقاء نفسه قبل الضغط عل السويتش خاصة إذا قمت بتغذية الدائرة وفصلها بسرعة ولمرات متتالية ، لذا أريد أن لا يشتعل الليد عند التغذية مباشرة حتى يتم الضغط على السويتش فعلا جزاكم الله خيرا.

البرنامج
;void main() { trisa.f0=1; trisb=0;portb=0
while(1) { if(porta.f0==1){portb=0b00001000;delay_ms(500);por tb=0x0;delay_ms(500);}

{{

الدائرة


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

http://www.mediafire.com/file/l709s8...titre.png/file


التعديل الأخير تم بواسطة : salim2 بتاريخ 30-12-2019 الساعة 11:46 AM
اعلانات

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


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


أيضا من الإعدادات فعل خاصية POR لبدء البرنامج من الأول عند انخفاض جهد التغذية

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

الصورة الرمزية عريبى محمود
عريبى محمود
:: ( رحمه الله عليه ) ::
تاريخ التسجيل: Jan 2009
الدولة: لا تسأل الطغاه لماذا طغو بل اسأل العبيد لماذا انحنو
المشاركات: 3,139
نشاط [ عريبى محمود ]
قوة السمعة:188
قديم 31-12-2019, 08:38 PM المشاركة 3   
x4





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

قم بتغذية الدائرة باستخدام البطارية .....واخبرنا

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

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


بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
هذا البرنامج البسيط يقوم بالعمل التالي: عند الضغط على السويتش يشتعل الليد ثم ينتظر لمدة 500 ميلي ثانية ثم ينطفئ لمدة 500 ميلي ثانية ويكرر نفس العمل وهذا باستعمال البيك 16f84a والمذبذب 4.00 ميجاهرتز ، ولكن بعد التطبيق الفعلي على الواقع لاحظت وجود مشكلة وهي عند تغذية الدائرة فإن الليد في كثير من الأحيان يشتعل مباشرة من تلقاء نفسه قبل الضغط عل السويتش خاصة إذا قمت بتغذية الدائرة وفصلها بسرعة ولمرات متتالية ، لذا أريد أن لا يشتعل الليد عند التغذية مباشرة حتى يتم الضغط على السويتش فعلا جزاكم الله خيرا.

البرنامج
;void main() { trisa.f0=1; trisb=0;portb=0
while(1) { if(porta.f0==1){portb=0b00001000;delay_ms(500);por tb=0x0;delay_ms(500);}

{{

الدائرة


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

http://www.mediafire.com/file/l709s8...titre.png/file
السلام عليكم

اخي الكريم انصحك بستخدام هذة التعليمة الشرطيه في تعاملاتك مع السويتشات لأنها تضمن لك استقرار اكثر للبرنامج
كود:
  if (Button(&PORTB, 2, 10, 1)){  }
لو استخدمت هذة التعليمة هكذا
كود:
if(porta.f0==1){portb=0b00001000;}
هنا لو وصلت نبضه موجبة سريعة سيعتبرها الميكرو انه تم الضغط علي المفتاح وسوف يتحقق الشرط فوراا وهذا يسبب المشاكل وعدم استقرار البرنامج ليكون عرضة لأي شوشرة او نابضة ضالة تؤسر علي تحقق الشرط
ولكن لاحظ هذة التعليمة الشرطية
كود:
  if (Button(&PORTB, 2, 10, 1)){delay_ms(500) ; }
هنا أمر اختبار هل تم تطبيق 5 فولت علي البن رقم 2 في البورت B وهنا لاحظ الإختلاف

لو تم وصول نابضة موجبة سريعه علي البن رقم 2 في البورت B ماذا سوف يحدث هل يتحقق الشرط الإجابة ( نعم ) ولكن هذة النبضه هي نبضة سريعة جدا قد تصل سرعتها الي واحد ميكرو سانية أو أكثر وعند حدوث هذة النبضه يتحقق الشرط ويدخل ينتظر 10 ميكرو سانية ويختبر الشرط مرة أخري هل ماذال هناك جهد علي البن لو موجود يتحقق الشرط لو اختفي الجهد لم يتحقق الشرط .. وهنا ميزة كبيرة جداا.

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

وهكذا يكون البرنامج اكثر استقرارا
تفصيل التعليمه
كود:
  if (Button(&PORTB, 2, 10, 1)){delay_ms(500) ; } 
if (Button(&PORTB, 2 هنا هل تم الضغط علي المفتاح 10 انتظر عشرة ميلي سانية , 1 هل ماذال مضغوط علي المفتاح حسنا نفذ ما بين القوسين
كود:
{delay_ms(500) ; }
. وهنا رقم 2 هوا رقم البن في البورت ورقم 10 وقت انتظار ورقم 1 الحاله واحد منطقي ويمكنك تغيرها ب 0 صفر منطقي

بالتوفيق


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

salim2
:: مهندس ::
تاريخ التسجيل: Aug 2007
الدولة: الجزائر
المشاركات: 38
نشاط [ salim2 ]
قوة السمعة:0
قديم 02-01-2020, 07:32 AM المشاركة 5   
افتراضي


جزاكم الله خيرا سوف أخبركم بعد تجربة النصائح إن شاء الله.


salim2
:: مهندس ::
تاريخ التسجيل: Aug 2007
الدولة: الجزائر
المشاركات: 38
نشاط [ salim2 ]
قوة السمعة:0
قديم 02-01-2020, 07:39 AM المشاركة 6   
افتراضي


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


الصورة الرمزية عريبى محمود
عريبى محمود
:: ( رحمه الله عليه ) ::
تاريخ التسجيل: Jan 2009
الدولة: لا تسأل الطغاه لماذا طغو بل اسأل العبيد لماذا انحنو
المشاركات: 3,139
نشاط [ عريبى محمود ]
قوة السمعة:188
قديم 02-01-2020, 06:17 PM المشاركة 7   
x4


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

نفذ ما اشار به اخى عبد الله حجازى ...هناك امر برمجى اخر يمكن ان يحل المشكلة من وجهة نظرى






.


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


بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
هذا البرنامج البسيط يقوم بالعمل التالي: عند الضغط على السويتش يشتعل الليد ثم ينتظر لمدة 500 ميلي ثانية ثم ينطفئ لمدة 500 ميلي ثانية ويكرر نفس العمل وهذا باستعمال البيك 16f84a والمذبذب 4.00 ميجاهرتز ، ولكن بعد التطبيق الفعلي على الواقع لاحظت وجود مشكلة وهي عند تغذية الدائرة فإن الليد في كثير من الأحيان يشتعل مباشرة من تلقاء نفسه قبل الضغط عل السويتش خاصة إذا قمت بتغذية الدائرة وفصلها بسرعة ولمرات متتالية ، لذا أريد أن لا يشتعل الليد عند التغذية مباشرة حتى يتم الضغط على السويتش فعلا جزاكم الله خيرا.

البرنامج
;void main() { trisa.f0=1; trisb=0;portb=0
while(1) { if(porta.f0==1){portb=0b00001000;delay_ms(500);por tb=0x0;delay_ms(500);}

{{

الدائرة


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

http://www.mediafire.com/file/l709s8...titre.png/file


اخي لقد جربت الكود علي تيست بورد ويعمل جيدا
وهذا الكود
كود:
            void main() {
           TRISA=0; PORTA=0;
           TRISB=0; PORTB=0;

             while(1){

      if(PORTA.F0==1){ PORTB.F0=1; delay_ms(230);}
       delay_ms(500); PORTB.F0=0;


    }
   }
محكاة



بالتوفيق

إضافة رد

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

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

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


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

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