در این پست از سایت اِمیک, یک پروژه بسیار جالب و آموزشی به نام پروژه AVR چشمک زن LED به تعداد عدد وارد شده در کیپد قرار داده شده است. در این پروژه ما توسط یک کیپد می توانیم عددی بین 0 تا 9 را وارد کنیم و یک LED متصل به میکروکنترلر به مقدار عدد وارد شده چشمک می زند. این پروژه با استفاده از میکروکنترلر AVR انجام شده و در ادامه در مورد پروژه بیشتر توضیح خواهم داد. در زیر شماتیک این پروژه را مشاهده می کنید:
همانطور که مشاهده می کنید, ما در این پروژه از میکروکنترلر ATmega16 استفاده کرده ایم. از یک کیپد 3 در 4 نیز استفاده کرده ایم که این کیپد به پورت A میکروکنترلر متصل شده است. یک LED نیز از طریق مقاومت R1 به پایه 22 میکروکنترلر (پین 0 از پورت C) متصل شده است. مقاومت R1 برای محدود کردن جریان LED و جلوگیری از سوختن آن می باشد.
عملکرد پروژه به این صورت است که ما توسط کیپد یک عدد (بین 0 تا 9) را وارد می کنیم و LED متصل به پایه 22 میکرو به مقدار عدد وارد شده چشمک می زند. در ابتدا LED خاموش است و مثلا در صورت فشار دادن کلید 5 کیپد, LED به تعداد 5 بار چشمک می زند و دوباره خاموش می شود. در ادامه با فشار دادن دوباره یک کلید به همان تعداد چشمک می زند.
این پروژه قابلیت کم و زیاد کردن سرعت چشمک زدن LED را نیز دارد. توسط کلید ستاره * از کیپد می توانید سرعت چشمک زدن LED را افزایش دهید و همچنین توسط کلید # از کیپد می توانید سرعت چشمک زدن را کاهش دهید. توجه کنید که این دو کلید زمانی کار می کنند که LED خاموش است و در حال چشمک زدن نباشد.
توجه کنید که پایه های تغذیه میکروکنترلر (پایه 10 و 11) را که در شماتیک بالا نیست, فراموش نکنید که به تغذیه 5 ولت متصل کنید.
برنامه کدویژن:
در این پروژه فرکانس میکروکنترلر 1 مگاهرتز تنظیم شده است. در زیر برنامه نوشته شده به زبان C و کامپایلر کدویژن را مشاهده می کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
////////// WWW.EMIC.IR ////////// #include <mega16a.h> //ATmega16A فراخواني کتابخانه ميکروکنترلر// #include <delay.h> //delay فراخواني کتابخانه// int key_pad(void) //از خط 5 تا 24 يک تابع تعريف شده است. با فراخواني تابع روبرو در برنامه اصلي کي پد اسکن مي شود و عدد کليد فشار داده شده را بر مي گرداند// { PORTA.0=1;PORTA.1=1;PORTA.2=1;PORTA.3=0; if(!PINA.4) return 1; if(!PINA.5) return 2; if(!PINA.6) return 3; PORTA.0=1;PORTA.1=1;PORTA.2=0;PORTA.3=1; if(!PINA.4) return 4; if(!PINA.5) return 5; if(!PINA.6) return 6; PORTA.0=1;PORTA.1=0;PORTA.2=1;PORTA.3=1; if(!PINA.4) return 7; if(!PINA.5) return 8; if(!PINA.6) return 9; PORTA.0=0;PORTA.1=1;PORTA.2=1;PORTA.3=1; if(!PINA.4) return 10; if(!PINA.5) return 0; if(!PINA.6) return 11; return 12; } void main(void) { int Number, i=0, d=1000; //در روبرو تعدادي متغير براي استفاده در برنامه تعريف شده است// //به کيپد متصل مي شود A ورودي شده اند. پورت A خروجي و پين هاي 4 تا 7 از پورت A در زير پين هاي 0 تا 3 از پورت// DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (1<<DDA3) | (1<<DDA2) | (1<<DDA1) | (1<<DDA0); PORTA=(0<<PORTA7) | (1<<PORTA6) | (1<<PORTA5) | (1<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); //خروجي شده است LED ميکرو براي اتصال به C در زير پين 0 از پورت// DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (1<<DDC0); PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); while (1) { Number=key_pad(); //Number گرفتن عدد وارد شده از کيپد و ذخيره ان در متغير// if(Number==10) { d=d/1.5; delay_ms(500); } //در صورتي که کليد ستاره * از کيپد فشار داده شد و در واقع عدد ما برابر 10 بود طبق دستور روبرو سرعت چشمک زدن افزايش مي يابد// if(Number==11) { d=d*1.5; delay_ms(500); } //در صورتي که کليد مربع # از کيپد فشار داده شد و در واقع عدد ما برابر 11 بود طبق دستور روبرو سرعت چشمک زدن کاهش مي يابد// for(i=0;(i<Number)&(Number!=10)&(Number!=11)&(Number!=12);i++) //روبرو به تعداد عدد وارد شده در کيپد تکرار مي شود و دستورات درون ان اجرا مي شوند for حلقه// { PORTC.0=1; //ما به ان متصل است LED ميکرو که C يک کردن پين 0 از پورت// delay_ms(d); //ايجاد تاخير// PORTC.0=0; //ما به ان متصل است LED ميکرو که C صفر کردن پين 0 از پورت// delay_ms(d); //ايجاد تاخير// } } } |
توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می توانید در قسمت نظرات مطرح کنید. فایل های کدویژن و شبیه سازی پروتئوس را هم می تونید از انتهای مطلب دانلود کنید.
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…