طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
با استفاده از میکروکنترلر ATMEGA8 و کیبورد 3×4 می توان حروف و اعداد را تایپ کرد و درون یک متغییر ذخیره نمود و محتوای این متغییر بر روی نمایشگر LCD نمایش داده می شود. در صورتی که فضای LCD پر شود کاراکترها به سمت چپ شیفت داده می شوند. تمامی حروف و اعداد کوچک و بزرگ انگلیسی قابل تایپ می باشند.با استفاده از میکروکنترلر Atmega8‌، سنسور دیجیتال دما DS18B20 و LCD‌ متنی شما به راحتی می توانید کولر خانه تان را توسط کنترل تلویزیون و کلید های تعبیه شده، در مد های مختلفی برنامه ریزی کنید، از ویژگی آن می توان به کاهش مصرف انرژی در کولرها آبی اشاره نمود.اندازه گیری ظرفیت خازن از 1nf تا 2000uf - دارای دو حالت علمی اندازه گیری - دارای کالیبره سازی خودکار - نمایش اتوماتیک رنج خازن بر روی نمایشگراین پروژه یک ساعت آنالوگ، تاریخ شمسی و روزه هفته به زبان فارسی به همراه ساعت دیجیتال می باشد. قابلیت تنظیم ساعت و تاریخ توسط سه عدد میکروسوئچاین پروژه یک فرستنده گیرنده رادیویی با برد 100 تا 200 می باشد، که قابلیت کنترل 20 کانال مجزا به همراه کنترل سرعت موتور DC را دارد. از ماژول HMT و HMR و 20 عدد دیپ سوئیچ و درایور L298N برای موتور استفاده شده است.
پروژه تایپ حروف و اعداد با کیبورد 3.4 به زبان سی با avr

MCP-3

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

MCP-4

پروژه کنترل اتوماتیک کولرهای آبی با ریموت کنترل و avr
پروژه خازن سنج دو حالته از 1nf تا 2000uf

MCP-22

پروژه خازن سنج دو حالته از 1nf تا 2000uf
ساعت آنالوگ با AVR و lcd گرافیکی به زبان c

MCP-36

ساعت آنالوگ با AVR و lcd گرافیکی به زبان c
پروژه کنترل 20 کاناله-به همراه کنترل سرعت موتور با avr

MCP-10

پروژه کنترل 20 کاناله-به همراه کنترل سرعت موتور با avr

دستورات 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    نویسندهنویسنده: مدیریت    نظرات 16 نظر    بازدید بازدید [ 57593 ]   پرینتنسخه چاپی
فایل پی دی اف فایل پی دی اف   ارسال به دوستان ارسال به دوستان   

پروژه خازن سنج دو حالته از 1nf تا 2000uf
کد پروژه: MCP-22
عنوان: پروژه خازن سنج دو حالته از 1nf تا 2000uf
میکروکنترلر: AVR ==> زبان سی C (کدویژن)
قیمت: به جزئیات پروژه مراجعه نمایید
جزئیات سفارش خرید
اندازه گیری ظرفیت خازن از 1nf تا 2000uf - دارای دو حالت علمی اندازه گیری - دارای کالیبره سازی خودکار - نمایش اتوماتیک رنج خازن بر روی نمایشگر
پروژه ساعت دیواری دیجیتال به همراه تاریخ شمسی و دما با avr
کد پروژه: MCP-13
عنوان: پروژه ساعت دیواری دیجیتال به همراه تاریخ شمسی و دما با avr
میکروکنترلر: AVR ==> زبان سی C (کدویژن)
قیمت: به جزئیات پروژه مراجعه نمایید
جزئیات سفارش خرید
ساعت دیواری دیجتال با قابلیت نمایش ساعت و دقیقه، دمای اتاق، تاریخ شمسی، روز هفته، زدن تک بوق وقتی که زمان یک ساعت جلو می رود، تنظیم ساعت و دما تنها با 2 کلید. ابعاد ساعت 33*27 سانتی متر می باشد.

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

 اتصال کیبورد 4*4 به میکروکنترلر AVR و نمایش روی سون سگمنت  [ سه شنبه، 19 ارديبهشت ماه، 1391 ] 35457 مشاهده
 اندازه گیری دما با استفاده از سنسور دیجیتال DS18B20 به زبان C  [ شنبه، 30 بهمن ماه، 1389 ] 38805 مشاهده
 پروژه آموزشی تابلون روان 8.8 به زبان سی همراه با سورس C  [ پنجشنبه، 29 تير ماه، 1391 ] 21254 مشاهده
 اندازه گیری ولتاژ با مبدل آنالوگ به دیجیتال ADC به زبان سی  [ شنبه، 6 خرداد ماه، 1391 ] 28059 مشاهده
 کار با LCD کاراکتری یا متنی به زبان C  [ پنجشنبه، 16 ارديبهشت ماه، 1389 ] 84115 مشاهده
نام شما:
ایمیل شما:
در مورخه : سه شنبه، 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

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

ارسال جوابیه

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

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

  [ بازگشت ]