You are on page 1of 121

‫تعلم الميكروكنترولر بسهولة‬

‫بسم هللا الرحمن الرحيم‬

‫تعلم الميكروكنترولر بسهولة‬

‫مقدمة ‪:‬‬
‫مما ال شك فيه أن الميكرو كنترولر أصبح من اهم سمات عصر‬
‫االتصاالت وتتنافس الشركات الكبرى في تصنيعة ومن اهم هذه‬
‫الشركات ميكروشيب وتوشيبا وانتيل واتميل والعديد من الشركات‬
‫ولكن ما هو الميكروكنترولر سوف تفاجأ أن الميكروكنترولر يشبه‬
‫لحد كبير الحاسب االلي ولكنه حاسب صغير حيث له مدخالت‬
‫ومخرجات ووحدة معالجة ويستخدم كثيرا في تكيفات الهواء حيث‬
‫يتحكم في درجات الحرارة ويستخدم ايضا في الربوت االنسان االلي‬
‫ويتحكم في المحركات الكهربية ويدخل في إلكترونيات السيارات‬
‫الحديثة بشكل اساسي وحتى ال اطيل عليكم في المقدمة اكتفي بهذا‬
‫القدر ولندخل سويا الى عالم الميكروكنترولر لنكتشف اسراره‬
‫وخفاياه‬
‫مؤلف الكتاب ‪ ::::‬استاذ عيد فتحي‬
‫الفصل االول‬
‫تركيب الميكروكنترولر‬
‫كما في الصورة يشبه الميكرو إلى حد كبير ‪ IC‬أو الدوائر المتكاملة‬
‫ولكن يشبه في تركيبه جهاز الحاسوب حيث يحتوي على‬

‫‪ -1‬معالج صغير يطلق عليه ‪ microprocessor‬يقوم بمعالجة‬


‫البيانات وعمل العمليات الحسابية كالجمع والطرح والضرب‬
‫والقسمة والعلميات المنطقية مثل ‪ OR‬و ‪ AND‬و ‪NOT‬‬

‫‪ -2‬رامات ‪ RAM‬وهي ذاكرة الوصول العشوائي وتشبه لحد‬


‫كبير رامات الكمبيوتر إال انها صغيرة الحجم وصغيرة‬
‫المساحة أيضا وتستخدم لتخزين بيانات البرامج الجاري‬
‫تنفيذها حاليا وتفقد محتواها عند انقطاع التيار الكهربي‬

‫‪ :: EEPROM -3‬وهي الذاكرة الدائمة في الميكروكنترولر‬


‫وتشبه الذاكرة ‪ ROM‬في الحاسب إال انها يمكن ان تمحو‬
‫محتوياتها من خالل المبرمجة " بروجرمر " لعدة مرات وال‬
‫تفقد محتواها عند انقطاع التيار الكهربي‬
‫ملحوظة‬
‫اذا انقطع التيار الكهربي أثناء شحن الميكروكنترولر فان هذا‬
‫يؤدي الى تلف الميكروكنترولر‬

‫‪ -4‬الفالش ميموري ‪ : flash memory‬وهو يشبه القرص‬


‫الصلب او الهارد ديسك حيث يتم تخزين البرامج عليه‬

‫‪ -5‬وحدات االدخال واالخراج ‪Input/Output Units‬‬


‫وحدة االدخال وهي ‪ PIN‬او رجول الميكرو التي تتصل بمفاتيح‬
‫التحكم أو الكاي باد ‪ key pad‬وهي لوحة مفاتيح تشبة الموجوده‬
‫في االلة الحاسبة أو الحساسات "سنسور" وهو لقياس درجة‬
‫الحرارة ويوجد انواع كثيرة من الحساسات فهناك من تقيس شدة‬
‫االضاءة مثل المقاومات الضوئية وهناك ما تقيس ضغط الهواء‬
‫او نسبة ثاني اكسيد الكربون في الهواء وهناك ما تستقبل‬
‫الموجات‬

‫وحدات االخراج وهي رجول ‪ pin‬تتصل بلمبات ‪ led‬ليد أو‬


‫شاشة ‪ lcd‬او ريالي او ترانزستور او محركات تيار مستمر‬

‫ملحوظة‬
‫بنات االدخال واالخراج في الميكروكنترولر مشتركة بمعني انه‬
‫يمكن أن تستخدم رجل لإلدخال او االخراج وسوف تعرف ذلك‬
‫في تصميم الليد ماتركس‬

‫‪ -6‬التايمر ‪ Timer‬يستخدم في تنفيذ التعليمات في زمن محدد‬


‫‪ -7‬وحدة الباور سبالي وهي وحدة التغذية الكهربية ويتم تغذية‬
‫الميكرو بجهد مستمر ‪ 5‬فولت وتيار ‪ 25‬ملي امبير وسوف‬
‫نشرح في الفصل القادم الدائرة الكهربية للميكرو‬

‫‪ -8‬محول ‪ ADC‬وهو يحول االشارات التماثلية االنالوج إلى‬


‫اشارات رقمية ديجيتال واالشارة الرقمية تأخذ قيمتان هي اما‬
‫عالية ‪ 5‬فولت او منخفضة صفر فولت‬
‫وترجع اهمية محول االشارات ‪ ADC‬الى ان الميكرو ال‬
‫يستطيع التعامل مباشرة مع االشارات التماثلية مثل اشارات‬
‫الصوت او موجات االستقبال‬

‫‪ – 9‬مذبذب او ساعة نظام وهي تحدد قيمة اقصى زمن يمكن‬


‫تنفيذ اوامر الميكروكنترولر‬
‫ويوجد بعض انواع الميكرو كنترولر بها مذبذب داخلي مثل‬
‫عائالت ‪PIC18F‬‬

‫وهذا شكل تركيب الميكروكنترولر‬


‫الفصل الثاني‬
‫قرائة الداتا شيت‬
‫للميكروكنترولر‬
‫أوال تحديد رجول الميكروكنترولر‬
‫الحظ مع الصور االتية‬

‫يتم تحديد الرجل او البن رقم "‪ "1‬في الميكرو كالتالي ستجد نصف‬
‫دائرة وتوجد على يسارها نقطة صغيرة بجوار هذه النقطة البن رقم‬
‫واحد‬
‫ويتم التسلسل إلى نهاية الرجول بحيث الرجل رقم "‪ "1‬يقابلها اخر‬
‫رجل واو بن في الميكروكنترولر‬

‫كما يوجد ميكروكنترولر يحتوي على ‪ 18‬بن ويوجد اخر يحتوي‬


‫على ‪ 44‬بن واخر ‪ 44‬بن‬

‫ويجب أن تعلم أننا في هذه الكتاب سوف نستخدم ميكروكنترولر من‬


‫النوع ‪ PIC‬المنتشر في مصر ويوجد في محالت رام والنخيلي في‬
‫القاهرة وسوف نكون اكثر تحديدا حيث نستخدم ‪PIC16F877A‬‬
‫وظائف البنات في الميكروكنترولر‬
‫سوف أقوم بشرح معظم وظائف البنات في الميكرو فأنتبه جيدا‬
‫عزيزي القارئ فهذا الجزء من االهمية حيث أن باقي اجزاء الكتاب‬
‫مبنية على هذا الجزء‬

‫في الشكل السابق للميكرو ‪ PIC16F877A‬يوجد رجول ال يمكن‬


‫االستغناء عنها فمثال‬
‫الرجول ‪11‬و ‪ 12‬لتغذية الميكرو بالجهد الضروري له‬
‫ستجد بجوار الرجل ‪ VDD 11‬وهي جهد موجب ‪ 5‬فولت‬
‫اما الرجل ‪ VSS 12‬فهي توصل باالرضي‬
‫ولكي تحصل على جهد ‪ 5‬فولت و‪ 25‬ملي امبير يجب أن تستخدم‬
‫الدائرة االتية‬

‫اذا كنت ستستخدم بطارية ‪ 9‬فولت ‪ 344‬ملي امبير‬


‫وتحتاج منظم جهد ‪( 7805‬اي سي ريجيرتور )‬
‫وتحتاج ايضا ‪ 2‬مكثف كيميائي ‪ 14‬ميكروفاراد‬
‫ودايود‬
‫مفتاح لغلق وفتح الدائرة‬
‫لمبة اشارة( ليد) لتعرف هل هناك جهد كهربي ام ال‬
‫ومقاومة ‪ 1‬كيلو اوم تتصل مع ‪LED‬‬

‫وهذا هو شكل منظم الجهد ‪7805‬‬


‫حيث أن‬
‫طرف للدخل ‪ 9‬فولت ‪ 344‬ملى امبير‬
‫وطرف ارضي ‪GND‬‬
‫وطرف خرج يخرج ‪ 5‬فولت‬

‫الرجل رقم (‪)1‬‬


‫ستجد مكتوب بجواراها ‪ MCLR‬وتعني ‪ master clear‬أي اعادة‬
‫التشغيل اي اعادة تشغيل الميكروكنترولر مثل زر ريسترت في‬
‫الكمبيوتر ولكن يسمى هنا ريست‬
‫وسوف تالحظ وجود شرطة فوقه ـــــــــــــــ وهي تعني ان اعادة‬
‫التشغيل تعمل عند الجهد المنخفض طالما أن الجهد عالي لن يقوم‬
‫الميكرو بعمل اعادة تشغيل وتوصيل الدائرة كما في الشكل التالي‬
‫الرجول ‪ 11‬و ‪11‬‬
‫وهي اطراف مولد النبضات "المذبذب " ‪ Oscillator‬وتحتاج‬
‫كريستالة ‪ 8‬ميجا هيرتر ومكتوب بجوارهما ‪ OSC1‬و ‪OSC2‬‬

‫وستجد في الداتا شيت المكثفات الضرورية لعمل الكريستالة‬

‫وتوصيل الدائرة كما في الشكل التالي‬

‫سوف تحتاج مكثفين ‪ 22‬بيكوفاراد متصلين بالتوازي مع الكرستالة‬


‫الرجول ‪AN‬‬
‫وهي الرجول الخاصة بإدخال االشارات االنالوج او التماثلية وهي‬
‫‪ 8‬رجول تبدأ من ‪ AN0‬حتى ‪AN7‬‬

