دسته‌بندی نشده

آموزش BASCOM AVR – بسکام – جلسه دوازدهم

خیلی خب 🌟
حالا می‌ریم سراغ جلسه دوازدهم و این بار هم مفصل و کامل می‌نویسم تا شبیه یک فصل آموزشی باشه.


📘 آموزش BASCOM AVR – بسکام – جلسه دوازدهم

 

ساعت و تقویم دیجیتال (RTC)


۱. مقدمه

در جلسات قبل با تایمرها و ADC کار کردیم. حالا می‌خواهیم یک پروژه مهم بسازیم: ساعت و تقویم دیجیتال. برای این کار باید بتوانیم زمان را دقیق بشماریم. میکروکنترلر ATmega32 یک تایمر ویژه (Timer2) دارد که می‌تواند با کریستال ساعت (۳۲.۷۶۸ کیلوهرتز) مستقل از CPU کار کند و زمان دقیق را نگه دارد. این قابلیت برای ساخت ساعت دیجیتال بسیار مناسب است.


۲. مفهوم RTC

RTC یا Real Time Clock به معنای ساعت واقعی است.

  • می‌تواند ثانیه، دقیقه، ساعت، روز، ماه و سال را نگه دارد.
  • حتی اگر CPU خاموش شود، با یک باتری کوچک (مثل سکه‌ای ۳ ولت) ادامه می‌دهد.
  • در میکروکنترلرها می‌توان با تایمر۲ و کریستال ساعت این قابلیت را پیاده‌سازی کرد.

۳. نحوه اتصال کریستال ساعت

  • کریستال ۳۲.۷۶۸ کیلوهرتز به پایه‌های TOSC1 و TOSC2 وصل می‌شود.
  • یک خازن کوچک (۲۰ پیکوفاراد) به هر پایه وصل می‌شود.
  • این کریستال باعث می‌شود تایمر۲ مستقل از CPU کار کند.

۴. کدنویسی در BASCOM

مثال: شمارش ثانیه‌ها با تایمر۲

' پروژه ساعت دیجیتال با تایمر2
$regfile = "m32def.dat"
$crystal = 1000000

Config Timer2 = Timer , Async = On , Prescale = 128
Enable Interrupts
Enable Ovf2
On Ovf2 Timer2_ISR

Dim Sec As Byte , Min As Byte , Hour As Byte

Start Timer2

Do
   Locate 1 , 1
   Lcd "Time=" ; Hour ; ":" ; Min ; ":" ; Sec
Loop
End

Timer2_ISR:
   Incr Sec
   If Sec = 60 Then
      Sec = 0
      Incr Min
      If Min = 60 Then
         Min = 0
         Incr Hour
         If Hour = 24 Then
            Hour = 0
         End If
      End If
   End If
Return

۵. توضیح خط‌به‌خط کد

  • Config Timer2 = Timer , Async = On → تایمر۲ به حالت مستقل (Async) تنظیم می‌شود.
  • Prescale = 128 → تقسیم کلاک برای تنظیم زمان دقیق.
  • Enable Ovf2 → فعال‌سازی وقفه سرریز تایمر۲.
  • در بخش Timer2_ISR هر بار سرریز تایمر۲، یک ثانیه به شمارنده اضافه می‌شود.
  • سپس دقیقه و ساعت محاسبه می‌شوند.

۶. نمایش تاریخ

برای نمایش تاریخ باید روز، ماه و سال را نیز ذخیره کنیم.

کد ساده:

Dim Day As Byte , Month As Byte , Year As Word

Day = 1 : Month = 1 : Year = 2025

Do
   Locate 2 , 1
   Lcd "Date=" ; Day ; "/" ; Month ; "/" ; Year
Loop
End

توضیح: تاریخ اولیه تنظیم می‌شود و روی LCD نمایش داده می‌شود. می‌توان با کلیدها تاریخ را تغییر داد.


۷. پروژه عملی: ساعت و تقویم دیجیتال کامل

  • تایمر۲ برای شمارش ثانیه‌ها.
  • LCD برای نمایش زمان و تاریخ.
  • کی‌پد برای تنظیم ساعت و تاریخ.
  • EEPROM برای ذخیره تنظیمات بعد از قطع برق.

۸. نکات عملی

  • برای دقت بیشتر باید کریستال ساعت دقیق و خازن‌های مناسب استفاده شوند.
  • اگر زمان سریع یا کند شد، مقدار Prescaler را تغییر دهید.
  • برای ذخیره تنظیمات ساعت و تاریخ از EEPROM استفاده کنید.

۹. تمرین‌ها

  1. برنامه‌ای بنویسید که ساعت را روی LCD نمایش دهد و هر بار کلید خاصی فشار داده شد، زمان یک دقیقه جلو برود.
  2. یک تقویم ساده بسازید که روز و ماه را نمایش دهد.
  3. برنامه‌ای بنویسید که ساعت و تاریخ را در EEPROM ذخیره کند و بعد از قطع برق دوباره بارگذاری شود.

نتیجه جلسه دوازدهم

در این جلسه یاد گرفتیم:

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

🔹 جلسه سیزدهم: پروژه قفل رمز دیجیتال با ترکیب LCD، کی‌پد و EEPROM.

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

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