طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
این پروژه قابلیت تشخیص نشتی گاز و کمی دود و افزایش دما را دارد. به این صورت که اگر نشتی رخ دهد با ارسال یک پیامک SMS برای شماره تعریف شده کاربر را مطلع می نماید. همچنین یک رله نیز فعال می شود که می تواند یه آژیر خطر را صدا درآورد.این پروژه بدون نیاز به دریافت نور می تواند بر اساس تاریخ، ساعت، عرض جغرافیایی و طول جغرافیایی هر استان زمان طول و غروب خورشید را محاسبه کرده و به طور دقیق در این بازه زمانی لامپ های روشنایی را فعال کند. همچنین دارای یک تایمر داخلی می باشد که قابلیت فعال و غیر فعال کردن آن وجود دارد. دستگاه کلا با 3 کلید قابل تنظیم و برنامه ریزی می باشد.این پروژه یک دماسنج ساده می باشد که توانایی اندازه گیری دما از منفی 40 تا مثبت 120 درجه سانتی گراد با دقت دو رقم اعشار را دارد.یک سیستم امنیتی که دارای یک کاربر اصلی می باشد و توسط این کاربر می توان کاربرهای متعددی با پسورد های مجزا تعریف نمود. می توان تا 100 کاربر و 100 پسورد مختلف را تعریف، و در قسمت ورود هر یک از اعضاء که نام کاربری و رمز عبور خود را بدرستی وارد کند یک رله به همراه LED روشن خواهد شد.بر اساس رنج حداقل و حداکثر تعریف شده توسط کاربر و با توجه به دمای محیط، سرعت موتور بین 10 تا 99 به صورت خودکار تنظیم می شود.
پروژه نشت یاب گاز و کنترل با SMS

MCP-35

پروژه نشت یاب گاز و کنترل با SMS
پروژه تایمر-ساعت نجومی (فتوسل بدون نور)

MCP-26

پروژه تایمر-ساعت نجومی (فتوسل بدون نور)
پروژه دماسنج ساده با avr

MCP-29

پروژه دماسنج ساده با avr
پروژه سیستم امنیتی با قابلیت تعریف کاربر و رمز عبور با avr

MCP-12

پروژه سیستم امنیتی با قابلیت تعریف کاربر و رمز عبور با avr
پروژه کنترل دور موتور با PWM برحسب دما با avr

MCP-18

پروژه کنترل دور موتور با PWM برحسب دما با avr

انواع حلقه های for و while قسمت 3

دستورات ایجاد حلقه

ایجاد حلقه به کمک for

حلقه یعنی چه؟ حلقه یعنی یک مسیر بسته ای که CPU بطور مداوم دستورات داخل آن را اجرا می کند! (البته به نوع حلقه و شرط حلقه هم بستگی داره که میگیم)
در اینجا ما ابتدا حلقه for رو میگیم و اصول کار و برنامه نویسی اون رو توضیح میدیم. مثال:

Int a;
For (a=0; a<19; a++){
PORTD=0x00;
Wait_ms(300);
PORTD=0xff;
Wait_ms(300);
}

از بخش سفارش طراحی هم اکنون درخواست خود را ثبت کنید
حل و تشریح کلیه تمرینات درس میکروکنترلر AVR
طراحی و ساخت مدارات دلخواه شما با میکروکنترلر AVR


کارکرد برنامه: در این برنامه یعنی دستورات داخل حلقه، ابتدا پورت D رو کلا خاموش میکنه (0) و 300 میلی ثانیه صبر میکنه و بعد پورت D رو کلا روشن میکنه (1) و بعد 300 میلی ثانیه صبر میکنه و همین طور این 4 تا دستور رو تکرار میکنه. حالا ما اومدیم و تو حلقه بهش گفتیم این مجموعه 4 تایی دستورات را فقط 19 بار اجرا کن که ابتدا یک متغیر تعریف می کنیم مثلا a و بعد طبق مثال بالا باید سه دستور در for () بنویسیم دقیقا به همین ترتیب، ابتدا مقدار اولیه حلقه رو مشخص می کنیم که در اینجا من صفر بهش دادم و بعد شرط حلقه رو می نویسیم که من گفتم تا زمانی دستورات داخل حلقه رو اجرا کن که a کوچیکتر از 19هست. متغیر a در اینجا نقش یک شمارنده رو داره و بعد بهش گفتم بعد از اجرای یک بار دستورات یک واحد به a اضافه کن و همین طور ادامه میده تا به 19 برسه و وقتی شرط برقرار شد از حلقه میاد بیرون. این حلقه یک حلقه بالا شمار هست. با گام 1 یعنی یک واحد یک واحد بالا میره.

