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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 17-05-2017, 11:43 AM المشاركة 1   
افتراضي للمبتدئين الميكروكونترولر PIC والبرمجة بلغة السى مع المترجم ميكروسى برو والمحاكاة Twitter FaceBook Google+



للمبتدئين الميكروكونترولر PIC والبرمجة بلغة السى مع المترجم ميكروسى برو والمحاكاة ببرنامج ISIS :

مقدمة :

ما هو الميكروكونترولر Microcontroller  ؟
الميكروكونترولر هو كمبيوتر صغير مدمج فى شكل دائرة متكاملة (شريحة) واحدة ، فهو يحتوى بداخلة ، فى الأساس ، على وحدة معالجة مركزية CPU  وذاكرات ( ذاكرة البرنامج من نوع الفلاش Flash ، وذاكرة البيانات من نوع RAM ، وذاكرة البيانات الثابتة من نوع EEPROM ) ، ووحدات (منافذ) الدخل / الخرج I/O Ports بالإضافة إلى العديد من الوحدات الأخرى كما هو موضح بالشكل التالى :







وحدة المعالجة المركزية هى قلب الميكروكونترولر ، وهى الجزء الخاص بتنفيذ التعليمات من برنامج المستخدم .
ذاكرة البرنامج الفلاش Flash هى المكان الذى يتم فيه حفظ البرنامج ، وذاكرة البيانات RAM هى مواقع حفظ البيانات المتغيرة أثناء تشغيل البرنامج ، كل موقع من مواقع هذه الذاكرة مكون من بايت واحد ( البايت مكون من 8 بتات bit0-bit7 ) ، هذه المواقع تسمى "السجلات Registers وهى مقسمة إلى جزأين : "سجلات الوظائف الخاصة" SFR ، وسجلات الوظائف العامة GPR . كل سجل من سجلات الوظائف الخاصة يقوم بوظيفة محددة ، فعلى سبيل المثال "سجلات التحكم فى اتجاه منافذ الدخل / الخرج" وتسمى TRISx ، كل منفذ له سجل تحكم خاص به ( TRISAالسجل  للمنفذ PORTA والسجل TRISB للمنفذ PORTB وهكذا) . كل سجل TRIS مكون من 8 بتات وكل بت تتحكم فى اتجاه طرف منفذ دخل/خرج ، فعندما تكون بت السجل TRIS بواحد “1” فإن ذلك يجعل طرف المنفذ المناظر يعمل كدخل Input (لاحظ الحرف “I” وقيمة الواحد “1” )، وعندما تكون بت السجل TRIS بصفر “0” فإن ذلك سوف يجعل طرف المنفذ المناظر يعمل كخرج Output ( لاحظ الحرف  “O” وقيمة الصفر “0” ) .



ذاكرة البيانات الثابتة من النوع EEPROM تحتفظ بالبيانات التى بداخلها حتى مع غياب القدرة الكهربية عن الميكروكونترولر على خلاف البيانات التى يتم حفظها فى ذاكرة RAM فإنه يتم محوها (فقدها) بمجرد غياب القدرة أو حتى إعادة تشغيل الميكروكونترولر .
وحدات الدخل/الخرج هى وسيلة الربط Interface بين العالم الخارجى وداخل الميكروكونترولر . وحدات أو منافذ الدخل / الخرج يمكن أن تستقبل بيانات (مداخل) ، أو ترسل بيانات (مخارج ) أو تقوم بوظيفة خاصة تبعا لسجلات التحكم الموجودة بذاكرة RAM .  
برنامج الميكروكونترولر هو مجموعة من التعليمات التى يتم تنفيذها عن طريق وحدة المعالجة المركزية . لغة البرمجة التى سوف نستخدمها هى لغة السى مع المترجم ميكروسى برو والتى سوف نتناولها لاحقا .
بعد كتابة البرنامج وترجمته نحصل على ملف بالامتداد "هكس" (.hex) وهو الذى يتم تحميله داخل ذاكرة البرنامج للميكروكونترولر عن طريق جهاز برمجة خاص بذلك .

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

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,795
نشاط [ مسلم11 ]
قوة السمعة:183
قديم 17-05-2017, 11:53 AM المشاركة 2   
افتراضي


بارك الله بك وزادك شرفا وعلما.
اخي الكريم ماالمقصود حرفيا بالسجلات
TRIS وPORT ان ما اقصده هل هي مقتصره على كعناها الانكليزي ام لها معنى آخر يفهمه المتحكم
وايضا تلك السجلات التي ذكرت لك سابقا

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

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


