◄◄ آموزش پله به پله ی برنامه نویسی با میکروکنترلر AVR و شبیه سازی مدار
سلام دوستان
میخوام با تکیه بر اطلاعات خودم و اون چیزی که تا به حال یاد گرفتم ؛ در زمینه ی برنامه نویسی میکرو کنترلر AVR ؛ و در مرحله ی بعد شبیه سازی و مونتاژ مدار ، اطلاعاتی رو در اختیارتون قرار بدم .
تصمیم گرفتم آموزشم رو از پایه شروع کنم تا دوستانی که با میکرو کنترلر ها کاملا بیگانه هستند بتونند مفهوم و معنای کلی رو درک کنند ؛ و به امید خدا خودشون برنامه نویسی کنند و لذت کار با میکرو رو حس کنند .
این تاپیک به طور کل این موضوعات رو در بر خواهد گرفت :
- آموزش میکرو کنترلر AVR
- آموزش برنامه نویسی به زبان C ؛ و نرم افزار Codevision
- آموزش شبیه سازی مدارات به وسیله ی نرم افزار Proteus
در برنامه نویسی و شبیه سازی مدارات با میکروکنترلر AVR ؛ 2 نرم افزار اصلی به کمک ما میایند و به آنها نیاز داریم :
نرم افزار Codevision
که از آن برای برنامه نویسی میکرو و پروگرام کردن میکرو استفاده میشود
دانلود آخرین ورژن نرم افزار Codevision از لینک زیر :
کد:
http://forum.p30world.com/showpost.php?p=3900179&postcount=30
نرم افزار Proteus
که یک نرم افزار شبیه ساز است . از آن برای شبیه سازی مدار مورد نظر قبل از مونتاژ استفاده میشود .
دانلود آخرین ورژن نرم افزار Proteus از لینک زیر :
کد:
http://forum.p30world.com/showpost.php?p=3886963&postcount=24
" همچنین "
دانلود نرم افزار های مهندسی برق از لینک زیر
کد:
http://forum.p30world.com/showthread.php?t=319204
همینطور مد نظر داشته باشید که این تاپیک فقط جهت آموزش است . پروژه های عملی و آماده ی میکرو کنترلر AVR در تاپیک زیر قرار میگیرند :
کد:
http://forum.p30world.com/showthread.php?t=287631
سوالات و اشکالات خودتون رو هم میتونید در تاپیک اختصاصی AVR پیگیری کنید :
کد:
http://forum.p30world.com/showthread.php?t=33813
این آموزش هم صرفا اختصاص به سایت P30World خواهد داشت ! نکات گفتنی گفته شد . شروع به نوشتن آموزش میکنم که امیدوارم مورد توجه و استفاده قرار بگیره .
موفق باشید .
شروع برنامه نویسی به زبان C با Codevision
خوب وقتشه بریم سر کار اصلیمون ؛ برنامه نویسی میکرو ! واسه برنامه نویسی میکرو به زبان C از نرم افزار و کامپایلر Codevision استفاده میکنیم .
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
توضیحات اضافی رو به موقعش مینویسم . الان میتونم بیام شروع کنم دونه دونه منو های نرم افزار و کاربرد هاشو بنویسم ؛ اما ترجیح میدم در مواقع نیاز و در حین آموزش بیان بشن . الان میریم سر کار برنامه نویسی .
واسه شروع کدنویسی ، اول باید یک پروژه ی جدید ایجاد کنیم
مسیر زیر رو دنبال کنید :
File / New / Creat New File
و مانند شکل زیر ؛ Project را انتخاب کنید و OK کنید .
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در قسمت بعد از شما سوال میشه که آیا میالید از نرم افزار CodeWizard AVR استفاده کنید یا خیر ؟
شما گزینه ی No را انتخاب میکنید
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در مرحله ی بعد پنجره ی Create New Project ظاهر میشود .
شما در این مرحله پروژه را با نام دلخواه ذخیره میکنید . ( Save میکنید )
پنجره ی جدیدی باز شده است که مربوط به تنظیمات کامپایلر است ! ابتدا در قسمت C Compiler و Code Generation نوع Chip را برابر ATmega32 قرار داده ؛ و Clock را برابر فرکانس 4 مگا هرتز قرار دهید .
OK کنید .
تا اینجا Project رو ایجاد کردیم . حالا باید فایل اصلی برنامه رو ایجاد کنیم ( کد های برنامه درون اون قرار دارن ) . برای این کار باز هم از این طریق وارد میشویم :
File / New / Creat New File
اینبار گزینه ی Source را انتخاب میکنیم .
پنجره ی جدیدی ظاهر میشه ؛ نام فایل را به دلخواه تغییر بدید ؛ مثلا Main.C
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
-------------------------------------------------------------------------------------
تا اینجا تنظیمات و مقدمات اولیه رو برای کد نویسی انجام دادیم .همه چیز محیاست برای نوشتن برنامه .
ما میخوایم به ساده ترین شکل عمل کنیم و در هر مرحله به نوشتن کد های سنگین تر بپردازیم .
اول میخوایم یاد بگیریم یک LED رو خاموش و روشن کنیم . یا در اصطلاح LED چشمکزن درست کنیم .
خوب باید چکار کنیم ؟
واضحه ! ما باید به میکرو کنترلر برنامه ای بدیم که مثلا یک led رو هر یک ثانیه خاموش و روشن کنه . این زمان میتونه هرچه قدر باشه ؛ مثلا 1 میلی ثانیه یا 100 ثانیه . بستگی به خودمون داره .
صفحه ی برنامه آماده ی کد نویسی است. ما باید در ابتدا امر مشخص کنیم که از چه میکرویی میخواهیم استفاده کنیم . در اینجا ما از Atmega32 استفاده میکنیم . پس تاپیک میکنیم :
کد:
#include <atmega16.h>
با این دستور ما میگوییم که : آی سی مورد نظر ما Atmega32 است . include به معنای در بر گرفتن است . توجه کنید که باید آخر اسم میکرو ؛ h. بگذاریم . در واقع داریم فایل مربوط به آی سی را که در دیتا بیس نرم افزار موجوده رو به برنامه اظافه میکنیم .
در قسمت بعد باید با دستور delay آشنا بشیم .
ِdelay یعنی چی ؟ به خاطر بیارید در چند خط بالاتر گفتم میخوایم با تاخیری که خودمون مشخص میکنیم LED خاموش و روشن بشه . این تاخیر delay نام داره . چون میخوایم از دستور delay بهره ببریم ؛ پس باید در ابتدای برنامه قید کنیم که :
یعنی ؛ دستور delay رو هم در بر بگیر .
خوب . دستورات در یک فایل به نام main جا داشت ؛ اگه یادتون باشه . پس ما اول مینویسیم main ؛ و ادامه ی دستورات رو شروع به نوشتن میکنیم .
واسه شروع نوشتن کد ها ؛ باید تمامی کد ها درون دو عدد {} قرار داشته باشند . بدین صورت :
کد:
#include <atmega16.h>
#include <delay.h>
main()
}
دستورات و کد ها
{
خوب . الان ما میخواهیم پایه های ورودی و خروجی رو مشخص کنیم . یعنی اینکه به آی سی بفهمونیم که کدوم پایه ی تو باید ورودی باشه ؛ و کدومش خروجی ! میدونیم که ما 4 تا پورت داریم A,B,C,d ؛ در اینجا ما میخوایم از یکی از پورت ها فقط استفاده کنیم . پس واسه ی این منظور مثلا از پورت D استفاده میکنیم .
ّبه آی سی اینطور برنامه میدیم که :
یعنی اینکه پایه ی 0 از پورت D رو ورودی در نظر میگیریم . توجه کنید که در این قسمت از برنامه ؛ همیشه باید با حروف بزرگ نوشته شوند . در برنامه نویسی به زبان C ؛ 0 یعنی ورودی و 1 یعنی خروجی !
حالا که پایه ی ورودی ( همون پایه ای که میخوایم یک سر LED رو بهش متصل کنیم ) رو تعریف کردیم ؛ باید ترتیبی بدیم که یک حلقه ایجاد کنیم . یعنی چی ؟ ببینید ؛ اگه ما تعریف کنیم که led یک ثانیه خاموش باشه و یک ثانیه روشن ؛ خوب این عمل انجام میشه اما تکرار که نمیشه ! نه ؟ پس باید ترتیبی بدیم که همین طور 0 و 1 بشه .
پس باید دستورات رو درون حلقه ای قرار بدیم که همش تکرار بشه . پس از دستور
استفاده میکنیم .
یادمون باشه که دستور while هم یک جایی شروع میشه ؛ و یک جایی تموم . پس از این ها بازم استفاده میکنیم :
}
{
دستوراتی که قراره درون این حلقه جای بگیرند اینها هستند :
کد:
PORTD.0=1;
delay_ms(200);
PORTD.0=0;
delay_ms(200);
این دستور داره میگه که PORTD.0=1 ! یعنی چی ؟ یعنی اینکه پایه ی 0 پورت D رو مساوی صفر قرار بده . به چه مدت ؟ به مدت 200 میلی ثانیه ! دستور delay داره این کارو انجام میده .
و همین طور در قسمت بعدی داریم که PORTD.0=0 به مدت 200 میلی ثانیه .
خوب ؛ دستور ما برای خاموش و روشن کردن LED به شکل زیر در اومد :
کد:
#include <atmega16.h>
#include <delay.h>
main()
{
while (1)
{
DDRD.0=0
PORTD.0=1;
delay_ms(200);
PORTD.0=0;
delay_ms(200);
}
}
نکته ای رو که قابل ذکر میبینم بگم اینه که در برنامه نویسی ؛ آخر هر خط برنامه باید از سیمیکولون استفاده کنیم .
نترسید ؛ سیمیکولون اینه --->
; که اگه توجه کنید آخر خط ها میبینیدش .
حالا که نوشتن برنامه تموم شده ؛ باید این فایل رو به پروژه اضافه کنیم . برای این کار از منوی Project گزینه ی Configure رو انتخاب میکنیم . از قسمت File گزینه ی Add رو میزنیم . فایل main.c رو که فایل های برنامه در اون قرار دارن رو انتخاب میکنیم . حالا فایل برنامه به پروژه اضافه شده است .
شکل زیر :
کد:
http://royal.parsaspace.com/P30world/AVR%20Learning/C%20new%20project%205.JPG
---------------------------------------
حالا تنظیمات کامپایلر رو انجام میدیم .
از منوی Project گزینه ی Configure رو انتخاب کنید . از تب CCompiler نوع تراشه رو برابر ATmega32 و فرکانس clock رو 4 مگا هرتز قرار بدید .
حالا از منوی after build گزینه ی program the chip رو تیک بزنید . این کار واسه اینه که بعد از کامپایل مستقیما کد هارو به تراشه بفرستید .
خوب ؛ OK کنید .
حالا میریم سراغ کامپایل کردن برنامه ای که نوشتیم . از گزینه ی Projecy گزینه ی Compile یا Build رو انتخاب کنید . همچنین میتونید از ترکیب Shift + f9 هم استفاده کنید .
اگه برنامه بدون نقص بوده باشه ؛ و به درستی نوشته شده باشه پیغام زیر رو مشاهده میکنیم :
خوب خیالمون راحت شد که برنامه رو به درستی نوشتیم .
با زدن گزینه ی Program ؛ برنامه شروع به پروگرام کردن یا انتقال دادن برنامه ی ما به میکرو میکند .
البته برای این کار لازمه که پروگرامر هم داشته باشیم .
خوب کار برنامه نویسی تموم شد .
توی قسمت بعدی شروع به آموزش شبیه سازی مدار با استفاده از Proteus میکنیم . در اونجا به طور عملی خواهیم دید که چطور LED چشمک میزنه ;)
تا بعد . . .
شروع شبیه سازی با پروتئوس
با یاد و نام خدا !
سلام . خوب میخوایم درس امروز رو هم شروع کنیم به امید خدا . عنوان این پست هست :
آموزش شبیه سازی با Proteus !
پروتئوس اصلا چی هست ؟!
پروتئوس یک نرم افزار شبیه ساز مدارات الکترونیکی است . خوب ؛ شبیه ساز مدارات الکترونیکی یعنی چی اصلا ؟! یعنی یک محیط نرم افزاری است که در اون لیستی از قطعات و المان های الکترونیکی در اختیار ما قرار میگیره ؛ و ما میتونیم با اون ها یم مدار رو طراحی کنیم . همچنین میتونیم شکل موج نقاط مختلف مدار رو هم ببینیم + ولتاژ ها و جریان های نقاط مختلف مدار .
باز هم متوجه نشدید این نرم افزار چیه و به چه دردی میخوره ؟ خیله خوب ؛ بزارید وارد محیط کار بشیم کم کم یاد میگیرید ؛ خیلی آسونه :)
اولا که آخرین ورژن نرم افزار رو میتونید از لینک زیر دریافت کنید :
کد:
http://forum.p30world.com/showthread.php?t=319204&page=3
زمانی که نرم افزار ور نصب کردید ؛ برای اجرای نرم افزار مسیر زیر رو دنبال میکنیم :
Start / All Programs / Proteus Professional /ISIS Professional
این هم یک عکس از محیط کار پروتئوس :
در گوشه ی چپ تصویر این آیکون هارو مشاهده میکنید :
هر کدوم از این آیکون ها برای ترسیم مدار استفاده میشند .
خوب ؛ برای شروع ترسیم شماتیک یک مدار ؛ روی آیکون [
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
] کلیلک کنید ؛ و بعد این [
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
] آیکون رو بزنید !
با این کار لیست قطعات جلوی چشمان شما ظاهر خواهند شد .
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ما اول در مورد مدار یک LED چشمک زن صحبت کردیم ؛ برنامه اش رو نوشتیم ؛ حالا میخواهیم مدارش رو شبیه سازی کنیم .
نیاز به چه قطعاتی داریم ؟
خوب قاعدتا یک میکرو کنترلر نیاز داریم ؛ که گفتیم با ATmega32 کار میکنیم . پس از لیست کتابخونه اول یک Atmega32 انتخاب میکنیم .
دیگه چی احتیاج داریم ؟ یک LED میخواهیم ؛ پس یک LED هم انتخاب میکنیم . این تا اینجای کار . پس بریم سراغ پیدا کردن قطعه !
در پنجره ی لیست قطعات ؛ در قسمت KeyWords تایپ میکنیم : Atmega32
این نتایج پدیدار میشوند :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
روی اولین نتیجه ی جستجو 2 بار کلیک میکنیم .
حالا LED میخواهیم ؛ توی همون قسمت تایپ میکنیم LED-Green چون LED قرمز میخوایم استفاده کنیم ؛ همینطور میتونیم رنگ های دیگه رو هم داشته باشیم .
خوب ؛ حالا در سمت چپ ما این دو المان رو خواهیم داشت :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در لیست بالا 2 المان داریم . روی یکیشون که کلیک کنیم میتونیم انتخابش کنیم و روی صفحه ی برنامه بیاریمش ( Drag کنیم )
هردو المان رو روی صفحه ی اصلی میاریم .
یادتون هست در قسمت برنامه نویسی گفتیم که PORTD.0=1 ؟!
الان پس باید LED رو به پایه ی 0 پورت D وصل کنیم !
به این شکل :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
به سر آند LED یک مقاومت اهم پایین هم متصل میکنیم که ولتاژ مستقیما روی LED قرار نگیره ؛ همچنین سر کاتد رو هم زمین میکنیم . به شکل زیر :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
داشت یادم میرفت ! حالا که مدار رو کشیدیم ؛ باید فایل Hex برنامه ای رو که نوشتیم به میکرو اضافه کنیم . برای این کار 2 بار روی میکرو کلیک میکنیم ؛ در این حالت پنجره ی Edit Componet باز خواهد شد . از قسمت Program file فایل HEx رو انتخاب میکنیم و اوکی میزنیم .
خوب مدار آمادست ! با زدن کلید Play در پایین صفحه مدار روشن میشه ! میبینید که LED داره خاموش و روشن میشه یا در اصطلاح چشمک میزنه . آخ که چه زیباست :31:
خوب ؛ در درس های بعدی به آموزش یک سری پروژه های دیگه میپردازیم .
شاد باشید .