آی پی امداد
abtahi
آریا الکترونیک mehrinfo تکشو

آموزش میکروکنترلر AVR به زبان بیسیک(کاملا عملی)

Aliservice

مدیر بازنشسته
مدیر بازنشسته
2006-12-01
137
1,636
سلام
دوستان تو این تاپیک نحوه کار با میکرو کنترلر های AVR رو به صورت کاملا ساده و عملی آموزش میدم.
آموزش به زبان برنامه نویسی بیسیک خواهد بود که به نظر من ساده ترین زبان برنامه نویسه و با کمی دقت میشه به آسونی کار با این میکرو کنترلر ها رو یاد گرفت.
آموزش رو هم از مفاهیم اولیه و ابتدایی آغاز میشه و از بحث در مورد مطالبی که فقط جنبه آگاهی داره و زیاد عملی نیست پرهیز خواهد شد.
موفق باشید.
 

Aliservice

مدیر بازنشسته
مدیر بازنشسته
2006-12-01
137
1,636
سلام
دوستان واسه شروع اول به نرم افزار کامپایلر بیسکام نیاز داریم.
با استفاده از این برنامه دستورات رو وارد می کنیم و این نرم افزار دستورات ما رو کامپایل می کنه و اماده جهت پرگرم کردن روی ای سی میکنه و بعد فایل کامپایل شده رو بسته به پروگرمری که داریم با همین نرم افزار یا نرم افزار های دیگه باید روی ای سی پروگرم کنیم.
واسه دانلود نرم افزار بیسکام اینجا کلیک کنید.
موفق باشید
 

پیوست‌ها

Aliservice

مدیر بازنشسته
مدیر بازنشسته
2006-12-01
137
1,636
با سلام
خب دوستان حالا نوبت به ساخت پرگرمر میرسه
کامپایلر بیسکام بهترین هماهنگی با پرگرمر نوع stk 200,300 رو داره که نقشه اون رو اینجا قرار میدم(خودم این پروگرمر رو تست نکردم و از پروگرمر آماده استفاده میکنم)

vj74ppyui252lk7rl6n.png

کانکتور 25 پین به پرت پارالل کامپیوتر وصل میشه
ای سی 74hc244 بافره که از پورت کامپیوتر محافظت میکنه
پایه های ای سی میکرو هم به صورتی که نشان داده شده به بافر وصل میشه حالا ای سی اماده پروگرم کردنه
#$V686
 

Aliservice

مدیر بازنشسته
مدیر بازنشسته
2006-12-01
137
1,636
به نام خدا
با سلام
دوستان اولین بخش از آموزش میکرو رو شروع می کنیم.
دوستان میکرو های avr از سه گروه تشکیل شده:
1:tiny
2:s90
3:mega
تفاوت عمده این سه در امکانات هستش
از امکانات این میکرو ها می توان به تایمر/کانتر /مقایسه کننده/مبدل انالوگ به دیجیتال و... اشاره کرد.
در این آموزش از سری مگا استفاده می کنیم که امکاناتش از همه بیشتره.
از سری مگا از ای سی atmega16استفاده می کنیم که دارای 4 پورت ورودی و خروجی هستش که ما خدمون تعیین می کنیم که ورودی باشه یا خروجی.
این هم از ترتیب پایه های atmega16
خوب تا اینجا داشته باشید تا بریم سراغ بخش بعد
موفق باشید.

20kvcutxnm3d4pq4e9h0.jpg
 

Aliservice

مدیر بازنشسته
مدیر بازنشسته
2006-12-01
137
1,636
بخش دوم
خب میریم سراغ برنامه بیسکام
حالا از منوی file گذینه new رو انتخاب می کنیم و بعد در صفحه ای که باز میشه شروع به نوشتن دستورات می کنیم.
اولین کاری که باید بکنیم باید مشخص کنیم که از چه نوع ای سی می خواهیم استفاده کنیم.
واسه این کار از دستور regfile$ استفاده می کنیم.
پس چون ای سی مورد استفاده ما atmega16 هست اولین دستور به شکل زیر خواهد بود:
REGFILE = "m16def.dat"$
گام بعدی تعیین فرکانس کاری میکرو هستش با دستور crystal$ فرکانس کاری میکرو رو تعریف می کنیم.
crystal = 8000000$
پس تا حالا دستور دادیم که ای سی ما از چه نوعی باشه و فرکانس کاری او چقدر باشه.از این دو دستور در تمام برنامه ها استفاده خواهیم کرد.
 

Aliservice

