ساعت دیجیتال نوعی ساعت است که زمان را بر روی نمایشگرهای هفت قسمتی یا به اصطلاح «سون سگمنت» نمایش می دهد. این نوع ساعت یکی از رایج ترین انواع است که در اماکن اداری، تفریحی و حتی منازل مشاهده می شوند.
شرح مدار
در این مدار از میکروکنترلر ATMEGA32 از خانواده میکروکنترلرهای AVR استفاده شده است. نمایش ساعت، تاریخ، دما و … بر روی شش عدد سون سگمنت صورت می گیرد. از سه عدد کلید فشاری جهت تنظیم ساعت و تاریخ تشکیل شده است. یک عدد کلید فشاری نیز جهت تغییر حالت نمایش ساعت است. حالت کلاسیک به صورت {نمایش زمان – نمایش تاریخ شمسی) و حالت مدرن به صورت {نمایش زمان – نمایش تاریخ شمسی به صورت روان – نمایش تاریخ میلادی به صورت روان – نمایش دمای محیط – نمایش روز هفته} می باشد. در بخش هایی از این پروژه، جهت نمایش اعداد طولانی، از قابلیتی مشابه تابلو روان استفاده گردیده است؛ بدین صورت که یک عبارت طولانی مانند تاریخ میلادی 08-05-2019 که شامل بیش از 6 کاراکتر است، به صورت روان بر روی نمایشگر ظاهر می شود. دمای محیط با استفاده از سنسور DS18B20 در بازه دمایی 55- الی 125 و با دقت 0.1 درجه سانتی گراد، اندازه گیری می شود. به دلیل وجود محدودیت در نمایش حروف بر روی سون سگمنت، سعی شده است نمایش روز هفته با عبارات معادل نمایش داده شود.
در عمل، از سون سگمنت های سایز بزرگ استفاده شده است. لازم به ذکر است ولتاژ کاری این نوع سون سگمنت ها 7.5 ولت است. لذا نمی توان آن ها را به طور مستقیم به خروجی پایه های میکروکنترلر متصل کرد؛ بایستی آن ها را توسط مدار ترانزیستوری زیر درایو نمود:
تنظیم مدار
کلید Menu را فشرده و منتظر بمانید تا ساعت یکبار تمامی موارد را نمایش دهد؛ پس از آن مشاهده خواهید کرد که دو عدد سون سگمنت سمت چپ شروع به چشمک زدن می کنند. اولین مقدار قابل تنظیم، صدگان و هزارگان (سده) سال میلادی است که شما می توانید آن را توسط دکمه های Up و Down تنظیم کنید. برای رفتن به مرحله بعد (تنظیم یکان و دهگان سال میلادی)، کافیست دوباره دکمه Menu را بفشارید. مراحل را برای ماه و روز میلادی، ساعت، دقیقه، ثانیه و روز هفته تکرار کنید. با فشردن دوباره دکمه Menu، تنظیمات در حافظه آی سی DS1307 ذخیره خواهد شد. توجه داشته باشید که نیازی به تنظیم تاریخ شمسی نمی باشد و به طور اتوماتیک این تاریخ محاسبه شده و نمایش داده می شود.
خصوصیات مدار
این مدار از خصوصیات و امکانات متنوعی برخوردار است که در زیر به این موارد اشاره شده است:
- نمایش ساعت به صورت 24 ساعته و به همراه ثانیه شمار
- نمایش تاریخ به صورت میلادی و شمسی به صورت روان و ثابت
- نمایش دمای محیط از 55- الی 125 درجه سانتی گراد با دقت 0.1 درجه
- نمایش روز هفته
- تغییر حالت های نمایش
- دقت بسیار بالا
- عدم پاک شدن تنظیمات ساعت به هنگام برق رفتگی
شماتیک مدار
کلیپ کارکرد مدار
بخش دانلود
آپدیت 26 آذر 1401: تمامی پروژههای غیررایگان موجود روی وبسایت رایگان شد.
آپدیت 9 آبان 1403: علیرغم بارها تاکید بر اینکه پروژههای موجود روی وبسایت صرفاً جنبه آموزشی دارد، برخی افراد سودجو که از حداقل دانش برنامهنویسی و طراحی PCB برخوردار نیستند، اقدام به ساخت عجولانه مدارات -بدون در نظر گرفتن اصول طراحی- کرده و با مشکلاتی مواجه میشوند؛ از اینرو، دانلود این پروژه بهصورت دائمی غیرفعال شد و دیگر امکان دانلود آن از طریق وبسایت وجود ندارد. برای دانلود، با پشتیبانی تلگرام در ارتباط باشید.
شامل موارد زیر:
- فایل شبیه سازی Proteus 8.8
- سورس کد کامل برنامه به زبان سی (کدویژن CodeVision)
- کد هگز مخصوص پروگرام کردن میکروکنترلر
توجهات:
برنامه زبان c شو رو میخام باید بخرم؟
با درود؛
بله.
سلام من هرچی دانلود میکنم برام باز نمیکنه چیکار کنم باید بخرمش؟؟
با درود؛
چنانچه نیاز به سورسکد برنامه میکروکنترلر دارید، میبایست خریداری کنید؛ در غیر اینصورت، نیازی به خرید نیست و میتوانید فایل دمو کارکرد مدار را بهصورت رایگان دانلود کنید.
سلام سپاس از زحمات شما مدیر محترم ممنون از پروژه های عالی من ساعت بازبان سی را درست کردم عالی است فقط تقویم سریع رد میکنه سوری برنامه در دسترس نیست که بتوان تغییر داد تشکر
سپاس از حسن توجه شما..و ممنون بابت راهنمایی هاتون♡♡
با سلام مجدد و عرض خسته نباشید.بنده توی محیط کدویژن آی سی رو پروگرام کردم و فیوز بیت هارو برای ۸مگا تنظیم کردم.مدارم چککردم .اوکیه.اما روی سون سگمنت ها اعداد ناقصه و واضح نمایش نمیده.با ۳ تا آی سی متفاوت این کارو انجام دادم..سون سگمنت ها هم اوکیه
با درود؛
ظاهرا مشکل جزئی دارید.
برای عیبیابی راحتتر مشکل، لطفا تصویری از عملکرد مدار را از طریق راههای ارتباطی درجشده در بخش پشتیبانی سایت، ارسال نمایید.
با سلام .من فایل رو دانلود کردم و بعد پروگارم اجرا کردم.جواب نداد.همه چی رو هم چک کردم .اوکیه
با درود؛
این مدار قبلا بر روی بردبورد تست گرفته و ویدیو آن نیز ارایه شده است.
چنانچه مشکلی وجود دارد، لطفا مشکل خود را بهطور واضحتر و با جزئیات بیشتر مطرح نمایید.
سلام خسته نباشید
من برنامه رو خودم نوشتم و زمانی که می خوام ساعت و دقیقه و ثانیه رو از ds1307 بگیرم باید حتما از متغییر char استفاده کنم ولی بعداً نمی تونم این متغییر رو مقایسه کنم یا روی اون تقسیم انجام بدم تا بتونم روی سون سگمنت نشونش بدم(مثلا اگه مقدار ساعت ۱۵ باشه باید بتونم دوتا رقمش رو جدا کنم تا بتونم اونو روی سون سگمنت نشون بدم )
چجوری این مشکل رو حل کنم؟
با درود؛
سوال شما کمی ابهام دارد. با این حال میتوان این مشکل را به سه روش حل نمود:
1. میتوان تمامی این متغیرها را از نوع char تعریف نمود و بدون هیچ مشکلی آنها را خواند و حتی عملیات تقسیم بر روی آنها انجام داد؛ که برای اطلاعات بیشتر از نحوه تجزیه این اعداد به ارقام، میتوانید به این پست مراجعه فرمایید.
2. متغیری از نوع char تعریف کنید و بهعنوان یک متغیر موقت جهت بارگذاری زمان از روی DS1307 از آن استفاده کنید. پس از عملیات بارگذاری، مقادیر آن متغیرها را بر روی متغیرهای اصلی (که نوعی غیر از char دارند) بریزید. به اینصورت:
3. چنانچه متغیرهای شما از نوعی غیر از char است (برای مثال int یا long)، میتوانید با تبدیل نوع آن متغیر به نوعی دیگر (یا به اصطلاح Casting)، اینکار را انجام دهید. برای مثال، چنانچه متغیرهای شما از نوع int است و میخواهید مقادیر از نوع char را بر روی آن بریزید، کافیست به قبل از آن عبارت (char) اضافه نمایید. به اینصورت:
جرا موقع اجرا یه سری از سگمنت ها پرنور تر هستند؟!
با درود؛
هر چه تعداد سگمنت های بیشتری از سون سگمنت روشن باشد، جریان کشی نیز بیشتر خواهد شد، افت ولتاژ صورت گرفته و در نتیجه شدت روشنایی سون سگمنت کاهش می یابد. برای مثال سگمنت های عدد 8 شدت نور پایین تری نسبت به عدد 1 دارد.