سلام، امیدوارم حالتون خوب باشه. در این مقاله، جزئیاتی را در خصوص تراشه میکروکنترلر PIC16F887 را ارائه خواهیم کرد. PIC16F887 یک میکروکنترلر 40 پایه ای خانواده PIC است که توسط Microchip معرفی شده است و جانشین PIC16F877A است. بطور کلی میکروکنترلرها با ارائه یک رابط بی عیب و نقص و توانایی انجام تعدادی عملکرد بر روی یک تراشه واحد، این فناوری را به گونه ای احیا کرده اند که به تعداد قطعات بیرونی کمتری نیاز است. این تراشه های قدرتمند با پوشش دادن پروژه هایی که بطور محلی یا از راه دور به کمک اتوماسیون مرتبط هستند کارها را آسان کرده اند. در این آموزش، ویژگی های اصلی، عملکرد، پایه بندی و کاربردهای PIC16F887 را بحث خواهیم کرد. 

برای آموزش میکروکنترلر AVR به دو لینک زیر مراجعه کنید:

http://smartcomp.ir/product-4

http://smartcomp.ir/product-6

مقدمه ای بر PIC16F887

PIC16F887 یک میکروکنترلر 40 پایه (با بسته PDIP) و 8 بیتی با تکنولوژی CMOS  است که با توان نانو وات عرضه می شود. قیمت مقرون به صرفه و معماری کاربر پسند، استفاده از این ماژول را آسان کرده و پیکربندی آن را آسان کرده است.

این میکروکنترلر در سه بسته شناخته شده به نام های PDIP، QFN و TQFP موجود است. PDIP با چیدمان 40 پین ارائه می شود در حالی که دو بسته بندی بعدی شامل 44 پین در هر طرح است.

PIC16F887 دارای 256 بایت حافظه داده EEPROM، 368 بایت RAM و 8K بایت حافظه برنامه است.

به غیر از قابلیت خود برنامه ریزی، دارای 2 مقایسه کننده، مبدل 10 بیتی آنالوگ به دیجیتال (A/D) با 14 کانال و توابع capture، مقایسه و PWM می باشد.

پورت سریال آسنکرون به تراشه اضافه شده است که می تواند به هر دو صورت گذرگاه مدار یکپارچه 2 سیمه I2C یا رابط جانبی سریال 3 سیمه (SPI) پیکربندی شود، ویژگی فرستنده گیرنده آسنکرون جهانی پیشرفته (EUSART) این تراشه را با دستگاه هایی که ارتباط سریال بخشی جدایی ناپذیر از پروژه است، سازگار می کند.

از جمله مواردی که این دستگاه را از نظر سهولت استفاده منحصر به فرد کرده است می توان به

حالت خواب صرفه جویی کننده در مصرف انرژی

محدوده دمای صنعتی و گسترده

محدوده ولتاژ کاری گسترده (2 تا 5.5 ولت)

مد لچ SR

تایمر روشن کردن تغذیه (PWRT) و تایمر راه اندازی نوسانگر (OST)

بازنشانی اتومات هنگام روشن شدن سیستم (POR)

بیدار شدن با توان بسیار کم (ULPWU)

پول آپ های ضعیف با قابلیت برنامه ریزی فردی

بازنشانی با کاهش سطح ولتاژ منع تغذیه (BOR) با گزینه کنترل نرم افزار

تایمر سگ نگهبانی با جریان پایین پیشرفته (WDT)

می توان گفت که این نسخه PIC یک انتخاب ایده آل برای تبدیل A/D در کاربردهای خودرو، مصرف کننده و صنعتی است.

1. توصیف پایه هایPIC16F887

توضیحات پایه های خروجی و ورودی Pinout و Pin برای بررسی عملکرد هر پین روی این تراشه کوچک الزامی است. چه تازه کار و چه متخصص باشید، برای درک بهتر تراشه باید عملکرد مربوط به هر پین را بدانید.

پایه بندی

شکل زیر پایه بندی کامل هر سه بسته به نام های PDIP، QFN و TQFP را نشان می دهد.

همانطور که قبلا توضیح داده شد، بسته PDIP شامل 40 پین است در حالی که دو بسته بندی دیگر دارای 44 پین هستند.

توضیحات پایه ها

PIC16F887 به طور گسترده در بسیاری از کاربردهای الکترونیکی استفاده می شود. برخی از پایه ها در کنترلر قادر به انجام بیش از یک عملکرد هستند که به ما امکان می دهد از پین بر اساس نیاز و خواسته های پروژه استفاده کنیم. عملکرد هر پین در جدول زیر لیست شده است.

