طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
این پروژه یک فرستنده گیرنده رادیویی با برد 100 تا 200 می باشد، که قابلیت کنترل 20 کانال مجزا به همراه کنترل سرعت موتور DC را دارد. از ماژول HMT و HMR و 20 عدد دیپ سوئیچ و درایور L298N برای موتور استفاده شده است.با استفاده از میکروکنترلر ATMEGA8 و کیبورد 3×4 می توان حروف و اعداد را تایپ کرد و درون یک متغییر ذخیره نمود و محتوای این متغییر بر روی نمایشگر LCD نمایش داده می شود. در صورتی که فضای LCD پر شود کاراکترها به سمت چپ شیفت داده می شوند. تمامی حروف و اعداد کوچک و بزرگ انگلیسی قابل تایپ می باشند.در این پروژه با استفاده از یک ساعت نجومی و محاسبات ریاضی، دو عدد سروو موتور یکی در جهت XY و دیگری در جهت Z پنل خورشیدی را به صورت اتوماتیک در موقیعتی قرار می دهید که بیشترین تابش خورشید را دریافت کند.یک مدار فاصله سنج می باشد که می توان در مواردی نیز به عنوان عمق سنج از آن استفاده نمود. حداقل فاصله قابل تشخیص 5cm و حداکثر 5m می باشد.این پروژه یک مدار واسط I/O می باشد که دارای 12 خروجی رله است. توسط نرم افزار کنترلی که قابل نصب بروی ویندوز های XP, Win7, Win8, Win10 می باشد می توان هر 12 رله را به صورت مجزا فعال و غیر فعال کرد.
پروژه کنترل 20 کاناله-به همراه کنترل سرعت موتور با avr

MCP-10

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

MCP-3

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

MCP-25

پروژه کنترلر پنل خورشیدی با استفاده از ساعت نجومی
پروژه فاصله سنج و عمق سنج آلتراسونیک با AVR

MCP-33

پروژه فاصله سنج و عمق سنج آلتراسونیک با AVR
پروژه کنترل رله توسط پورت USB با AVR و C شارپ 12 کاناله

MCP-39

پروژه کنترل رله توسط پورت USB با AVR و C شارپ 12 کاناله

دستورات break و switch و goto و continue و ... قسمت 4

در این قسمت به معرفی دستورات break و switch و goto و continue همراه با مثالهای آموزشی می پردازیم.

از این 4 دستور بالا دستور switch کاربرد زیادی دارند البته بقیه هم کاربرد دارند که در ادامه به بحث و گفتگو خواهیم پرداخت.

 

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


دستور break :

کلمه کلیدی break به معنی شکستن می باشد، که در زبان سی همان معنی شکستن حلقه یا خارج شدن از حلقه می باشد. وقتی برنامه به این دستور برسد از ساختار حلقه خارج می شود و دستورات بعدی را اجرا می کند. منظور دستورات داخل  {} می باشد از این دستور بیشتر در حلقه switch استفاده می شود که در ادامه توضیح کامل می دهیم. ابتدا یک مثال از break :

char i,b;
while (1) {
 i++;
 if (i==23) break;
}
b=i+6;

در این مثال دو متغییر i , b تعریف شده و بعد یک حلقه بی نهایت نوشتیم که در هر بار اجرای حلقه یک واحد به متغییر i اضافه می شود و بعد از آن یک دستور شرطی نوشتیم و گفتیم که اگر متغییر i برابر با 23 شد دستور break را اجرا کن که بعد از اجرا شدن آن برنامه از حلقه بیرون می آید و اولین دستور بعد از { را اجرا می کند که در اینجا متغییر i را با عدد 6 جمع می کند در متغییر b ذخیره می کند. که حاصل اون هم بابر با 29 می باشد.

دستور switch :

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

switch (متغییر) {
 case مقدار1 :
  { مجموعه دستورات1 };
 case مقدار2 :
  { مجموعه دستورات2 };
 case مقدار3 :
  { مجموعه دستورات3 };

default:
  { مجموعه دستورات };
}

برای روشن تر شدون موضوع به مثال زیر توجه کنید:

switch (i) {
 case 3:
  b=5; break;
 case 6:
  b=7; break;
 case 2:
  b=7; break;
default:
 b=55;
}

در این مثال ابتدا متغییر i انتخاب می شود و بعد 3 حالت یا کیس مختلف براش در نظر گرفتیم. نوشتیم که اگر توی متغییر i مقدار 3 هست بیا و عدد 6 را توی متغییر b قرار بده و از حلقه خارج شو یعنی حالت های بعدی رو دیگه امتحان نکن. خوب اگر در این مرحله i برابر با 3 نبود دستور break اجرا نخواهد شد و حالت بعدی امتحان می شود. و این کار همین طور ادامه دارد تا مقدار یکی از حالت ها با مقدار متغییر i برابر باشد، که در این صورت دستور break هم اجرار خواهد شد و دیگه حالت های بعدی امتحان نمی شوند و برنامه از حلقه خارج می شود. حال ممکن که هیج یک از حالت ها با مقدار متغییر برابر نباشد!! در این صورت دستور default اجرا می شود (به معنی مقدار پیش فرض) و متغییر b مقدار پیش فرض 55 را می گیرد. البته نوشتن دستور default اختیاری می باشد و شما می توانید ننویسید.

 نکته:

  1. در جلوی دستور case فقط می توانیم مقدار ثابت قرار دهیم یعنی نمی توانیم یک متغییر قرار دهیم.
  2. اگر در یکی از حالت ها یا همون case دستور break را قرار ندهیم با مقدار حالت بعدی OR می شود.

دستور goto :

از این دستور برای رفتن به یا به عبارتی پرش به یک لیبل یا برچسب می باشد. فرم کلی آن به صورت زیر می باشد:

goto  نام برچسب ;
نام برچسب:

مثال:

while (1) {
 i++;
  if (i==56) goto picpars;
}
picpars:
دستورات;

 ابتدا تشکیل یک حلقه بی نهایت و یعد هم افزایش یک واحدی به متغییر i و بعد تست یک شرط که اگر متغییر i برابر با 56 باشد از حلقه خارج می شود و به لیبل picpars پرش می کند و دستورات بعد از آن اجرا می شود.

 دستور continue :

این دستور بر خلاف دستور break از حلقه خارج نمی شود بلکه به ابتدای حلقه می رود. یعنی به ابتدای } می رود و مجددا دستورات داخل حلقه رو اجرا میکنه. به مثال زیر برای روشن تر شدن موضوع توجه کنید:

