امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
کمک برای ساعت زنگدار با avr
نویسنده پیام
amir_s آفلاین
تازه وارد

ارسال‌ها: 24
موضوع‌ها: 2
تاریخ عضویت: اردیبهشت ۱۳۹۱

تشکرها : 18
( 2 تشکر در 2 ارسال )
ارسال: #1
کمک برای ساعت زنگدار با avr
سلام من یه میخام یه ساعت درست کنم که بتونم بهش بگم تو یه ساعت های مشخصی زنگ بزنه الان همه چی حل شده فقط مشکلم اینه که نمیدونم چیجوری میشه ساعت هایی رو که میخایم زنگ بزنه رو با چند تا کلید خودمون تنظیم کنیم.فقط من خیلی تو برنامه نویسی وارد نیستم لطفا یه جور بگین متوجه بشم

اینم برنامه:

.txt   sa\'at.txt (اندازه: 2.41 KB / تعداد دفعات دریافت: 77)
۱۸-آذر-۱۳۹۱, ۲۲:۰۳:۳۰
ارسال‌ها
پاسخ
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13642
( 14739 تشکر در 4686 ارسال )
ارسال: #2
RE: کمک برای ساعت زنگدار با avr
(۱۸-آذر-۱۳۹۱, ۲۲:۰۳:۳۰)amir_s نوشته است: سلام من یه میخام یه ساعت درست کنم که بتونم بهش بگم تو یه ساعت های مشخصی زنگ بزنه الان همه چی حل شده فقط مشکلم اینه که نمیدونم چیجوری میشه ساعت هایی رو که میخایم زنگ بزنه رو با چند تا کلید خودمون تنظیم کنیم.فقط من خیلی تو برنامه نویسی وارد نیستم لطفا یه جور بگین متوجه بشم

اینم برنامه:
سلام
سختی کارتون حل شده
2 تا کلید تعریف کتید (تو حلقه ی اصلی) و دوتا متغیر با فشار دادن کلید ها متغیر ها زیاد بشن
البته به 2 تا شرط هم نیاز دارین که اگر یکی از متغیرها 23 بیشتر شد صفر بشه و دیگری از 59 بیشتر شد صفر بشه
حالا متغیر ها رو با ساعت مقایسه کنید و هر موقع با هم برابر شدن پورتی رو یک کنید که به اون پورت زنگ وصل میشه
موفق باشیدWink

۱۹-آذر-۱۳۹۱, ۰۰:۲۲:۲۲
ارسال‌ها
پاسخ
تشکر شده توسط : omid_phoenix, jansfred, رسول
amir_s آفلاین
تازه وارد

ارسال‌ها: 24
موضوع‌ها: 2
تاریخ عضویت: اردیبهشت ۱۳۹۱

تشکرها : 18
( 2 تشکر در 2 ارسال )
ارسال: #3
RE: کمک برای ساعت زنگدار با avr
سلام دوست عزیز.واقعا ممنونم که راهنماییم کردین.ولی من خیلی برنامه نویسی بلد نیستم و هر چی هم یاد گرفتم از همین سایت بوده.متغییر ها باید چی باشن؟ ساعت که فقط یه عدد نیست.ثانیه و دقیقه و ساعت داره و همش هم از هم جداست.
بعدشم چیجوری متغییر رو با ساعت مقایسه کنم؟
۲۱-آذر-۱۳۹۱, ۲۳:۱۹:۰۵
ارسال‌ها
پاسخ
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13642
( 14739 تشکر در 4686 ارسال )
ارسال: #4
RE: کمک برای ساعت زنگدار با avr
شرمنده یادم رفته بودShy
توی این موضوع ارسال شماره ی 15 یه ساعت هست اونو امتحان کنید (با این ساعت فرقی نداره فقط برنامش ساده تره) برنامش رو نگاه کنید بعدش با هم می تغییرش می دیم(اگر جایشه نفمیدین بگین تا توضیح بدمWink)

