آموزش 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 استفاده کنید.
۹. تمرینها
- برنامهای بنویسید که ساعت را روی LCD نمایش دهد و هر بار کلید خاصی فشار داده شد، زمان یک دقیقه جلو برود.
- یک تقویم ساده بسازید که روز و ماه را نمایش دهد.
- برنامهای بنویسید که ساعت و تاریخ را در EEPROM ذخیره کند و بعد از قطع برق دوباره بارگذاری شود.
نتیجه جلسه دوازدهم
در این جلسه یاد گرفتیم:
- مفهوم RTC و کاربرد آن.
- نحوه استفاده از تایمر۲ برای ساخت ساعت دیجیتال.
- نمایش ساعت و تاریخ روی LCD.
- پروژه عملی ساعت و تقویم دیجیتال کامل.
🔹 جلسه سیزدهم: پروژه قفل رمز دیجیتال با ترکیب LCD، کیپد و EEPROM.