خانه / پروژه های میکروکنترلر / ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307

ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307

ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307

در این بخش تیم الکترونیک و برنامه نویسی الکترونیک ۹۸, اقدام به طراحی و انتشار پروژه ای کاربردی و حرفه ای با عنوان, ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307, برای شما علاقه مندان به پروژه های میکروکنترلر AVR کرده است. ساعت زمان واقعی سریال DS1307, یک ساعت / تقویم BCD کم مصرف با 56 بایت حافظه NV RAM است. آدرس و داده از طریق ارتباط I2C منتقل می شوند. این تراشه ساعت / تقویم, اطلاعات ثانیه, دقیقه, ساعت, روز, ماه و سال را فراهم می کند. آی سی ساعت DS1307 به طور خودکار برای ماه های کمتر از 31 روز و سال های کبیسه تنظیم شده است. ساعت می تواند به هر دو صورت 12 و 24 ساعته با علامت قبل / بعد از ظهر به کار گرفته می شود. این تراشه دارای مدار داخلی تشخیص نقص تغذیه نیز می باشد و در صورت بروز قطع تغذیه, باطری پشتیبان را به طور خودکار در مدار قرار می دهد. در این پروژه می خواهیم زمان و تاریخ را به صورت شمسی توسط آی سی ساعت DS1307 و میکروکنترلر AVR بر روی یک LCD کاراکتری نمایش دهیم و همچنین بتوانیم ساعت و تاریخ را به دلخواه توسط سه کلید تبعیه شده در مدار تغییر دهیم.

ویژگی های برجسته آی سی ساعت DS1307

:: توانایی شمارش ثانیه, دقیقه, ساعت, روز, ماه, سال, سال کبیسه تا سال 2100 میلادی

:: مصرف کمتر از 500nA در حالت استفاده از باتری پشتیبان

:: محدوده دمای صنعتی 40- تا 85+ درجه سانتی گراد

:: آشکار ساز خودکار نقص تغذیه و مدار کلید زنی باتری

:: 56 بایت حافظه NV RAM برای ذخیره اطلاعات

:: بسته بندی های 8 پایه PDIP و SOIC

:: سیگنال خروجی مربعی برنامه پذیر

:: ارتباط I2C

ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307

تشریح برنامه پروژه

برای شروع ارسال داده در پروتکل I2C از دستور I2cstart و برای ارسال یک بایت داده از دستور I2cwbyte استفاده می کنیم. با دستور I2crbyte نیز می توان یک بایت داده را از باس TWI خواند. آدرس دستور نوشتن در آی سی ساعت DS1307 مقدار D0H و آدرس خواندن DTH است.

آی سی ساعت DS1307 تاریخ را بر مبنای سال میلادی گزارش می دهد و ما برای مشاهده به صورت سال شمسی باید تاریخ فوق را تبدیل کنیم. در تاریخ میلادی هر سال از 365 روز تشکیل شده و هر چهار سال یک بار سال کبیسه داریم که یک روز بیشتر از سال های معمول دیگر است. در سال میلادی این یک روز سال کبیسه به روزهای ماه دوم سال اضافه می شود. ماه دوم سال در سال های معمول 28 روز و در سال کبیسه 29 روز است.

علت ایجاد سال کبیسه این است که چرخش زمین به دور خورشید 365 روز و 5.8125 ساعت طول می کشد این 6 ساعت اضافه در هر چهار سال یک روز می شود که باعث ایجاد سال کبیسه می شود. همان طور که مشاهده می کنید این ساعت اضافی دقیقا 6 ساعت نیست و تقریبا 0.1875 ساعت کمتر از 6 ساعت است که در 128 سال تقریبا یک روز شده و باعث حذف یک سال کبیسه می شود! این قاعده در تقویم شمسی نیز وجود دارد.

در ابتدا باید تشخیص دهیم که سال میلادی کبیسه است یا نه ! برای اینکار باقی مانده تقسیم سال میلادی بر اعدا 4، 100 و 400 را محاسبه میکنیم. اگر سال بر 4 بخش پذیر باشد، کبیسه است به شرط اینکه بر 100 بخش پذیر نباشد یعنی نمی توان گفت سال 2000 کبیسه است چون بر 4 و 100 بخش پذیر است. حال اگر سال مورد نظر بر 100 و 400 بخش پذیر باشد، سال کبیسه است. به بیان دیگر می توان گفت سالی کبیسه است که باقی مانده آن بر 4 برابر صفر و باقی مانده آن بر 100 غیر صفر باشد یا اینکه همزمان باقیمانده تقسیم آن بر 100 و 400 صفر باشد. پس از انجام این عملیات باید با توجه به اینکه سال کبیسه است یا نه، تعداد روزهای ماه دوم را 28 یا 29 قرار داد و تعداد روز گذشته از سال میلادی را محاسبه کرد. برای اینکار روزهای هر ماه را در یک آرایه نوع بایت با طول 12 ذخیره کرد و با توجه به عدد ماه، روزها را با هم جمع و در نهایت روز گذشته از ماه جاری را نیز جمع می کنیم. به عنوان مثال روزهای گذشته از سال میلادی را در تاریخ 2012/4/3 را بدین صورت 94=3+31+29+31 محاسبه می کنیم.

