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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 10-03-2011, 11:55 AM المشاركة 1   
افتراضي التدريبات العملية : التدريب رقم2 Tutorial 2 تطبيقات استخدام المؤقت TMR0 كعداد Twitter FaceBook Google+



التدريب رقم 2 Tutorial 2

الغرض :
  • استخدام المؤقت TMR0 كعداد .
  • الإعلان عن متغيرات جديدة .
  • طريقة التعامل مع مجموعة من الثوابت مرتبة ترتيب محدد وتسمى enumerated
  • استخدام الريلاى فى الخرج .
  • استخدام أطراف المداخل .
نبذة عن بيانات التعداد (الإحصاء) Enumeration
تستخدم البيانات من النوع الإحصائى فى تمثيل مجموعة من المتغيرات أو الثوابت بأسماء رمزية مناسبة بشكل منظم.
الإعلان عن مجموعة المتغيرات أو الثوابت الإحصائية :
الصيغة :






حيث "tag " هو اسم اختيارى للإحصاء , و " enumeration-list " هى قائمة المتغيرات أو الثوابت . كل متغير أو ثابت فى المجموعة يخصص له قيمة ابتدائية عددية صحيحة .
فى حالة غياب التخصيص فأن أول متغير أو ثابت فى المجموعة يخصص له القيمة "0" والذى يليه يخصص له القيمة "1" وهكذا حيث تتزايد القيمة بواحد كلما تقدمنا .
يتم الإعلان عن المتغيرات من النوع " enum " كأى متغير آخر .
مثال :






تعنى الإعلان عن مجموعة من المتغيرات تحت مسمى " colors " "الألوان" وهذه المجموعة يخصص لها القيم الابتدائية أى : black = 0 و red = 1 و.....
يمكن تخصيص قيم لبعض المتغيرات وينتج عن ذلك إسناد قيم لمتغيرات أخرى تبعا لذلك كما يمكن إعادة تنظيم الصيغة بالشكل التالى :






الدائرة الكهربية :

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 10-03-2011, 11:57 AM المشاركة 2   
افتراضي


الدائرة الكهربية :











ملخص لعمل البرنامج :
  • المؤقت TMR0 يستخدم كعداد . مدخل العداد RA4 متصل بمفتاح ضاغط بحيث أن كل ضغطة تسبب عد المؤقت TMR0 نبضة واحدة .
  • عندما يتوافق عدد النبضات بسجل المؤقت TMR0 مع العدد المخزن فى السجل TEST يظهر المنطق المرتفع (5V)على طرف الخرج PORTD.3 . هذا الجهد يؤدى إلى تشغيل ريلاى , وهذه الخانة تسمى ‘RELAY’ فى البرنامج .
  • فى هذا البرنامج يحتفظ السجل TEST بالعدد 5 . بطبيعة الحال يمكن أن يكون هذا العدد أى عدد آخر نحصل عليه إما من الحسابات أو بتعريفه كثابت . بجانب ذلك يمكن للميكروكونترولر أن يقوم بتفعيل أجهزة أخرى بدلا من الريلاى كما يمكن استخدام أى حساس بدلا من المفتاح الضاغط .
  • هذا المثال يوضح أحد أهم التطبيقات الشائعة للميكروكونترولر فى الصناعة , بمعنى عندما يتم إجراء شىء ما عدة مرات , حسب الحاجة , عندئذ يتم توصيل أو فصل شىء آخر .


البرنامج :

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 10-03-2011, 12:01 PM المشاركة 3   
افتراضي


البرنامج :











شرح البرنامج خطوة بخطوة :




1- رأس (مقدمة) البرنامج

/*Header******************************************* ***********/

2- الدالة الرئيسية :