while (1) {
 i++;
  if (i==9) continue;
 i=i+2;
}

در این مثال ما یک حلقه بی نهایت تشکیل دادیم که در آن ابتدا افزایش یک واحدی به متغییر i اجرا می شود و بعد شرطی تست می شود که اگر محتوای متغییر i برابر با 9 بود دستور بعدی یعنی اضافه کردن عدد 2 به متغییر i اجرا نمی شود. دستور i=i+2 در حلقه همیشه اجرا می شود به جزء یک بار اون هم اگر i برابر با 9 بود این اتفاق می افتد.

توضیحات این دستورات به پایان رسید منتظر پست های بعدی باشید.

  منبع: www.picpars.com

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

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

برچسب ها:
تاریخ ارسال يكشنبه، 8 فروردين ماه، 1389    نویسندهنویسنده: مدیریت    نظرات 17 نظر    بازدید بازدید [ 58627 ]   پرینتنسخه چاپی
فایل پی دی اف فایل پی دی اف   ارسال به دوستان ارسال به دوستان   

پروژه خازن سنج دو حالته از 1nf تا 2000uf
کد پروژه: MCP-22
عنوان: پروژه خازن سنج دو حالته از 1nf تا 2000uf
میکروکنترلر: AVR ==> زبان سی C (کدویژن)
قیمت: به جزئیات پروژه مراجعه نمایید
جزئیات سفارش خرید
اندازه گیری ظرفیت خازن از 1nf تا 2000uf - دارای دو حالت علمی اندازه گیری - دارای کالیبره سازی خودکار - نمایش اتوماتیک رنج خازن بر روی نمایشگر
پروژه کنترل دور موتور با PWM برحسب دما با avr
کد پروژه: MCP-18
عنوان: پروژه کنترل دور موتور با PWM برحسب دما با avr
میکروکنترلر: AVR ==> زبان سی C (کدویژن)
قیمت: به جزئیات پروژه مراجعه نمایید
جزئیات سفارش خرید
بر اساس رنج حداقل و حداکثر تعریف شده توسط کاربر و با توجه به دمای محیط، سرعت موتور بین 10 تا 99 به صورت خودکار تنظیم می شود.

مرتبط باموضوع :          مطالب بیشتر در این موضوع

 پروژه آموزشی تابلون روان 8.8 به زبان سی همراه با سورس C  [ پنجشنبه، 29 تير ماه، 1391 ] 21468 مشاهده
 اندازه گیری دما با استفاده از سنسور دیجیتال DS18B20 به زبان C  [ شنبه، 30 بهمن ماه، 1389 ] 39142 مشاهده
 کار با تایمر کانتر صفر AVR در حالت PWM سریع به زبان سی کدویژن CodeVision  [ جمعه، 8 بهمن ماه، 1389 ] 30223 مشاهده
 اسکن کیبورد 3×4 به زبان سی AVR و به صورت فایل کتابخانه‌ای برای کدویژن  [ سه شنبه، 15 آذر ماه، 1390 ] 42608 مشاهده
 توابع در زبان سی C قسمت 5  [ دوشنبه، 30 فروردين ماه، 1389 ] 35306 مشاهده
نام شما:
ایمیل شما:
در مورخه : سه شنبه، 24 فروردين ماه، 1389
آموزش تون خوب بود با تشکر
ارسال جوابیه