السجلات Register :
السجلات هى مكان داخل الميكروكونترولر PIC (الكومبيوتر) والتى تستخدم فى الكتابة إليها أو القراءة منها أو الاثنين معا . يمكنك أن تفكر فى السجل كقطعة من الورق حيث يمكنك قراءة ما بها والكتابة عليها .
تقسم ذاكرة الميكروكونترولر PIC إلى تتابع من السجلات . كل سجل لع عنوانه الذى يحدد موقعه . يمكن تصنيف السجلات فى الميكروكونترولر PIC ، تبعا لنوع العمل والاستخدام إلى فئتين :
سجلات الأغراض العامة General Purpose Registers (GPR) :
سجلات الأغراض العامة هى جزء صغير من ذاكرة RAM والتى يمكن الوصول إليها بشكل أسرع من باقى الذاكرة . الشكل التالى يبين خريطة السجلات للميكروكونترولر PIC16F877A وفيها تظهر سجلات الأغراض العامة .
سجلات الوظائف الخاصة Special Function Registers (SFR) :
سجلات الوظائف الخاصة هى أيضا سجلات ذاكرة RAM . والتى تستخدم لوظائف خاصة محددة . هذه السجلات تقوم بتنفيذ وظائف محددة داخل شريحة الميكروكونترولر PIC . فكل وظيفة خاصة داخل الميكروكونترولر يتم التحكم فيها عن طريق هذه السجلات . من ضمن هذه السجلات سجلات المنافذ PORT وسجلات التحكم فى اتجاه المنافذ TRIS وغيرها .
لا تنزعج ، فذلك للتوضيح فقط وللتعرف على قطعة داخل الميكروكونترولر PIC ، وسوف نتناول الكثير منها لاحقا .



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


برنامجك الأول مع الميكروكونترولر PIC والمترجم ميكروسى برو :
مرحبا بك فى عالم الميكروكونترولر PIC . إذا كنت مبتدىء فى مجال الميكروكونترولر وترغب فى خوض غمار هذا المجال فأنت فى المكان الصحيح . المترجم ميكروسى MikroC هو أفضل مترجم للمبتدئين لأنه يحتوى على دوال (وظائف) functions من أجل معظم المهام الشائعة الاستخدام .
سوف تحتاج إلى برنامج المترجم ميكروسى برو لتحرير وترجمة البرنامج والحصول على الملف HEX ، وبرنامج بروتيس Proteus لرسم الدائرة الكهربية وتحميل الملف HEX بغرض إجراء محاكاة البرنامج .

