led چشمک زن با میکرو کنترولر PIC18F452

در این پست قصد داریم پروژه ای مخصوص افراد مبتدی و کسانی که تازه کار با میکرو کنترولر  pic18f452 را شروع کرده اند قرار دهیم.
در این پروژه ساده و ابتدایی یک LED متصل به یک pic18f452 را روشن و خاموش می نماییم ، این پروژه به زبان سی نوشته شده است.

شما می توانید پی دی اف آموزش روشن و خاموش کردن یک LED  را  از ابتدا تا انتهاکه با  نرم افزار proteus طراحی و با mikroc کد نویسی شده است، از لینک زیر دریافت نمایید:

 

Download

 

one1LED در حالت مصرف کننده جریان

پایه آند LED ،  توسط یک مقاومت، به تغذیه ۵ ولت و کاتد آن، به پورت خروجی میکروکنترلر، متصل شده است. 

oledLED در حالت منبع جریان 

پایه آند LED، توسط یک مقاومت محدود کننده جریان به پورت خروجی میکروکنترلر، و پایه کاتد آن به زمین متصل شده است.

twoاینجا دو LED را مشاهده میکنید که به فاصله زمانی ثابتی روشن و خاموش میشوند. 8ledاینجا هشت LED را مشاهده میکنید که به فاصله زمانی ثابتی روشن و خاموش میشوند.

 


تشریح کد نویسی در mikroC برای یک led به زبان سی


void main()//شروع برنامه

{

 TRISB.F0 = 0;// خروجی می کند PORTB0 یا RB0 پین

while(1) //یک حلقه نامتناهی که در داخل آن ال ئی دی متناوبا خاموش و روشن میشود

{

  PORTB.F0 = 1;//  رایک کرده و ال ئی دی را روشن میکند RB0  پین

 Delay_ms(1000);//یک ثانیه تاخیر

 PORTB.F0 = 0;   // را صفر کرده و ال ئی دی را خاموش میکند RB0  پین

Delay_ms(1000);

  }

}


برنامه ریزی پورتهای ورودی/خروجی میکروکنترلر pic


 

بسته به میکروکنترلری که استفاده میکنیم، پورتهای ورودی/خروجی میکروکنترلر pic18f452 دارای نامهای A, B, C, D, E میباشد. پایه های این پورتها ممکنه آنالوگ یا دیجیتال باشد. در مد آنالوگ، این پایه ها ورودی هستند و به مدارات آنالوگ به دیجیتال متصل میشود. در مد دیجیتال میتوان این پورتها ورودی یا خروجی تعریف کرد.

رجیستر TRIS مسیر پورت ها را تعیین میکند. برای هرپورت یک ریجیستر TRIS وجود دارد. ۰ کردن  یک بیت این رجیستر، پایه پورت متناظرش را خروجی میکندو بر عکس.

PORT ها از طریق یک رجیستر ۸ بیتی یا بیت های پورت قابل دسترسی هستند.مثلا اگر پورتی را بخواهیم به صورت خروجی تعریف شود، باید همه پایه های آن ۱ شود.

 


تشریح کد نویسی در mikroC برای دو led به زبان سی


void main()

{

  TRISB.F0 = 0;

  TRISB.F1 = 0;

  while(1)

  {

    PORTB.F0 = 1;

    Delay_ms(1000);

    PORTB.F0 = 0;

    Delay_ms(1000);

    PORTB.F1 = 1;

    Delay_ms(1000);

    PORTB.F1 = 0;

    Delay_ms(1000);

}

روش دیگر ///////////////////////////////////////////////////////////////////////////////

int unsigned Counter;

void main() {

 trisB = ۰;

 while(1)

 {

  portB = 0x01; // روشن میشود LED

 for(Counter = 0; Counter < 2;Counter++)

  {

   delay_ms(1000);

   portB = portB << 1; // بعدی میشودLED یک شیفت به چپ باعث روشن شدن

  }

 }

}


تشریح کد نویسی در mikroC برای هشت  led به زبان سی


 

void main()

{

  TRISB.F0 = 0;

  TRISB.F1 = 0;

   TRISB.F2 = 0;

   TRISB.F3 = 0;

   TRISB.F4 = 0;

   TRISB.F5 = 0;

   TRISB.F6 = 0;

   TRISB.F7 = 0;

  while(1)

  {

    PORTB.F0 = 1;

    Delay_ms(1000);

    PORTB.F0 = 0;

    Delay_ms(1000);

    PORTB.F1 = 1;

    Delay_ms(1000);

    PORTB.F1 = 0;

    Delay_ms(1000);

    PORTB.F2 = 1;

    Delay_ms(1000);

    PORTB.F2 = 0;

    Delay_ms(1000);

    PORTB.F3 = 1;

    Delay_ms(1000);

    PORTB.F3 = 0;

    Delay_ms(1000);

    PORTB.F4 = 1;

    Delay_ms(1000);

    PORTB.F4 = 0;

    Delay_ms(1000);

    PORTB.F5 = 1;

    Delay_ms(1000);

    PORTB.F5 = 0;

    Delay_ms(1000);

    PORTB.F6 = 1;

    Delay_ms(1000);

    PORTB.F6 = 0;

    Delay_ms(1000);

    PORTB.F7 = 1;

    Delay_ms(1000);

    PORTB.F7 = 0;

    Delay_ms(1000);

  }

}

//////////////////////////////////////////////////////////////////////////////////////////////

int unsigned Counter;

void main() {

 trisb = 0;

 while(1)

 {

  portb = 0x01;

  for(Counter = 0; Counter < 8; Counter++)

  {

   delay_ms(1000);

   portb= portb << 1;

  }

 }

}

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
Feel free to contribute!

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

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