با توجه به اینکه سال 2012 کبیسه است، ماه دوم را 29 روزه محاسبه و روزهای گذشته از سال 2012 در این تاریخ 94 به دست آمد. در ادامه باید روزهای گذشته سال شمسی را محاسبه کنیم! اولین روز شمسی 79 روز بعد از آغاز سال میلادی است. این عدد برای سال کبیسه یا غیر کبیسه یکسان است. چون وقتی سال 2012 کبیسه است، سال 1391 نیز کبیسه است.

سال شمسی 621 سال عقب تر از سال میلادی است. بنابراین با کم کردن عدد 621 از سال میلادی، سال شمسی به دست می آید. ولی باید توجه داشت که اگر تعداد روز سال میلادی کمتر از 79 باشد هنوز نوروز نرسیده و ما در سال قبلی شمسی هستیم و باید سال میلادی را منهای 622 کنیم.

در ادامه اگر تعداد روز از 79 بیشتر بود عدد 79 را از آن کم کرده تا روزهای گذشته از سال شمسی به دست آید. اگر عدد کمتر از 79 بود باید دید که سال قبلی میلاد کبیسه بود یا نه. اگر سال قبل کبیسه باشد روز سال شمسی از جمع روز سال میلادی با عدد 287 به دست می آید و اگر کبیسه نباشد با عدد 286 جمع می شود.

همچنین فایل شبیه ساز این پروژه نیز که با نرم افزار Proteus 8 Professional طراحی شده، پیوست فایل پروژه جهت دانلود قرار داده شده است، که می تواند شما را در یادگیری هر چه بهتر مدار و نحوه عملکرد آن یاری نماید.

 موسسه خیریه حمایت از کودکان مبتلا به سرطان

نام فایل دانلودی : ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307

قیمت فایل دانلودی : RIAL 100,000 - ریال

محتویات فایل دانلودی : نقشه شماتیک پروژه | برنامه نوشته شده به زبان Basic (بیسیک) در محیط Bascom-AVR | فایل شبیه سازی نرم افزار Proteus ورژن 8.1

حجم فایل دانلودی : 130 کیلوبایت

پسورد فایل دانلودی : www.electronics98.com

نحوه دریافت فایل : بلافاصله بعد از پرداخت می توانید این فایل را از سرورهای پرقدرت سایت الکترونیک 98 با لینک مستقیم دانلود نمائید, همچنین در پایان عملیات خرید, لینک های دانلود و رسید خرید به آدرس ایمیل شما ارسال می گردد.

RIAL 100,000 – خرید

6 دیدگاه

  1. پروژه های ساعتی که دانلود کردم شبیه سازی که میکنم تنظیم مبکنم ساعت رو بعداز چند ثانیه عقب میفوته اشکال از چی هست؟

  2. زمانی که شما پروژه را در نرم افزار Proteus شبیه سازی می کنید به میزان Load (بار) CPU کامپیوتر که در مقابل همان کلید Play در داخل نرم افزار Proteus درج می شود توجه کنید، معمولا زمانیکه این مقدار بیشتر از 70% می شود، CPU کامپیوتر به میزان زیادی اشغال می شود و به همین علت کامپیوتر در اجرای نرم افزار و پروژه شبیه سازی شده عقب می افتد و در برخی موارد نرم افزار به صورت اتوماتیک بسته می شود.

  3. سلام. اول اینکه سایت خیلی خوبی دارین. دوم اینکه اگه ممکنه برای پروژه هایی  که جنبه آموزشی دارن (منظورم چیزای ساده مثلا ساعت که تازه کارا بیشتر دنبال یادگیریش هستن) برنامه رو به زبان C هم بذارین (توی Codevision) تا کسایی مثلا من که دارن یاد میگیرن هم بتونن استفاده کنن.

  4. سلام دوست عزیز
    خیلی ممنون از لطف و حمایت شما، در بیشتر موارد سعی شده پرووژه های سطح ساده و متوسط به هر دو زبان برنامه نویسی شوند، اما با وجود این تمام سعی خودمان را می کنیم تا در کوتاه ترین زمان دیگر پروژه های تک زبانه همانند این پروژه را به هر دو زبانه C و Basic برنامه نویسی کنیم.

  5. Bbakhshid,man too porojam rootoobato o damaro hamrah ba saat o tarikh vs menue sazi daram,vali b saat k miresam ya aghab miofte ya chizaye namaloom miad,bayad chi kar konam,merC

  6. سلام دوست عزیز
    لطفا نظرات خودتون رو از این پس به زبان فارسی درج کنید. اگر ساعت شما عقب می افته و یا اینکه در بعضی مواقع صفحه نمایش شما به یکباره بهم میرزه بخاطر اینکه نوع برنامه ای که نوشتید بهینه نیست و همچنین حتما از کریستال ساعت استفاده بکنید.

پاسخ دهید

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

مطلب پیشنهادی

ترمومتر و ترموستات بسیار پیشرفته با تراشه DS18B20

ترمومتر و ترموستات بسیار پیشرفته با تراشه DS18B20 در این بخش تیم الکترونیک و برنامه …