مقدمه
پیادهسازی یک ساعت یا تقویم که از دقت بسیار بالایی برخوردار بوده و علاوه بر آن بتواند تاریخهای مختلفی را در خود شامل شود، کار سادهای نخواهد بود. در این پروژه، تمامی این امکانات مهیا شدهاست. ساختار این ساعت به گونهای است که طبق ساختار زمانسنجی استفادهشده در خیلی از رایانهها و سیستمعاملها میباشد. این به این معناست که روند زمانسنجی و شمارش کاملا اصولی، بر پایه استاندارد بوده و پایداری و دقت آن بالاست. علاوه بر این، تبدیل تاریخها به یکدیگر طبق برنامهها و الگوریتمهای اصولی بوده و هیچ نقصی در آن وجود نداشته و باعث شدهاست که اطمینان لازم از صحت زمانسنجی برآورده شود.
امکانات سختافزاری
میکروکنترلر استفادهشده در این پروژه، ATMEGA32 از سری خانواده میکروکنترلرهای AVR است. در این مدار سعی شدهاست المانهای سادهتری مورد استفاده قرار گیرد تا سهولت ساخت مدار افزایش یابد. از اینرو، سه عدد دکمه فشاری جهت برنامهریزی مدار؛ و یک عدد دکمه فشاری که بهعنوان دکمه Alt بر روی مدار تعبیه شدهاست که میتواند با ترکیب شدن با دکمههای دیگر، کارکردهای مختلفی را بهوجود آورد. از دیگر امکانات سختافزاری میتوان به استفاده از آیسی شیفت رجیستر جهت درایو سونسگمنتها اشاره نمود؛ از اینرو پایههای کمتری از میکروکنترلر اشغال شده و علاوه بر آن میتوان تعداد سونسگمنتهای بیشتری را — بدون اشغال شدن پایههای بیشتری از میکروکنترلر — به مدار اضافه نمود. علاوه بر آن میتوان از سونسگمنتهای بزرگتر — با رعایت اصول و تعبیه مدار درایو — نیز استفاده نمود. از امکانات سختافزاری مرتبط با زمانسنجی، میتوان به بهرهگیری از آیسی RTC به شماره DS1307 اشاره نمود که همانطور که از عنوانش پیداست، دقت زمانسنجی بسیار بالایی دارد و علاوه بر آن میتواند تاریخ و زمان را بههنگام برقرفتگی در خود ذخیره نگهداشته و شمارش کند؛ همچنین میتوان به لحاظ نمودن تغییرات ساعات تابستانی (DST یا Daylight Saving Time) — که موجب میشود دیگر نیازی به تنظیم ساعت به صورت دستی در این مواقع نباشد — اشاره کرد. از امکانات سختافزاری مربوط به سنجش دمای محیط میتوان به استفاده از سنسور دمای DS18B20 اشاره نمود که ساخته شرکت Dallas Semiconductors بوده و از نقاط قوت آن میتوان به دقت و صحت اندازهگیری بالا، نویز بسیار پایین و راهاندازی سادهتر اشاره نمود. این سنسور میتواند دمای محیط را با دقت 0.1 درجه در محدوده دمایی 55- الی 125+ درجه سانتیگراد اندازهگیری کند. علاوه بر همه این امکانات، از تایمر Watchdog نیز استفاده شدهاست تا در هنگام ایجاد اختلال یا هنگکردن برنامه، میکروکنترلر ریست شود.
امکانات نرمافزاری
برای برنامهریزی میکروکنترلر این مدار، از نرمافزار معروف CodeVision AVR که یکی از کامپایلرهای رایج زبان سی C میباشد، استفاده شدهاست. حالت نوشتار و الگوریتم برنامهنویسی مطابق با استاندارد و رعایت اصول برنامهنویسی میباشد. از اینرو برنامه بهینه (Optimize) بوده و با کمترین نقص و خطا همراه میباشد. یکی از نقاط قوت موجود در این برنامه، پارامتریبودن هر کدام از بخشهای تشکیلدهنده آن میباشد. از جمله این پارامترها میتوان به موارد زیر اشاره نمود:
- تعیین تعداد سونسگمنتها
- تعیین نوع سونسگمنتها (آند مشترک / کاتد مشترک)
- تعیین پایههای شیفت رجیستر
- تعیین پایههای دیکدر نمایشگر روز هفته
- تعیین پورت دیتا برای سونسگمنتها
- تعیین پورت و پایه دکمههای فشاری
- تعیین نوع سنسور دما (DS18B20 یا LM35) و پایه
- تعیین بازه زمانی آپدیت زمان و نمایش آن
- تعیین نوع تاریخها جهت نمایش
- تعیین جایگاه ساعت و تاریخ بر روی سونسگمنتها
- تعیین لحاظ یا عدم لحاظ نمودن Leading-zeros برای هر یک از پارامترهای ساعت به هنگام نمایش بر روی سونسگمنت
- تعیین فاصله زمانی بین نمایش هر نوع تاریخ (میلادی، شمسی و قمری)
- تعیین زمان تغییرات ساعت تابستانی (DST یا Daylight Saving Time) برای هر نوع تاریخ (ساعات تابستانی بهطور پیشفرض برای تاریخ شمسی تنظیم شدهاست.)
مروری بر امکانات کلی
از مهمترین و اساسیترین امکانات این ساعت میتوان به موارد زیر اشاره نمود:
- امکان نمایش ساعت، دقیقه و ثانیه (ساعت دیجیتال 6 رقمی)
- امکان نمایش تقویم: سال، ماه، روز و روزِ هفته
- نمایش تاریخهای میلادی، شمسی و قمری و انتخاب هر کدام جهت نمایش
- عدم نیاز به تنظیم تاریخهای شمسی و قمری و روز هفته (کافیست تاریخ میلادی را تنظیم فرمایید و ساعت به صورت خودکار تبدیلات و محاسبات لازم را انجام میدهد.)
- بهرهگیری از تنظیمات ساعات تابستانی (DST و Daylight Saving Time) و تنظیم خودکار ساعت به هنگام وقوع
- نمایش دمای محیط با دقت 0.1 درجه سانتیگراد و قابلیت تنظیم نوع سنسور دما
- نگهداری تنظیمات و زمانسنجی به هنگام برقرفتگی (Backup)
پیشنمایش از نحوه کارکرد مدار
بخش دانلود
توجه: کاربران محترمی که به هر دلیل، توانایی پرداخت فایلها را ندارند، میتوانند از طریق بخش پشتیبانی با ما در ارتباط باشند.
آپدیت 26 آذر 1401: تمامی پروژههای غیررایگان موجود روی وبسایت رایگان شد.
آپدیت 9 آبان 1403: علیرغم بارها تاکید بر اینکه پروژههای موجود روی وبسایت صرفاً جنبه آموزشی دارد، برخی افراد سودجو که از حداقل دانش برنامهنویسی و طراحی PCB برخوردار نیستند، اقدام به ساخت عجولانه مدارات -بدون در نظر گرفتن اصول طراحی- کرده و با مشکلاتی مواجه میشوند؛ از اینرو، دانلود این پروژه بهصورت دائمی غیرفعال شد و دیگر امکان دانلود آن از طریق وبسایت وجود ندارد. برای دانلود، با پشتیبانی تلگرام در ارتباط باشید.
شامل موارد زیر:
- فایل راهنمای آموزشی (شامل توضیحات سورس کد)
- فایل شبیه سازی پروژه با Proteus 8.9
- سورس کد کامل پروژه
- کد هگز مخصوص پروگرام کردن میکروکنترلر
توجهات:
سلام وقت بخیر.این پروژه را میشه عملی بست؟در فایل هایی که قرار دادید آیا فایل PCB پروژه هم موجوده؟آیا در توضیحات مفصل آمده که کدام قطعه را کجا قرار میدهیم و چرا؟بعد از خرید فایل آیا پشتیبانی وجود داره که سوالاتی که در بخش عملی پیش میاد جواب بده؟
با درود؛
موفق باشید.
سلام ممنون از پروژه های عالی من ساعت با 18سون السیدی را درست کردم کارنمکند ولی ساعت با 6سون عالی چرا فایل هگز 18سون والسیدی عملی کار نمی کند چرا؟تشکر
با درود؛
در هر صورت، با اینکه اطلاعات دقیقی از چگونگی پیادهسازی مدار عملی توسط شما نداریم، ولی مشکلات و عیبیابیهای احتمالی را برای شما در زیر لیست میکنیم:
همچنین میتوانید اینگونه سوالات خود را داخل گروه تلگرامی وبسایت (آیدی JustEdu) قرار دهید تا به آن پاسخ داده شود.
موفق باشید.
سلام یعنی می فرماید فایلها درست هستند،من مدار ساعت با 18 سون سگمنت را درست نبسته ام
سلام ممنون از پروژه های عالی و توضیحات شیوا من ساعت و تقویم با شش عدد سون سگمنت را بستم مرتب کار میکند ولی ساعت با تقویم با18 عدد سون سگمنت کار نمی کنه
سلام در مورد پروژه ساعت، دماسنج و تقویم میلادی، شمسی و قمری دیجیتال با سون سگمنت ۷Segments به زبان سی فیوز بیت ها مشخص نیست لطفا اگر ممکنه توضیح بدین یا یک عکس از اون رو برام بفرستین با تشکر
با درود؛
فیوزبیتها میبایست برای کریستال 8 مگاهرتز (داخلی میکروکنترلر) تنظیم شود؛ که در این تصویر مشاهده مینمایید.
آقا تو این مدار ساعت هی گیر میکنه !! یعنی یه چند ساعت دقیقا درست کارمیکنه بعدش گیرمیکنه و دیگه ساعت اصلا به جلو نمیره و بعد از روشن خاموش کردنش دوباره یه چند ساعت درست کار میکنه و بعدش گیرمیکنه و تا وقتی ریست نشه دیگه کار نمیکنه
البته مدار به درستی کار میکنه ها فقط زمان هست که جلو نمیره و در نتیجه تارخ هم به جلو نمیره !!!
با درود؛
Watchdog را غیرفعال نمایید.
عکسی از ساعت ساخته شده در حال کار
سلام آیا میشه این مدار را با atmega16 هم پیاده کرد ممنون.