32
1 اﻟـ ﻣﻦ ﻣﺨﺘﻠﻔﺔ أﻧﻮاع ﻣﻊ ﻟﻠﺘﻌﺎﻣﻞ اﻟﺒﺴﻴﻂ اﻟﻤﻔﺘﺎحPIC ﺗﺄﻟﻴﻒ. م/ ﻓﺎﻳﺪ ﺳﻤﻴﺮ أﺣﻤﺪ[email protected]

pic microcontroller

Embed Size (px)

DESCRIPTION

pic microcontroller

Citation preview

Page 1: pic microcontroller

1

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

أحمد سمير فايد/ م . تأليف

[email protected]

Page 2: pic microcontroller

2

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

الحلقة األولى بسم اهللا الرحمن الرحيم

أحيانا ما حيتاج مستخدمي امليكروكنترولر إىل استخدام نوع آخر غري النوع الذي يستخدموه أو عدد أطراف أكرب أو ) ROMأو RAM( وذلك للحصول على مميزات إضافية مثل ذاكرة أكرب ) USB – PWM - EEPROM – UART( خاصية أو جمموعة خواص موجودة يف نوع دون آخر

إخل..

ويفاجأ مربمج امليكروكنترولر حينها أن بعض أطراف امليكروكنترولر ال تعمل بشكلها الطبيعي أي األطراف PORTAما تكون هذه األطراف غالبا . كما كانت يف النوع الذي كان يستخدمه

A0,A1,…,A7 . سأوضح األمر ولكن ماذا يعين هذا الكالم ؟, وأحيانا تشترك معها أطراف أخرى : ذه القصة اليت حكاها أحد األشخاص

ألول مرة ومل يتعامل من قبل مع أي PIC16F628Aقام األخ فالن بشراء امليكروكنترولر وكان هدفه من شراء هذا امليكروكنترولر هو أن يستفيد . PIC16F84Aميكروكنترولر آخر سوى

:وهي ) من وجهة نظره ( من أهم خواصه

سواءا كان OSCILLATORامليكروكنترولر دون توصيل مذبذب إمكانية تشغيل -1 .كريستال أو أي نوع آخر حيث يتمتع هذا النوع بإمكانية تشغيل املذبذب الداخلي

داخلية املوجودة داخل امليكروكنترولر حبيث يتحكم يف ال PWMاستخدام خاصية الـ -2ويف نفس الوقت الذي خيرج فيه امليكروكنترولر هذه النبضات اليت DCسرعة موتور

.تتحكم يف السرعة ينفذ امليكروكنترولر شيئا آخر مع هذه اخلاصية

. ROMأو الـ RAMسواءا الـ PIC16F84Aمن الـ أن له ذاكرة أكرب -3

RS232داخلي ميكنه من عمل تواصل باحلاسب اآليل باستخدام UARTعلى أنه حيتوي -4 .وإمكانية عمل مقاطعة عند استالم البيانات

حيث وجد أن هذا .!! عندما قام فالن بشراء امليكروكنترولر تفاجأ من السعر ,املهم بل وجده ليس بغايل الثمن PIC16F84aامليكروكنترولر ذو اإلمكانيات الرائعة مقارنة بـ

Page 3: pic microcontroller

3

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

وعندما جتول أكثر يف سوق االلكترونيات وذهب حملل آخر وسأل PIC16f84aبنفس السعر لـ وذو , مع أنه أحدث PIC16f84aوجد أنه أرخص شيئا يسريا من PIC16f628aعن سعر

ولكن , الكتيب إن شاء اهللاسأخربك به يف آخر هذا .... إمكانيات أكرب هل تعلم السبب ؟؟ قال سأقوم ببعض PIC16f628aفبعد أن اشترى امليكروكنترولر , ن نعود لألخ فالن دعنا اآل

حبيث إذا استطعت تنفيذ نفس التجارب PIC16f84aالتجارب عليه كاليت كنت أفعلها مع .حيث يوجد ما هو أرخص وذو إمكانيات أكرب ..!!بعد اليوم PIC16f84aعليه فلن أشتري

:حيث كتب الربنامج التايل PIC16F628aأول برنامج للـ وبدأ بعدها فالن بكتابة

!! وعملت الدائرة بشكل ممتاز ISIS PROTEUSوقام بتشغيل الدائرة يف برنامج احملاكاة بروتس . وانطفأت بزمن نصف ثانية بني اإلضاءة واإلطفاء portbالليدات املوصلة بـ تحيث أضاء

yeees yesبصوت مرتفع حيث قالعل مثل بعض األجانب وف !! حينها قفز فالن من الفرحة

..!! يا مجاله ( أو !! ) يا سالااااام ( أو ..!! ) اااااأيو( فقال له صديقه يا أخي اعتز بلغتك وقل !!مث قال فالن لصديقه ما رأيك على هذا الكالم فضحكوا مجيعا .. !! ) يا حالااااااوة ( أو قل )

, الربكة يف اجلماعة ليد 12اجعلهم رقم صغريمجيلة ولكن مثانية ذه الليدات فقال له أخرى LEDsوقال كل ما سنفعله أننا سنوصل أربع ليدات .!! بسيطة .. بكل ثقةفقال له : سنكتب الكود التايل انظر A0,A1,A2,A3باألطراف

void main()

{trisb=0;

while(1)

{ portb=0; delay_ms(500);

Portb=0xff; delay_ms(500);

}

}

Page 4: pic microcontroller

4

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

ال portaات املوصلة بـ فقط هو من يعمل والليد portbدور احملاكاة وجد أن وعندما جاء فتسرع , ..!! ) وقال بصوت منخفض يا للعار (وحينها وقع يف موقف حمرج مع صاحبه تعمل بدون علم البد أن املشكلة يف برنامج بروتس فقام باستخدام نسخة أخرى منه قائال و

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

واحلل مكتوب هنا يف ( وبعد البحث مرارا وتكرارا وجدوا احلل , هناك نقطة علمية ال نعرفها ) . هذا الدرس لكي يوفر عليك عناء البحث فاحلمد هللا أوال وأخريا

عندها يعمل ;CMCON=0x07ايل يف بداية الربنامج أن نقوم بكتابة الكود الت احلل هوporta كما كان يف جدا بشكل طبيعيPIC16f84a . إذن الكود الذي جعل فالن ينجح يف

جتربته هو

void main()

{trisb=0; trisa=0;

while(1)

{ portb=0; porta=0; delay_ms(500);

Portb=0xff; porta=0xff; delay_ms(500);

}

}

void main() { cmcon=0x07; trisb=0; trisa=0;

while(1) { portb=0; porta=0; delay_ms(500);

Portb=0xff; porta=0xff; delay_ms(500);

}

}

Page 5: pic microcontroller

5

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

فإنه البد أن يكتب هذا pic16f628aفالن جتربته بأنه إذا كان سيستخدم حينها خلص بشكل portaإذا كان سيستخدم أطراف هذا. ;CMCON=0x07السطر يف بداية الربنامج

أما إذا مل يستخدم هذه األطراف فال داعي هلذا األمر مع أنه لو كتب هذا digitalعادي أي . األمر لن يضر

كل التهاين لك ليس فقط ألنك ستستطيع استخدام نوع جيد من :عزيزي القارئ يدة ولكن ألنك ستوفر بعض املال ألن ذو اإلمكانيات اجل PIC16f628aامليكروكنترولر الذي هو

وهذا املال ميكنك استغالله وحتقيق بعض , PIC16f84aمن أرخص PICهذا النوع من الـ جمرد مزحة إذا ( . كشراء بعض املقاومات أو الليدات أو السويتشات اليت حتلم ا األمنيات

).. وأتأسف على ذلك ..!!مل تعجبك اعتربين مل أقلها

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

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

أجرت بعض التجارب ولكن قبل أن نذكر قصتها نريد أن نشري إىل و PIC16877a ميكروكنترولر .. PIC16f628aمهمة موجودة يف امليكروكنترولر اتإمكاني

Page 6: pic microcontroller

6

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

لصفحات األوىل إىل أن جتد وقلب ا PIC16f628aامليكروكنترولر افتح الداتاشيت اخلاصة ب pin diagramرمسة األطراف

إذا قمنا بتكبري الرمسة ستبدو لنا كما يف الشكل بأسفل الصفحة حيث جند امليكروكنترولر أي أن هذه الثالثة أنواع هلا نفس أمساء PIC16f627a,PIC16f628a,PIC16f648مكتوب عليه

حظ أن األطراف اليت نستطيع توصيل املذبذب ا هي دقق النظر مرة أخرى ستال. األطراف واآلن قارن بني هذين . OSC1 , OSC2مكتوب جبوارهم ألنه كيف عرفت ؟ 15و 16األطراف رقم

ماذا تالحظ ؟؟ PIC16f84aالطرفني وبني نظائرمها يف الـ

Page 7: pic microcontroller

7

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

أي أننا نستطيع . اأيض A6,A7هذين الطرفني مكتوب جبوارهم PIC16f628aستالحظ أنه يف استخدامهم كأطراف دخل وخرج ولكن كيف أستخدمهم كأطراف دخل وخرج والكريستال

وبالتايل PICموصل م ؟؟ ال يا عزيزي إننا سنستخدم املذبذب الداخلي املوجود يف هذا الـ . TRISAعن طريق ين الستخدامهم كدخل أو خرج حسب الرغبةأسيكون هاذان الطرفان مهي

portaحيث أن A6,A7فال يوجد به مذبذب داخلي وال يوجد PIC16f84aا امليكروكنترولر أم . A0,A1,A2,A3,A4مكون من مخس أطراف فقط

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

لن نشتري كريستال ولن يف دوائرنا إذن مبا أننا سنستخدم املذبذب الداخلي: فرصة استثمارية !!..أهال بالتوفيــر إذن فنلنقل مجيعا !!.. بعد اليوم نشتري املكثفات الصغرية اليت توصل به

. ال تنسانا من دعواتكإذا جنيت بعض الثروات من هذا التوفري ف

كيف سنقوم باستخدام املذبذب الداخلي ؟

مث بعد ذلك PIC16f628aوكنترولر بكل بساطة يف بداية عملك للمشروع قم باختيار امليكر وضع عالمة صح HS_OSCبعدها قم حبذف عالمة الصح املوجودة على Defaultاضغط على

: كما بالشكل التايل INTOSC_OSC_NOCLKOUTعلى

Page 8: pic microcontroller

8

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

إذا مل تضبط هذه اخلاصية يف بداية املشروع ميكنك ضبطها فيما بعد بالضغط على القائمة Project مث ختتار منهاEdit project وستظهر لك نفس النافذة اليت بالشكل السابق .

نـحن نـختار االختيار INTOSC_OSCكلهم يبدأوا بـ الحظ أن لديك أربع اختيارات متشاة ) .باقي االختيارات رمبا نشري إليها يف وقت الحق (الثاين

وبطريقة MikroC 8.2ذب الداخلي باستخدام الصورة السابقة توضح كيفية استخدام املذبأو ما MikroC Pro v3.8مثل MikroCمن لغة مشاة ميكننا تطبيق ذلك يف اإلصدار األحدث

: كما يف الشكل التايل يضايهيه

اختر : أوال

Pic16f628a

اجعل التردد: ثانیا

4Mhz اختر : ثالثا

INTOSC_OSC_NOCLKOUT

اضغط على قبلھاولكن

Default

Page 9: pic microcontroller

9

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

نضغط باملاوس علىوالتردد مث PICمث خنتار نوع الـ edit projectخنتار projectمن قائمة Default مث خنتارINTOSC: I/O on RA6/OSC2/CLKOUT , I/O on RA7/OSC2/CLKIN

سأذكرك مبا كنا ننصح به دائما عندما ولنتعرف على هذه امليزة , ميزة أخرى أريد أن أخربك اوالطرف MCLRبالطرف 10kكنا نقول ال تنسى أن توصل مقاومة PIC16f84aكنا نستخدم

. لكي تعمل دائرتك بشكل سليم ) أي موجب مخسة فولت( VDDـ باآلخر من املقاومة موصل ولن جتد أي 4ستجد أنه الطرف رقم PIC16f84aيف الداتاشيت للـ MCLRإذا نظرت للطرف

فستجد أن هذا الطرف PIC16f628aشيء آخر مكتوب جبواره أما يف الداتاشيت اخلاصة بـ وال أوصل املقاومة وأستخدم هذا MCLRألغي وهل معىن هذا أنه ميكنين أن . A5مكتوب جبواره

) .هكذا صنعوه ( إنك تستطيع استخدامه كدخل فقط ..ال , اإلجابة الطرف كدخل أو خرج ؟

:االختيار التايل Edit Projectنـختار من والستخدام هذا الطرف كدخل البد أن

MCLR_OFF والصورتان التاليتان توضحان عمل ذلك يفMikroC 8.2 ويفMikroC PRO

ثانیا نختار ھذا االختیار

INTOSC:I/O on RA6 ……….. , I/o on RA7………….

Page 10: pic microcontroller

10

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

الحظ أننا نقوم بنفس الخطوات السابقة ثم نختار

MCLRE_OFF

MikroC 8.2وھذا في اإلصدار القدیم

الحظ أننا نقوم بنفس الخطوات السابقة ثم نختار

Disable تحت كلمةMaster Clear

MikroC PROوھذا في اإلصدار الحدیث

Page 11: pic microcontroller

11

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

حيتوي pic16f628aباستخدام قم بعمل مشروع : )1( وبه بعض الذكاء واملهارة خفيف واجبعلى أكرب عدد تستطيع تنفيذه من الليدات وسويتش واحد كلما مت الضغط عليه يضيء ليد

.خمتلف من هذه الليدات

ليد فأعلم أنك فهمت الدرس 14علهم إذا استطعت أن جت) .... ال تستخدم أي دوائر متكاملة(لديك إما ليد أو أكثر ودون استخدام أي دوائر متكاملة فأنت 15جيدا وإذا استطعت أن جتعلهم

).صاحب أكرب عدد من الليدات هو األكثر متيزا !! ..معلومة جيدة أو فكر متميز

