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

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-09-2012, 03:49 PM المشاركة 9   
افتراضي



1- الدوال فى لغة السى Functions in C
الدالة هى جزء من كود البرنامج والتى تقوم بتنفيذ مهمة محددة بشكل متكرر ويتم استدعاؤها أثناء سريان البرنامج الرئيسى . الدوال لها اثنان من الخصائص الرئيسية : دخلها يكون له بارامتر أو أكثر وخرجها له بارامتر واحد (البارامتر هو عامل متغير تعتمد عليه الدالة أى محدد أو معلم للدالة) . كل من هذه البارامترات إما أن يكون متغير أو مصفوفة من المتغيرات , كما أن هذه البارامترات (المحددات) قد تكون فارغة .
المثال التالى يوضح هيكل الدالة :

كود:
void function (void) // Function with empty input and output parameters. {// Call the function with bracket. // Portion of code where the routine running of the function. } // Function closing bracket.
void function (int A) // function with input and output parameter. {// Call the function with clasp. // Portion of code where the routine running of the function. } // Function closing bracket.
int function (void) // Function with empty input parameter entire output. {// Call the function with clasp. // Portion of code where the routine running of the function. } // Closing bracket function.
int function (int A) // function with an input and output parameter integer. {// Call the function with clasp. // Portion of code where the routine running of the function. } // Closing bracket function.






أسماء الدوال يجب أن يتحقق فيها القواعد المتبعة فى تسمية المتغيرات .
المثال التالى يوضح دالة يمكنها حساب حاصل ضرب عددين بعلامة عشرية :

كود:
float Product (float A, float B) // Function to calculate the product of A and B. {// Call the function with clasp. float RESULT; RESULT = A * B; // Product of A and B. return RESULT; // The function returns the result stored in RESULT. } // Closing bracket function.




مثال آخر لدالة تقوم بمهام أكثر تعقيدا , حيث يمكنها حساب مساحة دائرة بمعلومية نصف قطرها :








يتم حساب مساحة الدائرة من المعادلة A = r حيث هى القيمة التقريبية 3.1416 .

كود:
float Value_PI (void) // Function that returns the value of π. {// Call the function with clasp. float PI = 3.1416; return PI; } // Closing bracket function.




فى الحالة التى يكون بالدالة متغيرات داخلية , يجب إعلانها فى بدايتها وقبل البدء أى فعل أو تعليمة أخرى .

كود:
float Area_Circle (float Radius) // Function to calculate the area of a circle. {// Call the function with clasp. float Area; Area = Value _PI () * Radius * Radius // Calculate the area of the circle. return Area; } // Closing bracket function.




يتم إنشاء الدوال بالمطور , لكن يوجد بالمتجم دوال محددة مسبقا ويمكن التعرف عليها وتناولها وفقا لمحددات الدخل والخرج وأهم تلك الدوال هى الدالة الرئيسية . وأهميتها تكمن فى حقيقة أنه عندما تعمل فأن جميع برنامج الميكروكونترولر يعمل تبعا لها تلقائيا بمجرد توصيل القدرة للميكروكونترولر . الدالة الرئيسية فى الحالة الخاصة بالميكروكونترولر لا تحتوى على بارامترات (محددات) دخل أو خرج , المثال التالى يوضح طريقة التعبير عنها :
كود:
void main (void) // declaration of the main function. {// Call the main function. // Main Program code microcontroller. } // Closing the main function.


الدوال المعدة بمعرفة المطور يجب إعلانها قبل الدالة الرئيسية , وعامة الدالة التى تستدعى عن طريق دالة أخرى يجب إعلانها قبل الدالة التى تستدعيها .
العلاقات المثلثية والوظائف الرياضة الأخرى مثل الوغاريتمات والأسس وغيرها يمكن أن تستخدم المكتبة المعرفة مسبقا بالمترجم تحت اسم C_Math .

2- إنشاء البرنامج بلغة السى Creating a program in C language


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 12-09-2012 الساعة 03:53 PM
اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-09-2012, 06:17 PM المشاركة 10   
افتراضي


