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

راه اندازی LED چشمک زن با AVR توسط کدویژن و تراشه ATmega8 اتمگا

LED-with-codevision-avr-tutorial-digispark
نوشته شده توسط سپهر شیخ الاسلامی

میکروکنترلر AVR از اواسط دهه ۹۰ میلادی در عرصه الکترونیک و مدارهای مجتمع پا به عرصه گذاشتند. در میکروکنترلر AVR امکان برنامه نویسی ابتدایی برای تراشه وجود داشته است. امروزه شاهد رشد و پیشرفت بسیار زیادی در میکروکنترلر AVR هستیم. در ادامه این آموزش قصد دارم به عنوان پروژه مقدماتی یک LED را با با میکروکنترلر ATMega8 از خانواده Atmel AVR توسط افزار کدویژن راه اندازی نماییم. تراشه ATMega8 دارای ۴ پورت ,B,C و D می‌باشد. در اینجا من از پایه ۴ از پورت C استفاده کردم ولی شما می توانید از هر پایه ای در هر پورتی استفاده کنید. در ادامه این آموزش با مرجع تخصصی الکترونیک و رباتیک، دیجی اسپارک همراه باشید.

 

لوازم مورد نیاز

۱- میکروکنترلر ATmega8

۲- LED یا دیود نورانی

۳- مقاومت ۴۰۰ اهم برای حفاظت از سوختن LED

آموزش راه اندازی LED با کدویژن و AVR - دیجی اسپارک

 

کدهای پروژهAVR با تراشه ATmega8

ابتدا نرم افزار کدویژن رو باز کنید و از منو file گزینه New Project را انتخاب کنید.کد های زیر را در آن تایپ کنید.سپس از منوی Project گزینه ی compile را انتخاب کنید و اگر error مشاهده نکردید گزینه OK را انتخاب کنید و از همان منو project گزینه Build All را انتخاب کنید.حال برنامه به زبان ماشین ترجمه شده و آن در فایلی به نام exe در جایی که انتخاب کردید با پسوند hexذخیره شده

#include <io.h>
#include <delay.h>