void main() {

3- الإعلان عن متغير من نوع الحروف char اسمه TEST واسناد القيمة 5 إليه ومن ثم يعتبر ثابت القيمة أى يمكن استخدام متغير نوع int أو ثابت const .
والإعلان عن مجموعة الثوابت الإحصائية {….,….}enum خاصة بالمخارج outputs من هذه المجموعة ثابت باسم RELAY ويخصص له القيمة 3 . بالطبع طالما أنه ثابت واحد يمكن استخدام const فنقول " const RELAY = 3 "ولكننا نعمم حتى نستطيع استخدام مجموعة مخارج فيما بعد.

char TEST = 5; // Constant TEST = 5
enum outputs {RELAY = 3}; // Constant RELAY = 3

4- تهيئة جميع الأطراف كمداخل أو مخارج رقمية فقط
ANSEL = 0; // All I/O pins are configured as digital
ANSELH = 0;
5- تصفير المنفذ PORTA كوضع ابتدائى آمن
PORTA = 0; // Reset port A

6- تهيئة جميع أطراف المنفذ PORTA كمداخل
TRISA = 0xFF; // All portA pins are configured as inputs

7- تصفير المنفذ PORTD كوضع ابتدائى آمن
PORTD = 0; // Reset port D

8- تهيئة الطرف RD3 بالمنفذ PORTD كمخرج وباقى الأطراف كمداخل
TRISD = 0b11110111; // Pin RD3 is configured as an output, while the rest are
// configured as inputs

9- تهيئة سجل المؤقت TMR0 ليعمل كعداد ويستقبل النبضات من على الطرف RA4 واستخدامه مع معامل قسمة تردد بالقيمة Prescaler = 1:1

OPTION_REG.F5 = 1; // Counter TMR0 receives pulses through the RA4 pin
OPTION_REG.F3 = 1; // Prescaler rate is 1:1

10- تصفير سجل المؤقت TMR0 ليبدأ العد من الصفر
TMR0 = 0; // Reset timer/counter TMR0

11- دخول حلقة do{…..} while بتنفيذ جسمها أولا حيث نجد تعبير شرط يستخدم if وشرط تنفيذ ما بعدها (جسمها) هو التكافؤ بين محتويات سجل المؤقت ومتغير معرف مسبقا أى :
TMR0 == TEST أى السؤال هل العدد الموجود فى المؤقت متوافق مع الثابت TEST ؟
do {
if (TMR0 == TEST)// Does the number in timer match constant TEST?

12- أن كانت الإجابة بنعم يتم تنفيذ العبارة التالية والتى تفعيل (1) الريلاى المتصل الطرف RD3

(PORTD.RELAY = 1);// Numbers match. Set the RD3 bit (output RELAY)

13- إذا كانت الإجابة لا يتم الخروج من حلقة do ليجد البرنامج نفسه فى حلقة while الغير منتهية فيكرر العملية .
}

while (1); // Remain in endless loop
}


ملحوظات :
  • فى هذا البرنامج تم استخدام ثابت واحد هو "RELAY" من ضمن مجموعة الثوابت
"enum outputs" وتم إسناد القيمة 3 اليه عند إعلانه أى RELAY = 3 .

  • عند توصيل عدة أطراف من المنفذ port D بريلايات فإن التعبير السابق يمكن كتابته بالطريقة التالية :

  • جميع الثوابت التى تلى الثوابت المسند إليها قيم وهى (RELAY = 3 , MOTOR = 6) يتم تلقائيا إسناد قيم لها بتزايد واحد بالنسبة للسابق لها . فى هذا البرنامج يتم إسناء القيمة 4 للثابت HEATER أى يكون HEATER = 4 ويتم إسناد القيمة 7 للثابت يكون الثابت PUMP أى يكون PUMP = 7 .
تعديل البرنامج ليعمل مع الميكروكونترولر PIC16F84


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 10-03-2011, 12:03 PM المشاركة 4   
افتراضي


تعديل البرنامج ليعمل مع الميكروكونترولر PIC16F84









hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 587
نشاط [ hamadalla31 ]
قوة السمعة:0
قديم 10-03-2011, 01:29 PM المشاركة 5   
افتراضي


بارك الله لك استاذي الكريم
نريد مثال اخر كعداد تردد اوتيمر
وجزاكم الله بكل خير


king ridha
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2010
المشاركات: 96
نشاط [ king ridha ]
قوة السمعة:0
قديم 10-03-2011, 03:51 PM المشاركة 6   
x4


السلام عليكم
بارك الله فيك على الدروس


عندى اقتراح استاذي عبد العزيز وهو

ان تضع الدروس في ملفات pdf او وورد

جزاك الله كل الخير


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 10-03-2011, 04:05 PM المشاركة 7   
افتراضي


بارك الله لك استاذي الكريم
نريد مثال اخر كعداد تردد اوتيمر
وجزاكم الله بكل خير
اخى الكريم
شكرا جزيلا لك

بارك الله فيك

ان شاء الله التدريب القادم أيضا على المؤقتات

مع تمنياتى بدوام التوفيق


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 10-03-2011, 04:07 PM المشاركة 8   
افتراضي


السلام عليكم

بارك الله فيك على الدروس


عندى اقتراح استاذي عبد العزيز وهو

ان تضع الدروس في ملفات pdf او وورد

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

بارك الله فيك

ان شاء الله المرحلة التالية يتم ذلك

مع تمنياتى بدوام التوفيق

إضافة رد

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

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

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


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

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