. PIC16f877aقصة فالنة وحكايتها مع الـ واآلن جاء دور

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

وسنتعرف عليه إن شاء اهللا ونتعلمه , علما أننا مل نصل بعد إىل املفتاح البسيط الذي أقصده ع امليكروكنترولر حىت ولو مل نذكره هنا يف هذا الكتيب جيدا كي نستخدم أي نوع من أنوا

.الصغري

.وكل عام وأنتم إىل اهللا أقرب ومن الذنوب أبعد ,, وكل عام وأنتم خبري

.كل عام وأمتنا أض وأض

,,دعواتكم

Page 12: pic microcontroller

12

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ الثانية عبارة عن فيديو احللقة

: الثةالحلقة الث

ا باشتراكها يف مسابقة يف االلكترونيات تقدمها وتبدأ حكايته, حكي لكم قصة فالنة اليوم نـوحينما قررت البدء استشارت دكتور هلا يف اجلامعة والذي كان , كلية اهلندسة اليت تدرس ا

قالت له يا ف, واليت كانوا يدرسوا فيها املايكروكنترولر embedded systemيدرسها مادة pic16f84aوقالت له إنين أستخدم الـ دكتور أريد أن أقوم بعمل مشروع يفعل كذا وكذا

كي تستطيع توصيل حساس احلرارة وحساس الضغط pic16f877aفنصحها باستخدام ما يسمى بـ ميتاز خباصية قياس الفولت عن طريق PICحيث أن هذا الـ الذي يف مشروعها

ANALOG TO DIGITAL CONVERTER فة باإلضا, وبالتايل ميكن قياس خرج هذه احلساساتطرف ميكن استخدامهم 33وعدد األطراف الضخم حيث أنه حيتوي على حلجم الذاكرة األكرب

. (I/O pins 33)كدخل أو خرج

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

: كما يف الشكل التايل VSSوطرفني

أم توصلهم 12و 11أم توصل الطرفني 31و 32احتارت حينها فالنة هل توصل الطرفني ,الذي على اليسار أم العكس VSSالذي على اليمني وطرف VDDأم توصل طرف ,مجيعا

كالذي كتبه فالن يف احللقة portbوكتبت برنامج يضيء الليدات املوصلة بـ , فقالت لنجرب

Page 13: pic microcontroller

13

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

32و31وقالت سأوصل الطرفني ) أو احلرق PICالكتابة على الـ (مث قامت بعملية الربجمة األوىل و 31فرحت حينها وقالت لنجرب اآلن ولنفصل الطرفني , فعملت الدائرة بشكل سليم , فقط

. ري ملحوظفقط فعملت الدائرة أيضا دون تغي 12, 11وجنعل التغذية من 32

وتوصل ) 32الطرف ( الذي على اليمني VDDخطر يف باهلا فكرة بأن تقوم بتوصيل الطرف .....فالحظت شيئا ) 12الطرف(الذي على اليسار VSSأيضا الطرف

.أن الدائرة أيضا اشتغلت بشكل سليم

وبعد تفكري ... ستفيد من هذه اخلاصية يف شيء ؟ حاولت فالنة بعدها التفكري هل ميكن أن تحيث ميكن أن نوصل PCBقليل عرفت أن هذه اخلاصية تسهل عليها تصميم الدوائر املطبوعة

.جهدي التغذية من اليمني أو اليسار على حسب األسهل

الذي على اليسار VDDوتوصيل الطرف ) 31(الذي على اليمني VSSمث قامت باستخدام الطرف بعد , حيث مل تعمل الدائرة .. وهنا حدثت املفاجأة ,ولكن يبدو أا مل حتسن التوصيل )11(

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

وهو قد خرب PICحيث أا ظنت أن الـ , ..!! PICخرب الـ .. ... !! الفلوسراحت ... السنة ضاعت . ) أمريكي دوالر 6-5من = جنيه مصري تقريبا 30 – 25من ( مثنه مرتفع جدا

وحكت هلا القصة وهي حزينة فقالت " وفاء " أسرعت فالنة إىل التليفون لتتصل بصديقتها .!! ال أستطيع أن أفيدك لألسف .. أنا ليس يل أي خربة يف امليكروكنترولر : وفاءهلا

؟؟..إذن وما احلل : فالنة

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

؟ أم واحدة غريها ؟" آية" هل تقصدين : فالنة

Page 14: pic microcontroller

14

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

لقد مسعت أا تساعد اجلميع دائما بكل حب ودون , بنت املؤدبة املتميزة نعم هي تلك ال: وفاء هل تريدين رقم هاتفها ؟.. وتعطي املعلومة بسخاء دون كتماا .. أي تكرب مثل بعض الناس

..ياريـــت : فالنة

رة بعدها قامت بفالنة باالتصال بزميلتها آية وحكت هلا القصة وأخربا أا فور أن وجدت حرا

هذا , ال تقلقي .. فقالت هلا آية , ارتفعت قامت على الفور بفصل الكهرباء عن الدائرة PICالـ VDDبدال من VSSفولت بالـ 5+اخلطأ حيدث غالبا إذا قمت بتوصيل جهد التغذية املوجب

أي أنك باختصار قميت بعكس األطراف VSSبدال من VDDوتوصيل جهد التغذية األرضي بـ حاويل عكس األطراف وجريب وأخربيين ..ال ختايف احتمال كبري أنه مل يتلف PICلنسبة للـ وبا

فقامت , على الفور نظرت فالنة إىل دائرا والحظت أا قد عكست التوصيالت , بالنتائج ..بتصحيحها فعملت الدائرة بشكل سليم

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

) !! أمزح أمزح ال تصدقي... ( جنيه بس مثن النصيحة 10إذن هايت : ردت آية وقالت

.بكتري ذلكأكثر من ستحقنيال واهللا أنت ت: فالنة

.. جنيه 50إذن هايت : آية

قبل ااء املكاملة قالت هلا آية إذا كنت ستستخدمني وعلى هذه املزحة ضحكوا مجيعا PIC16f877a فيفضل أن تكتيب األمرadcon1=0x07; أوadcon1=0x06; يف بداية أي

حينها تغرييه analogمشروع إال إذا كان هذا املشروع ستستخدمني فيه حساسات من النوع ا األمر جيعلك تستخدمني حيث أن هذ, ب الطرف الذي ستوصلني به احلساس على حس

porta,porte ًبشكل عادي جداI/O كما كنت تستخدمينه معPIC16f84a .

Page 15: pic microcontroller

15

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

PICلقد أصبحت اآلن لديك اإلمكانية للتعامل مع نوع آخر من الـ كل التهاين : عزيزي القارئ نامج كل ما عليك أن تفعله أن تكتب يف بداية أي بر, ذو األطراف الكثرية Pic16f877aوهو

: مايلي

املفتاح " تصفح فالنة لالنترنت وقع حتت يدها كتيب بعنوان ويف يوم ما أثناء , مرت األيام واأليام العلمي والذي كان جزء من املسلسل" البسيط للتعامل مع أنواع خمتلفة من امليكروكنترولر

. إحدى املنتديات العربية يف, أمحد مسري فايد / الذي قدمه املهندس " متعة احلياة "الرمضاين . Pic16f628aحيث قرأت احللقة األوىل واليت كانت حتكي عن قصة فالن مع الـ

فلم , فلم متر قصة فالن عليها مرور الكرام كما مرت على الكثريين , كانت فالنة متميزة فكريا مع اية الربنامج يف بد ;cmcon=0x07تأخذ املعلومة النهائية اليت وصل إليها فالن بأن نكتب

كل ما ل لترى ه, اليت قام ا فالنبل قامت بتكرار نفس التجارب .وفقط PIC16f628aالـ نتأكد منها التطبيقية العلمية فهي تؤمن أن املعلومة. صحيح أم ال ؟ حكي عن فالن

.بالتطبيق والتجربة

كما قامت بتوصيل . A4 إىل A0باألطراف من LEDsقامت فالنة بتوصيل بعض الـ ... املهم . B7إىل B0من باألطراف LEDsمثانية

:وكتبت الكود التايل

void main() { adcon1=0x07;

………..

…………..

}

Page 16: pic microcontroller

16

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

لن تعمل على A0-A4باألطراف املوصلة LEDsفالنة أا عندما جترب هذه الدائرة أن الـ ظنت ل عملت بشك A0-A3املوصلة بـ باألطراف من LEDsالـ ولكنها فوجئت أن .حسب قصة فالن

. A4الوحيد الذي مل يعمل هو املوصل بـ LEDسليم و الـ

void main() {

trisa=0; trisb=0;

while(1)

{ porta=0; portb=0;

Delay_ms(100);

Porta=0xff; Portb=0xff;

Delay_ms(100);

}

}

ن التجربة أن الحظت فالنة متضيء وتطفئ ما LEDsجمیع الـ

یظل منطفئ A4عدا الموصل بـ . باستمرار

Page 17: pic microcontroller

17

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

جدي يـفلم ;CMCON=0x07جربت أن تكتب األمر حاولت فالنة عدة حماوالت لكن دون جدوىعندما يذكر ن كل األطراف وأخذت تقرأ وتقرأ فوجدت أ datasheetفتحت الداتا شيت . نفعا

Bidirectionalلوظائف أا ميكن استخدامها كدخل وخرج وظيفتها يكتب أن من ضمن هذه ا

I/O . ما عدا الطرفA4 مكتوب جبواره نفس اجلملة +open drain ا فلم تفهم ما املقصود ؟

فقامت بتوصيله كما , دون األطراف األخرى A4أن تقوم ببعض التجارب على الطرف قررت :بالشكل

Page 18: pic microcontroller

18

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

: التايل بكتابة الكودوقامت

ولكن عند التجربة مل يعمل الـ . يعمل A4املوصل بـ LEDهذا الكود من املفترض أن جيعل الـ LED . وفشلت احملاولة.

ولكن مل يؤثر هذا الفشل على مهتها ألا تؤمن مبقولة تقول ave failed many The difference between successful and unsuccessful is that the successful h

successful-times more than non "الفرق بني الناجحني وغري الناجحني أن الناجحني فشلوا عدد من املرات أكثر من غري الناجحني"

) A4=1والطبيعي أن يكون خبمسة فولت ألن (بقياس فرق اجلهد بني هذا الطرف واألرضي قامت .ولكنه مل يكن كذلك

يث تقوم بتوصيله بالشكل التايل ح LEDجديدة بأن تغري طريقة توصيل الـ خطر بباهلا فكرة ف

يساوي صفر وال يعمل إذا كان غري A4إذا كان LEDوذه الطريقة من املفترض أن يعمل الـ .الصفر

void main() {

trisa.f4=0;

porta.f4=1;

}

Page 19: pic microcontroller

19

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

قامت بقياس فرق اجلهد بني هذا الطرف وبني . بشكل سليم LEDالـ جأة وعمل حدثت املفا .فوجدت أنه مخسة فولت وهذا يعين أن هذا الطرف جهده أصبح صفر اجلهد املوجب

. يف التوصيالت العادية ميكن أن يكون صفر وال ميكن أن يكون واحد A4إذن الطرف

يضيء لون أمحر 5mm شفاف LEDقامت بنفس التجربة يف الواقع باستخدام ,وعلى الفور حيتاج إىل LEDsاملهم هذا النوع من الـ ) ليزر وبعض الناس يقولون عليه ليد( هكذا تقول عليه

. ملي أمبري أو أكثر 20العادية حيث أنه يستهلك LEDsتيار أكرب من الـ

, أنه يعمل أيضا قامت بعدها بتوصيل هذا الليد بدون مقاومات الحظت ف, جنحت التجربةبدون مقاومات تجربة يستهلك تيار أقل وجنحت ال 3mmبآخر أصغر Ledقررت استبدال هذا الـ . وباستخدام مقاومات

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

ويقول أن هذا الطرف من النوع نقطة وفقه اهللا يتكلم عن هذه ال. زكي شاكر / الرائع املغريبopen drain , فردت فالنة نعم قرأت يف الداتاشيت أن هذا الطرفOpen drain ولكن مل أفهم

ما هو املقصود بذلك ؟

مبقاومة متصلة جبهد A4أن املهندس زكي يقول أنه جيب توصيل هذا الطرف : قالت صديقتهاوهذه اخلاصية توجد .ن يكون واحد أو أن يكون صفر حينها يستطيع هذا الطرف أ vddالتغذية

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

)كرمي ( king5starالتميز غري العادي املهندس االسكنداين املبدع والرائع والصاعد إىل

عرفت اآلن ملاذا قال املهندس أمحد مسري فايد يف كتبه .. نعم .. نعم .. قائلة, قاطعتها فالنة . سأذهب وأجرب ما تقولني.. .لكي ال نقع يف هذا املوقف , دخل وليس خرج A4أنه يفضل جعل

:كما بالشكل التايل ,ا صديقتها الدائرة كما قالت هل قامت بعدها فالنة بتوصيل

Page 20: pic microcontroller

20

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

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

. LEDمة أيضا يف برنامج احملاكاة فعمل الـ قليل املقاوتفقامت ب, يعمل LEDوالـاإلضاءة ممتازة

إما بعكس الليد وتشغيله إذا كان الطرف يساوي .. لألبد A4وذا انتهت مشكلة الطرف . صفر أو توصيل مقاومة واحد كيلو مثال جبهد التغذية كما بالشكل السابق

دة كتابتنا لألمر ولكن فالنة الطموحة ال يزال هناك غموض عندها يف نقطة هامة وهي ما فائCMCON=0x07; ؟؟

...نتابع باقي قصتها يف حلقات قادمة إن شاء اهللا

======================================= أم أنه فقط ننكتبه ألننا ال نستخدم خاصية الـمقارن املوجودة يف .. حماولة احلصول على الفائدة احلقيقية هلذا األمر ... الواجب العملي

؟؟ لعدم تشغيل شيء ال نستخدمه ؟أي يكرو هذا امل

دائرة . carlieplexingباستخدام الطريقة اليت شرحناها يف احللقة الثانية LEDsحماولة عمل أشكال متحركة بالـ : الواجب الثاين أن ال تنسونا أمتىن.... ..!! من اإلبداعات واحبث يف االنترنت عن هذه الكلمة لترى الكثري أي فكرة ؟.. اظهار حرف أو حرفني مثال .. متحركة مثال يف نفس الوقت سنشغل ليد مث نطفيه مث LEDولتشغيل أكثر من .وأن تكثر اهلمة يف احلل حىت نسرع أكثر يف احللقات , من دعواتكم

..مثال . امليكرو ثانية املراد تشغيلها وكل ذلك يتم بسرعة رهيبة ب LEDsنشغل اآلخر مث نطفيه وهكذا إىل أن ننتهي من مجيع الـ

Page 21: pic microcontroller

21

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

:الرابعة الحلقة

يف احللقة املاضية قامت هي ببعض التجارب ومل جتد فرقا يف كتابتها ,اليوم قصة فالنة نكمل pic16f628aمع الـ cmcon=0x07أو كتابة األمر pic16f877aمع الـ adcon1=0x07لألمر

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

مع افقام بنفس التجارب اليت قامت هي !! أن فالن مسع عن قصة فالنةالعجيب pic16f628a عوم pic16f877a ووجد أن قصتها سليمة مئة باملئة فأصبح يف حرية من أمره ,

. حممد املليجي / املهندس CNCكروكنترولر و بصديقه اخلبري يف علم امليفقرر أن يتصل

حيث أنين مل أرى وهل أكتبه أم ال ؟ adcon1=0x07ما الفائدة احلقيقية من كتابتنا لألمر : فالن

فوظيفة الربنامج مل تتغري أي فرق يف كتابته ؟

portaأن بعض األطراف كأطراف أنه مكتوب إذا قمت بقراءة الداتاشيت ستجد : املليجيحممد هذه اخلواص واملميزات ) peripheral featuresيسموا باالجنليزية (إضافية وإمكانيات هلا خواص

تستخدمال رمبا) يف بعض أنواع امليكرو يا مفعلةوهي تكون تلقائ( enableإذا كانت مفعلة :هذه املعلومة وستجد I/O portsبفتح الداتاشيت مث العنوان مق ..هذه األطراف كدخل أو خرج

اضغط بالماوس على العنوان

I/O ports

Page 22: pic microcontroller

22

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

ولكن من خالل التجارب اليت قمت ا مل أجد أي فرق ؟ :فالن

أريد أن أقول لك أنه ليس يف كل األحيان ستعمل معك هذه األطراف بشكل :املليجي مد حمولكن هناك . ر مل يؤث adcon1=0x07مر رب اليت قمت ا أنت صادفت أن األسليم رمبا يف التجا

بعض األمثلة اليت ستجعل هذه األطراف ال تعمل بشكل سليم كما كنت تستخدمها مع Pic16f84a .

وإال سأرمي ;adcon=0x07فأريد أن أرى فائدة حقيقية لألمر هل لك أن تضرب يل مثال ؟ :فالن حيث أنه لن , ه بل رمبا أحرق" املفتاح البسيط لتعلم أنواع خمتلفة من امليكروكنترولر"كتاب

تصبح له أي فائدة؟

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

ال تعمل بشكل سليم إال إذا portaسأخربك مبثال جيعل أطراف .. امسع اخي . األنواع عن األخرى : اكتب الكود التايل . ;adcon1=0x06أو ;adcon1=0x07أضفت األمر

void main() {

trisa=0;

for(;;)

{

Porta++;

Delay_ms(1000);

if(porta==10)porta=0;

}

}

Page 23: pic microcontroller

23

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

مثل الدائرة املتكاملة )BCD to 7segment decoder( بـ portaبتوصيل أربعة أطراف من وقم . 7segmentقم بتوصيلها مع سفن سيجمنت و . 7447

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

. سيقف العد عند الواحد

.يف بداية الكود وستعمل معك الدائرة بشكل سليم ;adcon1=0x07قم بإضافة األمر واآلن

. بعدها فالن بالتأكد من هذا الكالم فوجد أنه صحيح مئة باملئة قام

فيعمل بشكل pic16f628aحممد املليجي أنه رمبا يكتب نفس الكود السابق ولكن وأخربه ولكن دائما وأبدا لكي ال تقع يف مشكلة ما مع هذه األطراف عليك أن جتعل هذه , سليم

مع ;ansel=0أو بكتابة pic16f877aمع ;adcon1=0x07إما بكتابة األمر digitalاألطراف pic16f882 ..ل فائدة تستفيدها أن تغلق األشياء اليت ال تستخدمها وأق وهكذا ؟.

Page 24: pic microcontroller

24

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

مع أنواع أخرى من cmconوغري adcon1ا إين أرى أمساء أخرى غري ما هذ :قاطعه فالن هنا كيف أعرف هذه املعلومات حبيث أمتكن من استخدام أي ميكروكنترولر بدون فامليكروكنترولر

مشاكل ؟

اح البسيط للتعامل املفت" احلل بسيط جدا قم بقراءة باقي الدروس يف كتاب : املليجي حممد " .من امليكروكنترولر أنواع خمتلفة مع

. شكرا لك.. سأقرأه إن شاء اهللا :فالن

:طوات التالية هي أن تتبع اخل, جديد عليك PICالسهلة اليت جتعلك تبدأ مع أي الطريقة

. PICاخلاصة ذا الـ datasheetالداتا شيت افتح -1

. I/O portsالعنوان اختر -2

INITIALIZING PORTAاملثال املكتوب بعنوان اقرأ -3 :يف الصور التالية كما ..الكود املقابل بلغة مايكروسي بدال من األمسبلي اكتب -4

Page 25: pic microcontroller

25

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

: من املثال املكتوب باألمسبلي سهلة للحصول على األوامر املطلوبة بلغة مايكروسيطريقة

ألنه ال statusإىل املثال املكتوب بلغة األمسبلي وال تلتفت ألي سطر مكتوب فيه انظر -1فال trisأو port تلتفت إىل اي سطر مكتوب فيه يضا الأ .يهمنا يف لغة مايكروسي

.يهمنا كثريا حيث أننا نكتب األوامر املقابلة هلا بالسي على حسب الربنامج املطلوب

وجبواره رقم معني فكأننا نقول للميكروكنترولر خزن هذا MOVLW جتد األمرعندما -2 .الرقم يف عقلك

ننا نقول إف) REGISTER رجيستر(مسجل واره اسم وجب MOVWFجتد األمر عندما -3 .للميكرو اجعل هذا املسجل يساوي الرقم الذي سجلته يف عقلك منذ قليل

قيمة هذا املسجل تساوي أن وجبواره اسم مسجل فهذا يعين CLRFجتد األمر عندما -4 . ;ANSEL=0هذا حيول إىل السي هكذا CLRF ANSELلو وجدت األمر : مثال . صفر

سيعمل معك بدون مشاكل PORTAآلن ا .والشفاء بالهناء و -5

: picمن النوع لنطبق هذه الطريقة مع بعض أنواع امليكروكنترولرواآلن

العنوان اختر

I/O ports

المثال المكتوب بلغة األسمبلي وقم اقرأ باالستفادة بما فیھ من معلومات لتحولھ

.إلى لغة مایكروسي

Page 26: pic microcontroller

26

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

;ADCON1=0X06فإننا نكتب يف البداية pic16f877aعند استخدام : اخلالصة

Pic16f877a

.األوامر لن نلتفت إلیھا ھذه

األمران یكافئانھذان

Adcon1=0x06;

األمران یكافئانھذان

Trisa=0xcf;

على حسب الكود یمكننا تغییره كما نشاء trisاألمر وبالطبع فلن نلتفت إلیھم لذا

Pic16f628A

األمران یكافئانھذان

CMCON=0X07;

باقي األوامر ال تھمنا كما تعلم أما

Page 27: pic microcontroller

27

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

DIGITALرقمي أو ANALOG تماثليلكي نعلم أي األطراف ميكن استخدامه ك :ملحوظة وهذه األطراف تكون . وهكذا .. AN1أو AN0 مثال أنه مكتوب جبواره PIN DIAGRAMنالحظ يف

PORTA ولكن يف بعض األحيان يكون . غالباPORTB أيضا مكتوب جبوارهAN9 مثال أو اي رقموهذا الكالم يطبق مع ;ANSELH=0لسابقة بل نكتب أيضا وهنا ال نكتفي بالطريقة ا.. آخر

PIC16F882/884/887/883 فتكون النتيجة النهائية أننا . بعض األنواع األخرىومع سنكتب األمرين

ANSEL=0;

ANSELH=0;

. الكود بداية يف

األنواع رخيصةهذه

بكثري منوأفضل

PIC16F877A من

.كثرية نواحي

Pic16f 882/884/886/883/887 األمر ھو ما یھمنا حیث نحولھ للغة ھذا

السي كما یلي

ANSEL = 0;

باقي األوامر ال تھمنا كما تعلم أما

تلتفت إلى أي شيء یكتب بجوارهال

BANKSEL

Page 28: pic microcontroller

28

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

شاكله م سعر الكريستال ومنيرحيك من , األنواع أن لديها مذبذب داخلي هت هذمميزامن زادت وأنت تعلم أنه كلما زادت سرعة املذبذب . بذب الداخلي له عدة سرعات وهذا املذاملختلفة

ك حتتاج إىل فإن DELAY_USاألمر أنه إذا أردت أن تستخدم ضا وتعلم أي. سرعة تنفيذ األوامر . ميجا مثال 4 كـ سرعة منخفضةوال ينبغي أبدا اختيار لمذبذب لسرعة عالية

حتديد السرعة اليت تريدها للمذبذب من خالل املسجل أنه ميكنك إىل موضوعنا وهو نرجع OSCCON ر لكلمة وهو اختصاOSCILLATOR CONTROL 64الصفحة لداتاشيت افتح ا

: ستجد ما يلي

كيلو 250كيلو و 500ميجا و 1ميجا و 2ميجا و 4ميجا و 8تاحة هي ستجد أن السرعات امل . كما يف املربع األمحر كيلو 31كيلو و 125و

. 6إىل 4من BITsللـ ذا املسجل اختيار السرعة من خالل ضبطك هلوميكنك .الرابع يساوي واحد وكذلك اخلامس والسادس bitـ ميجا ستجعل ال 8الختيار السرعة فمثال

;osccon.f4=1;osccon.f5=1;osccon.f6=1الكود التايل يف بداية الربنامج فنكتب الرابع يساوي واحد وكذلك السادس أما bitسنجعل الـفإننا 2MHzلو أردنا جعل التردد أما

;osccon.f4=1;osccon.f5=1;osccon.f6=1 اخلامس جنعله بصفر بالكود التايل على حسب البيانات اليت يف الداتا شيت يف املربع املشار إليه باللون وهكذا يف باقي السرعات

.األمحر

Page 29: pic microcontroller

29

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

pic16f628aأن نقـول أن موضوع املذبذب الـداخلي فإنـه مـن اجلـدير بالـذكر قنا إىل تطرأننا مبا الختيـار السـرعة ميكننـا و. 37KHzأو 4MHzوي على مذبـذب داخلـي تـردده ميكـن أن يكـون حيت

.يف هذا النوع OSCCONد ه هنا ال يوجث أنحي. PCONاستخدام املسجل

:يساوي واحد فنكتب الكود التايل PCONمن Bit3عل الـ جن 4MHzالتردد يساوي جلعل PCON.f3=1;

:كتب الكود التايل ن 37MHzالتردد يساوي وجلعل PCON.f3=0;

Page 30: pic microcontroller

30

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

ما یھمنا فقط واستثني الباقيھذا

أنھ عند التعامل مع ھذه األنواع حیث نكتب في بدایة الكود

ADCON1=0X0F;

CMCON=0X07;

PIC18F2455/2550/4455/455

حبيث أن دائرتك USBتدعم خاصية استخدام األنواع من امليكروكنترولر هذه ما ك .ويتم تبادل البيانات واألوامر USBااللكترونية توصلها باحلاسب باملنفذ

. أن هلا مميزات أخرى كثرية

حقیقي والذي ترجع إلیھ أرید أن أقول أن مفتاحك اللكن وعند التعامل مع نوع جدید أن تقرأ الدتاشیت دائما

datasheet وما أشرت إلیھ ھو فقط أداة , الخاصة بھلخفایا وباقي مساعدة تبسط لك األمور لكن باقي ا

فحاول datasheetالمعلومات األخرى تجدھا في الـ دائما الرجوع إلیھا وقراءتھا ومحاولة فھمھا فستفیدك

.كثیرا

Page 31: pic microcontroller

31

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

حقيقيةمآساة

تلفة مثل تعلم عزيزي القارئ أن هناك أنواع كثرية من امليكروكنترولر تصدرها شركات خمهل microchip واليت تصدر النوعPIC وdsPIC وشركة ,وغريهATMEL تصدر النوعAVR وأيضا

در أنواع خمتلفة وهكذا كل شركة تص, وهناك شركات أخرى كثرية .. ATtinyو 8051ديد فكل شركة تصدر إصدار أحدث وبإمكانيات أعلى يكون يف حسباا والتنافس بينهم ش

. ن جتعل السعر أقل ما ميكن أيضا السعر فتحاول أ

السبب األول هو ماذكرته منذ أخربتكم أن األنواع األحدث أرخص من األنواع األقدم لسببني ولقد يشترون )املستوردين(شركات املوزعة والسبب الثاين أن ال ,حوه ـمن تنافس بني الشركات ون قليل

فإذا قامت الشركة فيما بعد , كبرية من النوع الواحد عندما تصنعه الشركة املصنعة كميات ألن لديهم كميات كبرية من النوع بتقليل السعر فسيخسر هؤالء املوزعني الكثري من املال

ترتيل السعر وتعوض ذلك بأن جتعل النوع األحدث لذلك غالبا ال تقوم الشركة املصنعة ب, القدمي ال أدري خوفا (يبتعد عن األنواع احلديثة هذه كل البعد وما كان حيزنين أن كثري من الناس , أرخص

اول منهم ومن ح" ) اللي تعرفه أحسن من اللي ما تعرفوش" ميانا باملثل الذي يقول منها أم إمثال فقام بتخويف اآلخرين portaاستخدام هذه األنواع احلديثة واجهته بعض املشاكل مع

وهنا يقع بائعوا العناصر االلكترونية " هذا النوع من امليكرو به عيوب وسيء " ويقول بكل جهل يطلب منهم من الزبائن األنواع القدمية فقط واألنواع احلديثة عند شراءها ال يف مشكلة أم

يشتري من اخلارج عن يضطر إىل أن ومن يريد مواكبة التطور من املتعلمني.يطلبها أحد منهم . طريق االنترنت

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

Page 32: pic microcontroller

32

PICالمفتاح البسيط للتعامل مع أنواع مختلفة من الـ

.ب فال تنساني من دعواتك ياستفدت من هذا الكتإن

. وتنال الثواب العظيم, أن تنشر هذا الكتيب في مختلف المواقع كي تعم الفائدةوأرجو

وفيديوهات مثل هذه األعمال الخيرية من كتب علميةب المؤلف للقيام المالي لدعم أردت التبرعإن لمعرفة كيفية التبرع [email protected]_a راسلني على ايميليودورات

ودمتم في حفظ اهللا, الموفق واهللا