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

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

eng_mustafa_hegazy87
:: مهندس ::
تاريخ التسجيل: Mar 2017
المشاركات: 7
نشاط [ eng_mustafa_hegazy87 ]
قوة السمعة:0
قديم 26-03-2017, 08:50 PM المشاركة 1   
ha مشكلة ضبط الـ delayتواجهني في الميكرو pic16f877a Twitter FaceBook Google+



السلام عليكم و رحمة الله و بركاته
قمت ببرمجة مشروع عداد على 7segment من النوع multiplexing -4digits common anode و قمت بحرق البرنامج على البك pic16f877a و قمت بتجريبه عملي و الحمد لله البرنامج اشتغل كويس لكن عندي ملاحظة ان الوقت الزمني في الواقع اكبر حوالي 4 او 5 اضعاف من الوقت المكتوب على البك علما باني استخدم كريستالة 4mhz ومكثفين 22 بيكو فاراد ...فكيف اضبط الوقت مع تردد الكريستالة و شكرا
البرنامج
.
.
.
while(1)
{ for(x=0;x<=125;x++)
{
en1=on;
en2=off; en3=off; en4=off;
sev_seg=seg[num1/1000];
delay_ms(2);
sev_seg=0;

en2=on;
en1=off; en3=off; en4=off;
sev_seg=seg[num1%1000/100];
delay_ms(2);
sev_seg=0;

en3=on;
en1=off; en2=off; en4=off;
sev_seg=seg[num1%1000%100/10];
delay_ms(2);
sev_seg=0;

en4=on;
en1=off; en2=off; en3=off;
sev_seg=seg[num1%1000%100%10];
delay_ms(2);
sev_seg=0;
}
num1++; if(num1==10000) num1=0;
}
}

اعلانات

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


ارجع لملف المساعدة للتعليمة delay_ms ستجد انها غير دقيقة كما أن باقى الأوامر تحتاج وقت لتنفيذها و يصعب حسابه بدقة خاصة الأوامر ذات الإحتمالين مثل FOR حيث لها وقت أثناء الدورة ووقت مختلف عند اكتمالها لذا إن شئت الدقة يجب استخدام المقاطعة interrupt

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

rigbi
:: مهندس ::
تاريخ التسجيل: Nov 2016
المشاركات: 36
نشاط [ rigbi ]
قوة السمعة:0
قديم 27-03-2017, 08:35 PM المشاركة 3   
افتراضي


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


eng_mustafa_hegazy87
:: مهندس ::
تاريخ التسجيل: Mar 2017
المشاركات: 7
نشاط [ eng_mustafa_hegazy87 ]
قوة السمعة:0
قديم 28-03-2017, 04:00 PM المشاركة 4   
افتراضي


ارجع لملف المساعدة للتعليمة delay_ms ستجد انها غير دقيقة كما أن باقى الأوامر تحتاج وقت لتنفيذها و يصعب حسابه بدقة خاصة الأوامر ذات الإحتمالين مثل FOR حيث لها وقت أثناء الدورة ووقت مختلف عند اكتمالها لذا إن شئت الدقة يجب استخدام المقاطعة interrupt
اولا شكرا للرد
ثانيا
اعذرني اخي انا لست متمكنا في البرمجة
فانا قرأت عن الامر interrupt في الداتا شيت للميكرو 16f877a لكني لم افهم كيف استخدامه او كتابة اوامره في الميكروسي و ايضا قرأت عن التايمر 0 و التايمر 1 و لم افهم كيف يتم استخدامهم لاعطائي الـ DELAY الحقيقي للزمن


eng_mustafa_hegazy87
:: مهندس ::
تاريخ التسجيل: Mar 2017
المشاركات: 7
نشاط [ eng_mustafa_hegazy87 ]
قوة السمعة:0
قديم 28-03-2017, 04:03 PM المشاركة 5   
افتراضي


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


rigbi
:: مهندس ::
تاريخ التسجيل: Nov 2016
المشاركات: 36
نشاط [ rigbi ]
قوة السمعة:0
قديم 28-03-2017, 11:28 PM المشاركة 6   
افتراضي


اولا شكرا للرد
ثانيا
اعذرني اخي انا لست متمكنا في البرمجة
فانا قرأت عن الامر interrupt في الداتا شيت للميكرو 16f877a لكني لم افهم كيف استخدامه او كتابة اوامره في الميكروسي و ايضا قرأت عن التايمر 0 و التايمر 1 و لم افهم كيف يتم استخدامهم لاعطائي الـ DELAY الحقيقي للزمن
بالنسبة للانتربت و التايمر تعتبر دروس سهلة + هناك برنامج جاهز في الميكروسي بدون عناء و لا جهد اسمه Timer Calculator ستجده في هذه الصفحة https://www.mikroe.com/supporting-software/ هو سهل تعطيه الوقت اللذي تريده و يعطيك البرنامج جاهز
ابحث عن شرح له في يوتيوب و سوف تجد العديد من الاخوة يشرحونه + كونك مبتدء استعمل 16f84a بالتوفيق


eng_mustafa_hegazy87
:: مهندس ::
تاريخ التسجيل: Mar 2017
المشاركات: 7
نشاط [ eng_mustafa_hegazy87 ]
قوة السمعة:0
قديم 29-03-2017, 06:43 PM المشاركة 7   
افتراضي


شكرا اخي على الرد و سأقوم بتجربة ما قلته
و انا بالفعل اقوم بتجربة جميع انواع البك 16f628a و 16f877a و 16f886 و 16f84a

إضافة رد

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

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

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


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

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