سلام امیدوارم حالتون خوب باشه. در این مقاله قصد داریم شما را با جزئیات مربوط به تراشه میکروکنترلر PIC16F88 آشنا کنیم. این تراشه یک میکروکنترلر 8 بیتی PIC است که توسط Microchip معرفی شده است و عمدتاً در اتوماسیون و کاربردهای تعبیه شده استفاده می شود. این دستگاه دارای یک پردازنده فلاش پیشرفته و فناوری نانو وات است که به آن کمک می کند تا حداقل انرژی را با توانایی انجام تعدادی عملکرد روی یک تراشه کوچک مصرف کند. یک ماژول ADC  10بیتی به تراشه اضافه شده است که آن را با دستگاه های دیگر سازگار می کند و سیگنال آنالوگ را به عنوان ورودی می پذیرد و آن را به دیجیتال تبدیل می کند. این ماژول میکروکنترلر در مقایسه با سایر کنترلرهای موجود در جامعه PIC فضای حافظه کمی کمتری دارد و با طرح 18 پین (PDIP) عرضه می شود. اگرچه تراشه های دیگری با تعداد ایه های بیشتر نیز موجود است، PDIP بیشتر برای توسعه پروژه‌های دانشجویی استفاده می‌شود. در این آموزش، همه چیز مربوط به PIC16F88، پایه بندی، ویژگی‌ها، بلوک دیاگرام داخلی آن و برنامه‌های کاربردی آن را پوشش می‌دهیم. 

مقدمه ای بر PIC16F88

PIC16F88 یک میکروکنترلر PIC  8بیتی است که با پردازنده فلاش پیشرفته و فناوری نانو وات عرضه می شود. این تراشه در سه بسته بندی مختلف به نام‌های PDIP، SSOP و QFN موجود است. PDIP با طرح 18 پایه (بیشتر استفاده می شود) در حالی که دو مورد دیگر به ترتیب در بسته های 20 و 28 پین عرضه می شوند.

حجم حافظه برنامه 7 کیلوبایت است که برای ذخیره تعداد دستورات روی یک تراشه استفاده می شود. در حالی که RAM  368بایت است و EEPROM با فضای حافظه در حدود 256 بایت عرضه می شود.

ADC  10بیتی روی برد تعبیه شده است که عمدتاً برای تبدیل سیگنال آنالوگ به دیجیتال استفاده می شود. و این مبدل 10 بیتی نقش حیاتی برای حسگرهای رابط ایفا می کند، بطوریکه مقادیر سیگنال آنها را به شکل آنالوگ دریافت می کند و آنها را به دیجیتال تبدیل می کند.

نوسان ساز کریستالی تا حداکثر مقدار 20 مگاهرتز را می توان برای تولید پالس های ساعت برای همگام سازی عملیات داخلی استفاده کرد.

از نظر انجام و راه اندازی کاربردهایی که مستقیماً یا از راه دور با اتوماسیون مرتبط هستند، نمی توانیم اهمیت این ماژول را نادیده بگیریم.

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

پایه بندی هر قطعه برای ایجاد قالب بندی آن بسیار مفید است، در حالی که توضیحات پایه یک نمای کلی از آنچه که هر پین قادر به انجام آن است به شما می‌دهد.

پایه بندی

شکل زیر پایه بندی PIC16F88 را نشان می دهد.

بسته بندی PDIP دارای رابط 18 پایه است در حالی که دو بسته بندی SSOP و QFN به ترتیب از 20 و 28 پین تشکیل شده اند.

بسته بندی PDIP برای توسعه پروژه های فردی استفاده می شود در حالی که دو مورد دیگر در دستگاه های الکترونیکی صنعتی استفاده و اضافه می شوند.

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

جدول زیر شرح هر پایه و عملکرد اصلی مربوط به هر پایه را نشان می دهد.

