PIC 18F4550
What you will read ...
PIC18F4550 :PIC18F4550 :
میکروکنترلر PIC 18F4550 یکی از میکروکنترلرهای محبوب و پرکاربرد شرکت Microchip Technology است که به دلیل ویژگیهای متنوع و قابلیتهای پیشرفتهاش در بسیاری از پروژههای صنعتی، تجاری، و آموزشی مورد استفاده قرار میگیرد. در ادامه مشخصات کلیدی این میکروکنترلر توضیح داده شده است:
مشخصات کلیدی PIC18F4550
- معماری و پردازنده:
- معماری: 8-bit
- دستورات: معماری CISC با 75 دستورالعمل
- فرکانس کلاک:
- فرکانس عملیاتی: تا 48 MHz (با استفاده از PLL)
- حافظه:
- حافظه فلش: 32 KB برای برنامهها
- حافظه RAM: 2048 Bytes
- حافظه EEPROM: 256 Bytes
- پینها و I/O:
- تعداد پینها: 40 پین (PDIP)، 44 پین (PLCC، TQFP)
- تعداد ورودی/خروجی (I/O): 35 پین دیجیتال
- تایمرها:
- تایمر0: 8-bit تایمر/کانتر با پریاسکالر
- تایمر1: 16-bit تایمر/کانتر با پریاسکالر و گزینه تایمر خارجی
- تایمر2: 8-bit تایمر با پریاسکالر و پستاسکالر
- تایمر3: 16-bit تایمر/کانتر با پریاسکالر و گزینه تایمر خارجی
- ماژولهای ارتباطی:
- UART: یک UART برای ارتباط سریال
- SPI: دو ماژول MSSP (Master Synchronous Serial Port) که از SPI پشتیبانی میکنند
- I2C: دو ماژول MSSP که از I2C پشتیبانی میکنند
- USB: یک ماژول USB 2.0 (Full-speed USB)
- ADC:
- تعداد کانالهای ADC:
13 کانال آنالوگ به دیجیتال
-
- دقت ADC:
10-bit
- ویژگیهای اضافی:
- PWM: ماژولهای CCP و ECCP برای تولید PWM
- واچ داگ تایمر: برای جلوگیری از خرابی نرمافزاری
- قابلیت برنامهریزی در مدار (ICSP): برای برنامهریزی و دیباگ
- مبدل ولتاژ به فرکانس (V/F): برای اندازهگیری فرکانسها
- مقایسهکننده آنالوگ: 2 مقایسهکننده آنالوگ داخلی
- Capture/Compare/PWM (CCP): 2 ماژول CCP
- ولتاژ عملیاتی:
- محدوده ولتاژ: 2.0V تا 5.5V
- بستهبندی:
- PDIP: 40 پین
- PLCC: 44 پین
- TQFP: 44 پین
- کاربردها:
- پروژههای USB
- سیستمهای تعبیهشده (Embedded Systems)
- دستگاههای اندازهگیری و کنترل
- روباتیک
- دستگاههای خانگی و کنترلی
ویژگیهای برجسته
- USB 2.0: این میکروکنترلر دارای ماژول USB داخلی است که امکان توسعه برنامههای USB را فراهم میکند.
- حافظه و سرعت بالا: با 32 KB حافظه فلش و 2 KB RAM و فرکانس کاری تا 48 MHz، این میکروکنترلر برای برنامههای پیچیده مناسب است.
- پشتیبانی از توابع استاندارد: این میکروکنترلر از توابع کتابخانهای استاندارد برای کنترل و ارتباطات پشتیبانی میکند.
- مستندات و منابع آموزشی: دارای مستندات و منابع آموزشی فراوانی است که توسعهدهندگان را در طراحی و برنامهنویسی کمک میکند.
- پشتیبانی از ابزارهای توسعه Microchip: مانند MPLAB X IDE و کامپایلرهای XC8 که توسعه و دیباگ برنامهها را ساده میکنند.
مشخصه | مقدار / توضیحات |
مدل | PIC18F4550 |
معماری | 8-بیتی |
تعداد پایهها | 40 (PDIP)، 44 (TQFP, QFN) |
نوع حافظه برنامه | Flash |
ظرفیت حافظه برنامه | 32 کیلوبایت |
حافظه SRAM | 2048 بایت |
حافظه EEPROM | 256 بایت |
تعداد تایمرها | 4 (دو تایمر 8 بیتی، دو تایمر 16 بیتی) |
ADC | 13 کاناله، 10 بیتی |
I/O دیجیتال | 35 |
پروتکلهای ارتباطی | USB 2.0، USART، SPI، I2C |
ولتاژ کاری | 2.0V تا 5.5V |
سرعت کلاک | تا 48 مگاهرتز |
واچ داگ تایمر | دارد |
پورت USB | دارد (USB 2.0) |
پرت سریال (UART) | دارد |
پین مقایسهگر آنالوگ | دارد |
مدیریت توان | خواب (Sleep)، Idle، و سایر حالتهای صرفهجویی در انرژی |
حفاظت از کد (Code Protection) | دارد |
پکیجها | PDIP-40، TQFP-44، QFN-44 |
این مشخصات و ویژگیها، PIC18F4550 را به یک انتخاب محبوب برای انواع پروژههای الکترونیکی و سیستمهای تعبیهشده تبدیل کرده است.
برای نوشتن یک برنامه ساده برای میکروکنترلر PIC18F4550، معمولاً از یک LED برای نمایش پیام استفاده میکنیم، برنامه زیر یک LED متصل به یکی از پینهای I/O میکروکنترلر را روشن و خاموش میکند. برای این مثال، فرض میکنیم که یک LED به پین RB0 پین شماره 33 در بستهبندی PDIP متصل است.
ابزارها و ملزومات:
- MPLAB X IDE
- کامپایلر XC8
- برد توسعهای که میکروکنترلر PIC18F4550 روی آن نصب شده است
کد:
#include <xc.h>
// تنظیمات پیکربندی (Configuration Bits)
// در MPLAB X میتوانید این تنظیمات را از طریق GUI انجام دهید، یا مستقیماً در کد بنویسید.
// CONFIG1L
#pragma config PLLDIV = 5 // PLL Prescaler Selection bits (Divide by 5 (20 MHz oscillator input))
#pragma config CPUDIV = OSC1_PLL2 // System Clock Postscaler Selection bits (OSC1/OSC2 Src: /1, 96 MHz PLL Src: /2)
#pragma config USBDIV = 2 // USB Clock Selection bit (USB clock source comes from the 96 MHz PLL divided by 2)
// CONFIG1H
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF // Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)
// CONFIG2L
#pragma config PWRT = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOR = ON // Brown-out Reset Enable bits (Brown-out Reset enabled in hardware only (SBOREN is disabled))
#pragma config BORV = 3 // Brown-out Reset Voltage bits (Minimum setting 2.05V)
#pragma config VREGEN = ON // USB Voltage Regulator Enable bit (USB voltage regulator enabled)
// CONFIG2H
#pragma config WDT = OFF // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
#pragma config WDTPS = 32768 // Watchdog Timer Postscale Select bits (1:32768)
// CONFIG3H
#pragma config CCP2MX = ON // CCP2 MUX bit (CCP2 input/output is multiplexed with RC1)
#pragma config PBADEN = OFF // PORTB A/D Enable bit (PORTB<4:0> pins are configured as digital I/O on Reset)
#pragma config LPT1OSC = OFF // Low-Power Timer 1 Oscillator Enable bit (Timer1 configured for higher power operation)
#pragma config MCLRE = ON // MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled)
// CONFIG4L
#pragma config STVREN = ON // Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
#pragma config LVP = OFF // Single-Supply ICSP Enable bit (Single-Supply ICSP disabled)
#pragma config XINST = OFF // Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode))
// CONFIG5L
#pragma config CP0 = OFF // Code Protection bit (Block 0 (000800-001FFFh) not code-protected)
#pragma config CP1 = OFF // Code Protection bit (Block 1 (002000-003FFFh) not code-protected)
#pragma config CP2 = OFF // Code Protection bit (Block 2 (004000-005FFFh) not code-protected)
#pragma config CP3 = OFF // Code Protection bit (Block 3 (006000-007FFFh) not code-protected)
// CONFIG5H
#pragma config CPB = OFF // Boot Block Code Protection bit (Boot block (000000-0007FFh) not code-protected)
#pragma config CPD = OFF // Data EEPROM Code Protection bit (Data EEPROM not code-protected)
// CONFIG6L
#pragma config WRT0 = OFF // Write Protection bit (Block 0 (000800-001FFFh) not write-protected)
#pragma config WRT1 = OFF // Write Protection bit (Block 1 (002000-003FFFh) not write-protected)
#pragma config WRT2 = OFF // Write Protection bit (Block 2 (004000-005FFFh) not write-protected)
#pragma config WRT3 = OFF // Write Protection bit (Block 3 (006000-007FFFh) not write-protected)
// CONFIG6H
#pragma config WRTC = OFF // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write-protected)
#pragma config WRTB = OFF // Boot Block Write Protection bit (Boot block (000000-0007FFh) not write-protected)
#pragma config WRTD = OFF // Data EEPROM Write Protection bit (Data EEPROM not write-protected)
// CONFIG7L
#pragma config EBTR0 = OFF // Table Read Protection bit (Block 0 (000800-001FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR1 = OFF // Table Read Protection bit (Block 1 (002000-003FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR2 = OFF // Table Read Protection bit (Block 2 (004000-005FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR3 = OFF // Table Read Protection bit (Block 3 (006000-007FFFh) not protected from table reads executed in other blocks)
// CONFIG7H
#pragma config EBTRB = OFF // Boot Block Table Read Protection bit (Boot block (000000-0007FFh) not protected from table reads executed in other blocks)
#define _XTAL_FREQ 20000000 // تعریف فرکانس کریستال خارجی به 20MHz
void main(void){
تنظیم RB0 به عنوان خروجی// ;TRISB0 = 0
while(1){
LATB0 = 1; // روشن کردن LED
__delay_ms(500); // تاخیر 500 میلیثانیه
LATB0 = 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” ساده برای میکروکنترلر PIC18F4550 استفاده میشود.
PIC18F4550 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 خرید
جهت خرید میکرو کنترلر اصلی و ارجینال با ما تماس بگیرید.