۲۱-آذر-۱۳۹۱, ۲۳:۳۳:۳۸
ارسال‌ها
پاسخ
تشکر شده توسط : رسول
amir_s آفلاین
تازه وارد

ارسال‌ها: 24
موضوع‌ها: 2
تاریخ عضویت: اردیبهشت ۱۳۹۱

تشکرها : 18
( 2 تشکر در 2 ارسال )
ارسال: #5
RE: کمک برای ساعت زنگدار با avr
تقریبا هیچیشو نفهمیدم.میشه توضیحش بدی؟
اگه مثل تاپیک اموزش avr از صفر تا بینهایت توضیح بدی که عالیه
۲۳-آذر-۱۳۹۱, ۰۰:۲۰:۱۶
ارسال‌ها
پاسخ
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13642
( 14739 تشکر در 4686 ارسال )
ارسال: #6
RE: کمک برای ساعت زنگدار با avr
قبل از هر چیزی شما تقویم هم می خواهین
اگر می خواهین شمسی یا میلادیWink

۲۳-آذر-۱۳۹۱, ۰۱:۱۲:۴۳
ارسال‌ها
پاسخ
amir_s آفلاین
تازه وارد

ارسال‌ها: 24
موضوع‌ها: 2
تاریخ عضویت: اردیبهشت ۱۳۹۱

تشکرها : 18
( 2 تشکر در 2 ارسال )
ارسال: #7
RE: کمک برای ساعت زنگدار با avr
حتما میخاد.شمسی
۲۳-آذر-۱۳۹۱, ۱۹:۰۷:۲۳
ارسال‌ها
پاسخ
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13642
( 14739 تشکر در 4686 ارسال )
ارسال: #8
RE: کمک برای ساعت زنگدار با avr
اول از ساعت ساده و تقویم میلادی شروع می کنیم
کد:
$regfile = "m8def.dat"
$crystal = 4000000
$framesize = 128
$hwstack = 128
$swstack = 128
$projecttime = 1
$lib "ds1307clock.lib"
Config Lcdpin = Pin , Db4 = Portd.1 , Db5 = Portd.2 , Db6 = Portd.3 , Db7 = Portd.4 , E = Portd.0 , Rs = Portc.5
Cursor Off
تا اینجا که امکانات رو تعریف کردم
'*******************************************************************************
Config Sda = Portb.0 : Config Scl = Portb.1
پایه های مربوط به ارتباط i2c را مشخص کردم
'*******************************************************************************
Dim S As Byte
Dim M As Byte
Dim H As Byte
Dim D As Word
Dim Y As Word
Dim Mo As Word
Dim W As Word
Dim Rooz As Integer
Dim Mah As Byte
Dim Sal As Word
Dim I As Byte
Dim Endm As Byte
متغیر ها رو تعریف کردم
Ddrb.2 = 0 : Portb.2 = 1
Ddrb.3 = 0 : Portb.3 = 1
Ddrb.4 = 0 : Portb.4 = 1
Ddrb.5 = 0 : Portb.5 = 1
Ddrb.6 = 0 : Portb.6 = 1
Ddrb.7 = 0 : Portb.7 = 1
Ddrc.0 = 0 : Portc.0 = 1
پول آپ برای کلید ها تعریف کردم
Cls
'*******************************************************************************
Aval:
Do
I2cstart ارتباط i2c را شروع کردم
I2cwbyte &HD0 ارسال دستور برای شروع نوشتن
I2cwbyte 0 مکان خواندن اطلاعات تعیین کردم
I2cstart ارتباط i2c را شروع کردم
I2cwbyte &HD1 ارسال دستور برای خواندن اطلاعات
I2crbyte S , Ack متغیر ثانیه را از حافظه 0 می خواند (در بالا تعیین کردم)
I2crbyte M , Ack متغیر دقیقه را از حافظه 1 بخوان
I2crbyte H , Ack ساعت
I2crbyte W , Ack ایام هفته را بخوان
I2crbyte D , Ack روز
I2crbyte Mo , Ack ماه
I2crbyte Y , Nack سال
I2cstop پایان ارتباط
'*******************************************************************************
S = Makedec(s) : M = Makedec(m) : H = Makedec(h)
D = Makedec(d) : Mo = Makedec(mo) : Y = Makedec(y)
Y = Y + 2000
اعداد رو به عدد قابل چاپ تبدیل می کنیم(شایدم یه چیز دیگه اگر کسی میدونه بگه) اگر این کار نکنیم میکرو قاطی می کنه
'*******************************************************************************
Locate 1 , 1
Lcd H ; ":" ; M ; ":" ; S ; " "
Locate 2 , 1
Lcd Y ; "/" ; Mo ; "/" ; D ; " "
نمایش اعدا روی ال سی دی
Debounce Pinb.2 , 0 , Second
Debounce Pinb.3 , 0 , Minot
Debounce Pinb.4 , 0 , Hour
Debounce Pinb.5 , 0 , Dey
Debounce Pinb.6 , 0 , Mont
Debounce Pinb.7 , 0 , Year
Debounce Pinc.0 , 0 , Yeard
تعریف کلید برای تنظیم ساعت و تاریخ
Loop
End 'end program
Second: زیر برنامه ثانیه وقتی کلید ثانیه بزنیم برنامه به اینجا پرش می کند
S = 0 ثانیه رو صفر می کنه
S = Makebcd(s) به عدد قابل ذخیره شده تبدیل می کنه
I2cstart ارتباط i2c شروع میشه
I2cwbyte &HD0 ارسال دستور برای شروع نوشتن روی آی سی
I2cwbyte 0 به مکان 0 حافظه بره
I2cwbyte S متغیر s را در حافظه آی سی بنویسه
I2cstop پایان i2c
Goto Aval به زیر برنامه ای که اول برنامه وجود داره پرش می کنه
Return
Minot: وقتی که کلید دقیقه را یزنیم برنامه به اینجا پرش می کنه