شماره پایهنام پایهتوصیف پایه
2RA0 AN0/ULPWU C12IN0-Digital I/O Pin Analog Input 0 Pin   Comparator
3RA1 AN1/ULPWU C12IN1-Digital I/O Pin Analog Input 1 Pin   Comparator
4RA2 AN2 C2IN+ VREF-/CVREFDigital I/O Pin Analog Input 2 Pin   Comparator ADC Reference Input Voltage (low)
5RA3 AN3 C1IN+ VREF+Digital I/O Pin Analog Input 3 Pin   Comparator ADC Reference Input Voltage (high)
6RA4 C1OUT T0CKIDigital I/O Pin Comparator External clock   input for Timer0
7RA5 AN4 C2OUT SSDigital I/O Pin Analog Input 4 Pin   Comparator Slave Select input for SPI
33RB0 AN12 IOC/INTDigital I/O Pin Analog Pin   Interrupt-on-change
34RB1 AN10 C12IN3- IOCDigital I/O Pin Analog Pin Comparator   Interrupt-on-change
35RB2 AN8 IOCDigital I/O Pin Analog Pin   Interrupt-on-change
36RB3 AN9 C12IN2- IOC PGMDigital I/O Pin Analog Pin Comparator   Interrupt-on-change Basic
37RB4 AN11 IOCDigital I/O Pin Analog Pin   Interrupt-on-change
38RB5 AN13 T1G IOCDigital I/O Pin Analog Pin Timer Interrupt-on-change
39RB6 IOC ICSPCLKDigital I/O Pin Interrupt-on-change pin   Basic
40RB7 IOC ICSPDATDigital I/O Pin Interrupt-on-change pin   Basic
15RC0 T1OSO/T1CKIDigital I/O Pin Timer
16RC1 T1OSI CCP2Digital I/O Pin Timer ECCP
17RC2 CCP1/P1ADigital I/O Pin ECCP
18RC3 SCK/SCLDigital I/O Pin MSSP
23RC5/SDO RC5 SDODigital I/O Pin SPI Data-Out Pin
24RC5 SD0Digital I/O Pin MSSP
25RC6 TX/CKDigital I/O Pin USART
26RC7 RX/DTDigital I/O Pin USART
19RD0Digital I/O Pin
20RD1Digital I/O Pin
21RD2Digital I/O Pin
22RD3Digital I/O Pin
27RD4Digital I/O Pin
28RD5 P1BDigital I/O Pin ECCP
29RD6 P1CDigital I/O Pin ECCP
30RD7 P1DDigital I/O Pin ECCP
8RE0 AN5Digital I/O Pin Analog Pin
9RE1 AN6Digital I/O Pin Analog Pin
10RE2 AN7Digital I/O Pin Analog Pin
13RA7 OSC1 CLKINCrystal Oscillator Input Pin
14RA6 OSC2 CLKOUTCrystal Oscillator Output Pin
1RE3 MCLR VPPICSP Programming Enable Pin Master Clear   Active Low Reset Pin
11,32VDDVoltage Supply Pin
12,31VSSGround Pin

2. ویژگی های PIC16F887

با نگاهی به ویژگی های اصلی هر تجهیز می توانید ماهیت آن را پیش بینی کنید. جدول زیر ویژگی های کامل PIC16F887 را نشان می دهد.

PIC16F887 ویژگی های
تعداد پایه ها40
CPU8-Bit PIC
Operating Voltage2 to 5.5 V
Program Memory8K
Program Memory (Instructions)8192
RAM368 Bytes
EEPROM256 Bytes
ADC10-Bit
I/O Ports (5) I/O PinsA,B,C,D,E 35
Packages40-pin PDIP 44-pin QFN 44-pin TQFP
External Oscillatorحداکثر 20 MHz
Timer (3)16-Bit Timer (1) 8-Bit Timer (2)
USART Protocol1
I2C Protocolبلی
SPI Protocolبلی
Brown-out Resetبلی
Watchdog Timerبلی
Comparators2
Master Synchronous Serial Port (MSSP) module1
Capture/Compare/PWM16bit/16bit/10bit
Power Saving Sleep Modeبلی
Selectable Oscillator Optionبلی
Operating Current11uA at 32 kHz, 2.0 V 220uA at 4 MHz, 2.0 V
Temperature Range-40 to 125
Oscillator Start-up Timerبلی

بررسی ویژگی های اصلی قبل از تهیه کنترلر به شما کمک می کند تا پروژه مورد نیاز خود را تجزیه و تحلیل و توسعه دهید.

بازنشانی در هنگام اعمال تغذیه و تاخیر در راه اندازی نوسانگر برخی از ویژگی های منحصر به فرد موجود در تراشه هستند.

3. عملکردهای PIC16F887