5- إنشاء البرنامج بلغة السى Creating a program in C language
هيكل برنامج السى بسيط نسبيا :
  • فمن الضرورى فى البداية تعريف المتغيرات العامة أو الشاملة global التى يرى المبرمج أنها مهمة لتشغيل البرنامج , يتم التعرف على هذه المتغيرات العامة بواسطة جميع نقاط كود البرنامج بما فى ذلك الدوال المعرفة بواسطة المبرمج أو الدالة الرئيسية .
  • الخطوة التالية هى عمل تعبيرات statements حول المهام المحددة لخصائص التصميم بالبرنامج .
  • بعد ذلك يتم إعلان الدالة الرئيسية ويجب المبادرة بإعلان المتغيرات المطلوبة بداخلها . ثم كتابة الجزء الخاص بتهيئة configure و بدء initializeمنافذ portsالميكروكونترولر وهذا النموذج لا غنى عنه فى التطبيق .
  • وأخيرا يتم تحرير edit الكود الذى يحتوى تعليمات التطبيق المحدد .
فى المثال التالى يمكنك التعرف على هيكل البرنامج :


كود:
//1- Declaration of global variables. int Varible1; char Variable2; float Variable3; //2- Declaration of functions Developer. float Value _PI (void) { float PI = 3.1416; return PI; } float Calculation_Area_Circle (float Radius) { float Area; Area = Value_PI () * Radius * Radius; // Calculate the area. return Area; } //3- main function declaration void main (void) { float Value_Radius; // Declaration of variables in the main function. float Value_Area; TRISB = 0; // Port settings and modules. TRISC = 0; PORTB = 0; PORTC = 0; while (1) // specific code of the application. { Value_Area = Calculation_Area_Circle (Value_Radius); } }



6- الشرط والتكرار فى لغة السى C :

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-09-2012, 11:04 PM المشاركة 11   
افتراضي


6- الشرط والتكرار فى لغة السى C :
أشكال (صيغ) الشرط والتكرار هى جزء الهياكل الحيوية من أى كود بلغة السى , حيث يسمح لك بتكرار العد على أساس متغيرات والشرط الذى يجعل مسار البرنامج أكثر فعالية .
التعبيرات الشرطية : if, if else, switch case تسمح بإنشاء القوائم واتخاذ القرارات , والتحكم فى سريان البرنامج أو التطبيق .
بينما هياكل التكرار : while, do while , for تتيح لك إنشاء حلقات والتى تتحكم فى المهام والعمليات بالبرنامج .
أ‌- إنشاء الشروط المنطقية بلغة السى :
الشروط المنطقية تسمح لك باتخاذ القرارات بناء على "التقييم" . نتيجة (عائد) الشرط المنطقى فقط أحد القيمتان "صواب" أو "خطأ" true or false . عندما يتم تطبيق شرط منطقى مباشرة على متغير أو عدد فإن نتيجة الشرط تكون "خطأ" false عندما تكون قيمته بصفر0 وتكون نتيجته "صواب" عندما تكون قيمته أى قيمة أخرى غير الصفر .
أشكال الشرط المستخدمة فى لغة السى هى : NOT (النفى) , OR , AND . ويمكن أيضا أن تستخدم المقارنات : أكبر من , وأصغر من , أقل من أو يساوى , أكبر من أو يساوى , مختلف عن , و يساوى .
يتم عمل النفى باستخدام حرف التعجب (!) , وعمل شرط OR بالرمز (| |) , وشرط ANDبالرمز (&&) وشرك أكبر من بالرمز (>) وشرط أصغر من بالرمز (<) وشرط أكبر من أو يساوى بالرمز (> =) , والشرط أصغر من أو يساوى بالرمز (<=)وشرط التساوى بالرمز (==) وشرط الاختلاف أو عدم التساوى بالرمز (!=) . لفهم هذه العوامل بشكل واضح عليك متابعة وتحليل الأمثلة التالية :


كود:
shortA;
short B;
// The condition is true if  the value of A is 10 and the value of B is  20 .
(A == 10) && (B == 20)
// The condition is true if A is other than 5 and B is greater than 2.
(A != 5) && (B > 2)
// The condition is true if A is less than or equal to 4 and if B is greater than or equal to 6.
(A <= 4) && (B >= 6)
// The condition is true if A is not greater than 3 and if B is other than 4.
! (A > 3) && (B != 4)



