سخت افزار قطعات الکترونیک مدارهای الکترونیک میکروکنترلر AVR نمایشگر LCD

پروژه ساعت فوق دقیق با LCD و ماژول DS3231 توسط میکروکنترلر AVR

نوشته شده توسط علی زاهدی

حدود ۶ قرن قبل از میلاد، بابلی‌ها چند نمونه ابداعی از خود بجا گذاشته‌اند. این موارد امروزه در کلیه کشورها مورد استفاده قرار می‌گیرند. مرسوم داشتن هفت روز هفته و تعیین عدد ۶۰ برای تقسیم بندی ساعت یادگار بابلی‌ها است. بابلی‌ها عقیده داشتند که عدد ۶۰ به اعداد ۳۰،۲۰،۱۵،۱۰،۶،۵،۳،۲،۱ بخش پذیر است. این عدد را پایه و مبنای تقسیم بندی ساعت در نطر گرفته اند. در این پروژه روش ساخت ساعت دیجیتالی با استفاده از میکروکنترلر AVR آموزش خواهم داد. ماژول ساعت DS3231 یک تراشه فوق دقیق جهت شمارش زمان می‌باشد. در ادامه این آموزش با مرجع تخصصی میکروکنترلر AVR به زبان فارسی، دیجی اسپارک همراه باشید.

 


ماژول ساعت فوق دقیق DS3231


تراشه DS2331 آی سی تکمیل شده و پیشرفته‌تر DS1307 می‌باشد. این تراشه علاوه بر امکانات DS1307 از دقت بالاتر، با قابلیت تنظیم آلارم می‌باشد. ولتاژ کاری ماژول ۳٫۳ الی ۵٫۵ ولت بوده و از باتری بک آپ و جریان مصرفی بسیار پایین استفاده می‌کند. در واقع این ماژول ساعت زمان واقعی یا همان RTC مخفف شده real time clock می‌باشد. ساعت DS3231 از پروتکل سریال I2C پشتیبانی می‌کند. کارکرد این ماژول براساس کدهای binary coded decimal که اصطلاحا کد BCD نامیده می‌شود، است. باتری بک آپ قرار گرفته بر روی این ماژول زمانی که جریان برق در دسترس نیست باعث جلوگیری از عقب افتادن زمان خواهد شد. منبع کلاک این آی سی از یک کریستال ساعت به فرکانس ۳۲٫۷۶۸KHZ استفاده می‌کند. این آی سی قابل کارکرد در دو حالت ۲۴ ساعته و ۱۲ساعته AM/PM را دارد. همچنین علاوه بر ساعت بصورت ثانیه، دقیقه، ساعت امکان ذخیره تاریخ بصورت روز، هفته، ماه، سال را نیز دارد. در ضمن اطلاعات نوشته شده بر روی این آی سی تا سال ۲۱۰۰ برنامه ریزی شده است. از دیگر امکانات این ماژول می‌توان به اندازه‌گیری دما اشاره نمود.

 


ویژگی‌های ماژول DS3231


  • قابلیت تصحیح سال کبیسه
  • چیپ حافظه AT24C32 با ظرفیت ۳۲ کیلوبایت
  • ارتباط از طریق پروتکل I2C
  • ماکزیمم سرعت انتقال ۴۰۰KHz
  • دقت دماسنج ۳+/- درجه سانتی‌گراد

 


اتصالات ماژول ساعت DS3231


پایه VCC ماژول به قطب مثبت ۵ ولت

پایه GND ماژول به قطب منفی

پایه SCL به پایه ۲۸ میکروکنترلر

پایه SDA به پایه ۲۷ میکروکنترلر

کلید های فشاری را به پایه های ۱۵ و ۱۶ میکروکنترلر و قطب منفی متصل کنید.

اتصالات پروژه ساعت فوق دقیق با ساعت DS3231 و نمایشگر LCD و تراشه Atmega8 - دیجی اسپارک

 


کدنویسی ساعت DS3231 


جهت اجرای کدها باید در نرم افزار کدویژن، کدها را آماده کرده و سپس پروگرام کنید. چنانچه این روش را نمی‌دانید به آموزش نحوه ی ساخت پروژه جدید و پروگرام کردن میکروکنترلر مراجعه کنید. پس از ساخت پروژه‌ی جدید در نرم افزار کدویژن CodeVision کدهای زیر را داخل آن کپی کنید. سپس تراشه میکروکنترلر Atmega8 را پروگرام کنید. قبل از پروگرام کردن میکروکنترلر بایستی از منو Project بخش Configure را انتخاب کنید سپس در پنجره باز شده بخش C Compiler را انتخاب کرده و سپس بر روی بخش Libraries کلیک کنید. در این قسمت وارد بخش I2C شوید و طبق تصویر زیر I/O Port را بر روی PORTC و پایه SDA روی ۴ همچنین SCL بر روی ۵ تنظیم کنید.

 

 

 


تحلیل کد پروژه ساعت DS3231