Pin#Pin NamePin Description
17RA0 AN0I/O Bidirectional pin Analog pin channel 0
18RA1 AN1I/O Bidirectional pin Analog pin channel 1
1RA2 AN2 CVREF VREF-I/O Bidirectional pin Analog pin channel 2   Comparator Output (VREF) A/D reference voltage input (Low)
2RA3 AN3 VREF+ C1OUTI/O Bidirectional pin Analog pin channel 3   A/D reference voltage input (High) Comparator 1 Output
3RA4 AN4 T0CKI C2OUT  I/O Bidirectional pin Analog pin   channel 4 Used for clock input to the timer0 Comparator 2 Output
4RA5 MCLR VPPI/O Bidirectional pin This is a master clear   low reset pin Programming voltage input
15RA6 OSC2 CLKOUTI/O Bidirectional pin This pin is connected   to a crystal oscillator and acts as a crystal oscillator output pin. In RC   mode, this pin has a 1/4 frequency of OSC1
16RA7 OSC1 CLKIINI/O Bidirectional pin This pin is connected   to a crystal oscillator and acts as a crystal oscillator input pin External   Clock Source Input
6RB0 INT CCP1I/O Bidirectional pin External interrupt pin   Output for PWM and Compare and Input for Capture
7RB1 SDI SDAAll PORTB Pins are software programmed I/O   Bidirectional pin SPI data in I2C data
8RB2 SDO RX DTI/O Bidirectional pin SPI data out Receiver   Pin Synchronous detect
9RB3 PGM CCP1I/O Bidirectional pin Programming enable pin   for Low-Voltage ICSP™ PWM Output for Compare and PWM, while Input Capture
10RB4 SCK SCLI/O Bidirectional (Interrupt-on-change) pin   SPI Synchronous serial clock input/output I2C Synchronous serial clock Input
11RB5 SS TX CKI/O Bidirectional (Interrupt-on-change) pin   SPI Slave select Serial transmit pin Synchronous clock
12RB6 AN5 PGC T1OSO T1CKII/O Bidirectional (Interrupt-on-change) pin   Analog pin channel 5 In-Circuit Debugger and programming clock pin.   Oscillator output for Timer1 External clock input for Timer1
13RB7 AN6 PGD T1OSII/O Bidirectional (Interrupt-on-change) pin   Analog pin channel 6 ICSP programming data and In-Circuit Debugger pin   Oscillator input for Timer1
5VssGround Pin
14VddVoltage Supply Pin

2. ویژگی های PIC16F88

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

PIC16F88 ویژگی های
No. of Pins18 (PDIP)
CPU8-Bit PIC
Operating Voltage2 to 5.5 V
Program Memory7K
Program Memory TypeFlash
RAM368 Bytes
EEPROM256 Bytes
ADC Number of ADC Channels10-Bit 7
I/O Ports (2) I/O PinsA, B 16
Packages18-pin PDIP 20-pin SSOP 28-pin QFN
External Oscillatorup to 20 MHz
Timer (3)16-Bit Timer (1) 8-Bit Timer (2)
ManufacturerMicrochip
Comparators2
SSPYes
PWM1 (10-Bit)
Watchdog TimerYes
Comparators2
Master Clear ResetYes
In-Circuit Serial ProgrammingYes
Low Voltage ProgrammingYes
EEPROM Data Retention40 Years
Minimum Operating Temperature-40 C
Maximum Operating Temperature125 C
Technology UsedNanoWatt

3. عملکرد PIC16F88

تعدادی واحد مرتبط با این ماژول PIC وجود دارد. در زیر واحدهای اصلی PIC16F88 آورده شده است.

تایمر

PIC16F88 با یک تایمر 16 بیتی و دو تایمر 8 بیتی ارائه می شود که می توانند به دو صورت استفاده شوند، یعنی به عنوان تایمر و همچنین شمارنده. این تایمرها دارای قابلیت انتخاب کلاک پالس داخلی و خارجی هستند. توجه به این نکته مهم است که حالت تایمر در افزایش چرخه دستورالعمل نقش دارد در حالی که حالت شمارنده لبه پایین و بالا رونده هر پایه را افزایش می دهد.

برنامه نویسی سریال درون مدار

برنامه نویسی سریال در مدار (ICSP) که برنامه نویسی درون سیستم (ISP) نیز نامیده می شود، یک عملکرد مفید است که در کنترلر گنجانده شده است که به شما کمک می کند تا در دستگاه نصب و چسبانده شده قابل برنامه ریزی باشد.