Incr M دقیقه را یکی اضافه کن
If M > 59 Then M = 0 اگر دقیقه از 59 بیشتر شد دقیقه را صفر کن
M = Makebcd(m) به عدد قابل ذخیره شدن تبدیل می کنه
I2cstart شروع ارتباط i2c
I2cwbyte &HD0 ارسال دستور برای نوشتن روی آی سی
I2cwbyte 1 به حافظه ی 1 پرش کن
I2cwbyte M متغیر m را روی آی سی بنویس
I2cstop پایان i2c
Goto Aval به اول برنامه پرش کن
Return
بقیه هم همین طور
Hour:
Incr H
If H > 23 Then H = 0
H = Makebcd(h)
I2cstart
I2cwbyte &HD0
I2cwbyte 2
I2cwbyte H
I2cstop
Goto Aval
Return
Dey:
Incr D
If D > 31 Then D = 0
D = Makebcd(d)
I2cstart
I2cwbyte &HD0
I2cwbyte 4
I2cwbyte D
I2cstop
Goto Aval
Return
Mont:

Incr Mo
If Mo > 12 Then Mo = 0
Mo = Makebcd(mo)
I2cstart
I2cwbyte &HD0
I2cwbyte 5
I2cwbyte Mo
I2cstop
Goto Aval
Return
Year:
Incr Y
Y = Makebcd(y)
I2cstart
I2cwbyte &HD0
I2cwbyte 6
I2cwbyte Y
I2cstop
Goto Aval
Return
Yeard:
Decr Y
Y = Makebcd(y)
I2cstart
I2cwbyte &HD0
I2cwbyte 6
I2cwbyte Y
I2cstop
Goto Aval
Return
اگر جاییش گنگه بگین تا بیشتر توضیح بدم
اگر فهمیدین حالا یه مبدل میلادی به شمسی اضافش می کنیم
برنامه به این شکل در میاد
کد:
$regfile = "m8def.dat"
$crystal = 4000000
$framesize = 128
$hwstack = 128
$swstack = 128
$projecttime = 1
$lib "ds1307clock.lib"
Config Lcdpin = Pin , Db4 = Portd.1 , Db5 = Portd.2 , Db6 = Portd.3 , Db7 = Portd.4 , E = Portd.0 , Rs = Portc.5
Cursor Off
'*******************************************************************************
Config Sda = Portb.0 : Config Scl = Portb.1
'*******************************************************************************
Dim S As Byte
Dim M As Byte
Dim H As Byte
Dim D As Word
Dim Y As Word
Dim Mo As Word
Dim W As Word
Dim Rooz As Integer
Dim Mah As Byte
Dim Sal As Word
Dim I As Byte
Dim Endm As Byte
Ddrb.2 = 0 : Portb.2 = 1
Ddrb.3 = 0 : Portb.3 = 1
Ddrb.4 = 0 : Portb.4 = 1
Ddrb.5 = 0 : Portb.5 = 1
Ddrb.6 = 0 : Portb.6 = 1
Ddrb.7 = 0 : Portb.7 = 1
Cls
'*******************************************************************************
Aval:
Do
I2cstart
I2cwbyte &HD0
I2cwbyte 0
I2cstart
I2cwbyte &HD1
I2crbyte S , Ack
I2crbyte M , Ack
I2crbyte H , Ack
I2crbyte W , Ack
I2crbyte D , Ack
I2crbyte Mo , Ack
I2crbyte Y , Nack
I2cstop
'*******************************************************************************
S = Makedec(s) : M = Makedec(m) : H = Makedec(h)
D = Makedec(d) : Mo = Makedec(mo) : Y = Makedec(y)
'*******************************************************************************
If Mo = 1 Then Rooz = D
If Mo = 2 Then Rooz = D + 31
If Mo = 3 Then Rooz = D + 59
If Mo = 4 Then Rooz = D + 90
If Mo = 5 Then Rooz = D + 120
If Mo = 6 Then Rooz = D + 151
If Mo = 7 Then Rooz = D + 181
If Mo = 8 Then Rooz = D + 212
If Mo = 9 Then Rooz = D + 243
If Mo = 10 Then Rooz = D + 273
If Mo = 11 Then Rooz = D + 304
If Mo = 12 Then Rooz = D + 334
If Rooz > 78 Then
Sal = Y + 79
Rooz = Rooz - 78
If Rooz > 186 Then
Rooz = Rooz - 186
Mah = 7
Else
Mah = 1
End If
If Mah > 6 Then Endm = 30 Else Endm = 31
Else
Sal = Y + 78
Mah = 10
If Rooz =< 78 Then Rooz = Rooz + 11
Endm = 30
End If
For I = 1 To 6
If Rooz > 30 Then Rooz = Rooz - Endm Else Exit For
Mah = Mah + 1
Next
Sal = Sal + 1300
'*******************************************************************************
Locate 1 , 1
Lcd H ; ":" ; M ; ":" ; S ; " "
Locate 2 , 1
Lcd Sal ; "/" ; Mah ; "/" ; Rooz ; " "
'*******************************************************************************
Debounce Pinb.2 , 0 , Second
Debounce Pinb.3 , 0 , Minot
Debounce Pinb.4 , 0 , Hour
Debounce Pinb.5 , 0 , Dey
Debounce Pinb.6 , 0 , Mont
Debounce Pinb.7 , 0 , Year
Loop
End 'end program
Second:
S = 0
S = Makebcd(s)
I2cstart
I2cwbyte &HD0
I2cwbyte 0
I2cwbyte S
I2cstop
Goto Aval
Return
Minot:

Incr M
If M > 59 Then M = 0
M = Makebcd(m)
I2cstart
I2cwbyte &HD0
I2cwbyte 1
I2cwbyte M
I2cstop
Goto Aval
Return
Hour:
Incr H
If H > 23 Then H = 0
H = Makebcd(h)
I2cstart
I2cwbyte &HD0
I2cwbyte 2
I2cwbyte H
I2cstop
Goto Aval
Return
Dey:
Incr D
If D > 31 Then D = 0
D = Makebcd(d)
I2cstart
I2cwbyte &HD0
I2cwbyte 4
I2cwbyte D
I2cstop
Goto Aval
Return
Mont:

Incr Mo
If Mo > 12 Then Mo = 0
Mo = Makebcd(mo)
I2cstart
I2cwbyte &HD0
I2cwbyte 5
I2cwbyte Mo
I2cstop
Goto Aval
Return
Year:
Incr Y
If Y > 23 Then Y = 0
Y = Makebcd(y)
I2cstart
I2cwbyte &HD0
I2cwbyte 6
I2cwbyte Y
I2cstop
Goto Aval
Return
این مبدل رو من ننوشتمShy و هیچی ازش نمی فهممBiggrin از توی همین سایت برداشتم اگر بپرسین بهتون میگن چکار کردن
حالا دقیق بگین چی می خواهینWink

