راه اندازی پورت های میکرو AVR

هدف پروژه

هدف از انجام این پروژه یادگیری چگونگی کار با پورتهای میکروکنترلر AVR می باشد.در این پروژه با توابع ست و ریست کردن پورت آشنا میشویم . و در نهایت سپس با استفاده از تابع تاخیر یک چشمک زدن را طراحی میکنیم.

سخت افزار مورد استفاده

این پروژه مبتنی بر میکرو کنترلر AVR طراحی شده است. برای سادگی کار از برد آموزشی ATMEGA32 برای پیاده سازی استفاده شده است. امکانات استفاده شده در زیر ذکر شده است.

  • چهار عدد پورت 8 بیتی
  • 8 عدد دیود نورانی متصل به پورتهای میکرو

کتابخانه های استفاده شده

  • توابع کنترل پرورتهای میکرو(برای یاد گیری درباره این توابع اینجا کلیک کنید)

تشریح کد برنامه

در این بخش به بررسی main برنامه میپردازیم.

در ابتدا برنامه کتابخانه های مورد ایستفاده را include میکنیم که شامل کتابخانه های زیر میباشد.

#include <mega32.h>
#include <delay.h>

کتابخانه mega32.h شامل تعریف رجیسترهای میکروکنترلر میباشد و از این کتابخانه برای دسترسی به آدرسدهی رجیستر های میکروکنترلر استفاده میکنیم.

کتابخانه delay.h شامل توابع لازم برای ایجاد تاخیر میباشد این کتابخانه شامل تابع delay_ms برای ایجاد تاخیر میلی ثانیه و تابع delay_us برای ایجاد تاخیر در حد میکرو ثانیه میباشد.

سپس می بایست دو عدد از پین های میکرو که متصل به دیود نورانی موجود در برد آموزشی میباشند را به صورت خروجی تعریف کنیم برای این کار از پنجره CodeWizardAVR موجود در نرم افزار CodeVision استفاده میکنیم.

(برای آشنایی با نحوه استفاده از پنجره  CodeWizardAVR اینجا کلیک کنید)

با از پنجره CodeWizardAVR پین های PB0,PB1 را به صورت خروجی تعریف میکنیم و کد تولید شده توسط پنجره CodeWizardAVR را در برنامه قرار میدهیم

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=T State1=0 State0=0
PORTB=0x00;
DDRB=0x03;

// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=In Func0=In
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=T State0=T
PORTC=0x00;
DDRC=0xFC;

حال پین های متصل به دیود های نورانی به صورت خروجی تعریف میشوند سپس می بایست با استفاده از تابع delay_ms تاخیر لازم را برای ساخت چشمک زن ایجاد کنیم.

while(1)
{ 
    PORTB.0 = ~PORTB.0; //toggle pin b.0
    PORTB.1 = ~PORTB.1; //toggle pin b.1
    PORTC.2 = ~PORTC.2; //toggle pin c.2
    PORTC.3 = ~PORTC.3; //toggle pin c.3
    PORTC.4 = ~PORTC.4; //toggle pin c.4
    PORTC.5 = ~PORTC.5; //toggle pin c.5
    PORTC.6 = ~PORTC.6; //toggle pin c.6
    PORTC.7 = ~PORTC.7; //toggle pin c.7
      
    delay_ms(500);
};

همانطور که در برنامه می بینید پین ها در ابتدا مقدار دهی میشوند و سپس با زمان تاخیر 500 میلی ثانیه شروع به چشمک زدن میکنند و چون برنامه در یک حلقه (1)while قرار دارد میکروکنترلر این کار را مداوم انجام میدهد.

دانلود سورس کد

سورس کد کامل را از اینجا دانلود کنید.

مشاهده نتیجه

با کلیک بر روی عکس زیر فیلم راه اندازی این پروژه را مشاهده کیند.

فیلم راه اندازی پورت سریال میکروکنترلر

Tags: , , , , , , , ,