ب‌- تعبير الشرط if and if else


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 13-09-2012, 12:08 AM المشاركة 12   
افتراضي


ب- تعبير الشرط if and if else
هيكل تعبير if "يقيم"(يختبر أو يتحقق) الشرط المنطقى وينفذ قطعة من الكود إذا وفقط إذا كانت نتيجة التقييم "صواب" true .
راقب هيكل تعبير if فى المثال التالى :

كود:
short Value; if (Value > 100) // This evaluates whether the variable Value is greater than 100. { // Piece of code that is executed if the result of evaluation is true. }








نفس الهيكل هو نفسه فى حالتة التعبير if else , الفرق الوحيد فى هذه الحالة أنه إذا كان تققيم الشرط "خطأ" false يتم تنفيذ الكود المرفق بقسم else.
لفهم هذه الحالة , نتابع المثال التالى :

كود:
short value; if (value> 100) // This evaluates whether the variable if value is greater than 100. { // Piece of code that is executed if the if the condition is true. } else { // Piece of code that is executed if the if the condition is false. }






يمكن تداخل nested تعبيرات if and if else لإنشاء هياكل أكثر إكتمالا وتعقيدا , يمكن توضيح هذه الخاصية بالمثال التالى :


كود:
short Value1; // Declaration of variables. short Value2 ; if (Value1 > 30) // if statement. { // Code that runs when the first if condition is true. if ((Value2 == 4) && (Value1 < 50)) // Second nested if statement . { // Code that runs when the second if condition is true . } }



ت- تعبير switch case :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 13-09-2012, 02:25 AM المشاركة 13   
افتراضي


ت- تعبير switch case :
تعبير switch case يعمل بطريقة مماثلة لتعبير if , ولكنه يختلف فى أن نتيجة تقييم الشرط تكون متغيرة بناء على قيمة متغير , ويتم تنفيذ قطعة من الكود لكل فيمة محتملة لقيم هذا المتغير . القيم يتم الإشارة إليها فى شكل "حالات" casesأو احتمال حالة المتغير والتى يختارها المبرمج بناء على الحاجة .
كل قطعة كود تخص حالة لقيمة معينة من قيم المتغير ويجب أن تنتهى بالتوجيه break بغرض فصل سريان هيكل switch case بعد كل حالة تمهيدا لحالة أخرى . المثال التالى يوضح ذلك :



كود:
short value; switch (Value) // Evaluation of the variable value. { case 0: // Code Snippet for the value 0 to the variable value. break; // Breakdown of case 0. case 1: // Code Snippet for the value 1 of the variable value. break; // Breakdown of case 1. case 10: // Code Snippet for the value 10 to the variable value. break; // Breakdown of case 10. case 20: // Code Snippet for the value 20 to the variable value. break; // Breakdown of case 20. case 50: // Code Snippet for the value 50 to the variable value. break; // Breakdown of case 50. default: // Code for any other default. break; // Breakdown of default. }

ث- تعبير التكرار while and do while :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 13-09-2012, 03:03 AM المشاركة 14   
افتراضي


ث- تعبير التكرار دوريا while and do while :
تعبير التكرار دوريا يؤدى إلى تكرار قطعة من الكود طالما أن الشرط المتضمن فى التعبير "صواب"true. لنتعرف على طريقة إعلان هذا النوع من التكرار , من خلال المثال التالى :



كود:
short COUNT = 0; // Declaration integer variable that counts up to 100. while (COUNT < 100) // Declaration of the while loop. { COUNT ++; // Increment the variable COUNT. }






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

short COUNT = 0; // Declaration integer variable that counts up to 100.
do // Declaration of do while loop.
{
COUNT ++; // Increment the variable COUNT.
} While (CONT < 100);






ج- تعبير التكرار for :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 13-09-2012, 04:00 AM المشاركة 15   
افتراضي