‫ملحوظة‬
‫الرجول االنالوج يمكن أن تستعمل كا ديجيتال وسوف يتضح ذلك‬

‫باقي الرجول‬
‫وهي مجموعة منافذ ‪ Ports‬تستخدم كمدخالت أو مخرجات‬
‫‪ Port A‬أو ‪ 6 RA‬رجول من ‪RA0 : RA5‬‬
‫‪ Port B‬أو ‪ 8 RB‬رجول من ‪RB0: RB7‬‬
‫‪ Port C‬أو ‪ 8 RC‬رجول من ‪RC0:RC7‬‬
‫‪ Port D‬أو ‪ 8 RD‬رجول من ‪RD0 :RD7‬‬
‫‪ Port E‬أو ‪ 3 RE‬رجول من ‪RE0 : RE2‬‬
‫والشكل يبين باقي رجول الميكروكنترولر‬
‫وظائف أخرى للرجول‬
‫معظم رجول او بنات الميكروكنترولر تحتوي على اكثر من وظيفة‬
‫و‬
‫ستجد مكتوب بجوار الرجل ‪ 26‬و ‪ RX 25‬و ‪ TX‬وهذه الرجول‬
‫وظيفتها ربط الميكروكنترولر بالكمبيوتر أو ميكروكنترولر أخر‬
‫‪ RX‬تستقبل البيانات‬
‫‪ TX‬ترسل البيانات‬

‫الرجول ‪ 17‬و ‪ 16‬ستجد مكتوب بجوارها ‪ CCP1‬و ‪CCP2‬‬


‫وهي مسئولة عن انتاج التردادات مثل انتاج موجة بتردد ‪37000‬‬
‫هيرتز وسوف تستخدم عند مشروع ريموت كنترول بسيط‬

‫وهكذا نكون قد انتهاينا من معظم وظائف الرجول ‪ Pins‬وسوف‬


‫نتحدث عن خصائص الميكروكنترولر الكهربية‬
‫وكما ذكرنا انفا أن الميكرو يحتاج‬
‫جهد ‪ 5‬فولت‬
‫تيار ‪ 25‬ملي امبير‬
‫اقصى تردد يمكن أن ينتجة ‪ 24‬ميجا هرتز‬

‫وبذلك نكون انتهاينا من الداتا شيت الخاصة بالميكرو‬


‫‪PIC16F877A‬‬
‫الفصل الثالث‬
‫البرامج المستخدمة مع‬
‫الميكروكنترولر‬
‫برنامج ‪Proteus‬‬

‫يتميز برنامج بروتس عن غيره من برامج الرسم االلكتروني أنه‬


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

‫بعد تحميل البرنامج سوف نقوم بفتحه كالتالي‬


‫من قائمة ‪ start‬ثم ‪ All Programs‬ثم بروتس ‪ 7‬برفشنال اختر‬
‫االيقونة الزقاء ومكتوب بجوارها ‪ ISIS 7‬كما في الشكل التالي‬
‫بعد فتح برنامج بروتس سوف تظهر واجهة المستخدم كالتالي‬
‫يمكن استخدام ‪ Save‬لحفظ المشروع‬

‫ولكي تستطيع الوصول إلى العناصر االلكترونية أضغط على هذه‬


‫االداة‬

‫وبعد تحديدها ستجد يسار الشاشة قائمة ‪ DEVICE‬ستجد حرف ‪P‬‬


‫كما في الشكل التالي‬

‫اضغط علية لتظهر قائمة العناصر االلكترونية كما في الشكل التالي‬

‫قم بكتابة العناصر التي تريد أضافتها مثل مقاومة "‪"Resistor‬‬


‫سوف تظهر اضغط عليها دبل كيلك لتضاف إلى قائمة العناصر ثم‬
‫اكتب ‪ LED RED‬اي لمبة ليد حمراء‬
‫ثم قم بإغالق القائمة‬
‫لتظهر االدوات في قائمة ‪DEVICE‬‬
‫كما يمكن عكس اتجاه العناصر من خالل اسهم تبديل االتجاه كما في‬
‫الشكل التالي‬

‫واذا اردت اضافة ‪ DC Power‬اختر االداة االتية‬

‫لتظهر قائمة بها دي سي بور واالرضي كما في الشكل التالي‬

‫كما يمكن أضافة عناصر البور الذي تريدة مستمر أو متردد من هذه‬
‫القائمة‬
‫لتظهر القائمة التالية‬

‫كما يمكن اضافة اجهزة القياس بالضغط على الشكل التالي‬

‫لتظهر القائمة كالتالي‬


‫لنقوم االن برسم دائرة بسيطة قم بتحديد قائمة العناصر االنف ذكرها‬
‫وقم بالضغط عليها مرة واحدة داخل صندوق الرسم واضف باقي‬
‫العناصر‬
‫كما في الشكل التالي‬

‫بعد ذلك اضغط على قائمة تشغيل ‪ RUN‬اسفل مربع الرسم مع‬
‫مالحظة تعديل قيمة المقاومة إلى ‪ 334‬بدل ‪ 14‬كيلو بالضغط عليها‬
‫نقرة مزدوجة‬
‫وهكذا نكون انتهينا من شرح برنامج بروتس وسوف نقوم بشرح‬
‫برنامج كتابة الشفرة للميكروكنترولر وهو ميكروسي بك‬

‫برنامج ميكروسي بك‬

‫‪mikroC PRO for PIC‬‬


‫كما يمكنك تحميل البرنامج مجاني من موقع الشركة وهي تعطي‬
‫مساحة اقل لكنها تكفي بالغرض‬

‫بعد تحميل البرنامج قم بفتحه لتكون واجهته كالتالي‬

‫أضغط على ‪ New Project‬النشاء مشروع جديد‬


‫لتظهر لك النافذة التالية‬

‫اضغط على ‪ Next‬لتظهر النافذة التالية‬