Master Clear Reset (MCLR)

MCLR، پایه 4 در بسته بندی PDIP، بازنشانی خارجی تراشه را فراخوانی می کند. تنظیم مجدد با پایین نگه داشتن این پایه انجام می شود. فیلتر نویز در مسیر MCLR گنجانده شده است که اجازه حذف و شناسایی پالس های باریک را می دهد در حالی که بیت پیکربندی MCLRE ورودی MCLR را غیرفعال می کند. لازم به ذکر است که این پین MCLR به ریست های داخلی وابسته نیست.

USART

ماژول USART که مخفف گیرنده و فرستنده ناهمزمان جهانی است، به تراشه اضافه شده است که عمدتاً برای تنظیم ارتباط سریال با دستگاه های دیگر استفاده می شود. دو پایه به نام‌های TX و RX برای ارتباط سریال دخالت دارند، بطوریکه Tx پایه ارسال است که امکان انتقال داده‌های سریال را به یک دستگاه دیگر می‌دهد، در حالی که Rx به عنوان پایه دریافت کننده بیت ها از یک دستگاه دیگر شناخته می‌شود.

تایمر سگ نگهبان

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

4. کامپایلر PIC

کامپایلر MPLAB C18. یک کامپایلر استاندارد است که برای کامپایل کردن کد در کنترلر استفاده می شود. شما می توانید این کامپایلر را به صورت آنلاین از سایت رسمی میکروچیپ دریافت کنید.

این 3 کامپایلر برتر PIC C گزینه‌های زیادی برای انتخاب در اختیار شما قرار می‌دهند، اما MikroC Pro For PIC عمدتاً برای این منظور استفاده می‌شود، هنوز هم بستگی به نیازها و نیازهای شما دارد.

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

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

تا اینجا در خصوص پایه بندی ، توضیحات پایه ها، ویژگی‌ها و کامپایلر مورد استفاده برای کنترلر را توصیف کردیم. در این بخش به چیدمان حافظه می پردازیم که نقش حیاتی در اجرای کد دارد. حافظه تراشه تعدادی دستورالعمل را ذخیره می کند که می توان آنها را به سه نوع اصلی تقسیم کرد: حافظه برنامه (ROM) حافظه RAM (حافظه داده) حافظه EEPROM (حافظه داده) اکنون هر حافظه را یکی یکی بحث می کنیم و ویژگی های اصلی را توصیف می کنیم. 

حافظه برنامه

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

حافظه داده EEPROM

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

حافظه داده RAM

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

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

بلوک دیاگرام معماری داخلی به شما کمک می کند تا عملکردهای اصلی کنترلر و نحوه کار، ارتباط و اتصال آنها در داخل بدنه کنترلر را درک کنید. شکل زیر بلوک دیاگرام PIC16F88 را نشان می دهد.

این ماژول PIC دارای دو پورت A و B است و هر پورت شامل 8 پین است که بیت های مرتبه بالاتر به رجیستر STATUS تعلق دارند.

در حالی که CCP1 به بیت CCPMX موجود در رجیستر Configuration Word 1 وابسته است.

7. پروژه ها و کاربردهای PIC16F88

پروژه های دانشجویی برای کنترل سنسور و موتور

GPS و سیستم های امنیتی

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

نمونه سازی مدارهای سفارشی

ارتباط سریال

پروژه های گرمایش مرکزی

سیستم تعبیه شده امبدد

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

کنترل‌کننده‌های PIC با هدف ارائه آسان ماژول و پیکربندی آسان رابط معرفی شدند.

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

نیازی به اضافه کردن ماژول ADC اضافی برای تبدیل مقادیر آنالوگ به مقادیر دیجیتال نیست، زیرا ماژول ADC داخلی که در تراشه کوچک گنجانده شده است بهترین کار را برای اتصال سنسورهای مختلف روی برد دارد.

کامپایلر و پروگرامر برای کنترلرها به راحتی در بازار موجود است. انجمن های زیادی در سایت میکروچیپ در دسترس است که در آن به سوالات شما پاسخ داده می شود.