ج- تعبير التكرار for :
تعبير التكرار for يشبه هيكل حلقة while , الفرق فى وجود بنية أكثر تعقيدا فى ما بين القوسين . فى هذه الحالة الشرط له ثلاثة بارامترات (محددات) , الحيز الأول مخصص لإعطاء قيم ابتدائية لمتغير أو أكثر , والحيز الثانى لإنشاء الشرط المنطقى الذى يسبب تكرار جزء الكود فى حالة صوابه , والحيز الأخير لتنفيذ تغيير فى متغير أو أكثر , مثل : التزايد , التناقص , وما إلى ذلك . المتغيرات التى يتم تغييرها فى الحيز الأخير عامة هى نفسها التى يتم بدؤها فى الحيز الأول , لكنها ليست قاعدة . لنرى هيكل for فى النموذج التالى :

كود:
for (_Initiation_; _Condition_; _Change_) { }





المثال التالى يوضح حلقة for :

كود:
short A; // Declaration of variables. short B; for (A = 0, B = 100; (A < 100) || (B > 20); A ++, B --) // for loop structure. { // Piece of code that is executed when the for condition is true . }





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


كود:
short Column; // Declaration of variables. short Row ; short Array [10] [10] ; // Declaration of a two-dimensional Array. for (Column = 0; Column < 10; Column ++) // for loop statement. { // Extract the first loop. for (Row = 0; Row < 10; Row ++) // nested for loop statement. { // Fragment nested loop. Array [Column] [Row ] = Column * Row ; } }




فى هذا المثال يتم تخزين القيم فى مصفوفة ذات بعدين (10 by 10) ويتم الانتقال من موقع لموقع .

الفصل القادم :
المحاكاة ببرنامج إيزيس ISISضمن حزمة برمجيات بروتيس Proteus


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 14-09-2012, 02:49 PM المشاركة 16   
افتراضي


الفصل الثالث :
المحاكاة ببرنامج إيزيس ISIS ضمن حزمة برمجيات بروتيس Proteus
محاكى برنامج ISIS هو حزمة برمجيات قوية , والمطورة بواسطة شركة Labcenter electronics , والتى جعلت من نفسها ولأكثر من عشر سنوات , كأحدى أكثر الأدوات المفيدة لمحاكاة الميكروكونترولر PICmicro .
يسمح برنامج ISIS بالمحاكاة لأكثر الميكروكونترولر إنتشارا PICmicro مثل 12F, 16F, 18F . بالإضافة إلى الميكروكونترولر PIC , يمكن لبرنامج ISIS محاكاة مجموعة متنوعة من الأجهزة الرقمية والتناظرية , فمن الأجهزة الرقمية يمكن محاكاة وحدت العرض ذات قطع الليدات السبعة seven-segment التى تعرض الحروف والرسومات . برنامج إيزيس ISIS يمكنه محاكاة أجهزة استشعار درجة الحرارة والرطوبة والضغط والضوء وغيرها . يسمح لك المحاكى بمحاكاة المنفذات actuators مثل محركات التيار المستمر ومحركات السرفو والمصابيح المتوهجة وغيرها الكثير . من الممكن محاكاة دخل وخرج الأجهزة الطرفية مثل لوحة المفاتيح ومنافذ الكومبيوتر الطبيعية مثل RS232 و USB . هذا المحاكاة بها تشكيلة واسعة من أدوات القياس مثل مقياس الجهد (الفولتميتر) ومقياس الأمبير (الأمبيرميتر) وراسم الذبذبات (الأوسيلوسكوب) وجهاز تحليل الإشارات . النتيجة أن كل ذلك وغيرها من الميزات جعلت من برمجيات Proteus-ISISأداة مثالية لتصميم ودراسة الميكروكونترولر PICmicro . يمكن تحميل الإصدار التجريبى لحزمة البرمجيات من الموقع www.labcenter.com . الشكل التالى يوضح مظهر بيئة التطوير إيزيس ISIS .




العمل تحت إيزيس ISIS يتطلب منك معرفة مجموعة واسعة من الأدوات والخيارات والتى يجب أن تعرفها ولكن تدريجيا ومن خلال الأمثلة .

خصائص ISIS للمحاكاة الأساسية :



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