نام شما:
ایمیل شما:
در مورخه : شنبه، 30 بهمن ماه، 1389توسط
(مشخصات کاربر acmohsen | ارسال پیغام شخصی)
به نام خدا با عرض سلام می تونید من را برای چگونگی کار با آی سی ds1307 با استفاده از atmega و به زبان سی راهنمایی کنید؟
ارسال جوابیه

نام شما:
ایمیل شما:
در مورخه : جمعه، 6 اسفند ماه، 1389
باسلام : باتشکر فراوان از نوع اموزشتون اگه لطف کنین در مورد دستورات رشته ها و ارسال و دریافت انها مثل جند کلمه ویا چند کلمه به صورت سریال همراه با فایل پروتوس توضیح بدین ممنون میشم .
ارسال جوابیه

نام شما:
ایمیل شما:
در مورخه : جمعه، 6 اسفند ماه، 1389توسط
(مشخصات کاربر AHMADO | ارسال پیغام شخصی)
باسلام : باتشکر فراوان از نوع اموزشتون اگه لطف کنین در مورد دستورات رشته ها و ارسال و دریافت انها مثل جند کلمه ویا چند کلمه به صورت سریال همراه با فایل پروتوس توضیح بدین ممنون میشم .
ارسال جوابیه

نام شما: meiisam
ایمیل شما: meisam_ir@yahoo.com
در مورخه : دوشنبه، 21 آذر ماه، 1390

salam

kheili khob bod.

movafagh bashid.

ارسال جوابیه

نام شما: مسعود
ایمیل شما: m_dehghan_fakhrodin@yahoo.com
در مورخه : دوشنبه، 10 تير ماه، 1392

داداش شماها خیلی مردین که وقت میزارین و رایگان آموزش میدین

دمتون گرم

ارسال جوابیه

نام شما: مسعود
ایمیل شما: m_dehghan_fakhrodin@yahoo.com
در مورخه : چهارشنبه، 12 تير ماه، 1392

آقا سلام، خدا قوت.

داداش این دستور goto رو دقیقا باید کجا گذاشت؟

بیرون حلقه while یا توش؟

من هرجا میذارم برنامه ارور نمیده اما جوابهای عجیب غریب میده!!!!

جوابیه ها

نام شما: سید محسن قاسمیان
ایمیل شما:
در مورخه : چهارشنبه، 12 تير ماه، 1392توسط
(مشخصات کاربر SMGH-admin | ارسال پیغام شخصی)

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

ارسال جوابیه

ارسال جوابیه

نام شما: mojtaba
ایمیل شما: mojtabasasaedi2yahoo.com
در مورخه : سه شنبه، 26 آذر ماه، 1392

آموزش بسیار خوبی بود میشه تابع را هم آموزش بدین حتی مختصر با تشکر فراوان

ارسال جوابیه

نام شما: omid
ایمیل شما:
در مورخه : سه شنبه، 27 اسفند ماه، 1392

سلامی به گرمی کویر...

ممنون، خیلی خوب بود.

ارسال جوابیه

نام شما: شاهين
ایمیل شما: respinamahmudi@yahoo.com
در مورخه : شنبه، 13 ارديبهشت ماه، 1393

عالي بود . وري ور ي گود. اينم يه نوع ايثاره كه شما انجام ميديد.

ارسال جوابیه

نام شما: سعیده
ایمیل شما:
در مورخه : شنبه، 20 ارديبهشت ماه، 1393

سلام. من می خواهم در c++ برنامه ای بنویسم که در صورتی که  مجموع دو متغیر برابر 100 شد از برنامه خارج بشه. می شه راهنماییم کنید!       کمک

جوابیه ها

نام شما: admin
ایمیل شما:
در مورخه : شنبه، 20 ارديبهشت ماه، 1393توسط
(مشخصات کاربر SMGH-admin | ارسال پیغام شخصی)
int a,b;
if((a+b)>100) break;
ارسال جوابیه

ارسال جوابیه

نام شما: mmohadese
ایمیل شما: arabi.mohadese@yahoo.com
در مورخه : دوشنبه، 12 آبان ماه، 1393توسط
(مشخصات کاربر mmohadese | ارسال پیغام شخصی)

salam bebakhshid mann yebarname be zabane c neveshtam mitonam inja bezaram eshkalesho behem begid

ارسال جوابیه

نام شما: سامان
ایمیل شما: hadad.saman@gmail.com
در مورخه : يكشنبه، 14 دي ماه، 1393
دمتون گرم خیلی عالی توضیح دادین مطلب اموزشی حرف نداشت با توضیحاتش
ارسال جوابیه

نام شما: arash
ایمیل شما:
در مورخه : دوشنبه، 22 دي ماه، 1393

خیلی ممنون از توضیحات مفیدتون

ارسال جوابیه

 
نام شما: [ کاربر جدید ]

نام شما (ضروری): 
ایمیل شما : 
نظر:
کد امنیتی
کد امنیتی

  [ بازگشت ]