سه پروژه برای کار با ورودی و خروجی میکرو کنترل avr

نوشته شده توسط:robofaadmin در پروژه های آماده میکروکنترلر

در این مطلب از سری مطالب پروژه های آماده و مدارات آماده میکروکنترل avr سایت صنایع آموزشی روبوفا به بحث پیرامون برنامه نویسی ورودی و خروجی های میکروکنترلر و همچنین مدار شماتیک آنها خواهیم پرداخت، پس با صنایع آموزشی روبوفا همراه باشید تا با مباحث پایه ای مقاله را آغاز کنیم:
ورودی خروجی دیجیتال (I / O) از ویژگی های اصلی پشتیبانی شده توسط  میکروکنترلر AVR است. به منظور تسهیل در ورودی خروجی دیجیتال، سه ثبات با هر پورت از میکرو در ارتباط است. در زیر به این ثبات ها (registers) پرداخته ایم:

  • Data Direction Register: این ثبات تعیین میکند که کدام پین به عنوان ورودی میکروکنترلر و کدام پین به عنوان خروجی میکروکنترلر استفاده شود.
  • Data Output Register: این ثبات خروجی برنامه را به پورت مورد نظر میدهد.
  • Data Input Register: این ثبات ورودی را از پورت مورد نظر فراخوانی میکند.

به عنوان مثال برای پورت A این سه ثبات به صورت DDRA, PORTA & PINA می باشد و به همین منوال برای پورت B داریم: DDRB, PORTB & PINB

قبل از اینکه وارد بحث اصلی شویم باید به یک مورد مهم نیز اشاره کنیم، یک پورت میکرو میتواند برای بیش از یک هدف و منظور مورد استفاده قرار گیرد و این مسئولیت با طراح مدار است که خطاهای احتمالی را از بین ببرد. در زیر نقشه شماتیک کار با ورودی و خروجی میکروکنترلر را برای دو مدل atmega8 و atmega16 آماده کرده ایم:

نقشه شماتیک مدار کار با ورودی و خروجی میکروکنترلر avr مدلatmega16L به شکل زیر است:

مدار کار با ورودی و خروجی میکروکنترلر avr مدلatmega16L

 

همچنین نقشه شماتیک مدار کار با ورودی و خروجی میکروکنترلر avr مدلatmega8 به شکل زیر می باشد:

مدار ورودی و خروجی میکرومنترلر

خوب، بریم سراغ برنامه نویسی میکروکنترلر برای کار با ورودی و خروجی ها، پس با مثالهای ساده شروع میکنیم. اولین برنامه مربوط به روشن کردن ال ای دی با میکرو کنترلر است:

#include
#define F_CPU 1000000
#include
int main()

{ DDRB=0x0f;

PORTB=0x00;

while(1)

{ _delay_ms(1500);

PORTB =~PORTB;
}

return 0;
}

توضیحات برنامه: در این برنامه ال ای دی متصل به پورت b در سه دوره چشمک میزند اما چطور این اتفاق می افتد؟ این برنامه بسیار ساده است، اگر دقت کرده باشید در ابتدای برنامه از دستور "#define F_CPU" استفاده شده است که فرکانس پردازنده برای اجرای صحیح حلقه تاخیر است.

------------------------------------------------------------------------------------------------------

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

#include

int main()

{ DDRB=0x0f;

DDRD=0x00;

while(1)

PORTB =~PIND;

return 0;

}

------------------------------------------------------------------------------------------------------

امیدواریم از این آموزش و پروژه نهایت لذت را برده باشید، اگر سوالی داشتید در قسمت نظرات مطرح فرمایید تا پاسخدهی گردد