در ابتدای کدها کتابخانه‌های مورد نیاز را به پروژه اضافه کرده‌ایم. سپس چند متغیر برای دریافت ساعت از ماژول و نمایش آن بر روی سگمنت تعریف کرده‌ایم. داخل تابع main ابتدا تظیماتی از جمله فعال سازی بخش I2C و تایمر و معرفی پایه‌ها بعنوان ورودی و خروجی قرار دارد. سپس برنامه وارد حلقه‌ی بی نهایت شده و ابتدا ساعت را دریافت و سپس نمایش می‌دهد. در آخر دو کلید برای تنظیم ساعت و دقیقه به صورت Pull up تعریف شده است. توجه داشته باشید هنگام پروگرام کردن میکروکنترلر فیوز بیت‌ها بر روی ۸ مگاهرتز تنظیم شده باشد.

 


سخت افزار مورد نیاز


 

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

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک   دانشجوکیت    digispark    daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

 

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

علی زاهدی

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۵ دیدگاه

    • با سلام
      وارد لینک خرید قطعات در قسمت آخر اموزش شده، دیتاشیت قطعات داخل صفحه محصول قرار دارد.

  • سلام و خسته نباشید استاد محترم. واقعا خیلی خوشحال شدم ک تو دانشجو کیت ی نفر هست که پروژه هارو با avr انجام میده خیلی خیلی ازتون ممنونم .

  • سلام خسته نباشید. ایا میشه همین کدارو برای ماژول DS1307 استفاده کرد؟ میخوام ی پروژه درست کنم ساعت با ماژول DS1307 و دوتا خروجی ک در ساعتایی مختلفی زنگ بخوره. اگه امکانش نیست میشه ی اموزشم از اون تهیه کنید لطفا؟؟؟؟

  • سلام خسته نباشید. ایا میشه همین کدارو برای ماژول DS1307 استفاده کرد؟ میخوام ی پروژه درست کنم ساعت با ماژول DS1307 و دوتا خروجی ک در ساعتایی مختلفی زنگ بخوره. اگه امکانش نیست میشه ی اموزشم از اون تهیه کنید لطفا؟؟؟؟

    • با سلام
      بله در این پروژه از کتابخانه ای‌سی DS1307 استفاده شده. این کتابخانه برای هر دو ماژول DS1307 و DS3231 قابل استفاده است. برای خروجی گرفتن میتوانید با قرار دادن شرط برای ساعت و دقیقه داخل کد همین آموزش، کد مورد نظر خود را بنویسید، در آموزش های بعدی حتما به این مورد توجه خواهیم داشت.

  • سلام اگه کد هارو ب صورت فایل کد ویژن بزارید خیلی خوب میشه من از ساعت ۷ دارم اینو تو کد ویژن مینویسم و هر بارم ارور میده و مشکل داره

    • باسلام
      هدف ما آموزش دادن می باشد نه صرفا به اشتراک گذاشتن کد، هرکجای راه اندازی این مدار به مشکل برخوردید از همین طریق برای رفع مشکل با بنده در ارتباط باشید.

      • خب استاد همین کدو در کد ویژن بزنم ارور میده باید قبلش تنظیمات ای سی رو روی کد ویژن تنظیم کنم ک شما اشاره ای نکردید مثلا فعال کردن کلاک

  • سلام خسته نباشید مدار رو بستم کار کرد ولی تا ۱۴۰ ثانیه میشماره و بعد ی دقیقه اضافه میکنه و دوباره از ۸۴ ثانیه تا ۱۴۰ همینطوری میره چیکارش کنم

      • ثانیه از ماژول دریافت می شود و داخل کد فقط میتوانید ساعت و دقیقه را تنظیم نمایید. میتوانید با اضافه نمودن کلید دیگری داخل کد همانند ساعت و دقیقه، ثانیه را نیز تنظیم نمایید.

    • با سلام
      ساعت، دقیقه و ثانیه داخل ماژول محاسبه می‌شود، لطفا ابتدا اتصالات را بررسی نمایید سپس نتیجه را از همین طریق اعلام فرمایید.

  • سلام
    ممنون از آموزش خیلی خوبتون.
    اگه بخوام یه تایمر با avr درست کنم که وقتی برق قطع شد، تایمر توی همون لحظه متوقف شه و بعد که برق وصل شد دوباره ادامه بده، میتونم از این ماژول استفاده کنم؟

    • با سلام از توجه شما سپاسگزارم
      بله می‌توانید برای ساخت تایمر های دقیق و نگه دارنده زمان از این ماژول استفاده نمایید.

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

    • با سلام
      میتوانید داخل کدویژن پروژه جدید ایجاد کنید و سپس کد موجود در آموزش را داخل آن کپی کنید.

  • سلام
    من نقشه مدار و کدهای برنامه یک نوع ساعت دقیق با ds1307 دارم که علاوه بر نمایش ثانیه دقیقه ساعت و نمایش شمسی روز ماه سال، روزهای هفته رو هم بصورت فارسی روی lcd 16*2 نمایش میده
    اما مدتی هستش که اعتبار کد نویسی برنامش تموم شده و از سال ۹۴ بالاتر نمیاد و باید ویرایش بشه. از اونجایی که کدنویسی تبدیل تاریخ شمسی به میلادی خیلی پیچیده هستش، از عهده من خارج هست. اگه برای شما این امکان وجود داره که کدهای برنامه رو، تازه سازی کنین من برای شما ارسال کنم تا هم مشکل من حل بشه و هم داخل سایت قرار بدین تا مخاطبین شما، بهره ببرن. فقط نمیدونم به چه صورت میتونم ارسال کنم. ممنون.