خانه / اموزش میکروکنترلر / اموزش برنامه نویسی AVR / LED چشمک زن با میکروکنترلر AVR

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

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

اهدف پروژه led چشمک زن :

  • اشنایی با پین های میکروکنترلر ATmega16
  • اشنایی با پروگرام کردن میکرو با نرم افزار AVR Studio
  • کتابخانه ها و نحوه استفاده از انها
  • اشنایی با برخی از دستورات در کدویژن
  • و …

توضیح : در این پروژه ساده, دو led از طریق دو مقاومت به پایه های PC0 و PC1 (پین های ۲۲ و ۲۳) میکرو وصل شده اند. در صورتی که با پین های مگا ۱۶ اشنا نیستید, حتما پست “اشنایی با پین های میکروکنترلر ATmega16/32” را مطالعه کنید. در ابتدا led متصل به پین PC0 روشن شده و پس از یک ثانیه این led خاموش, و led متصل به PC1 روشن می شود. پس از یک ثانیه led متصل به PC1 خاموش و led متصل به PC0 روشن می شود و این روند ادامه دارد… که به این پروژه ساده LED چشمک زن می گویند (البته اینجا دو ال ای دی استفاده شده) .
شماتیک به صورت زیر می باشد :

توجه : در شماتیک بالا بدلیل اینکه در برنامه پروتئوس پایه های تغذیه برای این میکرو وجود ندارد وصل نشده, ولی در عمل پایه های تغذیه میکرو(پایه ۱۰ و ۱۱) را به ۵ ولت وصل کنید

قبل از توضیح برنامه بهتره که با کتابخانه در کدویژن اشنا بشید:

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

به عنوان مثال یکی از پر استفاده ترین کتابخانه های کدویژن کتابخانه delay است که برای ایجاد تاخیر به مقدار مورد نظرمان استفاده می شود, معرفی این کتابخانه در ابتدای برنامه به صورت زیر است:

که پس معرفی این کتابخانه, می توانیم از توابع ان در برنامه خود استفاده کنیم به عنوان مثال یکی از توابع این کتابخانه به صورت زیر می باشد :

که این تابع از کتابخانه delay تاخیری به مدت ۱۰۰۰ میلی ثانیه یا معادل یک ثانیه ایجاد می کند که از این تابع در برنامه led چشمک زن استفاده شده است با تغییر مقدار عدد داخل پرانتز می توانیم مقدار تاخیر مورد نظر را ایجاد کنیم .

برنامه : 

در پست های قبل با محیط نرم افزار CodeVisionAVR اشنا شدید و نحوه ایجاد یک پروژه را یاد گرفتید و با قسمت های مختلف برنامه کدویژن اشنا شدید. در ادامه برنامه نوشته شده برای این پروژه خط به خط توضیح داده می شود :

ابتدا یک پروژه ایجاد کنید و میکرو را ATmega16 انتخاب کنید. فرکانس را روی یک مگاهرتز تنظیم کنید و در قسمت port پین های ۰ و ۱ از پورت C را خروجی تنظیم کنید. در برنامه زیر کدهای اضافی ایجاد شده و توضیحات حذف شده است (می تونید حذف نکنید من برای ساده تر شدن برنامه حذف کردم)

توجه :

  • تمام کدها بجز کدهای داخل حلقه while توسط خود کدویژن ایجاد شده است
  • در زبان c پس از هر دستور باید از علامت سیمی کالن (;) استفاده کرد, در صورت فراموشی کدویژن خطا (error) می گیرد
  • عباراتی که داخل   /*توضیحات*/   نوشته می شود, توضیحات برنامه هستند و تاثیری روی برنامه ندارند
  • توجه کنید که از هر میکرویی که استفاده می کنید در ابتدای برنامه باید کتابخانه ان را فراخوانی کنید
  • تابع DDRC برای تعیین خروجی یا ورودی بودن پین های پورت C استفاده می شود هر کدام از پین های ۰ تا ۷ در صورتی که صفر باشد به معنی ورودی و در صورت یک کردن به معنی خروجی بودن ان پین می باشد(برای بقیه پورت ها هم بجای C اخر تابع, پورت مورد نظر را می گذاریم)
  • تابع PORTC برای مشخص کردن این است که پین های پورت مورد نظر مقاومت بالا کش داشته باشند یا نه 

پروگرام کردن میکروکنترلر (ریختن برنامه روی میکرو) :

مرحله اخر این پروژه پروگرام کردن میکرو می باشد, توسط خود کدویژن هم می شود میکرو را پروگرام کرد ولی بهتره که پس از ایجاد فایل هگز توسط کدویژن این فایل را توسط برنامه دیگری به نام AVR Studio روی میکروکنترلر پروگرام کنید. AVR Studio یک کامپایلر بسیار حرفه ای برای برنامه نویسی و پروگرام کردن میکرو می باشد که ما فقط برای پروگرام کردن فایل هگز روی میکرو از ان استفاده می کنیم . در ادامه نحوه ریختن برنامه روی میکرو با این نرم افزار توضیح داده می شود .

۱- ابتدا این برنامه را تهیه و نصب کنید.

۲- پس از باز کردن برنامه با پنجره روبرو مواجه می شوید که روی Cancel کلیک کنید و بر روی قسمت مشخص شده در تصویر دوم کلیک کنید

۳- در پنجره باز شده نوع پروگرامر خود و برای انتخاب شماره ی COM در device manager کامپیوتر خود در قسمت Ports ببینید پروگرامر شما به کدام شماره ی COM متصل است و در نهایت روی Connect کلیک کنید

۴- پنجره زیر باز می شود, در قسمت Main نوع میکرو را انتخاب کنید

۵- در قسمت Program ابتدا با کلیک بر روی Erase Device حافظه فلش میکروکنترلر را پاک کنید. در بخش Flash فایل هگز را انتخاب کنید و بر روی Program کلیک کنید تا برنامه روی میکرو ریخته شود 

۶-  در قسمت Fuses فرکانس مورد نظر (برای این پروژه یک مگاهرتز) را از بخش SUT_CKSEL انتخاب کنید و درصورتی که JTAGEN تیک داشت بردارید و در نهایت بر روی Program کلیک کنید تا فیوز بیت های میکرو هم تنظیم شود 

اگر تمام مراحل را به درستی انجام داده اید میکرو به درستی پروگرام شده و می توانید ان را در مدار قرار دهید

کلیپ تست عملی :

دانلود فایل ها

پسورد فایل زیپ : www.emic.ir

نظر یادتون نره…

درباره ی عابد رازانی

فارغ التحصیل کارشناسی الکترونیک از دانشکده باهنر شیراز و علاقمند به برنامه نویسی و طراحی مدارات الکترونیکی, درحال اماده شدن برای ارشد یا شایدم خدمت (:

2 دیدگاه

  1. سلام.
    یه سوالی داشتم در مورد تاخیر.
    من چنتا ال ای دی دارم میی خوام که متفاوت از هم روشن بشن. ولی مشکل اینجاس که وقتی ال ای دی اول روشن می شه تا بر نامه برسه به روشن کردن ال ای دی ۴ تاخیرا باعث می شه که فواصل زمانی بهم بخوره.
    چاره چیه؟ (:unknw:)

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

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