البداية مع المترجم ميكروسى برو MikroC Pro :
يمكنك تحميل الإصدار المجانى من المترجم ميكروسى برو من موقع mikroElectronika ، هذا الإصدار محدود ببرنامج حتى 2k وهى كافية لمعظم التطبيقات التى سوف نقوم بالعمل عليها .
• قم بتنزيل وتثبيت برنامج المترجم ميكروسى برو .
• قم بإنشاء مجلد لهذا المشروع فى أى مسار لمكان على الكمبيوتر ترغب فى حفظ أعمالك عليه .
• قم بفتح (تشغيل برنامج الميكروسى برو تظهر لك نافذة الترحيب التالية :


• انقر على أيقونة New Project أو من القائمة Project اختار New Project ، تظهر لك نافذة معالج المشروع الجديد كما يلى :



• انقر على "التالى" Next ، تظهر لك نافذة لأول خطوة وهى إعدادات البرنامج كما يلى :



• الخطوة الأولى : أدخل اسم المشروع ، ومسار المجلد الذى تم إنشاؤه سابقا (يمكنك إنشاؤه حاليا) ، والميكروكونترولر المستخدم ، وتردد الساعة ثم انقر Next . تردد الساعة هو تردد المذبذب المستخدم مع الميكروكونترولر . هنا سوف نستخدم الميكروكونترولر PIC16F877A مع كريستال بتردد 4MHz .



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



• الخطوة الثالثة : هنا يمكنك إضافة (ضم) المكتبات المدمجة فى المترجم ميكروسى مثل UART, PWM, LCD etc ، يمكنك ضم جميع المكتبات (الوضع الافتراضى وهو الذى سوف نعمل عليه ) أو عدم ضم أى مكتبة على أن يتم ضم المكتبة المحددة المطلوبة فى وقت لاحق . بعد ذلك انقر Next .



• الخطوة الرابعة : انقر Finish لإنهاء معالج المشروع الجديد .
• عندئذ سوف ترى "المحرر" editor ، حيث يمكنك إدخال كود لغة السى .



المترجم يقدم لك المحرر ومكتوب فيه بالفعل الجزء الأساسى لأى برنامج مكتوب بلغة السى ، والذى يسمى بالدالة الرئيسية main ، حيث يبدأ البرنامج الفعلى . لاحظ أن الدالة الرئيسية مكون من اسم الدالة main وقوس بداية تعليمات جسم الدالة وقوس نهاية تعليمات جسم الدالة :

كود:
void main() {
}




إذا قمت بترجمة هذا الجزء فسوف يقوم المترجم بترجمته بنجاح ، لكن هذا الجزء لا يجعل الميكروكونترولر يقوم بفعل شىء ما .
وظيفة الدالة الرئيسية هى إخبار المترجم بمكان بداية ترجمة تعليمات البرنامج .


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 17-05-2017 الساعة 09:31 PM

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,795
نشاط [ مسلم11 ]
قوة السمعة:183
قديم 17-05-2017, 06:12 PM المشاركة 5   
افتراضي


هل يمكننا القول ان الذاكرة العامة كذاكرة المعالج بالحاسب الالي والتي يطلق عليها CASH MEMO.
والذاكرة الخاصة كالذاكرة الاساسية DDR RAM .
اخي الكريم لا احب ان اتابع حتى افهم كل شيء تريجيا فتراكم المجاهيل لدي يبعث للملل.
وان كنت ترى غير ذلك فتوكل على الله

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

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


هل يمكننا القول ان الذاكرة العامة كذاكرة المعالج بالحاسب الالي والتي يطلق عليها CASH MEMO.
والذاكرة الخاصة كالذاكرة الاساسية DDR RAM .
اخي الكريم لا احب ان اتابع حتى افهم كل شيء تريجيا فتراكم المجاهيل لدي يبعث للملل.
وان كنت ترى غير ذلك فتوكل على الله
ذاكرة الأغراض العامة ، وذاكرة الوظائف الخاصة تشكل منطقة واحدة تسمى ذاكرة البيانات الفرق فى العناوين . الميكروكونترولر لا يحتاج إلى ذاكرة Cash لأن كل مكوناته فى حيز صغير ، أى نواقل bus قصيرة ، ومن السهل للمعالج الوصول لذاكرة البيانات وغيرها بسرعة . وعلى العموم مع البرمجة بلغة السى سوف لا تحتاج إلى الدخول فى جميع التفاصيل الداخلية لبناء الميكروكونترولر .


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


قبل كتابة برنامجك الأول يجب أن تكون ملما بما يلى :
• أطراف الميكروكونترولر PIC تكون مقسمة إلى "منافذ" PORTS تحتوى على مجموعة من "أطراف الدخل/الخرج .
• فى الميكروكونترولر PIC16F ، يوجد 2 سجل register ، كل سجل مكون من بايت أى 8 بت ، مرتبطة بكل منفذ ، السجل TRIS والسجل PORT ، على سبيل المثال : TRISB, PORTB و TRISC, PORTC وهكذا .
• الكلمة TRIS تعنى "حالات ثلاثة" Tri-State، والسجل TRIS هو المعنى بتحديد اتجاه كل طرف من أطراف الدخل/الخرج . وجود المنطق “1” فى بت محددة من بتات السجل TRIS يجعل الطرف المناظر "مدخل" Input ، ووجود المنطق “0” فى بت محددة من بتات السجل TRIS يجعل الطرف المناظر "مخرج" Output .
• السجلات PORT تستخدم لقراءة البيانات من أو كتابة البيانات إلى أطراف الدخل /الخرج . كتابة المنطق “1” فى بت معينة من بتات السجل PORT تجعل الطرف المناظر عند "المنطق المرتفع" (VDD) ، وكتابة المنطق “0” فى بت من بتات السجل PORT تجعل الطرف المناظر عند "المنطق المنخفض" (VSS) ، وذلك إذا كان هذا الطرف "مخرج" Output ( البت المناظرة من السجل TRIS بصفر “0” ) .
• السجل PORT يمكن أن يستخدم لقراءة البيانات الرقمية من طرف "مدخل". المنطق “1” عند طرف المدخل يشير إلى أن هذا الطرف عند الحالة المنطقية المرتفعة (VDD) Logic High ، والمنطق “0” عند طرف المدخل يشير إلى أن هذا الطرف عند الحالة المنطقية المنخفضة (VSS) Logic Low .



• يمكنك الكتابة إلى السجل PORT والسجل TRIS ككل (كبايت 8-bit ) أو ألى كل بت بشكل منفصل (بت ببت bit by bit ) :
مثال على طريقة الكتابة إلى البتات (بت ببت) :

كود:
 
TRISC.F0 = 1; //Makes 0th bit of PORTC Input TRISC.F5 = 0; //Makes 5th bit of PORTC Output PORTB.F3 = 1; //Makes 3ed bit of PORTB at Logic High PORTB.F7 = 0; //Makes 7th bit of PORTB at Logic Low
ملاحظات :
• لعلك لاحظت وجود "فاصلة منقوطة" ( عند نهاية كل تعليمة (أمر) . هذه الفاصلة المنقوطة مهمة فى لغة السى حيث يتعرف عليها المترجم فيعلم مكان انتهاء التعليمة ويبدأ فى ترجمتها وينتقل إلى [/code] التعليمة التالية وهكذا .
• للإشارة إلى البت المحددة بالسجل يمكن استخدام الصيغة TRISC.F0 أو الصيغة TRISC.B0 .
• علامة التساوى (=) هنا تسمى علامة "تخصيص" ، بمعنى كتابة أو إرسال “1” إلى البت TRISC.F0 ، على سبيل المثال .
وللكتابة إلى السجل ككل (بايت) :
يجب أن تكون ملما بالمفاهيم التالية عند البرمجة بلغة السى :
• العدد الثنائى binary يشار إليه بالبادئة “0b” .
• العدد الثمانى octal يشار إليه بالبادئة “0” .
• العدد السداسى عشر hexadecimal يشار إليه بالبادئة “0x”.
• العدد العشرى decimal يكون بدون بادئة .
إليك بعض الأمثلة :

كود:
 
PORTB = 0xFF; //Makes all pins of PORTB Logic High TRISC = 0x00; //Makes all pins of TRISC Output PORTD = 128; //Makes 7th bit of PORTD Logic High

برنامجك الأول :
البرنامج التالى يقوم بعمل وميض ليد Led Blink بتأخير زمنى قيمته واحد ثانية :

كود:
 
void main() { TRISB.F0 = 0; //Makes PORTB0 or RB0 Output Pin PORTB=0; //LED OFF while(1) //Infinite Loop { PORTB.F0 = 1; //LED ON Delay_ms(1000); //1 Second Delay PORTB.F0 = 0; //LED OFF Delay_ms(1000); //1 Second Delay } }

ملحوظة : الدالة Delay_ms هى دالة ضمن مكتبة المترجم ميكروسى برو والتى توفر تأخير بالملى ثانية .
• أدخل البرنامج السابق بنافذة المحرر للمترجم ميكروسى برو .



• احفظ المشروع .
• قم بترجمة المشروع من خلال النقر على Build >> Build (or Ctrl+F9) .
• سوف يتم توليد الملف التنفيذى بالامتداد hex فى مجلد المشروع . أنت بحاجة إلى تحميل (كتابة) هذا الملف إلى الميكروكونترولر باستخدام جهاز برمجة أو تحميله فى برنامج ISIS بغرض المحاكاة .
الدائرة الكهربية :



الطرف VDD والطرف VSS للميكروكونترولر PIC تكون متصلة بكل من +5V و GND على الترتيب لتوفير القدرة اللازمة لعمل الميكروكونترولر . الكريستال 4MHz تستخدم لتوفير الساعة اللازمة للميكروكونترولر . المكثفات 22Pf تقوم بعمل تنظيم (تثبيت) لذبذبات الكريستال . يتم توصيل الليد LED بالبت bit0 للمنفذ PORTB (تسمى RB0) ويتم توصيل مقاومة 330 أوم على التوالى مع الليد للحد من التيار المار خلال الليد .
يمكنك محاكاة العمل باستخدام برنامج Proteus . لا تنسى إعداد تردد الساعة وأن تضيف ملف hex الموجود فى مجلد المشروع وذلك عن طريق تحرير خصائص الميكروكونترولر وذلك بالنقر المزدوج على الميكروكونترولر فتظهر لك نافذة كما هو مبين بالشكل التالى :



هذا البرنامج يقوم بتوصيل on لليد المتصل بالطرف RB0 من المنفذ PORTB للميكروكونترولر PIC16F877A . وبعد تأخير 1000 ملى ثانية (واحد ثانية) يتم فصل off الليد ، ثم التأخير واحد ثانية مرة أخرى ويتكرر العمل السابق بشكل غير منتهى بفعل الدالة while(1) .

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

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

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,795
نشاط [ مسلم11 ]
قوة السمعة:183
قديم 18-05-2017, 04:56 PM المشاركة 8   
افتراضي


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

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

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

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

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


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

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