این مدل PIC عملکردهای زیادی را انجام می دهد که کاملاً مشابه عملکرد سایر کنترلرهای جامعه PIC هستند. عملکردهای اصلی PIC16F887 در زیر آمده است.

تایمر

PIC16F887 شامل یک تایمر 16 بیتی و دو تایمر 8 بیتی است که به هر دو صورت یعنی تایمر و شمارنده قابل استفاده است و دارای قابلیت انتخاب کلاک داخلی و خارجی است. حالت تایمر برای افزایش سیکل دستورالعمل استفاده می شود در حالی که در حالت شمارنده، به ازای لبه بالا یا پایین رونده اعمال شده به پایه، شمارش را افزایش می دهد. وقتی بیت T0CS (OPTION_REG<5>) تنظیم شود، حالت شمارنده انتخاب می شود و وقتی پاک شد، حالت تایمر انتخاب می شود.

ریست کاهش ولتاژ تغذیه قابل تنظیم (BOR)

BOR تابعی است که هنگامی که Vdd (تغذیه ولتاژ) به زیر یک ولتاژ آستانه می‌رسد، کنترل‌کننده را به تنظیم مجدد می برد. یک تفاوت کوچک بین BOR و Power On Reset وجود دارد، بطوریکه طیف وسیعی از ولتاژهای قابل تنظیم برای محافظت از تراشه پس از کاهش ولتاژ در خط تغذیه ارائه می شود. به منظور قرار دادن تاخیر در BOR، تایمر پاور باید فعال نگه داشته شود. به غیر از کنترل نرم افزاری، حالت BOR همچنین می تواند از طریق تنظیمات BOREN در یک ثبات جداگانه کنترل و پیکربندی میشود.

USART

PIC16F887 با ماژول USART پیشرفته ارائه می شود. این ماژول از TX - برای ارسال داده های سریال به دستگاه های دیگر استفاده می شود و یک پایه RX - برای دریافت داده های سریال است.

تایمر سگ نگهبان (Watch-dog Timer)

PIC16F887 دارای تایمر محافظ داخلی است که عمدتاً برای تنظیم مجدد کنترلر هنگامی که برنامه در حین کامپایل قطع می شود یا در حلقه نامحدود برنامه گیر می کند استفاده می شود. مهم است که توجه داشته باشید تایمر باید پس از هر 3 دستورالعمل به مقدار اولیه اش بازنشانی شود تا در شرایط عادی از صفر شدن مقدار بارگذاری شده در آن جلوگیری شود. تایمر نگهبان چیزی نیست جز یک تایمر شمارش معکوس و از 1000 شروع می شود و به مرور به صفر می رسد.

بازنشانی در هنگام روشن شدن

عملکرد Power On Reset کنترلر را هنگام روشن شدن و برقدار کردن میکروکنترلر بازنشانی می کند. اگر خطای ناشناخته ای در تراشه رخ دهد، روشن کردن دستگاه، آن را از حلقه اجرای برنامه حذف می کند و دستگاه را از عملکرد نادرست نجات می دهد.

حالت خواب

عملکرد خواب صرفه جویی در مصرف انرژی یک حالت خاموش شدن جریان پائین را ایجاد می کند. این حالت خواب را می توان با استفاده از وقفه، تایمر نگهبان یا تنظیم مجدد خارجی به پایان رساند.

4. کامپایلر PIC

Microchip کامپایلر استاندارد خود را برای کنترلر PIC به نام MPLAB C18 Compiler معرفی کرده است. این کامپایلر را می توانید به صورت آنلاین از سایت رسمی میکروچیپ دانلود کنید.

کد نوشته شده در کامپایلر یک فایل هگز ایجاد می کند که به میکروکنترلر منتقل می شود تا عملکرد خاصی را اجرا کند.

نرم افزارهای دیگری نیز برای کامپایل برنامه موجود است و MikroC Pro For PIC عمدتاً برای این منظور استفاده می شود.

این 3 کامپایلر برتر C به شما انعطاف پذیری می دهد تا هر کامپایلری را بر اساس نیازها و نیازهای خود انتخاب کنید.

PICKit3 عمدتاً برای نوشتن کد در کنترلر که یک رایتر استاندارد PIC است استفاده می شود

5. چیدمان و کار حافظه PIC16F887

کل حافظه در این کنترلر به سه نوع اصلی به نام های EEPROM، RAM و ROM Memory تقسیم می شود. همه آنها در کنترلر از نظر اجرا و فراخوانی دستورالعمل ها با برخی استثناها نقش حیاتی دارند.

حافظه ROM

حافظه ROM که به عنوان حافظه غیر فرار نیز شناخته می شود، برنامه در حال اجرا را به طور دائم ذخیره می کند و به منبع تغذیه وابسته نیست، یعنی در صورت قطع منبع تغذیه، می تواند برنامه را حفظ کند. حافظه ROM حدود 8K است که با فناوری FLASH ساخته شده است.

