در این قسمت پروژه های avr به ربان بیسک و تو ضیحات قرار داه میشود
پروژه شمار 1:
شماره نده دو رقمی با 7سگمنت :
در این پروژه با استفاده ایسی 7447 ، میکرو مگا 8 ، 7سگمنت و... یک شمارنده دو رقمی ساخته شده است .
با اعمال شدن پالس کلید به میکرو یک واحد به رقم 7 سگمنت اضافه میشود .
شرح کاری ایسی 7447 :
ایا ای سی کد bcd موجود بر روی پایه های a,b,c,d, خود را به کد 7سگمنت تبدیل میکند ، برای راه اندازی این ایسی فقط نیاز به تغذه میباشد
برنامه و شرح ان :
کد:
$regfile = "M8DEF.DAT" : $crystal = 8000000
Config Portd.0 = Output : Config Portd.1 = Output : Config Portd.2 = Output
Config Portd.3 = Output : Config Portd.5 = Output : Config Portd.6 = Output
Dim B As Byte
Config Timer0 = Counter , Edge = Falling
Do
Reset Portd.6 : Set Portd.5
Portd = Counter0
If Counter0 > 9 Then : Counter0 = Counter0 / 10 : Incr B : End If
Reset Portd.5 : Set Portd.6
Portd = B
Loop
End
$regfile = "M8DEF.DAT" : $crystal = 8000000
در این خط میکرو و مقدار کریستال مرفی شده است ، میکرو ایسی atmega8 و مقدار کریستال 8 مگا هرتز است .
Config Portd.0 = Output : Config Portd.1 = Output : Config Portd.2 = Output
Config Portd.3 = Output : Config Portd.5 = Output : Config Portd.6 = Output
در این دو خط پایه های که برای کنترل 7 سگمنت و همچنین اعمال داده به 7447 به کار میروند به عنوان خروجی تعریف شده اند .
Dim B As Byte
در این خط یک متغیر از جنس بایت تعریف شده است ، متغیر ها مکان های از حافظه ی rom هستند که میتوانند در خود یک عدد به فرم دسیمال ، بانری و... را ذخیره کنند . برای جلو گیری از اشغال حافظه ، انواع متنوعی متغیر وجود دارد.
Config Timer0 = Counter , Edge = Falling
در این خط تایمر /کانتر صفر به عنوان کانتر پیکر بندی شده است ، با دستور Edge = Falling کانتر نصب به پالس های پایین روند (سطح یک به صفر ) حساس خواهد بود .
Do
شروع حلقه do -loop با دستور do اغاز میشود .هنگامی که از این حلقه استفاده شود ، cpu فقط دستورات بین do و loop را اجرا میکند .
Reset Portd.6 : Set Portd.5
در این خط پایه کنترل 7 سگمنت اول یک ( روشن ) و پایه کنترل 7 سگمنت دوم صفر(خاموش )میشود .
Portd = Counter0
با این دستور مقدار شمرده شده توسط کانتر در پورت d ریخته میشود . این مقدار توسط ایسی 7447 به کد 7سگمنت تبدیل میشود ، چون اولین 7 شگمنت روشن است ، پس مقدار روی اولین سگمنت نشان داده میشود .
If Counter0 > 9 Then : Counter0 = Counter0 / 10 : Incr B : End If
در این خط اگر مقدار شمرده شده از 9 بیشتر شود مقدار کانتر به 10 تقسیم میشود . چون کانتر نمیتواند مقدار اعشاری را در خود ذخیره کند ، بنابراین مقدار ان صفر میشود . در این حالت یک واحد به متغیر b افزوده میشود .
Reset Portd.5 : Set Portd.6
Portd = B
در این دوخط ، 7سگمنت اول خاموس و 7 سگمنت دوم روشن میشود ، و مقدار b به 7447 ارسال شده و بعد از تبدیل بر روی 7 سگمنت نمایش داده میشود .
Loop
End
دستور loop ، پایان حلقه ی do-loop میباشد ، هنگامی که cpu بع این خط میرسد ، به دستور do پرش میکند . دستور end پایان برنامه است .
دانلود برنامه و فایل شبیه سازی شده در پروتوس :
[attachment=142]