void main(void)
{
DDRC.4 = 1 ;
PORTC.4 = 0 ;
while (1)
{
// Please write your application code here
PORTC.4 = ! PORTC.4 ;

(delay_ms(500

}
}

 

آموزش راه اندازی LED با کدویژن و AVR - دیجی اسپارک

توضیح خط به خط کد AVR

۱- در خط اول، کتابخانه‌ای جامع برای میکروکنترلر AVR را اضافه کردیم. این کتابخانه شامل سری‌های ATTiny,AT90S و ATMega می‌باشد.
۲- در خط دوم، کتابخانه مربوط به تاخیر را ضمیمه برنامه کردم.

۳- خط بعد مربوط به DDRC.4 می باشد که ما با این کار پایه ی ۴ از پورت c را به عنوان خروجی تعریف کرده ایم.ابتدا DDR را نوشته ایم که منظور ما را مشخص می کند یعنی ما می خواهیم ورودی یا خروچی بودن را مشخص کنیم و بعد به پورت اشاره دارد که در اینجا پورت c می باشد سپس نقطه می گذاریم و پایه ای را از پورت مشخص می کنیم که در اینجا پایه ی ۴ می باشد بعد مساوی می گذاریم و ۰ و یا ۱ را می نویسیم.۰ به معنای ورودی و ۱ به معنای خروجی بودن پایه است.

۴- در این خط ما مقدار اولیه ای به پایه ی ۴ از پورت c داده ایم که ان مقدار برابر ۰ بوده است.مانند دستور قبل ابتدا دستور اصلی که PORT است را می نویسیم سپس پورت را مشخص می کنیم و بعد از نقطه پایه را مشخص می کنیم.

۵- در حلقه (while(1 ما دستوراتی را می نویسیم که می خواهیم بینهایت بار آنها را اجرا کنیم.

۶- این خط ،خط  اصلی است و می گوید که مقدار پایه ۴ از پورت c برابر است با متضاد حالت کنونی اش.یعنی اگر ۱ یا روشن باشد آنرا تبدیل به صفر می کند و اگر ۰ باشد آنرا تبدیل به ۱ می کند

۷- اگر میکروکنترلر AVR پشت سر هم عمل چشمک زدن را انجام دهد آنقدر سریع خواهد بود که چشم انسان قادر به دیدن آن نیست بنابر این با دستور ()delay_ms وقفه ای میلی ثانیه ای  در کار ایجاد می کنیم که در اینجا ۵۰۰ میلی ثانیه وقفه در کار AVR ایجاد کرده ایم.

 

اتصالات مدار Atmega8 برای کنترل LED با AVR - دیجی اسپارک

جمع بندی برنامه نویسی AVR

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

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک و دانشجوکیت  و digispark  و  daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۰۳۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

سپهر شیخ الاسلامی

عاشق الکترونیک و رباتیک هستم و برای عقب نماندن از دنیای در حال پیشرفت با سرعت نور تلاش می کنم.امیدوارم بتوانم به شما هم کمک کنم از آن عقب نمانید.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۱ دیدگاه

  • سلام من با اتمگا ۳۲ پروژه رو انجام بدم مشکلی نداره یا باید حتما اتمگا ۸ باشه میخواهم پروژه ای که گفتین برا ارسال رایگان رو انجام بدم.

    • با سلام
      نه هیچ مشکلی نداره
      چون فقط به یک پایه ی چشمک زن نیاز داریم من سعی کردم کوچکترین اتمگا رو انتخاب کنم که در هزینه هم صرفه جویی بشه ولی شما میتونید از هر اتمگایی استفاده کنید

    • سلام من همه چی رو طبق مدار و برنامه نویسی رو درست انجام دادم اما ال ای دی فقط روشن هست پنج شش بار هم چک کردم میشه راهنمایی کنید میکرو هم اتمگا هشته تغذیه میکرو هم از یو اس بی کامپیوتر میگیرم

      • سلام
        مشکل از کلاک ه موقع پروگرم کردی ایسی باید کلاک رو با کلاک تعریف شده تو برنامه یکسان کنید

    • سلام
      پروژه مورد تایید و درست است
      جهت دریافت بن خرید،موارد به مدیریت ارسال شدند

  • سلام اشتراک در این سایت چه فائیده داره غیر از پول گرفتن .هیچ اموزش بدرد بخوری نداره و نا قصه

    • با سلام
      اشتراک برای کاربرانی میباشد که تمایل به رشد و توسعه مهارت‌های فردی دارند. در حال حاضر نزدیک به ۲هزار آموزش کاربردی در سایت منتشر شده است. از این‌ها گذشته، این پست یکی از مطالب رایگان سایت میباشد.
      موفق باشید.

  • سلام
    من تو یه پروژه حلقه LedRGB رو دیدم که با آردوینو نانو راه اندازی شده بود ،
    آیا میشه با این مدل تراشه هم همون کارو کرد؟

    • تراشه آردوینو از خانواده ای وی آر هست. هر کاری که با آردوینو ممکن هست، با ای وی آر هم ممکن هست و ای وی آر امکانات بیشتری هم داره.

    • با سلام
      تنها کافییست که پورت های دیگری را نیز به عنوان خروجی تعریف کنید. برای مثال در دستور زیر ۴ پایه اول پورت C به عنوان خروجی تعیرف شده است.
      DDRC=0x0f;
      در ادامه داخل حلقه while بایستی دستوری مشابه دستور زیر قرار دهید.
      PORTC=0x0f;
      delay_ms(500);
      PORTC=0x00;
      delay_ms(500);

  • سلام باچه دستوری میشه بجای وقفه ای میلی ثانیه ای از وقفه ای دوساعته استفاده کرد ممنون

    • با سلام
      برای ایجاد وقفه ۲ ساعته میتوانید از تایمرکانتر شماره ۱ میکروکنترلر استفاده کنید. برای مثال میتوانید تایمر را روی ۱ ثانیه تنظیم کنید و شرطی با مقدار شمارش ۷۲۰۰ قرار دهید. پس از رسیدن مقدار شمارنده به این عدد عملیات مورد نظرتان انجام شود.

  • سلام وقت بخیر توی عمل میشه راهنمایی کنید تستش چجوریه چجوری باید منبع تغذیه بهش متصل کنیم؟