پروژه و تمرین ها تا قسمت 4

تا اینجا شما با نحوه ایجاد پروژه و نحوه کار با پورت های AVR بصورت ورودی و خروجی رو یاد گرفتید در این مطلب برای آشنایی و فرار گیری بهتر چند پروژه ساده رو تمرین می کنیم. در صورتی که 3 قسمت آموزش های قبلی رو نخوانده اید اینجا کلیک کنید.

پروژه اول یک شمارش گر ساده

در این پروژه قصد داریم با یک کلید و 8 عدد دیود اعداد یک الی 8 را روی دیود ها نشان دهیم .

sh

در کد بالا اول فایل هدر میکرو و فایل تاخیر را به پروژه اضافه کردیم

در خط 4 تابع اصلی برنامه شروع شده و متغییر i را از نوع int تعریف میکنیم

سپس پایه های ورودی و خروجی را تعریف کرده و حلقه بینهایت while را از خط 14 شروع میکنیم در داخل حلقه نیز بطور مداوم پایه C.0 را از نظر صفر بودن بررسی میکنیم اگر پایه صفر بود دستورات داخل شرط اجرا خواهد شد

دستورات داخل شرط نیز شامل اضافه شدن یک واحد به متغییر i و یک دستور کنترلی switch برای بررسی مقدار i و اجرای دستور مربوط به آن

یک شرط بررسی مقدار i نیز اضافه شده تا اگر مقدار i بیشتر از 8 باشد آن را صفر کند

دستور تاخیر به مدت 250 میلی ثانیه نیز برای این به برنامه اضافه شده است که چون سرعت میکرو خیلی بالاست مشکلی در نمایش عدد به وجود نیایید شما می توانید این عدد یا کم یا زیاد کنید تا ببینید چه اتفاقی رخ میدهد.

 دانلود کد سی و پروتئوس این پروژه (شمارنده ی ساده) (لینک کمکی)

تمرین : به برنامه فوق یک کلید برای کم کردن مقدار i و نمایش آن به برنامه اضافه کنید.

پروژه 2: راه اندازی سون سگمنت

در پروژه قبل یک شمارنده درست کردیم که دیود نوری متناسب با مقدار i را روشن میکرد در این پروژه قصد داریم همان پروژه را انجام دهیم با فرق این که مقدار را به صورت عددی بر روی نمایشگر سون سگمنت ببینیم.سون سگمنت همون طور که از نامش پیداست قطعه ای است که از 7 عدد دیود نوری تشکیل شده که یک پایه از این دیود ها به صورت مشترک به هم وصل شده اگه طرف کاتد یا منفی دیود ها به هم وصل شده باشه سون سگمنت کاتد مشترک نامیده میشه و اگه طرف آند یا مثبت دیود ها به هم وصل شده باشه سون سگمنت آند مشترک گفته میشه در ادامه نحوه راه اندازی رو با هم انجام میدیم

راه اندازی سون سگمنت
راه اندازی سون سگمنت

در شماتیک بالا از یک سون سگمنت کاتد مشترک استفاده شده که پایه مشترک به خط منفی یا زمین وصل شده و دیگر پایه های سون سگمنت به پورت A وصل شده .

سون سگمنت
سون سگمنت

همان طور که در شکل بالا مشاهده می کنید هر دیود سون سگمنت را با یک حرف مشخص کردیم و به ترتیب حروف پایه متناظر با آن را به میکرو وصل کردیم یعنی پایه دیود A را به پایه A.0  و پایه دیود B را به پایه A.1 میکرو …… و در نهایت پایه دیود G را به پایه A.6 وصل کردیم.

حال می خواهیم عدد 8 را در سون سگمنت نمایش دهیم برای این کار باید تمام پایه های 0 تا 6 پورت A را روشن کنیم نتیجه :
8و همین طور برای نمایش عدد 3 باید دیود های A,B,C,D,G را روشن و بقیه را خاموش کنیم