مدیر بازنشسته
مدیر بازنشسته
2006-12-01
137
1,636
حالا نوبت به تعریف متغییر هاست.همونطور که از اسمش پیداس یعنی قابل تغییر هستش.
انواع متغییر ها عبارت اند از string / single / long / integer / word/ byte / bit
bit تشکیل شده از 0 و 1
byte هم بین 0 تا 255 مقدار دارد.
فعلا این دو متغییر برای کار ما کافیه
به وسیله دستور dim متغییر رو تعریف می کنیم.
هر متغییر می تونه یک اسم داشته باشه مثل a / b /Ali
با دستور as هم نوع متغییر رو مشخص می کنیم.
مثال:
dim a as byte
به این معنی که متغییری که اسم a هست از نوع byte هستش یعنی میتونه از 0 تا 255 باشه.
یک مثال کلی:
حرف $ در اول دو دستور اول قرار داره
regfile = "m16def.dat"$
cristal$ = 8000000
dim ali as byte
ali = 10
incr ali
print ali
end
دستور اول گفتیم که ای سی ما از نوع atmega16 هستش
دستور 2 فرکانس کاری میکرو رو تعیین کردیم.
دستور 3 گفتیم که متغییر ali از نوع بایت باشه
دستور 4 مقدار متغییر ali را 10 قرار دادیم.
با دستور 6 یک واحد به متغییر ali اضافه کردیم.مثلا اگه متغببر 10 باشه با این دستور میشه 11
با دستور 7 گفتیم که مقدار نهایی متغییر ali رو نمایش بده
و دستور اخر که پایان برنامه است.
بعد از اینکه این دستورات رو روی بیسکام نوشتین فقط دستورات (crystal /regfile/incr ) به رنگ آبی در می ان.
حالا از منو program گذینه compile رو انتخاب کنید.در صورتی که غلط املایی نداشته باشین مقدار فضای اشغال شده روی فلش رو به صورت درصد نشون میده ولی اگه اشتباه تایپی داشته باشین در زیر شماره سطری رو که اشتباه دارین نشون میده و بعد از اصلاح باز هم گذینه compile رو انتخاب کنید.
حالا برای اینکه نتیجه کارمون رو ببنیم کلید F2 رو فشار بدین یه پنجره باز میشه که اگه گذینه play رو فشار بدین برنامه شروع به اجرا میشه و شما می تونید در قسمت آبی رنگ عدد 11 رو مشاهده کنید.
تا اینجا اگه سوالی هست در خدمتم.
 

Aliservice

مدیر بازنشسته
مدیر بازنشسته
2006-12-01
137
1,636
سلام علی اقا ممنون
علی اقا چه موقع برای یک متغیر از بیت و یا بایت استفاده میکنیم؟
اگریک مثال برنی ممنون میشم

سلام
زکریا جان محدوده بیت بین 0 و1 هستش یعنی همون دیجیتال خودمون که معمولا تو شرط ها ازش استفاده می شه که به اونم میرسیم.
ولی بایت ار 0 تا 255 میتونه مقدار داشته باشه و اگه بخوای با اعدادی فراتر از بایت کار کنی از متغییر word باید استفاده بشه که محدوده اش از 0 تا 65535 هستش.
یکی از کاربرد های متغییر ها روی شمارنده هاس.مثلا یک کلید شستی به میکرو وصل کردیم می خواهیم بگیم وقتی این کلید 10 مرتبه پشت سر هم فشار داده بشه مثلا یک led روشن بشه که واسه این کار از متغییر بایت استفاده میشه.
توی بخش های بعدی بهتر متوجه متغییر ها میشید.فعلا اصل مطلب اینه که یاد بگیریم یه برنامه چطوری شروع میشه و به پایان میرسه.
 

Aliservice

مدیر بازنشسته
مدیر بازنشسته
2006-12-01
137
1,636
با سلام
شرمنده که بین آموزش ها وقفه افتاد
آموزش رو با یک مثال دیگه از متغییر ها ادامه میدم
regfile = m16def.dat
crystal = 8000000
dim a as byte
a = 110
do
a+2
print a
if a = 150 then go to iran tk
loop
irantk:
print a
end
دستور اول و دوم نوع ای سی و فرکانس رو مشخص کردیم
دستور 3 a رو یک متغییر از نوع بایت معرفی کردیم
دستور 4 مقدار متغییر رو 110 قرار دادیم
دستور 5 یک حلقه ایجاد کردیم در مورد حلقه ها به طور کامل بحث خواهیم کرد ولی بطور خلاصه کامپایلر وقتی داخل حلقه do می افته تا ما دستور ندادیم برنامه های داخل حلقه رو تا بی نهایت اجرا میکنه
دستور 6 به متغییر 2 واحد اضافه کردیم
دستور 7 مقدار a را نمایش میدیم که 112 میشه
دستور 8 شرط هستش حلقه متغییر a رو همیشه به اضافه 2 میکنه و تا 255 ادامه میده
وقتی دستور if رو گذاشتیم به میکرو دستور دادیم که وقتی مقدار a به 150 رسید به زیر برنامه irantk بره
یعنی دستور then go to irantk
با دستور loop هم حلقه رو می بندیم
بعد میریم زیر برنامه irantk رو تعریف کنیم که وقتی متغییر به 150 میرسه این زیر مجموعه اجرا میشه
بعد می گیم که مقدار نهایی متقییر رو نمایش بده و برنامه به پایان برسه
بعد از این برنامه با ای سی کار خواهیم کرد
موفق باشید
 
بالا