دوره آموزشی آموزش PIC برای مبتدیانی که تازه وارد دنیای میکروکنترلرها شدهاند، طراحی شده است تا در مورد این فناوری مقداری اطلاعات ارائه بدهد. خانواده PIC (Peripheral Interface Controller) به دلیل کم هزینه بودن، قابلیت برنامهریزی سریال و سهولت در دسترس بودن در بین دانشجویان، علاقهمندان و همچنین توسعهدهندگان صنعتی محبوب است. میکروکنترلرهای 8 بیتی PIC بر اساس ویژگیهای خاص داخلی به چهار خانواده بزرگ تقسیم میشوند:
- PIC10FXXX series
- PIC12FXXX series
- PIC16FXXX series
- PIC18FXXX series
اگرچه، میکروچیپ همچنین میکروکنترلرهایی از قبیل PIC32 ،PIC24 و DSpic را عرضه میکند. اما اگر در این زمینه تازهوارد هستید، توصیه میکنیم ابتدا با سری PIC16 یا PIC18 شروع کنید.
چگونه یادگیری میکروکنترلرهای Pic را شروع کنیم؟
برای شروع به فرآیند یادگیری میکروکنترلر Pic، ابتدا باید یک میکروکنترلر انتخاب کنیم. ما همیشه باید یک میکروکنترلر ساده (تعداد پین کم و تعداد وسایل پریفرال کمتر) و معروف را انتخاب کنیم، چونکه در صورت بروز هرگونه مسئله و مشکلی، به راحتی میتوانیم منابع و پشتیبانی انجمنهای آنلاین زیادی را پیدا کنیم.
بیایید فقط یک نمونه از میکروکنترلرهای PIC از خانواده PIC 16FXXX را برای این مقاله استفاده بکنیم. در پایان این مقاله، شما دانش کافی برای کار با سایر MCUهای استاندارد خانواده PIC16FXXX را نیز کسب میکنید، زیرا همه آنها دارای معماری مشابه هستند. ما از میکروکنترلر PIC16F877A استفاده میکنیم، زیرا این یکی از محبوبترین میکروکنترلرهای شرکت میکروچیپ است.
میکروکنترلر PIC16F877A
PIC16F877A یکی از پرکاربردترین کنترلکنندهها است. پیکرهبندی پین میکروکنترلر و برخی از عملکردهای آن در زیر نشان داده شده است. این یک میکروکنترلر 40 پین DIP است (در پکیجهای دیگر نیز موجود است.)
اتصالات سخت افزاری مورد نیاز
پینهای منبع تغذیه
ابتدا باید پینهای Vdd (منبع تغذیه) و Vss (زمین) میکروکنترلر Pic را بررسی کنید. برای تأمین ولتاژ معمولاً از دو پایه استفاده میشود. همانطور که از نمودار pinout میکروکنترلر PIC16F877A مشاهده میکنید، pin11 و pin32 پینهای Vdd هستند. طبق دیتاشیت، ما میتوانیم منبع تغذیه 5 ولت را به این پایهها متصل کنیم. اطمینان حاصل کنید که برای تأمین انرژی به میکروکنترلر pic از منبع کم نویز و پایدار استفاده کنید.
پینهای زمین
به طور مشابه، دو پایه برای اتصال ترمینالهای زمین منبع تغذیه استفاده میشود. PIC16F877A دارای دو پایه Vss مانند پایه 12 و pin31 است. شما باید این پایهها را با ترمینال زمین منبع تغذیه وصل کنید.
مدار ریست
میکروکنترلر PIC16F877A دارای یک پایه کاملاً آزاد است. این پین با 0 فعال میشود. ما برای ریست میکروکنترلر از این پین استفاده میکنیم. مشابه زمانی که میخواهیم کامپیوتر خود را راهاندازی مجدد کنیم. هنگامی که ما یک سیگنال 0 به این پین اعمال میکنیم، میکروکنترلر pic ریست میشود و همه عملکردهای میکروکنترلر را متوقف میکند.
مدار اسیلاتور
میکروکنترلر Pic گزینههای زیادی را برای انتخاب منبع کلاک فراهم میکند. تقریباً تمام میکروکنترلرهای PIC از نوسانگر داخلی نیز پشتیبانی میکنند. بنابراین مجبور نیستیم یک اسیلاتور خارجی را متصل کنیم. اما نوسانساز داخلی معمولاً از فرکانس عملکرد پایین پشتیبانی میکند. اما اگر پروژه نهفته شما به فرکانس کاری بالا نیاز دارد، باید از یک اسیلاتور کریستال خارجی استفاده کنید. PIC16F877A دارای دو پایه است که برای اتصال اسیلاتورهای کریستال خارجی مانند OSC1 و OSC2 استفاده میشود.
الزامات استاندارد
Vdd (pwr) و Vss (ground) باید به ترتیب به تغذیه و زمین متصل شوند. پین 1، پین MCLR برای ریست برنامه است و باید با مقاومت پول آپ به Vdd متصل باشد. از آنجا که PIC16F877A نوسانساز داخلی ندارد، بنابراین شما باید یک کریستال خارجی را به پین 13 و 14 متصل کنید.
پورتهای GPIO میکروکنترلر PIC
یکی از اولین برنامههایی که با میکروکنترلرها توصیه میکنیم، استفاده از مثال LED چشمکزن یا نحوه استفاده از دکمه فشاری با میکروکنترلر pic است. برای استفاده از LED و دکمه فشاری همراه با میکروکنترلر pic، باید پایه های ورودی/خروجی برای اهداف عمومی را درک کنیم.
5 پورت در PIC16F877A وجود دارد که پورت A و E دارای پین کمتری نسبت به پورت B ،C و D هستند. اینها پینهای ورودی/خروجی دیجیتال نامیده میشوند. CCP1 و CCP2، با پینهای ورودی/خروجی RC1 و RC2 مشترک هستند که میتوانند برای تولید سیگنالهای pwm با میکروکنترلر استفاده بشوند. از پینهای PGC و PGD برای برنامهنویسی و دیباگ استفاده میشود. این اطلاعات هنگام نوشتن کد برنامهنویسی مفید است.
PORTA و TRISA
PortA یک پورت دو جهته است و دارای 6 بیت (A0-A5) است. رجیستر TRISA برای تعیین وضعیت پورت مربوطه استفاده میشود، یعنی اینکه آیا به عنوان یک پورت ورودی کار میکند یا یک پورت خروجی. اگر TRISA بیت = 1 باشد، پین پورت مربوطه به عنوان ورودی تنظیم میشود. اگر TRISA بیت = 0 باشد، پین پورت مربوطه به عنوان خروجی تنظیم میشود. بیشتر پین های PortA با پینهای ورودی آنالوگ که برای مبدل های A/D استفاده میشوند، چندگانه هستند. هنگام استفاده از TRISA به عنوان ورودی آنالوگ مطمئن شوید که روی 1 تنظیم شده است.
PORTB و TRISB
PortB یک پورت دو جهته است و دارای 8 بیت (B0-B7) است و رجیستر TRISB جهت دیتا آن است. یک بیت در PortB به عنوان ورودی تنظیم میشود اگر بیت مربوطه در رجیستر TRISB برابر با 1 باشد. در حالی که اگر بیت TRISB پاک شود، بیت PortB مربوطه به عنوان خروجی تنظیم می شود. RB6 و RB7 که با هم مالتی پلکس هستند با توابع PGC و PGD برای برنامهریزی و دیباگ استفاده میشوند.
PORTC و TRISC
درست مانند PortA و PortB ،PortC نیز یک درگاه 8 بیتی و دو جهته است. بیت TRISC = 1، بیت PortC مربوطه را به عنوان ورودی و بیت TRISC = 0 بیت PortC مربوطه را به عنوان خروجی تنظیم میکند. PORTC همچنین با بسیاری از عملکردهای جانبی مالتی پلکس شده است.
PORTD و TRISD
PORTD همچنین یک پورت 8 بیتی، دو جهته است. هر پین در PortD به صورت جداگانه به عنوان ورودی یا خروجی قابل تنظیم است. اگر 4 بیت TRISE (PSPMODE) روی 1 تنظیم شود، میتوان آن را به صورت Parallel Slave Port تنظیم کرد.
PORTE و TRISE
PORTE فقط 3 بیت (E0-E2) دارد که به صورت جداگانه به عنوان ورودی یا خروجی نیز قابل تنظیم است. هر 3 پایه PORTE با ورودیهای آنالوگ مالتی پلکس شدهاند.
کامپایلرهای میکروکنترلر PIC
دو تا از معروفترین کامپایلرها که برای نوشتن برنامه میکروکنترلرهای میکروچیپ استفاده میشود، کامپایلرهای MPLAB XC و mikroC Pro for PIC هستند. شما میتوانید از هر کامپایلر استفاده کنید، اما اگر تازه شروع به کار کردهاید، به دلیل سهولت استفاده و کتابخانههای داخلی، mikroC Pro for PIC توصیه میکنیم.
تایمر و شمارنده
میکروکنترلرهای PIC دارای یک سیستم زمانبندی دقیق داخلی به نام تایمر/شمارنده هستند که میتواند برای انجام چندین کار مانند تولید سیگنالهای زمانبندی، محاسبه دامنه یک رویداد، ثبت سابقه تاریخ و زمان و … استفاده شود. از آنجا که شمارنده به طور مستقل اجرا میشود، میتواند سیکلهای دستورالعمل را همزمان با اجرای برنامه اصلی بشمارد. PIC16F877A از 3 ماژول تایمر تشکیل شده است:
- TIMER0
- TIMER1
- TIMER2
سلام
شروع خوبی هست.
PWM
سلام دوست عزیز کم کم مباحث مختلف رو پوشش میدیم 🙂
منظور من PWM بود که اشتباه نوشته شده PMW
ممنونم برای دقتتون
اصلاح شد