‫ستجد مكتوب فيها ‪ Project Name‬اي اسم المشروع‬
‫كما ستجد ‪ Project Folder‬أى مكان حفظ المشروع‬
‫كما ستجد ‪ Device Name‬أى اسم الميكروكنترولر‬
‫حدد ‪PIC16F877A‬‬
‫كما ستجد ‪ Device Clock‬وهي مقدار الكرستالة أو المذبذب‬
‫وسوف تكون ‪ 8‬ميجاهيرتز‬
‫بعد ذلك أضغط ‪ Next‬حتى تظهر نافذة الكود كالتالي‬
‫ستجد مكان كتابة الكود داخل الدالة الرئيسية )(‪void main‬‬

‫كما يمكن أن تكتب تعليق بإضافة "‪ "//‬ثم أضافة التعليق ويكمن‬
‫أهمية التعليق إذا كان البرنامج متشعب فتكتب وظيفة كل كود داخل‬
‫البرنامج‬

‫** القوائم‬

‫يحتوي برنامج ميكرو سي على قوائم سوف نذكر أهم هذه القوائم‬

‫قائمة ‪File‬‬
‫تحتوي على‬
‫‪ New‬أي ملف جديد‬
‫‪ Open‬فتح ملف موجود‬
‫‪ Save‬حفظ التعديالت الحالية‬
‫‪ Save As‬حفظ المشروع بإسم جديد‬
‫‪ Exit‬اغالق المشروع‬

‫قائمة ‪Edit‬‬

‫تحتوي على‬
‫‪ Undo‬تراجع في الكود‬
‫‪ Redo‬عكس التراجع‬
‫‪ Cut‬قص كود‬
‫‪ Copy‬نسخ كود‬
‫‪ Paste‬لصق الكود‬
‫‪ Delete‬حذف كود بعد تحديده‬
‫‪ Find‬البحث عن نص داخل االكواد‬
‫‪ GOTO Line‬الذهاب إلى سطر معين‬
‫قائمة ‪Project‬‬

‫وتحتوي على‬
‫‪New Project‬‬
‫النشاء مشروع جديد‬
‫‪Open Project‬‬
‫لفتح مشروع موجود‬
‫‪Edit Project‬‬
‫لتعديل خصائص مشروع مثل تغيير نوع‬
‫الميكروكنترولر‬
‫قائمة ‪Build‬‬

‫وتعتبر قائمة في غاية االهمية حيث أنها تنشأ ملف بامتداد ‪HEX‬‬
‫الذي يتم شحنه أو حرقه أو تحميله داخل الميكرو كنترولر‬

‫وعندما يكون الكود صحيح تظهر اسفل هذه النافذة‬

‫ليدل على أن الكود صحيح وغير ذلك تظهر أخطاء باللون االحمر‬
‫‪PICPgm Programmer‬برنامج‬

‫يقوم هذا البرنامج بشحن أو حرق ملف ‪ Hex‬داخل الميكروكنترولر‬

‫أوال يتم شراء مبرمجة كما في الشكل التالي‬

‫وتحتاج كابل سيريال بورت‬


‫وشكله كالتالي‬
‫ثم يتم توصيل كابل السيريال بالمبرمجة والكمبيوتر كالتالي‬

‫بعد ذلك شغل برنامج ‪PICPgm Programmer‬‬


‫ثم نختار نوع المبرمجة وهي ‪JDM‬‬
‫وبعد اتمام الشحن أفصل كابل السيريال ثم انزع الميكروكنترولر‬
‫برفق‬

‫وبذلك نكون قد اتماننا هذا الفصل ويتبقى لنا التعامل مع‬


‫الميكروسي ودواله ومكتباته المختلفة‬
‫هذا وهللا الموفق‬
‫الفصل الرابع‬
‫الليد ماتركس‬

‫‪1‬‬
‫المشروع االول‬
‫سوف نقوم في هذا المشروع بتصميم لمبة ليد تضيئ لعدد مرات‬
‫محدد ثم تغلق‬
‫قوم بفتح برنامج بروتس كما تعلمت من قبل واضف العناصر‬
‫االلكترونية التالية‬

‫‪led green‬‬ ‫‪-1‬‬


‫‪PIC16F877A‬‬ ‫‪-2‬‬
‫‪Resistor‬‬ ‫‪-3‬‬

‫وتعني لمبة خضراء و الميكروكنترولر و مقاومة‬


‫قم بالضغط على الميكروكنترولر لتحديدة من صندوق العناصر‬
‫االلكترونية‬

‫‪2‬‬
‫ثم بالضغط مره داخل صندوق الرسم سيظهر الميكركنترولر‬
‫ارفع اصبعك من على الماوس وضعه في منتصف صندوق الرسم‬

‫ثم ضع المقاومة بجوار ‪ RB0‬وضع الليد ثم ضع االرضي ‪GND‬‬


‫كالتالي‬

‫‪3‬‬
‫قم بالضغط على رمز السهم بعد وضع عناصر المشروع‬
‫قم بالضغط على نهاية المقاومة ثم ترك الزر االيسر للسهم‬
‫وتمرير السهم إلى النقطة ‪ RB0‬ثم اضغط مرة بالماوس‬
‫ثم عدل قيمة المقاومة الى ‪ 333‬بالضغط عليها مرتين بالماوس‬
‫كالتالي‬

‫‪4‬‬
‫ليصبح المشروع كهذا‬

‫بعد ذلك قم بحفظ المشروع من رمز ‪save‬‬


‫وضعه في مجلد وتذكر اين وضعت المجلد لكي نحفظ مشروع‬
‫ميكروسي معه‬

‫‪5‬‬
‫يأتي الدور المهم االن وهو مشروع ميكروسي ويجب عليك تذكر‬
‫االتي‬

‫يجب أن تكون نهاية الكود بالفاصلة المنقوطة ;‬


‫التي تسمى سمى كول‬
‫كي نهيأ البورت كخرج نستعمل االمر‬
‫;‪TRISB.B0=0‬‬
‫وسوف نشرح االمر‬
‫اوال امر ‪ TRIS‬ثم البورت واخترنا هنا بورت ‪ B‬ثم دوت "‪".‬‬
‫ثم ‪ B‬وهي تعني ثنائي ثم رقم الرجل او البن وهي ‪3‬‬
‫ثم نساويها بالصفر ليعرف ميكروسي أن البورت سوف تعمل‬
‫كخرج وال تنسى الفاصلة المنقوطة في نهاية السطر‬

‫االمر‬

‫;‪PORTB.B0=1‬‬
‫;‪PORTB.B0=0‬‬
‫االمر ‪ PORT‬نخبر ميكروسي هل سيتم توصيل الجهد ‪ 5‬فولت‬
‫على الرجل ام ال اذا كان يساوي واحد اذن يوصل اما اذا كان‬
‫يساوي صفر اذن مغلق‬

‫والن سرعة المعالجة لألمر ‪ 8‬مليون في الثانية فسوف يتم ذلك‬


‫بسرعة كبيرة ويجب وضع مسافة زمنية من خالل االمر‬
‫;)‪Delay_ms(1000‬‬
‫والرقم ‪ 1333‬هو المدة الزمنية وتقدر بالملي ثانية ويمكن تغيرها‬

‫الحلقة ‪for‬‬
‫هذه الحلقة تقوم بتكرار الكود عدد محدد من المرات وشكلها كالتالي‬

‫‪6‬‬
‫{)‪For(1;2;3‬‬

‫الكود المراد تكراره‬


‫}‬
‫المعامل ‪ 1‬وهو بداية العد‬
‫المعامل ‪ 2‬عدد مرات التكرار‬
‫المعامل ‪ 3‬قيمة الزيادة‬
‫مثال‬
‫{)‪For(x=0;x<5;x++‬‬

‫}‬
‫ولكن كي يتعرف ميكروسي على المعامل ‪ X‬يجب تعريفه‬
‫وذلك في قسم التصريحات العامة أي قبل الدالة الرئيسية‬
‫)(‪Void main‬‬
‫نقوم بوضع متغير رقمي ثم وضع اسم المتغير‬
‫;‪Int x‬‬
‫والمتغيرات هي معامالت تسهل عملية كتابة الكود وهي ضرورية‬
‫وال يمكن االستغناء عنها لذلك ال تقلق‬
‫حيث أن قيمتها تتغير فقمنا بوضع قيمة ابتدائية للمتغير ‪ x‬وهي‬
‫صفر و قيمة ‪ x‬تتغير داخل الحلقة ‪ for‬حيث تزيد بمقدار واحد‬

‫والكود النهائي كالتالي‬

‫‪7‬‬
‫بعد ذلك نقوم من قائمة ‪ Build‬بأختيار ‪ Build‬ليتم انشاء الملف‬
‫‪Hex‬‬
‫ولكي نضيف ملف الهكس إلى مشروع بروتس قوم بالضغط على‬
‫الميكروكنترولر داخل بروتس مرتين لتظهر النافذة التالية‬

‫قوم بتعديل التردد الى ‪ 8‬ميجاهيرتز‬


‫ثم قم بأختيار ملف الهيكس الذي انشأته ثم اضغط ‪OK‬‬
‫ثم نقوم بالضغط على زر التشغيل لتجربة المشروع‬

‫‪8‬‬
‫ملحوظة‬
‫لم نستخدم دائرة المذبذب وال دائرة المستركلير ولم نوصل البور‬
‫وذلك النه يمكن االستغناء عنهم في برنامج بروتس اما في الدائرة‬
‫العملية فال تعمل بدون الثالث دوائر السابق ذكرهم‬

‫شكل العناصر االلكترونية في التجارب العملية‬


‫‪ -1‬بطارية ‪ 9‬فولت‬

‫‪ -2‬جاك بطارية‬

‫‪ -3‬ميكروكنترولر ‪PIC16F877A‬‬

‫‪9‬‬
‫‪ -4‬لمبه ليد‬

‫‪ -5‬مقاومة‬

‫‪ -6‬بورد تست او لوحة تجارب‬

‫‪10‬‬
‫المشروع الثاني‬
‫اضائة واطفاء أكثر من لمبة باستمرار‬
‫قم بفتح برنامج بروتس واحفظه في مجلد‬

‫وقم بإضافة العناصر االتية‬


‫‪led red‬‬ ‫‪-1‬‬
‫‪Resistor330‬‬ ‫‪-2‬‬
‫‪PIC16F877A‬‬ ‫‪-3‬‬

‫وارسم المشروع كالشكل التالي‬

‫‪11‬‬
‫قم بفتح مشروع جديد ميكروسي‬
‫واحفظه كما تعلمت سابقا‬
‫واالن هدف المشروع أن تضيأ الليدات وتغلق إلى ماال نهاية لذلك‬
‫سوف نستخدم االمر‬
‫{)‪While(1‬‬

‫}‬
‫وهذا االمر عندما نضع الشرط ‪ 1‬يعمل إلى ما النهاية‬
‫ثانيا الحظت في رسم التصميم أكثر من ليد لذلك سوف نستخدم‬
‫االمر‬
‫;‪TRISB =0B00000000‬‬
‫وهذا يعني أن كل البورت من ‪ B0‬الى ‪ B7‬سوف تستخدم كمخرج‬
‫وهذا ينطبق مع االمر‬
‫‪ PORTB‬ليصبح ;‪ PORTB=0B11111111‬وهذا يعني أن كل‬
‫منافذ ‪ B‬تعمل‬
‫واليك الكود كامال‬

‫‪12‬‬
‫الحظ مع االتي‬
‫‪ 0b‬تعني ارقام ثنائية تأخذ قيمة اما ‪ 3‬او ‪1‬‬
‫بما ان هناك ‪ 8‬ارجل سوف نستخدم فسوف يصبح ‪0b00000000‬‬
‫يمكن التحويل إلى ارقام سادس عشر كالتالي‬
‫نضيف ‪ 0x‬ونحولها من خالل التبويب ‪Quick Converter‬‬
‫حيث نكتب الرقم ثنائي ويتم تحويله إلى ارقام سادس عشر كما في‬
‫الشكل التالي‬

‫ليصبح الكود كالتالي‬

‫وتصبح التجربة كهذا‬

‫‪13‬‬
‫المشروع الثالث‬
‫وهو اضافة مفتاح غلق وفتح يقوم بأضائة الليد وغلقه‬

‫اوال نقوم بإنشاء مشروع بروتس جديد وحفظه‬


‫ثم اضافة العناصر االلكترونية التالية‬
‫‪Led green‬‬
‫‪Switch‬‬
‫‪PIC16F877A‬‬
‫‪Resistor‬‬
‫وارسم المشروع بالشكل التالي‬

‫‪14‬‬
‫الحظ معي االتي أوال أن لم يتم توصيل المفتاح مباشرة بل تم‬
‫توصيله بجهد ‪ 5‬فولت ومقاومة ‪ 13‬كيلو وهكذا يكون الدخل عالي‬
‫او ‪ 1‬وعند الضغط عليه يوصل الجهد باالرضي ويصبح دخل‬
‫الرجل ‪ 3‬فولت أو منخفض‬
‫افتح مشروع ميكروسي‬
‫والحظ االتي‬
‫أوال كي نجعل الرجل ‪ B0‬كدخل نكتب االمر التالي‬
‫;‪TRISB.B0=1‬‬
‫وكذلك سوف نستخدم اداة الشرط ‪IF‬‬
‫و ‪ if‬تعني "اذا" وصيغتها كالتالي‬
‫{ ) ‪if ( 1‬‬
‫‪2‬‬
‫}‬
‫‪ 1‬الشرط‬
‫‪ 2‬جواب الشرط‬
‫فنحن نريد عند الضغط على المفتاح تضيأ اللمبة فتكتب كالتالي‬
‫{)‪If(portb.b0==0‬‬

‫‪15‬‬
‫;‪Portc.b0=0‬‬
‫}‬
‫وكي يضيئ ويطفأ نستخدم العبارة ‪else‬‬
‫وتعني وإال‬
‫وفي الشكل التالي الكود‬

‫أضف ملف ‪ hex‬إلى الميكروكنترولر في بروتس وعدل التردد إلى‬


‫‪ 8‬ميجاهيرتز‬
‫لتصبح النتيجة كالتالي‬
‫عند توصيل المفتاح هكذا‬

‫‪16‬‬
‫وعند فصل المفتاح هكذا‬

‫ونكتفي بهذا القدر من المشاريع في الليد ماتركس ونتجه إلى‬


‫مشاريع إخراج الصوت في الفصل القادم‬

‫‪17‬‬
‫الفصل الخامس‬
‫النغمات في الميكروكنترولر‬

‫‪18‬‬
‫أخراج الصوت يكون عن طريق‬
‫المكتبة ‪sound‬‬
‫افتح مشروع بروتس جديد وأضف العناصر االلكترونية التالية‬

‫‪speaker‬‬ ‫‪-1‬‬
‫‪resistor‬‬ ‫‪-2‬‬
‫‪PIC16F877A‬‬ ‫‪-3‬‬

‫ثم افتح مشروع ميكروسي جديد وسميه ‪sound‬‬

‫واكتب الكود التالي‬

‫‪19‬‬
‫والمكتبة واضحة‬
‫فمعامل ‪ sound_init‬للتعريف بالبورت ورقم الرجل الذي سيتصل‬
‫بالسماعة‬
‫واما ‪ sound_play‬لعمل السماعة ولها معامالن االول التردد‬
‫والثاني زمن التردد بالملي ثانية ويمكنك البحث عن نغمات في‬
‫االنترنت‬

‫وبهذا نكون قد انهينا الفصل الخامس الخاص بالنغمات واخراج‬


‫الصوت‬
‫هذا وهللا الموفق‬

‫‪20‬‬
21
‫ ا ا  ا‬
‫  ‬

‫ﻡ ‪Button‬‬

‫‪"#‬م ا  آ ﻡ  ار‬

‫( ار ' ﻡ& ﻡ‪%‬ت‬


‫‪ -١‬اﺱ ا"رت ا "‪ -.‬ر وی ‪% (#‬ﻡ &‬
‫‪ -٢‬ر‪ 3‬ا "س او ا  ا"رت‬
‫‪ -٣‬زﻡ  ار وی‪#‬ر  ‪7 8 55‬‬
‫‪ -٤‬ار ﻡ‪ 1 -&:‬او ; ﻡ‪0 -&:‬‬
‫&=< ه‪ -‬ی& ‪ <5 -‬ا =‪ BC‬ا&  او ا =‪ @:A‬ودا> ﻡ‬
‫‪ BC=  - &7‬ا =‪ GE @:A‬یﺥ‪ E‬ا‪:.  #‬‬

‫ﻡ‪ I‬ل‬
‫ه‪E‬ا وا ا "‪(  ) B‬‬
‫ ا ا  ا‬

‫اﻡ ﻡ اد ا‬


‫ﺕ  ‬

‫‪ ,‬ا‪%‬ن ﺕﻡ*) ﻡ اد ا )('& ا ‪ %‬یوز ﺕره ‪٢٠‬‬


‫ﻡ* اﻡ‪ 5‬و‪ 2‬ﻡذا  اردﻥ ا‪  2‬ﻡك ﺱاء ‪DC or AC‬‬
‫ﻡذا ﺱ)' وآ ﺱ‪ 2‬ا ‪2‬وآ)و ا‪  67‬اد‬
‫ا ا ‪ ,9‬ﻡ یﺹی‪ , 9‬ﺕف‬

‫او‪ %‬ﺱف ﻥ‪9‬م   دا=ة ﺹ‪6‬ة ی ‪ 7‬وﺕﺹ  ‪,* 5‬‬


‫ﺝ ?ری ‪ B ١٢‬وﺱف ی‪2‬ن ا‪2‬د آ‬

‫آ  ی&‪ D‬ﻡ ا‪2‬د اﻥ) ﺱف ﻥ رت ‪ B0‬آ(ج و رت‬


‫‪ C0‬آﺥ أي رت ‪ B0‬ﺱف ی‪  7‬ا و رت ‪C0‬‬
‫ی‪' 7‬ح آ ی ا‪ 2‬ﻡ ﺥ‪J‬‬

‫‪ K%‬اا=ة ا‪%‬ﺕ‬
‫او‪ %‬ﺱف ﻥ   ااﻥ‪L‬ﺱر آ 'ح ‪ M‬أن ا‪5‬رت ‪B0‬‬
‫)ﻡ ی‪ N*7‬ا ﺱف ﺕ‪  2‬اا=ة وﺕ  و) ‪ 7‬ا‪5‬رت‬
‫‪% B0‬ن ﺕ‪  2‬اا=ة و ﺕ  ﺱف ﺕ‪2‬ن دا=ة ﻡ'‬
‫وﺱف ﻥ‪9‬م  ب ا ‪9‬وﻡ ‪* RB‬اﻥ‪L‬ﺱر آ‬
‫‪RB=2.2*RL*HFE‬‬
‫‪ RB M‬ﻡ‪9‬وﻡ ا‪9‬ة و ‪ RL‬ﻡ‪9‬وﻡ ا  و ‪ HFE‬ﻡﻡ‬
‫ا&( وی اﺝع ا‪ ,‬ااﺕ ‪* BP‬اﻥ‪L‬ﺱر ا   و‪2‬‬
‫ﻥ  ا‪ R6‬ﻥ   ﺕاﻥ‪L‬ﺱر ‪ 2N2222‬وه ﻡ*م ﺱ*' أﻥ‪N‬‬
‫ی (م ﻡ‪9‬وﻡ ‪ ١‬آ* اوم‬

‫‪S‬ﻥ ﻥ (م داید او ﻡ ‪ % ,‬یﺕ أى ﺝ آ  ا‪,‬‬


‫ا ‪2‬وآ)و  ‪  R5‬ﺕ*'‪ N‬وﻡ ا وف أن ااید ی ر‬
‫ا ا‪   2‬اﺕ‪ W‬وا ‪ UV‬ﺱف ﻥ‪9‬م ‪ % , N 2‬یﺕ‬
‫ا ا‪  2‬وﻡ ای ‪V‬آ أن اای ی ‪P‬ا=‪X R  N‬‬
‫ار ا‪ UV  2‬ﺱف ﻥ (م دای ‪ ٣٠٠‬ﻡ* اﻡ‪5‬‬

‫آ  أن ﺕﺹ ااید ‪ Z2‬ی (م  دا=ة ‪ P‬ا‪?5‬ریت‬

‫‪ [S‬ﻥ (م ری‪J‬ي *ﺹ ﻡ اد ‪ B ٢٢٠‬ﺕر ﻡدد‬


‫وای‪J‬ي ‪ N‬ﺥ ‪ Z‬ا\اف \ یﺹ‪J‬ن ﻡ دا=ة‬
‫ا ‪2‬وآ)و و‪ SJS‬ﻡ اا=ة ا(رﺝ ذات ‪B ٢٢٠‬‬

‫‪ D57‬ا) آ‬

‫وا ا ] وا‪ N‬ا ‪7‬‬


‫ ‬
‫ ا ا  ا‬
‫ا  ا ﻡك‬
‫ی   ا ﻡك ‪ DC‬اذا   ا ار‬
‫ا"  وذ  ا 'ب ا‪ ) #$%‬ك ‪DC‬‬

‫وی  ‪ #‬ذ ﻡ ‪/0‬ل دا‪,‬ة ا‪'+‬ة ‪ 6 H‬اﻥ" ‪ 234‬ف‬
‫‪H‬‬

‫‪ :8‬ﻡ اذا  ‪ #$%‬ا ك ﻡ ا‪ 9‬ا‪78‬اف 'ف‬


‫ا"  وا‪8 08‬ر= ه;ا‬
‫و‪ %‬اردﻥ  ا ا ك ﺱ‪%‬ف ﻥ ?‪9‬م ‪ 7‬ا‪0‬ی‬
‫‪78‬اف ا آ ‪ ') B‬ا‪8‬و آ   اﺱ‬
‫و آ‪ F‬ی  اﺱ‪93‬ال ا ‪ DE‬اﻥ‪C‬ﺱ‪%‬ر‬
‫او‪ 8‬ﺱ‪%‬ف ﻥ ?‪9‬م دا‪,‬ة ااﻥ‪C‬ﺱ‪%‬ر آ ‪E‬ح وی ا ﻡ‬
‫‪/0‬ل ‪7‬ف ا‪9+‬ة ‪) B‬اﻥ‪C‬ﺱ‪%‬ر‬
‫وی ا‪ #$%‬آ‬
‫ ‪ #$%‬ا‪7‬اف ا‪9+‬ة )اﻥ‪C‬ﺱ‪%‬ر ‪ ١‬ﻡ‪ K ٣ I‬ی ‪#$%‬‬
‫ا‪7‬اف ا‪9+‬ة ‪ ٢‬ﻡ‪٤ I‬‬
‫وی ا ‪ 9‬ذ ﻡ ‪/0‬ل ا وآو‬
‫وا‪%‬د آ‬
‫وا ا ‪ O%‬وا‪ 2‬ا ‪N‬‬
‫‪ 9‬‬
‫ ا ا  ا‬
‫ا ا‬
‫ات ‪LCD‬‬
‫ ‪  :‬‬

‫او' & ا‪ #‬وو‪ #$‬آ !ف‬

‫‪1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16‬‬
‫‪ Vss‬ار*‬ ‫‪-١‬‬
‫‪ Vdd‬آ‪/0 ٥  -‬‬ ‫‪-٢‬‬
‫‪ 42* Vo‬ا ا‪#23‬‬ ‫‪-٣‬‬
‫‪ RS‬ی أرة ا ‪6‬‬ ‫‪-٤‬‬
‫‪3 R/W‬ا‪ / #:‬آ ‪ #‬ا'رة‬ ‫‪-٥‬‬
‫‪> ? EN‬ت ا=ا‪ #:‬وا& ‪#‬‬ ‫‪-٦‬‬
‫‪ => 4A D0‬ا‪>2‬ت ‪ E‬ﻡ ‪C‬م‬ ‫‪-٧‬‬
‫‪ => 4A D1‬ا‪>2‬ت ‪ E‬ﻡ ‪C‬م‬ ‫‪-٨‬‬
‫‪ => 4A D2‬ا‪>2‬ت ‪ E‬ﻡ ‪C‬م‬ ‫‪-٩‬‬
‫‪ => 4A D3‬ا‪>2‬ت ‪ E‬ﻡ ‪C‬م‬ ‫‪-١٠‬‬
‫‪ => 4A D4‬ا‪>2‬ت ﻡ‪ I‬ا ?‪#6‬‬ ‫‪-١١‬‬
‫‪ => 4A D5‬ا‪>2‬ت ﻡ‪ I‬ا ?‪#6‬‬ ‫‪-١٢‬‬
‫‪ => 4A D6‬ا‪>2‬ت ﻡ‪ I‬ا ?‪#6‬‬ ‫‪-١٣‬‬
‫‪ => 4A D7‬ا‪>2‬ت ﻡ‪ I‬ا ?‪#6‬‬ ‫‪-١٤‬‬
‫‪ LED+‬ا‪L‬ف ا ‪0‬ﺝ‪ #:*' J‬ا‪/0 ٥ #‬‬ ‫‪-١٥‬‬
‫‪ LED-‬ا‪L‬ف ا'ر* '*‪ #:‬ا‪#‬‬ ‫‪-١٦‬‬

‫ﺙ> ‪0‬ﺹ ا'!اف  &وآ‪M‬و ‪PIC16F877A‬‬


‫ا‪L‬ف ‪ ١‬و‪ ٣‬و‪' ٥‬ر* ‪GND‬‬
‫ا‪L‬ف ‪ Vdd‬ﻡ‪ I‬ا&‪/0 ٥  -‬‬
‫ا‪L‬ف ‪ RS‬ﻡ‪ I‬ا‪L‬ف ‪RB2‬‬
‫ا‪L‬ف ‪ EN‬ﻡ‪ I‬ا‪L‬ف ‪RB3‬‬
‫ا‪L‬ف ‪ D4‬ﻡ‪ I‬ا‪L‬ف ‪RB4‬‬
‫ا‪L‬ف ‪ D5‬ﻡ‪ I‬ا‪L‬ف ‪RB5‬‬
‫ا‪L‬ف ‪ D6‬ﻡ‪ I‬ا‪L‬ف ‪RB6‬‬
‫ا‪L‬ف ‪ D7‬ﻡ‪ I‬ا‪L‬ف ‪RB7‬‬
‫ا‪L‬ف ‪ LED+‬ﻡ‪ I‬ا&‪/0 ٥  -‬‬
‫ا‪L‬ف ‪ LED-‬ﻡ‪ I‬ا'ر*‬
‫آ   ا& ا‬

‫ﻡ‪#$0P‬‬
‫' ی‪0‬ﺝ  و‪! R‬ن ا*‪ #:‬ا‪#‬‬

‫ﺙ> ح ﻡ&‪LCD #2‬‬


‫و‬M‫ ا &وآ‬I‫ ﻡ‬#P‫ﺹ‬0 ‫ ا‬#‫ص ?ی أ!اف ا‬A ‫د‬0&‫ا ا‬T‫ه‬

>‫ﺙ‬
Lcd_Init();
LCD #2&‫ص ?ی ﻡ‬A

>‫ﺙ‬
Lcd_Cmd
#‫ ا‬X‫ص رﺱل ا'واﻡ ا‬A ‫ا ا'ﻡ‬T‫ه‬
‫ أﻡ ا'رﺱل‬0‫و[ ﻡ?ﻡ وه‬
‫ﻡل‬
Lcd_Cmd(_LCD_CLEAR);
\‫>ﻡ‬2‫ ا‬#‫م دة  ﻡ=ﻡ‬C ‫ وی‬#‫] ا‬ ‫ا ا'ﻡ‬T‫م ه‬0=‫ ی‬

Lcd_Cmd(_LCD_CURSOR_OFF);
#‫ ای^  ای‬J&‫ وی‬#‫  ا‬# &‫ص `ی=ف ﻡ_ ا‬A ‫ا ا'ﻡ‬T‫ه‬
\‫>ﻡ‬2‫ا‬
Lcd_Cmd(_LCD_FIRST_ROW);
‫ ا'ول‬L ‫ ا‬X‫ ا‬# &‫= ﻡ_ ا‬M‫ی‬
Lcd_Cmd(_LCD_SECOND_ROW);
>‫ ا‬L ‫ ا‬X‫ ا‬# &‫= ﻡ_ ا‬M‫ی‬

Lcd_Cmd(_LCD_UNDERLINE_ON);
#‫ ﻡ_ ا‬-a‫ی‬

Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
‫ ف  ل‬A‫ ا‬X‫ ا‬#‫ _ ا‬J‫ه‬T‫ی‬

Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
 ‫ ا‬XP ‫ ف‬A‫ ا‬X‫ ا‬#‫ _ ا‬J‫ه‬T‫ی‬

Lcd_Cmd(_LCD_TURN_ON);
#‫ ا‬b
Lcd_Cmd(_LCD_TURN_OFF);
#‫ ا‬cPE

‫ا'ﻡ‬
Lcd_Chr_Cp('e');
# 0& ‫ اوف ا‬A‫ ا‬#‫ ا‬XP ‫ ف‬#2!

Lcd_Chr

‫ت‬d‫ث ﻡ?ﻡ‬d‫ و[ ﺙ‬#‫ ا‬XP ‫ ف‬#2!

L ‫ ا‬3‫ر‬

‫د‬0 ?‫ ا‬3‫ر‬

‫اف‬

‫ﻡل‬
Lcd_Chr(2, 3, 'i');

‫ا'ﻡ‬
Lcd_Out_Cp("Here!");

#‫ ا‬XP ‫ب‬0&‫ ف ﻡ‬A‫ ا‬#‫ی‬-> M f> # ‫آ‬

‫ا'ﻡ‬

Lcd_Out

‫ت‬d‫ث ﻡ?ﻡ‬d‫ و[ ﺙ‬#‫ ا‬XP f> # ‫آ‬


L ‫ ا‬3‫ر‬
‫د‬0 ?‫ ا‬3‫ر‬
fM‫ا‬
‫ﻡل‬
Lcd_Out(1, 3, "Hello!");
‫آ  ی & اﺱ ‪ XP‬ا‪#‬‬
‫ﻡ ‪dA‬ل ‪ tool # :3‬آ   ا& ا‬

‫‪ -a‬ا‪TM‬ة ا‪#‬‬


‫ﺙ د  وس ا& ا‪T‬ي یة ﺙ ا*‪ 4b‬زر ‪ 0‬ا&‪0‬د‬
‫ﺙ زر ا‪k M‬‬
‫ ‪  3‬ا ‪b‬ات ا?ﻡ‪#‬‬

‫ﺙ اآ‪J‬‬
‫;)‪CustomChar(2, 2‬‬
‫ا   آ‬ ‫‬

‫و ا‪-M‬ی‪ #‬یرب اآ‪0‬ن ‪ 3‬و=‪  /‬ح ا‪LCD #‬‬


‫ ا ا  ا‬
‫ا اﻡ‬
‫اﻡ ﻡ  ارم‬
‫‪Keypad‬‬

‫ﺕ‪ ! "#‬‬
‫او (' ا'&د‬

‫وی‪ .‬ﻡ‪!+ ,-‬ن ‪ 3x4‬و ‪4x4‬‬


‫وﺱف ‪+‬ﻡ ﻡ ‪4x4‬‬
‫‪ +4‬ﺕﺹ ا‪2‬اف‬
‫‪5‬‬
‫ا‪6‬ف ‪ ١‬ﻡ ‪RD0‬‬
‫ا‪6‬ف ‪ 2‬ﻡ ‪RD1‬‬
‫ا‪6‬ف ‪ 3‬ﻡ ‪RD2‬‬
‫ا‪6‬ف ‪ ٤‬ﻡ ‪RD3‬‬
‫ا‪6‬ف ‪ A‬ﻡ ‪RD4‬‬
‫ا‪6‬ف ‪ B‬ﻡ ‪RD5‬‬
‫ا‪6‬ف ‪ C‬ﻡ ‪RD6‬‬
‫ا‪6‬ف ‪ D‬ﻡ ‪RD7‬‬

‫‪( =4‬ح آد ا'&د !‪ 9:‬ا 'وﺱ‬

‫اﺥرا ‪ B:‬ﺱف ‪A+‬م   ﻡ@وع ی>‪ ,‬ارم !‪9:‬‬


‫(( ‪ 9:! DEF‬ا'&د‬
‫او (' ا @وع !‪+ 9:‬ﻡ‪ G‬وﺕ‬
‫‪ +4‬ا'د‬

‫ﺕ ﺕی" ﻡ‪ E‬ﻡ ا‪-‬ع ‪  short‬وي ﻡﺕ‪ H‬ا‪DEF‬‬


‫'ن ا‪ J-‬آ‬
‫ور‪ ! N‬م ا@ح ا' ‪ LM,‬ا '& ا ا‪ +‬ا!‪ A‬أ‪ ,+‬ﻡ‬
‫ا ‪  ,‬ر‪ .‬ﺕج ا‪( ,‬ح‬

‫وا ا ‪P‬‬
‫! ‬
‫ ا ا  ا‬
‫ا اا‬
‫ا ‪GLCD‬‬
‫ات اا‬
‫ ‪ ! :‬‬

‫او  ا  وو  آ ف‬

‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪15‬‬ ‫‪16‬‬ ‫‪17‬‬ ‫‪18‬‬ ‫‪19‬‬ ‫‪20‬‬
‫‪ Vss -١‬أر‪$‬‬
‫‪ Vcc -٢‬آ(  ‪+, ٥‬‬
‫‪ 0.$ Vo -٣‬ا ا‪./‬‬
‫‪  RS -٤‬ی ارة ا ‬
‫‪/ R/W-٥‬ا‪ 5‬آ  ا‪4‬رة‬
‫‪: ; EN -٦‬ت ا‪9‬ا‪ 5‬وا‪ 7‬‬
‫‪ 0= D0 -٧‬ا‪:.‬ت‬
‫‪ 0= D1 -٨‬ا‪:.‬ت‬
‫‪ 0= D2 -٩‬ا‪:.‬ت‬
‫‪ 0= D3 -١٠‬ا‪:.‬ت‬
‫ت‬:.‫ ا‬0= D4 -١١
‫ت‬:.‫ ا‬0= D5 -١٢
‫ت‬:.‫ ا‬0= D6 -١٣
‫ت‬:.‫ ا‬0= D7 -١٤
‫ ا=ر ای‬0= CS1 -١٥
‫ ا=ر ای‬0= CS2 -١٦
A‫ ا!دة ا‬0= RST -١٧
C (‫ =ج ا‬Vout -١٨
+,٥ ‫ ا‬5$4  (7‫ ا‬0E‫ ا‬LEDA -١٩
‫ ا‬5$4 $‫ر‬4‫ ا‬0E‫ ا‬LEDK -٢٠

‫ﺹ ا‬, :G

‫او‬
RD7 H RD0 ‫ ﻡ‬D7 H D0
RC0 ‫ ﻡ‬CS1
RC1 ‫ ﻡ‬CS2
RC2 ‫ ﻡ‬RS
RC3 ‫ ﻡ‬RW
‫‪ EN‬ﻡ ‪RC4‬‬
‫‪RST‬ﻡ ‪RC5‬‬
‫‪ Vss‬ﻡ ا‪4‬ر‪$‬‬
‫‪ Vcc‬آ(  ‪+, ٥‬‬
‫‪ Vo‬ﻡ ا‪4‬ر‪$‬‬
‫‪ Vout‬ﻡ ا‪4‬ر‪$‬‬
‫‪ LEDA‬آ(  ‪+, ٥‬‬
‫‪ LEDK‬ار‪$‬‬

‫ﻡ‪: P,C‬ﻡ‪ O‬و‪ 4 N‬ی‪,‬ﺝ ‪ L‬ا‪K‬اف ا‪ 5$‬ا‬

‫‪ QG‬ح ﻡ‪GLCD .7‬‬

‫ه‪V‬ا ا‪,7‬د =ص ;ی أ‪K‬اف ا ا ‪,‬ﺹ‪ C‬ﻡ ا ‪7‬وآ‪T‬و وی‪./ S7‬‬
‫ا ا ا‪ 5‬‬
‫;)(‪Glcd_Init‬‬
‫;ی ا ‪.7‬‬

‫;)‪Glcd_Fill(0‬‬
‫‪ X‬ا او ﻡ‪ [C‬ا ‪,C‬ن ﻡ د‬ ‫ی‪,9‬م‬
‫و‪ L‬ﻡ;ﻡ وا ا‪,C‬ن وﺹ ی;‪ T‬ا \‬

‫;)‪Glcd_Dot(0, 0, 2‬‬
‫رﺱ ‪ _9:‬و‪]G L‬ث ﻡ;ﻡ]ت‬
‫ا‪4‬ول  ی ا‪ HC! _9T‬ا ‪,‬ر ا‪ 94‬وی=‪ V‬ا‪  9‬ﻡ ‪١٢٧ H ٠‬‬
‫ا‪  :Q‬ی ا‪ HC! _9T‬ا ‪,‬ر اأﺱ وی=‪ V‬ا‪  9‬ﻡ ‪٦٣ H ٠‬‬
‫ا‪  bQ‬ی ا‪,C‬ن‬

‫;)‪Glcd_Line(0, 0, 20, 30, 1‬‬


‫رﺱ =‪ 0‬و( = ‪ N‬ﻡ;ﻡ]ت‬
‫ا‪4‬ول ای ا‪ HC! 0E‬ا ‪,‬ر ا‪ 94‬وی=‪ V‬ا‪  9‬ﻡ ‪١٢٧ H ٠‬‬
‫ا‪ :Q‬ای ا‪ HC! 0E‬ا ‪,‬ر اأﺱ وی=‪ V‬ا‪  9‬ﻡ ‪٦٣ H ٠‬‬
‫ا‪(: bQ‬ی ا‪ HC! 0E‬ا ‪,‬ر ا‪94‬‬
‫اا ‪(:‬ی ا‪ HC! 0E‬ا ‪,‬ر اأﺱ‬
‫ا‪E‬ﻡ‪ N‬ا‪,C‬ن‬

‫;)‪Glcd_V_Line(5, 25, 10, 1‬‬


‫رﺱ =‪, ! 0‬دي و‪ L‬ار ﻡ;ﻡ]ت‬
‫ا‪4‬ول ای ا‪ HC! 0E‬ا ‪,‬ر اأﺱ‬
‫ا‪  :Q‬ی ا ‪,‬ر اأﺱ‬
‫ا‪(: bQ‬ی ا‪ HC! 0E‬ا ‪,‬ر اأﺱ‬
‫اا  ی ا‪,C‬ن‬

‫;)‪Glcd_H_Line(10, 50, 20, 1‬‬


‫رﺱ =‪ 0‬ا‪ 9‬و‪ L‬ار ﻡ;ﻡ]ت‬
‫ا‪4‬ول ای ا‪ HC! 0E‬ا ‪,‬ر ا‪94‬‬
‫ا‪  :Q‬ی ا ‪,‬ر اأﺱ‬
‫ا‪(: bQ‬ی ا‪ HC! 0E‬ا ‪,‬ر ا‪94‬‬
‫اا  ی ا‪,C‬ن‬
‫;)‪Glcd_Rectangle(5, 5, 40, 40, 1‬‬
‫رﺱ ﻡ _ و‪ N = L‬ﻡ;ﻡ]ت‬
‫ا‪4‬ول ای ا _ !‪ HC‬ا ‪,‬ر ا‪ 94‬ﻡ ا(‪ L‬ا ى‬
‫ا‪ :Q‬ای ا _ !‪ HC‬ا ‪,‬ر اأﺱ ﻡ ا( ا ى‬
‫ا‪(: bQ‬ی ا _ !‪ HC‬ا ‪,‬ر ا‪ 94‬ﻡ ا( ا ‪HT‬‬
‫اا ‪(:‬ی ا _ !‪ HC‬ا ‪,‬ر اأﺱ ﻡ ا( ا ‪HT‬‬
‫ا‪E‬ﻡ‪  N‬ی ا‪,C‬ن‬

‫‪Glcd_Rectangle_Round_Edges(5, 5,‬‬
‫;)‪40, 40, 12, 1‬‬
‫رﺱ ﻡ _ دا‪5‬ي ا‪,‬اف و‪ L‬ﺱ ﻡ;ﻡ]ت‬
‫ا‪4‬ول ای ا _ !‪ HC‬ا ‪,‬ر ا‪ 94‬ﻡ ا(‪ L‬ا ى‬
‫ا‪ :Q‬ای ا _ !‪ HC‬ا ‪,‬ر اأﺱ ﻡ ا( ا ى‬
‫ا‪(: bQ‬ی ا _ !‪ HC‬ا ‪,‬ر ا‪ 94‬ﻡ ا( ا ‪HT‬‬
‫اا ‪(:‬ی ا _ !‪ HC‬ا ‪,‬ر اأﺱ ﻡ ا( ا ‪HT‬‬
‫ا ;ﻡ ا‪E‬ﻡ‪ _/ : N‬دا‪5‬ة ا‬
‫ا ;ﻡ ا دس  ی ا‪,C‬ن‬

‫‪Glcd_Rectangle_Round_Edges_Fill(5,‬‬
‫;)‪5, 40, 40, 12, 1‬‬
‫رﺱ ﻡ _ دا‪5‬ي ا‪,‬اف ﻡ‪,C‬ن و‪ L‬ﺱ ﻡ;ﻡ]ت ه ‪ N:‬ا  ‪9‬‬

‫;)‪Glcd_Circle(50, 50, 10, 1‬‬


‫رﺱ دا‪5‬ة و( ار ﻡ;ﻡ]ت‬
‫ا‪4‬ول ﻡآ‪ f‬ا ا‪5‬ة !‪ HC‬ا ‪,‬ر ا‪94‬‬
‫ا‪ :Q‬ﻡآ‪ f‬ا ا‪5‬ة !‪ HC‬ا ‪,‬ر اأﺱ‬
‫ا‪ _/ : bQ‬ا ا‪5‬ة‬
‫اا ‪,‬ن ا ا‪5‬ة‬

‫;)‪Glcd_Circle_Fill(50, 50, 10, 1‬‬


‫رﺱ دا‪5‬ة ﻡ‪ ( :,C‬ار ﻡ;ﻡ]ت ه ‪ N:‬ا  ‪9‬‬
‫;)‪Glcd_Write_Char('C', 10, 2, 1‬‬
‫آ  ف و( ار ﻡ;ﻡ]ت‬
‫ا‪4‬ول اف‬
‫ا‪ :Q‬ا ‪,‬ر ا‪94‬‬
‫ا‪ bQ‬ا ‪,‬ر اأﺱ‬
‫اا ‪,‬ن اف‬

‫‪Glcd_Write_Text("Hello world!",‬‬
‫;)‪10, 2, 1‬‬
‫آ  ‪ g:‬و( ار ﻡ;ﻡ]ت‬
‫ا‪4‬ول ا‪gT‬‬
‫ا‪ :Q‬ای ا‪ HC! gT‬ا ‪,‬ر ا‪94‬‬
‫ا‪ bQ‬ای ا‪ HC! gT‬ا ‪,‬ر اأﺱ‬
‫اا ‪,‬ن ا‪gT‬‬

‫رﺱ ﺹ‪,‬رة‬
‫ﻡ ‪Tools  5/‬‬
‫ا=‬
‫‪ (h‬ا‪VT‬ة ا‬

‫ﻡ زر ‪  load BMP‬د ا‪,‬رة ‪ G‬ا‪ j :‬ا‪,7‬د ﻡ زر ‪copy code‬‬


‫‪ $ G‬ا‪,7‬د  ‪  /‬ا ‪A‬ات ا;ﻡ‬
‫آ‬
‫‪ G‬أآ‪S‬‬
‫;)‪ Glcd_Image(bank‬آ‪ bank  C‬ه اﺱ ا‪,‬رة‬

‫‪ (h‬ا‪T‬‬
‫آ‬

‫;)‪Glcd_Ext_Image(153608‬‬
‫ی;ض ﺹ‪,‬رة =رﺝ‬

‫‪Glcd_PartialImage(10, 12, 10, 15,‬‬


‫;)‪16, 32, image‬‬
‫ی;ض ﺝ‪f‬ء ﻡ ا‪,‬رة  ا ‪ 9_T‬ا  دة و‪ L‬ﺱ‪ .‬ﻡ;ﻡ]ت‬
‫ا‪4‬ول  ی ای ا‪,‬رة !‪ HC‬ا ‪,‬ر ا‪94‬‬
‫ا‪  :Q‬ی ای ا‪,‬رة !‪ HC‬ا ‪,‬ر اأﺱ‬
‫ا‪ bQ‬ا _‪,C‬ب ﻡ !ض ا‪,‬رة‬
‫اا ا _‪,C‬ب ﻡ ‪,K‬ل ا‪,‬رة‬
‫ا‪E‬ﻡ‪! N‬ض ا‪,‬رة ا‪4‬ﺹ‪C‬‬
‫ا دس ‪,K‬ل ا‪,‬رة ا‪4‬ﺹ‪C‬‬
‫ا  اﺱ ا‪,‬رة‬
Glcd_Ext_PartialImage(10, 12, 10,
15, 16, 32, 0);
N: ‫ ﻡ;ﻡ]ت‬.‫ ﺱ‬L‫_ ا  دة و‬T ‫رة =رﺝ  ا‬,‫ء ﻡ ﺹ‬f‫ی;ض ﺝ‬
9  ‫ا‬

Glcd_Write_Text_Adv("GLCD", 0, 0);
‫ واأ‬ ‫ ا  ا ا ت ا‬
‫و ث  ت‬
‫ ا‬-١
 ‫ر ا‬#$‫ ا‬-٢
‫ر اأ‬#$‫ ا‬-٣

Glcd_Set_Font_Adv(&myfont, 0, 0);
‫ ا‬HC! S7‫ي ی‬V‫ ا‬0E‫ع ا‬,: ‫ی د‬
‫]ث ﻡ;ﻡ]ت‬G L‫و‬
0E‫ع ا‬,: ‫ول‬4‫ا‬
0E‫ن ا‬, :Q‫ا‬
0E‫ ا‬o‫  ی ا‬bQ‫ا‬

Glcd_Set_Ext_Font_Adv(173296, 5,
7, 32);
‫ =رﺝ‬0= 7‫ ا و‬HC! S7‫ي ی‬V‫ ا‬0E‫ع ا‬,: ‫ی د‬
‫]ث ﻡ;ﻡ]ت‬G L‫و‬
,. 7‫ ﺝ(ز ا‬HC! ‫ م‬E ‫ ا‬0E‫ان ا‬,T!
0E‫ن ا‬, :Q‫ا‬
0E‫ ا‬o‫  ی ا‬bQ‫ا‬

Glcd_Set_Font(&myfont, 5, 7, 32);
%& '‫* ا)ي   ا‬+‫ع ا‬#- ‫د‬/
‫و ث  ت‬
*+‫ ا‬0‫ا ول ا‬
‫ا‪# - 3‬ن ا‪*+‬‬
‫ا‪ 6 7 3‬ا‪ 4 5‬ا‪*+‬‬
‫ رب أآ‪#‬ن و ; ‪& :‬ح ‪GLCD %8‬‬
‫او ا' & ت ا?ا >‬

‫@‬ ‫‬
‫ ا ا  ا‬
‫ﻡ  ا  ‪Keyboard‬‬
‫  ‬

‫ﻡ ‪Ps2‬‬
‫ه ﻡ ا ا وآ"و ‪ $‬ا ‬

‫‪ Ps2‬ین ﻡ ‪" ٦‬ت او ا‪,‬اف آ   ا*رة ا‬


‫و‪ /‬ا‪,.‬اف‬
‫‪ -١‬ﻥت ‪DATA‬‬
‫‪ 6 -٢‬ﻡ ‪NC 4 5‬‬
‫‪ -٣‬ار‪GROUND 8‬‬
‫‪ -٤‬آ‪Vcc < ٥  :‬‬
‫‪ -٥‬دد ا"= ‪CLCK‬‬
‫‪ 6 -٦‬ﻡ ‪NC 4 5‬‬

‫وی ﺹ‪ @A , 4‬ﻡ? ا وآ"و‬


‫ا‪DDE‬ف ا‪.‬ول ‪ Data‬وا‪DDE‬ف ا‪DDF‬ﻥ ‪ CLCK‬وا‪DD6 DDE‬‬
‫ﻡی ‪,‬اف ﻡدة‬

‫ﻡ‪5‬ﻡ‪G‬ت ا ‬

‫‪Ps2_Config‬‬ ‫‪-١‬‬
‫و‪5 H/‬ی ‪Ps2‬‬

‫‪Ps2_Key_Read‬‬ ‫‪-٢‬‬
‫ا ا ح ا =‪J‬ط ‪ $‬ﻡ  ا ‬

‫و‪ H‬ﺙ‪G‬ث ﻡ‪5‬ﻡ‪G‬ت‬


‫أ‪ -‬ا‪   -:  A‬ا ح ا ‪J=D‬ط ‪ HD$‬وی‪ D‬آ ‪D HD‬وف‬
‫أﺱ ‪ASCII‬‬
‫‪S‬ص ‪ -:‬ه‪ 4‬ه ﻡح ‪S‬ص ﻡ‪ 4F‬أﻥ ام ‪D‬ف ‪D‬دي‬ ‫ب‪-‬‬
‫ﻡ‪ 4F‬ا‪.‬ر م وا‪.‬ف ا‪V:‬‬
‫اذا آن ف ‪S‬ص ی‪ WS‬ا‪١  A‬‬
‫اذا آن ف دي ی‪ WS‬ا‪٠  A‬‬
‫ج – ‪,‬ی‪ A‬ارﺝع   ا=‪ \$ @J‬ا  ه‪ 4‬ی ا=‪ @J‬ام ‬
‫ی ا ح )أي ر? یك ﻡ ‪ \$‬ا ح (‬
‫وی‪ WS‬ا‪ A‬ا‬
‫‪  ٠‬ی ﻡح ا=‪@J‬‬
‫‪ ١‬ی ا=‪ @J‬‬
‫وی=‪ 4‬ا‪S‬ر ‪. \ ٠‬ی آ  وف ﻡرة‬

‫و ‪   5‬وف أﺱ أ‪ @J8‬ﻡ ا‪TOOLS  A‬‬


‫ﻡ‪F‬ل‬
‫ ه‪W‬ا ا ‪F‬ل ﺱف ی آ  ف ‪ 5 E‬ا=‪ \$ @J‬‬
‫ا  ‪bb \$‬‬

‫او‪ .‬اد‬
‫ﺙﻥ ‪ 4b‬اا‬
‫ﻡ‪ /$‬ی ﺹ‪, 4‬ف ‪ Data‬و‪,‬ف ‪CLCK‬‬
‫*ر ﺝ‪ < ٥ :‬وﻡ‪A‬وﻡ ‪١‬آ‪ $‬اوم‬

‫وا ا ‪c‬‬
‫وا ا *‬
‫ ‬
‫ ا ا  ا‬

‫ا ات واوال اﺱﺱ‬


‫ ا وﺱ ‪MikroC‬‬
‫ﺕ  ‬

‫او ا! اع ا ات‬
‫‪char $! -١‬‬
‫‪ -٢‬ر& &‪short $‬‬
‫‪ -٣‬ر& ﺹ) ‪int‬‬
‫‪ -٤‬ر& ‪ .‬ی‪long ,‬‬
‫‪ -٥‬د آ ي ‪float‬‬
‫واذا ا‪6 3‬رة ‪ Unsigned‬ی‪  69‬ا‪ 8‬ا ‪67‬‬
‫‪:8‬‬
‫وا< ا;ول ا‬
‫و = & آ‪ ,‬ﻡ‬
‫@! اه دوال ا وﺱ‬

SizeOf ‫اا‬
$A‫ ا ات ا‬B‫ ﻡ‬, 9 ‫ وﺕ‬C‫ی‬6  ‫ ; ا‬9‫ﺕ‬
D‫ ی‬E‫ وااد ا‬$‫وار&م ا‬
‫ل‬G‫ﻡ‬
Char x="7";
SizeOf(x);

abs ‫اا‬
& ‫ت‬7‫ اذا و‬67 ‫ ا‬8‫ ا‬9‫ﺕ‬
‫ل‬G‫ﻡ‬
Result=abs(-12);//12

Max ‫اا‬
 & ‫ & ﻡ‬6‫ اآ‬9‫ﺕ‬
‫ل‬G‫ﻡ‬
Result=Max(123,73);//123

Min ‫اا‬
 &  ‫ى‬$‫ ا‬8‫ ا‬9‫ﺕ‬
‫ل‬G‫ﻡ‬
Result=Min(123,73);//73

rend() ‫اا‬
٣٢٧٦٧ L‫ ا‬٠ ‫ ﻡ‬I‫ ا‬J & 9‫ﺕ‬
‫ل‬G‫ﻡ‬
Result=rand();

$! D D‫ ﺱ‬L‫ﺕ  أه  اوال ا ﺕ ل ار&م ا‬


‫ ﺹ‬8‫ی‬E P ‫ﺵت‬J‫ ا‬I‫ &ا‬
ShotToStrٍ ‫اا‬
$! D D‫ ﺱ‬L‫ ا‬$8‫ﺕ ل ا& ا‬
‫ل‬G‫ﻡ‬
Short t=22;
Char txt[4];
ShortToStr(t,txt);

IntTOStr ‫اا‬
$! D D‫ ﺱ‬L‫) ا‬$‫ﺕ ل ا& ا‬
IntToStr(t,txt);

FloatToStr ‫اا‬
$! D D‫ ﺱ‬L‫ي ا‬J9‫ﺕ ل ا& ا‬
FloatToStr(t,txt);

$ ‫ وا= ا‬S ‫ا وا ا‬T‫ه‬


 
‫ ا ا  ا‬
‫ا ا دس‬
‫ال ا ا‬

‫ ‬ ‫"!‬

‫او‪ #‬و&‪ %‬ال ‪ADC‬‬


‫ه ‪ /0‬ا‪.#‬رة ا‪+#‬ج ا) د(ل '‬
‫‪ :; /‬ا‪89‬وآ‪56‬و ا‪234 43‬‬
‫و‪ 4‬ا‪39‬وف ان ا‪.#‬رة ا‪+#‬ج =<‬
‫‪ %A64‬و@  ‪34‬دة ‪ 6‬ا‪.#‬رة‬
‫ا(ل "!‪ C DE‬ا‪ B 4‬او وا‬

‫و‪ 8/‬أ‪ %F‬ال ‪ I ADC‬ا‪ %H‬‬


‫ا ‪ 6‬ر ‪ N4‬ﺱ‪ 6‬ر ا‪ KLM‬وﺱ‪ 6‬ر‬
‫در‪ %P‬ا‪O‬ارة وﺱ‪ 6‬ر ‪.‬ة ا‪M‬ء‬

‫وا ‪ 6‬ر ه اداة ‪0‬ل ا‪R‬‬


‫ا‪ %H/T‬ا‪ % S‬آ‪N4 %H 2‬ل‬
‫‪ Y‬ذ‪ W‬ﺱ‪ 6‬ر او  س ازن ‪U‬‬
‫أ‪+‬ﻩ &هة ‪T Y" %H/T‬و او‬
‫ا‪ 28‬ء ا‪LM+#‬ﻁ‪ %‬وه رة ‪[3‬‬
‫ا‪9‬اد ‪ " Y‬آ‪ 2‬ء ‪ 6‬ا‪KLM‬‬
‫‪ N4 2‬ا‪8‬ار"‪ T‬و^‪ 8‬أن "ى‬
‫&هة ‪T‬و ‪ I‬ا‪#‬ت‬
‫و‪N4‬ل ا‪ 6  E‬ر ﺱ‪ 6‬ر در‪%P‬‬
‫ا‪O‬ارة ‪ U‬أن ا‪R‬ء ‪C` C+34‬‬
‫‪ N4‬ا‪ /O‬وا‪6‬س ‪ %;R+ I‬و"‪3‬ض‬
‫ه‪ bD‬ا‪ %;R6‬ارة ‪ /‬آ‪ 2‬ء‬
‫و‪N4‬ل ا‪ E‬ا‪R9‬و‪ %4‬ا‪R" U %HM‬‬
‫‪R4‬و‪ [3 %4‬ا‪9‬اد ‪ 6‬ا‪3‬ض ‪M‬ء‬

‫ال ‪ I‬ا‪89‬وآ‪56‬و‬ ‫‪ +‬اﻁاف‬

‫‪ A‬و ‪ E‬و‪d e8/‬ار‪b‬‬ ‫‪8/‬ن ‪ I‬ا‪c‬رت‬


‫‪ AN‬اي ا‪+‬ج‬

‫و‪ Y‬ذ‪ ٨ PIC16F877A I P/ W‬اﻁاف‬


‫ا‪+‬ج وه ‪RA0‬و ‪ RA1‬و ‪ RA2‬و ‪ RA3‬و‬
‫ٌ‪RE2‬‬
‫ُ‪ RE0‬و ‪RE1‬وُ‬
‫‪RA5‬وٌ‬
‫‪ADC %c84 N‬‬
‫;)(‪ADC_Init‬‬
‫ا‪%c89‬‬ ‫ه‪D‬ا ا‪8‬د ‪/3‬‬

‫;)‪tmp = ADC_Read(2‬‬
‫ ا‬ ‫ا  ا‬ ‫ها ا د ه‬
‫و ﻩ  واﺡ ه ر ا  ف ‪AN‬‬

‫را ‪N4 3‬ل ‪ Y‬ا‪ADC %c89‬‬

‫س  ‬ ‫و‪%‬ف ‪ $‬م " ا!‬


‫ا و‬
‫( ا' وع‬
‫‪ .‬ا‪  !-‬ة ‪*+,‬ة ‪/,  POT HG‬‬
‫‪ ١‬آ  اوم و‪3‬ﺹ ‪ /‬ا‪ 1‬ا  ف ‪AN0‬‬
‫آ ‪ 5 /67‬ا '‬

‫ا د‬
‫ا ‪ 9 ,:‬آ ‪8,‬‬ ‫‪/6,‬‬

‫ها وا< ا!;‬


‫?  !‪,‬ﺡ=‬
‫ ا ا  ا‬

‫ی  ب ﻡد أي ﻡ او ﺱ ر‬

 ‫ ﻡ ع ا‬Vt
 "  # $%#‫ ا‬Vomax
 "  # &#‫ ا‬Vomin
Vt=Vomax-Vomin

‫ ﻡ ع و(ات ا  ر‬St
‫ ا  ا* ) "  ر‬Smax
‫ى "  ر‬,%‫ ا  ا‬Smin
St=Smax-Smin

 -‫ ا‬K
K=Vt/St

./‫ ا د ا‬Out


 " $0‫ج ا‬2‫ ا‬Vonow
Out=(Vonow-Vomin)/K+Smin
    

‫ات‬
Interrupts


         !"  #$% &'$(
56  34 )$ *+, -(. /  0 , , 12

1'6 ; :: 7' 89

‫ا‬  ‫او‬

E  BA; -A( < =>? @ ! A'04 B6$( C> D +;


BF0 GH0 < E  IA; JK 8'0  6

8' L & M$  NAO0 ;6 P. 4 $% I3Q


 % -A; ,S KT(  B+U V'6 L GF  R 

١
B P. 4 G ;6 P. WXQ Y  $% @ Z? [? 
]L^$   P.& G^ @^0 ,6 VKT( !O' . ? J\ 

Void Interrupt (){


P.& N'0 +4
}

‫أه ات‬

 ? _$0 `' ? 3a+' 0 '+Q @ Z? ! [?
GF ]L^; >' +; BA0 W3 <
Delay_ms
WJ90 c V .F  ] A  FQ@ ? L' 0  B.b6
8( OA FQ@ dE,' .e '+Q 8A( ; f
P.&  >'? '+Q
8A'  '+Q -A; [6g  #$% >' +; H+
P.& K 8'0  Fe  , OA G dE,'

‫ااع ات‬

O +; ,S KT( GF : jLk ih

٢
RB0 INT

l' 1a% Gm GF '+Q #Em  KT( GF AkJ i
0UTMR0

n o6 pAm -A; #$% H'$(


INTCON
OPTION_REG
,1"' .  as Y G Y r -A; W'q Gm GQ

٣
‫ا‬INTCON

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Bit7
'H B #$% t.@ !u GO$( @ G$a( Y^ 34 as
0
#$% t. !u GO$(
1
#$% t. !u G$a(

Y^ 34 G$a(   E6 #$% >' #JL v I.@ wx'0 +4 

Bit6
H AeH' yz GF 1A ]{,j? GO$( @ G$a(ADC
0
1A ]{,j? GO$(ADC
1
1A ]{,j? G$a(

٤
Bit5
0U l' J; GO$( @ G$a(TMR0
0
0U l' GO$(
h
0U l' G$a(
#x^. Y.Q  #x^+ J; $0 AkJ J; 4 0U l'
O jL| J$ @ '
RA4/T0CKI

Bit4

O +; ,S KT( $% GO$( @ G$a(


RB0

٥
0
O +; ,S  KT' +; $% G$a( ;RB0
1
O +; ,S KT( $% G$a(RB0

Bit3
' %? @ +; ,S  KT' $% GO$( @ G$a(
RB4 or RB5 or RB6 or RB7
0
GO$(
h
G$a(

Bit2
k }$2 0U l' 1a% A; GO$( @ G$a(
TMR0
€ ~  $0 l'
 I3 € U‚ _$0 +4 1aO 0j  $ @^0 Iv $ 
aƒ f J$0
v6 aƒ f .e J$ ?  € $( l' Q v@ .&„ A$ 34
€ f l' H Gƒ0 † B.@ _$0 a‡ Q
€ f G‡ l' @ _$0  Q v
† l' ? P.& 0  G$a Kˆ Y^ 34 0 @ N‰ +4 
$ @^0

٦
Bit1
+; ,S KT( A; 4
RB0
,S KT( ; _$0 a‡ Q v6
,S KT( _$0  Q v
$ KT'0 † ,S ? aƒ P.& 0  0 @ N‰ I3Q

Bit0
%? V34 +; ,S KT( A;
RB4,RB5,RB6,RB7
,S KT( ; _$0 aƒ Q v6
,S KT( _$0  Q v
%? V34 -A; ,S ? aƒ P.& 0  0 @ N‰ I3Q
$ KT'0 †

 w^ƒ0 aƒ Q v B.@ _$0 '+Q % @ +; ,S KT(
aƒ w^ƒ0 Y6  Q v Y6

٧
‫ا‬OPTION_REG

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Bit7
Gm GO$( @ pD Y^ 34 as
option_reg
GH$ 
0
GO$(
h
pD

Bit6
O -A; Y6  KT' a =k Y^ 34
RB0
Y6 a‡ f B Š   Y6 Š f a‡  KT' 0 G4
$% Gm ! Gƒ'0 Y^ 34 X6 34 -A;
Intcon

٨
O -A; ,S KT' =| ‹ Y^ 
RB0
0
Y6 a‡ f Y6 Š 
h
Y6 Š f Y6 a‡ 

Bit5
%   '  $ G4 0U l'A $ Lƒ Jq
RA4
0
jL| O  $ w^ƒ0RA4
1
'+Q ‡| '  $ w^ƒ0

Bit4
O  $ 0 8Q 01' 0
RA4
Y6 Š f a‡   a‡ f Y6 Š   G4
0
Y6 a‡ f Y6 Š  $ w^ƒ0
h
Y6 Š f Y6 a‡  $ w^ƒ0

٩
a‡ W 0 Š Y v ? B6 Ka' '0 ? Gm  34 6 34 -A;
jL| J$ >' +; 

Bit3
O jL| J$A  0U l'A H  G$  G4 Jq
RA4
@ Œ  f Ž' ]a V34
?   0  G4 73 3  ' JJ(
H ! L W ( #AH$  3a+0 '+QHA ; -ƒ @ Œ
€  ~  l'  $ '

' JJ(

H  G$ *€’*‹

 V&'$. Jq † v 0U l' ; Jq  H  G$ v
0
0U l'ATMR0
1
RA4OA

١٠
Bit 2,1,0
G$6 v H  G$ H n
Ok “q ?  aƒ #'^ V34 ( @ Gxa0

‫ا  ا  ت‬

~ l' -A; yF ?

.e ] XaO0 < %?  -A; ”x0 A `'Q yF
`'Q •( P. -A; ]   ?

١١
J 'Q .e

$% P. 'Q


: s1A
{(K4 m r 4 AH$'  '

١٢
O  $0 jLk J; 4 –F t 
RA4
Ak ROTx  #x^+ J;

`'Q •( P. -A;  3a+' 

١٣
  ! J

١٤
١٥
O +; ,S KT( ŒF t 
RB0
`'Q •( P. -A; t  3a.

J 'Q .e

١٦
 
  
  

١٧

You might also like