آموزش میکروکنترلر AVRمیکروکنترلرهمه ی مطالب
آموزش میکروکنترلر AVR قسمت دهم (راه اندازی کلید با AVR)
راه اندازی کلید با AVR:
در این برنامه قصد داریم یا یک کلید و یک led مداری با میکرو طراحی کنیم که بازده شدن کلید led روشن و وقتی کلید رها شود led خاموش شود. برنامه به صورت سطر به سطر توضیح داده می شود.
- توسط یکی از پایه ها باید از زده شدن کلید با خبر شویم .
- باید دائم پایه چک شود.
- اگر کلید زده شد یکی از پایه ها یک شود.
برنامه برای کامپایلر codevision:
#include <mega32.h> void main(void){ DDRA.0=1; DDRB.0=0; while(1){ if(PINB.0==0){ PORTA.0=1; } PORTA.0=0; } }
توضیح سطر به سطر برنامه:
- تعریف کتابخانه مربوط به میکروکنترلر ATmega32
- تعریف تابع اصلی mian که در همه ی برنامه های زبان C ثابت است.
- ورودی کردن پین صفر از پورت A به منظور وصل کردن کلید
- خروجی کردن پین صفر از پورت B به منظور وصل کردن led
- حلقه ی (1) while که دستورات داخل این حلقه به صورت دائمی اجرا می شود . یا در اصطلاح حلقه ی بی نهایت
- دستور if برای چک کردن کلید اگر (کلید زده شده باشد شرط if درست بوده و دستور داخل if اجرا می شود)
- دستور داخل if که پین 0 از پورت A را یک می کند که موجب روشن شدن led میشود.
9. در صورت درست نبودن شرط if دستور سطر 9 اجرا شده و پین صفر از پورت A را صفر میکند و led خاموش می ماند.
در پایین همین برنامه برای کامپایلر IAR هم قرار داده می شود.
برای کامپایلر IAR:
#include <ioavr.h> void main( void ) { DDRA_Bit0=0; DDRB_Bit0=1; while(1){ if(PINB_Bit0==0){ PORTA_Bit0=1; } PORTA_Bit0=0; } }
طراحی یک شمارنده با میکروکنترلر AVR:
هدف از این مدار و برنامه طراحی یک شمارنده است. که با زده با هر بار زده شدن کلید 1 واحد به مقدار شمارش شده اضافه می شود.
نکاتی در مورد برنامه:
- متغییر k برای کنترل کلید به کار رفته است در صورتی که کلید فشار داده شود 1 واحد به مقدار شمارش شده اضافه می شود . اگر کلید را رها نکینم اتفاق خاصی نمی افتد و شمارنده یه صورت خودکار افزوده نمی شود برای عمل کردن دوباره ی کلید حتما باید کلید رها شده و دوباره فشرده شود.
- متغیر i برای نگه داری مقدار شمارش شده می باشد. که باید وقتی شمارنده به عدد 255 رسید دوباره به مقدار صفر برگردانده شود که این کار توسط دستور if انجام می شود.
- عدد شمارش شده به صورت باینری (دودویی) و توسط led روی 8 پین از پورت نمایش داده می شود.
برنامه شمارنده برای کدویژن:
#include <mega32.h> int k=0; int i=0; void main(void){ DDRA=0xff; DDRB.0=0; while(1){ if(PINB.0==0 && k==0){ i++; PORTA=i; k=1; } if(PINB.0==1){ k=0; } if(i==255){ i=0; }}}
برنامه برای کامپایلر IAR:
#include <ioavr.h> int k=0; int i=0; void main(void){ DDRA=0xff; DDRB_Bit0=0; while(1){ if(PINB_Bit0==0 && k==0){ i++; PORTA=i; k=1; } if(PINB_Bit0==1){ k=0; } if(i==255){ i=0; } } }
لینک دانلود برنامه ها :
در پایین برنامه به صورت پروزه های کامپایل شده + شماتیک برای راه اندازی مدار قرار داده می شود.
دانلود
واقعا سایت دستتون درد نکنه ..مخصوصا با نرم افزار IAR هم کد نوشتین.. 🙂
دست درد نکنه خیلی خوب توضیح دادی اگه بخابم با همون کلید دوباره مدار اول رو خاموش کنیم میتونی برنامشو برا بنویسی ممنون
سلام خیلی خوب بود
اگر بخواهیم مدار اولی با همان کلید خاموش بشه چکار کنیم
میتونی برنامشو برام بنویسی
خیلی ازت ممنونم
@alimohammadrezaei1191119122
سلام یه برنامه میخام زمانی که پوش باتون رو فشار میدیم و رها میکنیم ال ای دی روشن و روشن باقی بمونه زمانی که برای بار دوم فشار میدیم و رها میکنیم خاموش بشه
سلام
جای LED با کلید جابجاست
بله حق با شماست ممنون از اطلاع دادنتون من اصلاح کردم کد را