PIC 16F877A
What you will read ...
PIC16F877A :PIC16F877A :
میکروکنترلر PIC16F877A از خانواده میکروکنترلرهای PIC16 شرکت Microchip Technology است و به دلیل ویژگیهای متنوع و کارایی مناسب، در بسیاری از پروژههای الکترونیکی مورد استفاده قرار میگیرد. در ادامه مشخصات کلیدی این میکروکنترلر توضیح داده شده است:
مشخصات کلیدی PIC16F877A
- معماری و پردازنده:
- معماری: 8-bit
- دستورات: معماری RISC با 35 دستورالعمل
- فرکانس کلاک:
- فرکانس عملیاتی: تا 20 MHz
- کلاک داخلی: یک کلاک داخلی 8 MHz
- حافظه:
- حافظه فلش: 14 KB برای برنامهها
- حافظه RAM: 368 Bytes
- حافظه EEPROM: 256 Bytes
- پینها و I/O:
- تعداد پینها: 40 پین (PDIP)، 44 پین (PLCC، TQFP)
- تعداد ورودی/خروجی (I/O): 33 پین دیجیتال
- تایمرها:
- تایمر0: 8-bit تایمر/کانتر
- تایمر1: 16-bit تایمر/کانتر
- تایمر2: 8-bit تایمر با پریاسکالر و پستاسکالر
- ماژولهای ارتباطی:
- UART: یک UART برای ارتباط سریال
- SPI: یک ماژول MSSP (Master Synchronous Serial Port) که از SPI پشتیبانی میکند
- I2C: یک ماژول MSSP (Master Synchronous Serial Port) که از I2C پشتیبانی میکند
- ADC:
- تعداد کانالهای ADC:
8 کانال آنالوگ به دیجیتال
-
- دقت ADC:
10-bit
- ویژگیهای اضافی:
- PWM: دو ماژول PWM
- واچ داگ تایمر: برای جلوگیری از خرابی نرمافزاری
- قابلیت برنامهریزی در مدار (ICSP): برای برنامهریزی و دیباگ
- مبدل ولتاژ به فرکانس (V/F): برای اندازهگیری فرکانسها
- ولتاژ عملیاتی:
- محدوده ولتاژ: 2.0V تا 5.5V
- بستهبندی:
- PDIP: 40 پین
- PLCC: 44 پین
- TQFP: 44 پین
- کاربردها:
- پروژههای آموزشی
- سیستمهای تعبیهشده (Embedded Systems)
- پروژههای صنعتی
- روباتیک
- دستگاههای خانگی و کنترلی
جدول مشخصات:
مشخصه | مقدار / توضیحات |
مدل | PIC16F877A |
معماری | 8-بیتی |
تعداد پایهها | 40 (PDIP)، 44 (TQFP) |
نوع حافظه برنامه | Flash |
ظرفیت حافظه برنامه | 14 کیلوبایت (8K x 14) |
حافظه SRAM | 368 بایت |
حافظه EEPROM | 256 بایت |
تعداد تایمرها | 3 (دو تایمر 8 بیتی، یک تایمر 16 بیتی) |
ADC | 10 کاناله، 10 بیتی |
I/O دیجیتال | 33 |
پروتکلهای ارتباطی | USART، SPI، I2C |
ولتاژ کاری | 2.0V تا 5.5V |
سرعت کلاک | تا 20 مگاهرتز |
واچ داگ تایمر | دارد |
پرت سریال (UART) | دارد |
پرت موازی (Parallel Slave Port) | دارد |
پین مقایسهگر آنالوگ | دارد |
مدیریت توان | خواب (Sleep) و Idle |
حفاظت از کد (Code Protection) | دارد |
پکیجها | PDIP-40، TQFP-44 |
ویژگیهای برجسته
- سادگی استفاده: با معماری RISC و دستورات ساده، این میکروکنترلر برای مبتدیان و پروژههای آموزشی مناسب است.
- مستندات گسترده: دارای مستندات و منابع آموزشی فراوانی است که توسعهدهندگان را در طراحی و برنامهنویسی کمک میکند.
- پشتیبانی از ابزارهای توسعه Microchip: مانند MPLAB X IDE و کامپایلرهای XC8 که توسعه و دیباگ برنامهها را ساده میکنند.
این مشخصات و ویژگیها، PIC16F877A را به یک انتخاب محبوب برای انواع پروژههای الکترونیکی و سیستمهای تعبیهشده تبدیل کرده است.
برای نوشتن یک برنامه ساده برای میکروکنترلر PIC16F877A، معمولاً از یک LED برای نمایش پیام استفاده میکنیم، برنامه زیر یک LED متصل به یکی از پینهای I/O میکروکنترلر را روشن و خاموش میکند. برای این مثال، فرض میکنیم که یک LED به پین RB0 پین شماره 6 در بستهبندی PDIP متصل است.
ابزارها و ملزومات:
- MPLAB X IDE
- کامپایلر XC8
- برد توسعهای که میکروکنترلر PIC16F877A روی آن نصب شده است
#include <xc.h>
// تنظیمات پیکربندی (Configuration Bits)
// در MPLAB X میتوانید این تنظیمات را از طریق GUI انجام دهید، یا مستقیماً در کد بنویسید.
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
#define _XTAL_FREQ 20000000 // تعریف فرکانس کریستال خارجی به 20MHz
void main(void){
TRISB0 = 0; // تنظیم RB0 به عنوان خروجی
while(1) {
RB0 = 1; // روشن کردن LED
__delay_ms(500); // تاخیر 500 میلیثانیه
RB0 = 0; // خاموش کردن LED
__delay_ms(500); // تاخیر 500 میلیثانیه
}
}
توضیح کد:
- تنظیمات پیکربندی (Configuration Bits): این بخش برای تنظیمات مختلف سختافزاری میکروکنترلر استفاده میشود. برای مثال، انتخاب نوع نوسانساز، غیرفعال کردن Watchdog Timer، و تنظیمات دیگر.
- تعریف فرکانس کریستال خارجی: فرکانس کریستال خارجی (Oscillator) مورد استفاده را تعریف میکنیم که در این مثال 20MHz است.
- تابع main: در این تابع:
- پین RB0 به عنوان خروجی تنظیم میشود.
- یک حلقه بینهایت (while(1)) برای روشن و خاموش کردن LED با تاخیر 500 میلیثانیهای ایجاد میشود.
نحوه کامپایل و برنامهریزی:
- برنامه را در MPLAB X IDE بنویسید.
- پروژه را کامپایل کنید تا فایل HEX تولید شود.
- فایل HEX تولید شده را با استفاده از پروگرامر مناسب (مانند PICkit) به میکروکنترلر منتقل کنید.
- میکروکنترلر را به برد توسعه متصل کرده و مدار را روشن کنید. LED باید شروع به چشمک زدن کند.
این برنامه یک LED را با یک دورهی 500 میلیثانیه روشن و خاموش میکند، که به عنوان یک برنامه “Hello World” ساده برای میکروکنترلر PIC16F877A استفاده میشود.
چرا از xc.h استفاده میکنیم؟
- سازگاری: این فایل به طور خودکار فایلهای سرآیند مرتبط با میکروکنترلر مورد استفاده شما را شامل میشود، بنابراین میتوانید از یک فایل سرآیند واحد برای همه میکروکنترلرهای پشتیبانی شده توسط کامپایلر XC8 استفاده کنید.
- سادگی: به جای وارد کردن چندین فایل سرآیند مختلف، میتوانید فقط xc.h را وارد کنید که شامل همه موارد مورد نیاز است.
- پشتیبانی از توابع استاندارد: بسیاری از توابع استاندارد کتابخانهای که برای کنترل میکروکنترلر استفاده میشوند، در این فایل تعریف شدهاند.
توضیح کد:
- #include <xc.h>: این خط، فایل سرآیند xc.h را شامل میکند که شامل تمامی تعریفها و اعلانهای مورد نیاز برای برنامهنویسی میکروکنترلرهای PIC است.
- #pragma config: این خطوط برای تنظیمات پیکربندی میکروکنترلر استفاده میشوند. این تنظیمات شامل انتخاب نوع نوسانساز، غیرفعال کردن Watchdog Timer و سایر تنظیمات مهم است.
- #define _XTAL_FREQ 20000000: این خط فرکانس کریستال خارجی را به 20MHz تنظیم میکند که برای توابع تاخیر delay_ms و __delay_us مورد نیاز است.
- TRISB0 = 0: این خط پین RB0 را به عنوان خروجی تنظیم میکند.
- RB0 = 1 و RB0 = 0: این خطوط پین RB0 را به ترتیب روشن و خاموش میکنند.
- __delay_ms(500): این تابع یک تاخیر 500 میلیثانیهای ایجاد میکند.
استفاده از xc.h برنامهنویسی برای میکروکنترلرهای PIC را سادهتر و سازماندهیشدهتر میکند.
PIC16F877A Data Sheet
PIC 16F877A Original, PIC 16F877A Original Price, PIC 16F877A Original قیمت, PIC 16F877A Original خرید
PIC 18F4550 Original, PIC 18F4550 Original Price, PIC 18F4550 Original قیمت, PIC 18f4550 Original خرید
PIC 16F84A Original, PIC 16F84A Original Price, PIC 16F84A Original قیمت, PIC 16F84A Original خرید
جهت خرید میکرو کنترلر اصلی و ارجینال با ما تماس بگیرید.