G

F

E

D

C

B

A

پایه سون سگمنت

 0
A.6

0

0

1

1

 1

1
A.0

پورت A میکرو

پس پورت A را برابر مقدار زیر قرار می دهیم:


نتیجه:
3حال برنامه پروژه یک را کمی تغییر می دهیم تا بتوانیم اعداد را نشان دهیم همچنین کلیدی برای کم کردن عدد اضافه شده است:

دانلود پروژه سون سگمنت و فایل پروتئوس حجم کمتر از یک مگا بایت   (لینک کمکی )

 

نکته : سون سگمنت های موجود در بازار معمولا دارای هشت عدد دیود می باشد که هفت تای آن برای نمایش اعداد و یکی برای نمایش نقطه می باشد.

توجه در دو پروژه بالا چون در پروتئوس شبیه سازی شده از مقاومت بین دیود و میکرو استفاده نشده و  چون خروجی میکرو 5 ولت بوده و دیود ها معمولا تا 3 ولت را می توانند تحمل کند باید از مقاومت 330 اهم یا 470 اهم بین میکرو و هر دیود استفاده شود تا به دیود آسیب نرسد.

 

19 دیدگاه در “پروژه و تمرین ها تا قسمت 4

  1. سلام
    بسیار بسیار عالی هستش
    فقط خدا کنه که این روند ادامه دتشته باشه و مثالهای بیشتری بهمراه توضیحات قرار بدید.
    سپاسی بیکران
    بدرود.

  2. با سلام و تشکر از سایت زیبا و مطالب شما می خواستم بابت اینکه مطالبتون رو اینقدر با دقت و کامل قرار میدین از شما تشکر کنم.در ضمن طراحی و فونت و رنگهای استفاده شده در سایت شما خیلی خوبه. یک سوال هم داشتم می خواستم درباره ی پروتکل I2Cو برقراری ارتباط با ماژولIMU هم مطلب بذارین.با تشکر.

    1. سلام ممنون
      در رابطه با پروتکل I2c توضیح داده خواهد شد ولی در رابطه با ماژول من به شخصه با این ماژول کار نکرده ام اما در صورت بدست آوردن اطلاعات از این ماژول حتما در سایت قرار میدم.

  3. آقا ی سوال == چه معنی میده ؟
    میشه خط 19 تا 26 توضح بدین من خوب متوجه نمیشم
    ممنون از زحماتتون اگه ادامه بدین آموزش ها رو خیلی ممنون میشیم.

    1. اگه منظورتون از خط 19 اینه
      if(PINC.0==0 || PINC.1==0 )
      این شرط بررسی می کنه که اگر پین c.0 یا پین c.1 به خط منفی یا همون مقدار منطقی صفر ولت وصل باشه درسته و دستورات داخلش اجرا بشه یا به طور واضح تر اگه یکی از دو پایه مورد نظر به خط زمین وصل بشه شرط درسته و دستورات داخلش اجرا میشه

      علامت == هم برای بررسی مساوی بودن به کار میره ، برخلاف = که مقدار مورد نظر رو در متغییر قرار میده
      اگه بخواهیم چک کنیم که یک متغییر با مقداری برابره داخل شرط از == استفاده می کنیم مثلا
      if(i==5)
      یا
      if(PINA.0==1)

  4. سلام

    بدون هیچ مقدمه ای ازتون نهایت تشکر دارم منو به خواستم در مورد سون سگمنت ها رسوندید .واقعا عالی بود

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

  6. سلام اگه بخوایم دو تا سون سگمنت بهم اتصال بدیم و شمارشگر دو رقمی بسازیم چی؟ کدهاش به چه صورت میشه
    با تشکر ?

  7. سلام. ممنون از مطالب بسبار خوبتون. اگر ممکنه لطف کنید در مورد نمایش متغیر های چند رقمی روی ۷segment هم توضیح دهید. مثلا نمایش دما روی ۷segment

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *