آموزش PICمیکروکنترلرهمه ی مطالب

LED چشمک زن با میکروکنترلر PIC

این پست در واقع ادمه پست قبلی آموزش PIC کار با MPLAB  است.  در این پست در اول با یک ویدیویی آموزشی آموزش قبلی را مرور کرده و در ادمه توضیحات لازم درباره ی نحوه برنامه نویسی LED چشمک زن با میکروکنترلر PIC توضیح داده خواهد شد.

خانواده ی PIC16 میکروکنترلر های 8 بیتی هستند که در کنار قیمت مناسب از امکانات مناسبی نیز برخوردار هستند. مثل هر میکروکنترلر دیگری تعدادی I/O دارند اولین و ساده ترین قدم  برای شروع کار با یک میکروکنترلر یادگیری نحوه ی کنترل پایه های I/O در یک میکروکنترلر است. در ادمه رجیستر های لازم برای کار با I/O ها در میکروکنترلر PIC16 توضیح داده خواهد شد.

رجیستر TRIS:

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

PORT-and-TRIS-Register-in-PIC-Microcontroller-الکترولب
رجیستر PORT:

اگر به هریک از بیت های این رجیستر مقدار 1 داده شود پین متناظر از پورت در صورت خروجی بودن به HIGH تغییر وضعیت می دهد. و اگر 0 مقدار دهی شود وضعیت پین مورد نظر به LOW تغییر می کند. در پایین نمونه مثالی در مورد نحوه ی مقدار دهی به این رجیستر ها قرار  می دهم.

TRISC0 = 1; //Makes 0th bit of PORTC Input
TRISC5 = 0; //Makes 5th bit of PORTC Output
RB3 = 1; //Makes 3ed bit of PORTB at Logic High
RB7 = 0; //Makes 7th bit of PORTB at Logic Low

برنامه LED چشمک زن با میکروکنترلر PIC

/* 
 * File:   led.c
 * Author: Ali Ezzati
 *
 * Created on February 8, 2015, 5:46 PM
 */
#define _XTAL_FREQ 8000000

#include <xc.h>

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG
#pragma config FOSC = EXTRCCLK  // Oscillator Selection bits (RC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, Resistor and Capacitor on RA7/OSC1/CLKIN)
#pragma config WDTE = ON        // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON       // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
#pragma config BOREN = ON       // Brown-out Detect Enable bit (BOD enabled)
#pragma config LVP = ON         // Low-Voltage Programming Enable bit (RB4/PGM pin has PGM function, low-voltage programming enabled)
#pragma config CPD = OFF        // Data EE Memory Code Protection bit (Data memory code protection off)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)




int main()
{
  TRISB0 = 0; //RB0 as Output PIN
  while(1)
  {
    RB0 = 1;  // LED ON
    __delay_ms(1000); // 1 Second Delay
    RB0 = 0;  // LED OFF
    __delay_ms(1000); // 1 Second Delay
  }
  return 0;
}

توضیحاتی در مورد برنامه:

عبارت #define _XTAL_FREQ 8000000  فرکانس کلاک میکروکنترلر را برای برنامه مشخص می کند تا تابع __delay_ms()  زمان مورد نظر را به درستی برای ما ایجاد کند.

عبارت #pragma config  و کدهای بعد از آن بیت های وضعیت میکروکنترلر PIC را تنظیم می کند که در ادمه درباره ی نحوه ی تنظیم این بیت ها بیشتر توضیح میدم.

شماتیک لازم برای راه اندازی LED چشمک زن با میکروکنترلر PIC

Blinking-LED-using-PIC-Microcontroller-Circuit-Diagram-1024x771

 تنظیم بیت های وضعیت میکروکنترلر PIC

برای تنظیم این بیت ها کافیه از منوی window این مسیر رو دنبال کنید.

Window >> PIC Memory Views >> Configuration Bits

PIC-Memory-Views-Configuration-Bits

بعد پنجره ی زیر باز می شود که می توانید تنظیمات مورد نظرتون رو اعمال کنید و کلیدی که در تصویر مشخص هست رو برای تولید کد استفاده کنید.
Select-Required-Configurations
در مرحله بعد کد تولید شده را کپی کرده و در نوشته خود استفاده کنید.
Generated-Configuration-Bits-Source
دانلود پروژه همراه شبیه سازی

علی عزتی

علی عزتی هستم. رشته ی مهندسی برق الکترونیک رو خوندم. علاقه ی من به یادگیری و به اشتراک گذاشتن چیز هایی که یاد گرفتم. باعث شد تا الکترولب ایجاد بشه. علاقه ی زیادی به الکترونیک دارم. و دوست دارم چیزهای جدید یادبگیرم و بسازم ... :))

نوشته های مشابه

6 دیدگاه

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

    1. بهترین گزینه میتونه ARM باشه چرا که الان تمام سیستم های پیشرفته مثل همین گوشی های موبایل از پردازنده های ARM استفاده میکنند

  1. سلام.
    از مطالب مفیدی که به اشتراک گذاشتید تشکر میکنم.
    دستور delay که در این برنامه استفاده شده رو من برای شماره های دیگه مثلا 18F نتونستم استفاده کنم و در برنامه پیغام خطا میده. علتش چیه؟
    ممنون.

    1. نمی دونم من زیاد با pic کار نکردم همین دو سه پستی که می بنید رو برای آشنایی نسبی باهاش نوشتم و تست کردم همین

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

دکمه بازگشت به بالا