نکته:

به جای a++ می توانستیم بنویسیم a=a+2 یا a+=2 یعنی 2 واحد 2 واحد برو بالا. (گام 2)
اگر می خواستیم حلقه پایین شمار باشد باید به این صورت عمل کنیم:

For (a=19; a>0; a--)

ایجاد حلقه به کمک while

حلقه while :

 ساختار حلقه به این صورت می باشد که باید درون () پرانتز یا صفر باشه یا یککه اگر صفر باشه حلقه اجرا نمیشه یعنی CPU از درون حلقه بیرون میاید و اگر یک باشه حلقه به یک حلقه بی نهایت تبدیل میشه و CPU دستورات داخل حلقه را تا بی نهایت تکرار می کنه. حالا می تونیم داخل () شراط یا یک متغیر قرار داهیم تا توسط این شرط یا متغیر، حالتهای صفر یا یک را ایجاد کنیم و در عمل حلقه را کنترل کنیم. که  به چند روش حلقه را به صورت زیر می نویسیم:

while (1); ایجاد یک حلقه بی نهایت بدون اجرای هیچ دستوری

while (1){
دستورات برای اجرای بی نهایت
}

unsigned char x=2,y=5;
while (y > x){
دستورات
}

در این برنامه تا زمانی دستورات داخل حلقه تکرار میشود که متغیر y بزرگتر از x باشد. و در غیر این صورت از حلقه بیرون میاد، هر بار CPU به انتهای حلقه رسید دوباره به ابتدای حلقه میره و شرط رو چک میکنه اگر شرط برقرار بود دستورات داخل حلقه دوباره اجرا میشه در غیر اینصورت از حلقه خارج میشه. به برنامه زیر توجه کنید:

unsigned char x=0;
while (x){
دستورات
}

چون متغیر x=0 می باشد پس CPU هیچ گاه وارد حلقه نمی شود و دستورات داخل حلقه هم اجرا نمیشه.

حلقه do … while :

 این حلقه برعکس حلقه بالایی که اول شرط چک می شود و بعد اجازه ورود به حلقه را می داد در اینجا ابتدا دستورات داخل حلقه حداقل برای یک بار اجرا می شوند و در انتهای حلقه شرط حلقه برسی می شود که اگر شرط برقرار بود اجازه ورود مجدد رو داره در غیر اینصورت اجازه ورود مجدد نداره و فقط همون بار اول که اجرار شد دیگه همون بود تا زمانی که این شرط برقرار بشه.

unsigned char x=2,y=5;
 do{
 دستورات
 } while (y > x);

 به مثال زیر توجه کنید. در این مثال تا وقتی که مقدار i کوچیکتر از 10 می باشد این حلقه تکرار میشه با هر بار اجرای حلقه یک واحد به متغیر i افزوده می شود تا به مقدار 10 برسد و الان دیگه شرط برقرار نیست و از حلقه خارج میشه.

 unsigned char i;
 do{
  i++;
 } while (i < 10);

یا در مثال زیر مقدار اولیه i برابر 5 می باشد و شرط حلقه متغیر i میاشد که با صفر شدن آن دیگر حلقه تکرار نخواهد شد و از آن خارج می شود. با هر بار اجرای حلقه یک واحد از متغیر i کم می شود تا در نهایت به صفر برسد.

 unsigned char i=5;
 do{
  i--;
 } while (i);

پایان قسمت سوم

  منبع: www.picpars.com

  لطفا مقالات، آموزش‌ها و پروژه های خود را به آدرس ایمیل ارتباطی ایمیل نمائید تا آن را با نام خودتان در سایت منتشر کنیم.

به این مطلب امتیاز دهید

برچسب ها:
تاریخ ارسال سه شنبه، 11 اسفند ماه، 1388    نویسندهنویسنده: مدیریت    نظرات 2 نظر    بازدید بازدید [ 31878 ]   پرینتنسخه چاپی
فایل پی دی اف فایل پی دی اف   ارسال به دوستان ارسال به دوستان