پروژه کرنومتر و تایمر معکوس دیجیتال با بسکام Bascom AVR

در این آموزش سعی بر این داریم که شما را با اصول راه اندازی کیبردهای ۳ در ۴ و یا ۴ در ۴ با استفاده از میکروکنترلرهای AVR و به زبان بسکام، آشنا کنیم. در قالب این آموزش پروژه ای نیز ارائه خواهد شد که مدار یک زمان سنج (کرنومتر) و همچنین زمان سنج معکوس خواهد بود. در این پروژه خواهید آموخت که چگونه تایمرهای میکروکنترلرها را برای ساخت یک ثانیه دقیق و یا یک صدم ثانیه، پیکره بندی کنید.

مقدمه

یک کرنومتر در واقع زمان سنجی است که از سه پارامتر اصلی تشکیل می شود: زمان سنج، کلید شروع/توقف و کلید ریست. زمان سنج آن نیز از صدم ثانیه، ثانیه، دقیقه و در بعضی موارد، ساعت تشکیل می یابد. زمان سنج معکوس نیز مانند کرنومتر است؛ تنها اینکه قسمت صدم ثانیه حذف شده و زمان آن از زیاد به کم متغیر می باشد. حال با توجه به این توضیحات و همچنین ارزیابی امکانات میکروکنترلر و کامپایلر، می توان ساخت پروژه را شروع کرد.

شرح پروژه

برای ساخت یک ثانیه دقیق توسط میکروکنترلر ATMEGA32 می توان از تایمر دو استفاده نمود. چون تایمر دوم ۸ بیتی است پس این تایمر از مقدار صفر الی ۲۵۵ می شمارد تا سر ریز شود. حال برای تنظیم Prescale این تایمر مقدار ۱۲۸ را انتخاب می کنیم. زیرا:

۱۲۸ × ۲۵۶ / ۳۲۷۶۸ = ۱

یعنی دقیقا مقدار یک ثانیه را برای ما می سازد. این مقدار در میکروکنترلر ممکن است کمی در بازه های زمانی تغییرات زیادی را پدیدار کند؛ برای این منظور از یک کریستال که به عنوان کریستال RTC معروف است و فرکانس آن ۳۲۷۶۸ کیلوهرتز می باشد، استفاده می کنیم. این کریستال به پایه های PC.6 و PC.7 میکروکنترلر (TOSC1 و TOSC2) متصل می گردد و می توان با استفاده از این کریستال در برنامه مشخص کنیم که همگام سازی بین میکروکنترلر و این نوع کریستال اعمال شود. بدین منظور عبارت Async = On را به پیکره بندی تایمر اضافه می کنیم. عبارت پیکره بندی در این حالت به صورت زیر خواهد بود:

Config Timer2 = Timer , Async = On , Prescale = 128

برای ساخت یک صدم ثانیه (سانتی ثانیه) از تایمر یک میکروکنترلر استفاده می کنیم. این تایمر یک تایمر ۱۶ بیتی است یعنی از صفر الی ۶۵۵۳۵ می شمارد. حال اگر مقدار Prescale را ۸ انتخاب کنیم، هر ۶۵۵۳۶ میکروثانیه سر ریز خواهد شد که برای ساختن یک صدم ثانیه یا ۱۰ میلی ثانیه، می توان با دادن مقدار اولیه ۵۵۵۳۶ به این تایمر و شروع کردن آن، یک صدم ثانیه را ایجاد کرد.

نمایش بر روی ۸ عدد سون سگمنت آند مشترک انجام می شود. تنظیمات نیز توسط یک کیبرد ۳ در ۴ اعمال می شود. یک عدد کلید کشویی به میکروکنترلر متصل می گردد تا در بوت میکروکنترلر حالت کرنومتر و یا زمان سنج معکوس را طبق آن تعریف کند.

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

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

Debounce PinX.Y , 1 OR 0 , Label_Name , GoSub OR GoTo

که در اینجا X و Y نشان گر یک پایه از میکروکنترلر است که می خواهیم عملیات بررسی را بر روی آن انجام دهیم. ۱ یا ۰ مربوط به شرط بررسی است که آیا می خواهیم مقدار ۱ یا مقدار ۰ را مورد بررسی دهیم. زمانی که شرط بر روی پایه موردنظر میکروکنترلر ایجاد شد، این دستور به قسمت Label_Name پرش می کند. عبارات GoSub یا GoTo نحوه پرش را تعیین می کند.

شماتیک مدار

تصاویری از عملکرد پروژه

مدار در حالت زمان سنج معکوس
مدار در حالت کرنومتر

بخش دانلود

بخش دانلودتوضیحات

شامل موارد زیر:

  • فایل شبیه سازی Proteus
  • سورس کد کامل برنامه به زبان بیسیک
  • کد هگز مخصوص پروگرام کردن میکروکنترلر
  • شماتیک مدار به صورت تصویر و فایل PDF

توجهات:

  • برای تهیه این پروژه آموزشی زحمت فراوانی کشیده شده است؛ لذا، کپی برداری ممنوع می باشد!
  • این پروژه جنبه تجاری ندارد!

پروژه کرنومتر و تایمر معکوس دیجیتال با بسکام Bascom AVR
کل امتیازات: ۱ | میانگین: ۴

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.

یازده + نه =

2 نظر
  1. mohammad_kha می گوید

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

    1. مدیر سایت می گوید

      سلام
      اکثر مدارات سایت از جمله این مدار، بر روی فیوزبیت ۸ مگاهرتز داخلی میکروکنترلر تنظیم می شوند. برای تنظیم این نوع فیوزبیت می توانید از تصویر زیر استفاده نمایید:
      8MHz - Internal Crystal ATMEGA32

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.

2 + 20 =