المتحكم الدقيق PIC16F877A
يُعد PIC16F877A متحكمًا دقيقًا 8-bit من عائلة PIC التابعة لشركة Microchip، ويتميز بعدد كبير من منافذ الإدخال والإخراج، ومحول ADC، ومؤقتات، وواجهات اتصال مثل UART وSPI وI²C، مما يجعله مناسبًا للمشاريع التعليمية والتطبيقات الإلكترونية المختلفة.

توزيع أطراف المتحكم PIC16F877A
تنبيه: النص الأصلي يحتوي على خطأ في وصف أطراف التغذية VDD وVSS. الصحيح أن VDD = موجب التغذية و VSS = الأرضي GND.
| الرقماسم الطرفالوصف | ||
| 1 | MCLR/VPP | إعادة الضبط MCLR ومدخل جهد البرمجة، ويُستخدم مع مبرمج مثل PICkit |
| 2 | RA0/AN0 | الطرف RA0 من PORTA / المدخل التناظري AN0 |
| 3 | RA1/AN1 | الطرف RA1 / المدخل التناظري AN1 |
| 4 | RA2/AN2/VREF- | الطرف RA2 / المدخل AN2 / مرجع ADC السالب |
| 5 | RA3/AN3/VREF+ | الطرف RA3 / المدخل AN3 / مرجع ADC الموجب |
| 6 | RA4/T0CKI/C1OUT | الطرف RA4 / دخل الساعة الخارجية للمؤقت Timer0 |
| 7 | RA5/AN4/SS/C2OUT | الطرف RA5 / المدخل AN4 / طرف SS لـ SPI |
| 8 | RE0/RD/AN5 | الطرف RE0 من PORTE / المدخل AN5 |
| 9 | RE1/WR/AN6 | الطرف RE1 / المدخل AN6 |
| 10 | RE2/CS/AN7 | الطرف RE2 / المدخل AN7 |
| 11 | VDD | موجب مصدر التغذية |
| 12 | VSS | الأرضي GND |
| 13 | OSC1/CLKI | دخل المذبذب أو الساعة الخارجية |
| 14 | OSC2/CLKO | خرج المذبذب/الساعة |
| 15 | RC0/T1OSO/T1CKI | الطرف RC0 من PORTC |
| 16 | RC1/T1OSI/CCP2 | الطرف RC1 / وظيفة CCP2 |
| 17 | RC2/CCP1 | الطرف RC2 / وظيفة CCP1 |
| 18 | RC3/SCK/SCL | الطرف RC3 / ساعة SPI أو I²C |
| 19 | RD0/PSP0 | الطرف RD0 من PORTD |
| 20 | RD1/PSP1 | الطرف RD1 من PORTD |
| 21 | RD2/PSP2 | الطرف RD2 من PORTD |
| 22 | RD3/PSP3 | الطرف RD3 من PORTD |
| 23 | RC4/SDI/SDA | الطرف RC4 / دخل بيانات SPI أو بيانات I²C |
| 24 | RC5/SDO | الطرف RC5 / خرج بيانات SPI |
| 25 | RC6/TX/CK | الطرف RC6 / إرسال TX للاتصال التسلسلي |
| 26 | RC7/RX/DT | الطرف RC7 / استقبال RX للاتصال التسلسلي |
| 27 | RD4/PSP4 | الطرف RD4 |
| 28 | RD5/PSP5 | الطرف RD5 |
| 29 | RD6/PSP6 | الطرف RD6 |
| 30 | RD7/PSP7 | الطرف RD7 |
| 31 | VSS | الأرضي GND |
| 32 | VDD | موجب مصدر التغذية |
| 33 | RB0/INT | الطرف RB0 / مدخل المقاطعة الخارجية |
| 34 | RB1 | الطرف RB1 |
| 35 | RB2 | الطرف RB2 |
| 36 | RB3/PGM | الطرف RB3 / يستخدم في البرمجة منخفضة الجهد |
| 37 | RB4 | الطرف RB4 |
| 38 | RB5 | الطرف RB5 |
| 39 | RB6/PGC | الطرف RB6 / ساعة البرمجة PGC |
| 40 | RB7/PGD | الطرف RB7 / بيانات البرمجة PGD |
المواصفات الأساسية لـ PIC16F877A
| الخاصيةالمواصفة | |
| المعالج | PIC 8-bit |
| عدد الأطراف | 40 |
| جهد التشغيل | 2 إلى 5.5V |
| عدد منافذ I/O | 33 |
| ADC | 8 قنوات، بدقة 10-bit |
| المؤقتات | مؤقتان 8-bit + مؤقت 16-bit واحد |
| المقارنات | 2 |
| DAC | غير متوفر |
| UART | 1 |
| SPI | 1 |
| I²C | 1 |
| MSSP | يدعم SPI/I²C |
| المذبذب الخارجي | حتى 20MHz |
| المذبذب الداخلي | غير متوفر |
| نوع ذاكرة البرنامج | Flash |
| ذاكرة البرنامج | حوالي 14KB |
| سرعة المعالج | حتى 5 MIPS |
| RAM | 368 Bytes |
| EEPROM | 256 Bytes |
يمكن العثور على جميع التفاصيل الفنية في ورقة البيانات PIC16F877A Datasheet.
متحكمات PIC أخرى
PIC12F508، PIC12F629، PIC12F683، PIC16F505، PIC16F628A، PIC16F676، PIC16F72، PIC16F873A، PIC16F876A، PIC16F886، PIC18F252، PIC18F452، PIC18F4520 وغيرها.
نبذة عن PIC16F877A
PIC16F877A هو متحكم دقيق CMOS FLASH بمعمارية 8-bit، ويتميز بسهولة البرمجة مع مجموعة تعليمات صغيرة نسبيًا.
يمكن أن يصل زمن تنفيذ التعليمة إلى حوالي 200 نانوثانية عند التشغيل بالسرعة القصوى المناسبة.
يحتوي المتحكم على:
- ذاكرة بيانات EEPROM بسعة 256 بايت.
- إمكانية البرمجة الذاتية.
- دعم ICD – In-Circuit Debugging.
- عدد 2 Comparator.
- عدد 8 قنوات ADC بدقة 10-bit.
- وحدتي Capture/Compare/PWM (CCP).
- واجهة اتصال تسلسلية متزامنة يمكن تهيئتها للعمل كـ SPI أو I²C.
- وحدة اتصال تسلسلي USART.
كيفية اختيار متحكم PIC المناسب
توفر Microchip مجموعة كبيرة من متحكمات عائلة PIC، ولكل متحكم مزايا وخصائص مختلفة. لذلك يجب مراعاة عدة عوامل عند اختيار المتحكم المناسب للمشروع.
إذا كنت مبتدئًا في تعلم PIC، فمن الأفضل اختيار متحكم يتمتع بدعم مجتمعي واسع وتتوفر له مشاريع وشروحات كثيرة. ويعتبر PIC16F877A و PIC18F4520 من الخيارات المعروفة لهذا الغرض.
كذلك يجب مراعاة جهد تشغيل النظام. فإذا كان المشروع يعمل على 5V، فمن المناسب اختيار متحكم يدعم 5V. أما إذا كانت الحساسات والأجهزة المستخدمة تعمل بمنطق 3.3V، فقد يكون متحكم يعمل على 3.3V أكثر ملاءمة.
إذا كان الحجم والتكلفة عاملين مهمين، فيمكن اختيار متحكمات صغيرة ذات 8 أطراف مثل PIC12F508.
ويجب أيضًا تحديد الوحدات الطرفية المطلوبة للمشروع. فعلى سبيل المثال، إذا كنت ستقرأ عدة إشارات تناظرية، فيجب التأكد من أن المتحكم يحتوي على عدد كافٍ من قنوات ADC وبدقة مناسبة.
أما إذا كان المشروع يحتاج إلى بروتوكولات اتصال مثل:
UART – SPI – I²C – CAN
فيجب التأكد من أن المتحكم المختار يدعم البروتوكولات المطلوبة.
برمجة متحكمات PIC
يمكن برمجة متحكمات PIC باستخدام عدة برامج ولغات، كما يمكن استخدام لغة Assembly، إلا أن التطوير الحديث غالبًا يتم باستخدام أدوات Microchip.
عملية البرمجة تحتاج بشكل أساسي إلى:
IDE – Integrated Development Environment:
بيئة تطوير متكاملة يتم من خلالها كتابة وتطوير البرنامج.
Compiler:
المترجم الذي يقوم بتحويل البرنامج إلى صيغة يمكن للمتحكم تنفيذها، مثل ملف HEX.
IPE – Integrated Programming Environment:
بيئة تستخدم لكتابة أو تحميل ملف HEX داخل المتحكم.
ومن أدوات Microchip المذكورة في النص:
- MPLAB X IDE
- MPLAB IPE
- XC8 Compiler
ولتحميل البرنامج فعليًا إلى المتحكم يمكن استخدام جهاز برمجة مثل PICkit 3.
يعمل PICkit كمبرمج ومصحح أخطاء Programmer/Debugger، ويسمح ببرمجة المتحكم وهو موجود داخل الدائرة In-Circuit Programming.
وقد تحتاج أيضًا أثناء التطوير إلى:
Breadboard أو Perfboard، محطة لحام، متحكمات PIC، Crystal Oscillator، مكثفات ومكونات التغذية وغيرها.
المكونات المرتبطة بمشاريع PIC
- PICkit 3
- لوحة تطوير PIC
- Crystal Oscillator
- مكثفات
- محول طاقة
- منظم جهد 7805
الخصائص التفصيلية لـ PIC16F877A
بحسب المواصفات الأساسية المذكورة في النص:
| الخاصيةالقيمة | |
| بنية المعالج | 8-bit |
| ذاكرة البرنامج | 14KB تقريبًا |
| RAM | 368 Bytes |
| EEPROM | 256 Bytes |
| عدد الأطراف | 40 |
| أقصى تردد CPU | 20MHz |
| PPS | لا |
| مذبذب داخلي | لا |
| عدد المقارنات | 2 |
| Operational Amplifier | 0 |
| دقة ADC القصوى | 10-bit |
| DAC | غير متوفر |
| مؤقتات 8-bit | 2 |
| مؤقتات 16-bit | 1 |
| UART | 1 |
| SPI | 1 |
| I²C | 1 |
| USB | غير متوفر |
| أقل درجة حرارة تشغيل مذكورة | -40°C |
| أعلى درجة حرارة تشغيل مذكورة | 125°C |
| أقل جهد تشغيل مذكور | 2V |
| أعلى جهد تشغيل مذكور | 5.5V |
ملاحظة مهمة: الجدول التفصيلي في النص الأصلي يحتوي على بعض البيانات المتعارضة أو غير الدقيقة، مثل ذكر 14 قناة ADC و 11 قناة Capacitive Touch. الـ PIC16F877A التقليدي يحتوي على 8 قنوات ADC (AN0–AN7)، لذلك يفضل الاعتماد على Datasheet الرسمية عند تصميم الدائرة.
التطبيقات
يمكن استخدام PIC16F877A في:
- مشاريع الإلكترونيات والهواة DIY.
- تعلم برمجة متحكمات PIC.
- المشاريع التي تحتاج إلى عدد كبير من منافذ I/O.
- المشاريع التي تحتاج إلى اتصالات UART وSPI وI²C.
- بعض المشاريع التي يمكن أن يعمل فيها كبديل لمنصات تطوير مثل Arduino، مع اختلاف بيئة التطوير والعتاد.
- تطبيقات القياس والتحويل A/D.
- تطبيقات السيارات.
- الأنظمة الصناعية.
- الأجهزة المنزلية.
- الأجهزة والمنتجات الإلكترونية الاستهلاكية.