حافظه EEPROM

این حافظه از لحاظ ذخیره سازی دائمی برنامه های در حال اجرا کاملاً شبیه حافظه ROM است، با این استثنا که دستورالعمل های موجود در EEPROM را می توان در حین کارکرد کنترلر تغییر داد. این شامل فضای حافظه در حدود 256 بایت است که بسیار کمتر از حافظه ROM است، اما برای ذخیره دائمی برنامه کافی است.

حافظه RAM

حافظه RAM که به عنوان حافظه فرار نیز شناخته می شود، به دو بخش اصلی به نام های رجیسترهای همه منظوره (GPR) و رجیسترهای عملکرد ویژه (SFR) تقسیم می شود. این حافظه طبیعتاً فرار است زیرا برنامه را به طور موقت ذخیره می کند و وابسته به برق است، یعنی پس از خاموش شدن منبع تغذیه دستورالعمل های ذخیره شده در RAM حذف می شوند.

رجیسترها در حافظه RAM محل نگهداری داده ها در کنترلر هستند. یک ثبات واحد می تواند دستورالعمل، آدرس ذخیره سازی و هر نوع داده ای از جمله توالی بیت یا کاراکترهای مجزا را در خود جای دهد.

رجیسترها به دو بانک به نام‌های بانک 1 و بانک 2 طبقه‌بندی می‌شوند که رجیسترها از 00H تا 0BH و 80H تا 8BH در دسته SFR قرار می‌گیرند و بقیه GPR هستند.

هر بانک حاوی 128 بایت فضای حافظه است که در آن 12 مکان اول برای SFR و بقیه برای GPR رزرو شده است.

بیایید در مورد چند رجیستر با جزئیات صحبت کنیم. STATUS. این رجیستر نقش سوئیچ بین بانک ها را ایفا می کند. تنظیم بیت پنجم این رجیستر نشان می دهد که ما در حال بحث در مورد بانک 1 هستیم در حالی که تنظیم مجدد آن نشان می دهد که ما در حال بحث در مورد بانک 0 هستیم. TRISA. این ثبات برای پیکربندی PORTA به عنوان ورودی یا خروجی استفاده می شود. مقدار 1 خروجی و مقدار 0 ورودی را نشان می دهد. TRISB. این ثبات از نظر تعیین پین ها به عنوان ورودی یا خروجی مشابه TRISA است و برای PORTB استفاده می شود. رجیستر W. تمام ثبات های ذکر شده در بالا SFR هستند در حالی که رجیستر W یک GPR است. این رجیستر بخشی از هیچ رجیسترهای بانکی نیست و فقط توسط برنامه قابل دسترسی است. مقادیر مورد نظر روی رجیستر W نوشته شده و قبل از نوشتن روی PORTA یا PORTB به رجیستر هدف منتقل می شوند.

6. بلوک دیاگرام PIC16F887

شکل زیر بلوک دیاگرام PIC16F887 را نشان می دهد.

حافظه برنامه دارای فضای حافظه 8K بایت است که می تواند 8192 کلمه را پیکربندی کند.

برخی از پین ها را می توان با عملکردهای دیگر چندگانه از جمله وقفه خارجی، ورودی ساعت Timer0 و تغییر در وقفه PORTB متصل کرد.

7. پروژه ها و کاربرهای PIC16F887

PIC16F887 عمدتاً در پروژه های دانشجویی استفاده می شود، یعنی کنترل موتورها و رابط سنسور.

مورد استفاده در پروژه های گرمایش مرکزی

تولید دیتالاگر دما

ارتباط سریال

مورد استفاده در سیستم های بهداشتی و امنیتی

پروژه های حسگر گاز

سیستم یکپارچه

مورد استفاده در اتوماسیون صنعتی

8. چرا از میکروکنترلرهای PIC استفاده می کنیم؟

میکروکنترلرهای PIC به طور گسترده در اکثر کاربردهای الکترونیکی استفاده می‌شوند، زیرا رابط کاربری آسانی را ارائه می‌دهند که نیازی به مهارت قبلی برای تجربه عملی با ماژول ندارد. این کنترلرها ارزان هستند و توانایی انجام تعدادی کارکرد با حداقل مدار را دارند. کنترلرهای PIC از نظر کارایی و سرعت پردازش بالاتر از کنترلرهای Atmel مانند 8051 بهتر عمل کرده اند. بیشتر اوقات، صنایع اتوماسیون این کنترلرها را برای انجام عملیات های مختلف ترجیح می دهند و از آنها استفاده می کنند زیرا مصرف برق بسیار کمی دارند.