۲۳-آذر-۱۳۹۱, ۱۹:۵۹:۰۲
ارسال‌ها
پاسخ
تشکر شده توسط : amir_s
amir_s آفلاین
تازه وارد

ارسال‌ها: 24
موضوع‌ها: 2
تاریخ عضویت: اردیبهشت ۱۳۹۱

تشکرها : 18
( 2 تشکر در 2 ارسال )
ارسال: #9
RE: کمک برای ساعت زنگدار با avr
خیلی ممنون از توضیحاتتون.فعلا برنامه اولی رو خوندم و اینارو نفهمیدم
کد:
$framesize = 128
$hwstack = 128
$swstack = 128
$projecttime = 1
$lib "ds1307clock.lib"
---------------------------
یعنی چی پول اپ برای کلید ها تعریف کردی؟
----------------------------

Lcd H ; ":" ; M ; ":" ; S ; " "
اینارو چرا باید بزاریم؟
Lcd Y ; "/" ; Mo ; "/" ; D ; " "
------------------------------------------
چرا بعد از مکان 2 پریدی رفتی مکان 4؟
اصلا این مکان هارو کی تعریف میکنه؟
-----------------------
yeardچیه؟
۲۴-آذر-۱۳۹۱, ۱۶:۲۱:۰۸
ارسال‌ها
پاسخ
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13642
( 14739 تشکر در 4686 ارسال )
ارسال: #10
RE: کمک برای ساعت زنگدار با avr
نقل قول: یعنی چی پول اپ برای کلید ها تعریف کردی؟
نگاه کن علمی نمی گم به زبون ساده میگم.پایه میکرو باید یا یک باشه یا صفر فرض کن کلیدی به مثبت وصله وقتی کلید رو قطع می کنی جریان برق قطع میشه و پایه صفر نمیشه پس تو کار میکرو خطا ایجاد می کنه و هر دفعه ای یه چیزی در نظرش می گیره یا صفر یا یک پس میکرو قاطی میکنه برای همین ما باید وقتی کلید به مثبت وصله با یه مقاومت 10k پایه رو صفر کنیم روشش رو پیوست کردم اگر کلید به منفی وصل باشه باید از داخل برنامه این کارو بکنیم با این دستورایی که نوشتم
Ddrb.2 = 0 : Portb.2 = 1
Ddrb.3 = 0 : Portb.3 = 1
Ddrb.4 = 0 : Portb.4 = 1
Ddrb.5 = 0 : Portb.5 = 1
Ddrb.6 = 0 : Portb.6 = 1
Ddrb.7 = 0 : Portb.7 = 1
Ddrc.0 = 0 : Portc.0 = 1
الان این7 تا پایه پول آپ شدن (pull up) وقتی هم با مقاومت این کارو بکنیم میگن پایه پول دون شده(pull down)
نقل قول: Lcd H ; ":" ; M ; ":" ; S ; " "
اینارو چرا باید بزاریم؟
Lcd Y ; "/" ; Mo ; "/" ; D ; " "
اینا دستور نمایش روی ال سی دی هستند
نقل قول: چرا بعد از مکان 2 پریدی رفتی مکان 4؟
اصلا این مکان هارو کی تعریف میکنه؟
نفهمیدم منظورت چیهConfused
نقل قول: yeardچیه؟
کد php:
yeardزیر برنامه سال کم وقتی کلید سال کم بزنیم برنامه به اینجا پرش می کند portc.0
decr y یک واحد از سال کم می کنیم 
Makebcd(yبه عدد قابل ذخیره شده تبدیل می کنه
I2cstart ارتباط i2c شروع میشه
I2cwbyte 
&HD0 ارسال دستور برای شروع نوشتن روی آی سی
I2cwbyte 6 به مکان 6 حافظه بره
I2cwbyte y متغیر y را در حافظه آی سی بنویسه
I2cstop پایان i2c
Goto Aval به زیر برنامه ای که اول برنامه وجود داره پرش می کنه
Return 
اگر بازم نفهمیدی بگو من در خدمتمWink
موفق باشیدWink


فایل‌(های) پیوست شده بندانگشتی (ها)
   

۲۴-آذر-۱۳۹۱, ۲۱:۳۰:۴۰
ارسال‌ها
پاسخ
تشکر شده توسط : omid_phoenix, amir_s
amir_s آفلاین
تازه وارد

ارسال‌ها: 24
موضوع‌ها: 2
تاریخ عضویت: اردیبهشت ۱۳۹۱

تشکرها : 18
( 2 تشکر در 2 ارسال )
ارسال: #11
RE: کمک برای ساعت زنگدار با avr
منظورم از مکان همون عددیه که میدیم و مکان خوندن یا نوشتن از 1307رو تعیین میکنیم.
ایناروهم نگفتی چیه:

$framesize = 128
$hwstack = 128
$swstack = 128
$projecttime = 1
$lib "ds1307clock.lib"
۲۵-آذر-۱۳۹۱, ۰۰:۱۷:۱۱
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  درخواست کمک برای ساعت با فونت بزرگ sobhan6831 4 2,400 ۲۴-فروردین-۱۳۹۷, ۲۰:۱۹:۱۲
آخرین ارسال: sobhan6831
  دانلود رایگان سورس ساعت حرم امام رضا (ع) ورژن 2 sina6479 3 5,371 ۲۶-اسفند-۱۳۹۶, ۲۲:۱۹:۴۴
آخرین ارسال: sajjad85
  ساخت تابلو روان و ساعت هوایی گردون یا همون Propeller Clock با موتور فن !!! t3r!p3000 85 91,068 ۲۲-شهریور-۱۳۹۵, ۲۱:۴۴:۳۸
آخرین ارسال: taherehselseleh
  سوال در مورد ساخت ساعت با ال سي دي navayi 5 4,744 ۱۲-اسفند-۱۳۹۴, ۱۲:۱۷:۱۰
آخرین ارسال: 1نفر
  کریستال خارجی+کریستال ساعت در atmega8 cortex-m3 1 2,967 ۰۳-مرداد-۱۳۹۴, ۲۰:۱۳:۰۳
آخرین ارسال: sharin
  ساعت گردان Mani27 0 1,998 ۲۱-اردیبهشت-۱۳۹۴, ۱۳:۳۹:۰۴
آخرین ارسال: Mani27
  کمک در ساخت ساعت دقیق SABER66 30 25,956 ۱۴-دى-۱۳۹۳, ۰۰:۲۵:۵۶
آخرین ارسال: mehdi2015
  کمک برای شرط گذاشتن برای یک فرکانس خاص sinohe 5 4,170 ۱۱-آذر-۱۳۹۳, ۰۰:۱۵:۱۸
آخرین ارسال: sinohe
  کار با ماژول ساعت DS1307 kimiafars 7 6,393 ۰۴-آذر-۱۳۹۳, ۱۰:۳۱:۰۴
آخرین ارسال: kimiafars
  ساعت و دما با سون سگمنت با باتري بك آپ mobah 24 24,574 ۰۹-شهریور-۱۳۹۲, ۱۵:۵۰:۴۶
آخرین ارسال: Ambassador

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 7 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS