// ساعت دیجیتال با گاهشمار شمسی و آلارم - الکترونیکا

الکترونیکا پروژه های الکترونیک و مکانیک

سایت در حال به روز رسانی به نسخه ی جدید میباشد در صورت بروز مشکل با شماره ی 09213203841 تماس بگیرید

ساعت دیجیتال
یکی از نیازهای هر پروژه حرفه ای، نگهداری زمان و تاریخ و نمایش آن می باشد. این نیاز در مورد پروژه های ایرانی به دلیل استفاده از تاریخ شمسی کمی متفاوت جلوه می کند. در این پروژه با استفاده از الگوریتم ها و توابع رایگان جمع آوری شده از اینترنت یک تابع پرقدرت به نام ()Jdate طراحی شده است که ورودی رشته ای تاریخ میلادی را دریافت کرده، خروجی رشته ای تاریخ شمسی را تحویل می دهد و قدرت تصحیح سالهای کبیسه را نیز دارا می باشد.علاوه بر این قابلیت تنظیم تاریخ و زمان آلارم نیز به آن افزوده شده .این محصول میتواند چند دستگاه را به طور هم زمان یا در چندین زمان در تاریخ ها و روزهای مشخص روشن و خاموش کند یعنی در تاریخهای تعیین شده میتواند با بارنامه های هفتگی یا سالیانه سناریو های متفاوتی را اجرا نماید که این قابلیت با اضافه شدن تاریخ شمسی امکان پذیر شده است.

قابلیتها :

  • تاریخ شمسی
  • ساعت
  • کنترل چندین دستگاه در زمانهای مشخص
  • تعریف سناریو برای فعال کردن دستگاهها
  • پخش موزیک های مختلف برای آلارم بیدار باش
  • روشن کردن لامپ در هنگام ورود انسان به محیط (با سنسور pir)

موارد استفاده:

  • راه روی آپارتمانها برای خاموش رو روشن کردن لامپ راهرو با حظور انسان
  • اتاق خواب با قابلیت خاموش و روشن کردن خودکار چراغ خواب
  • ساعت زنگ مدارس 
  • ادارات و مدارس و اماکن عمومی برای کنترل و خاموش و روشن کردن دستگاهها در روزهای تعطیل و ...
ساعت با تاریخ شمسی
 

ویدیو ی پروژه :

توجه :کاربر گرامی شما علاوه بر خرید مستقیم همچنین میتوانید این فایل را با خرید اشتراک ماهانه دانلود نمایید پس مشترک ماهانه ی سایت شوید و تا پایان مدت اشتراک از آپدیت ها و فایلهای جدید موجود در سایت بهره مند گردید.
لیست فایلهای اعضای اشتراکی
نام فایل :
ساعت دیجیتال با گاهشمار شمسی و آلارم 1.0
rar-71 شنبه, 23 آبان 1394 00:37
حداقل اشتراک محتویات زمان ایجاد حجم فایل تعداد دانلودها
یک ماهه (VIP) link_extern-71 کدویژن دوشنبه, 09 اسفند 1389 11:49 490.2 KB 0
تنها کاربران عضو یا دارای مجوز میتوانند دانلود نمایند
توضیحات :
 

افراد شرکت کننده در این گفتگو

نظرات (10)

هنوز نظری ارسال نشده است
این نظر توسط مدیر سایت کمینه شده است

سلام آقا مهدی.تشکر میشود بابات مطالب خوب وب .آقا یک سوال آیا اگر آلارمی را تنظیم کردیم بعد برق دستگاه قطع شد با روشن کردن مجدد دستگاه آیا آلارم تنظیم شده از رویه دستگاه حذف میشود یا این که در حافظه EEPROM میکرو ذخیره میشود.یک سوال دیگر.آیا میشه برای یک رله طوری برنامه ریزی کنیم که در طول روز در ساعات مختلف برامون فعال بشه یانه.مثلا ساعت 9 صبح دوباره 9:15 دوباره 11و بعد دوباره11:50 فعال بشه.یعنی در طول یک روز چند بار یک خروجی فعال بشه؟؟؟؟؟؟؟؟؟؟؟
با تشکر از شما

مهمان
این نظر توسط مدیر سایت کمینه شده است

برای تنظیم زمان آلارم بله تا هر چند بار که بخوای میتونی تنظیم کنی آلارم بزنه...برای مورد دوم که حذف نمیشه و میمونه توی حافظه و اگه باتری بک آپ هم بزاری زمان هم پاک نمیشه چون آیسی ds1302 استفاده شده

مهمان
این نظر توسط مدیر سایت کمینه شده است

salam aga Mahdi.men in medar ro roye berd boord bastam tarikh ha va sa@tsh dorost bood vali ahang zangesh mesl mal shoma nabood. v ba yekmi vez vez pakhsh mieshe ba ferekanse 1 meg program kardam.va toye barname shoma on adad 8 meg ra be 4 tagyir dadam.benazret chkar konam ta alarmesh dorost besheh.manba tghzyeh am battry ast.

مهمان
این نظر توسط مدیر سایت کمینه شده است

با سلام فرکانس رو توی برنامه بزار همون یک مگا هرتز یا این که میکرو رو بزار روی 8 مگا هرتز داخلی ولی اگه نمیخوای میکرو روی 8 مگا باشه باید برنامه رو حتماً روی همون 1 مگ کامپایل کنی وگرنه صدا ها زیر پخش میشه و فرکانس باید توی کامپایل شدن و فرکانس فیوز بیت میکرو یکی باشه:خوب:

مهمان
این نظر توسط مدیر سایت کمینه شده است

سلام آقا مهدی .مرسی بابن راهنمایی هاتون.اون مشکل قبلیم حل شد.حالا یه سوال دیگه.من میخواستم این برنامه رو از 4 تا آلارم به 8 تا آلارم تغییر بدم و اینکار را کردم ولی برنامه ازم چند تا خطا میگیره به نظر شما مشکل از چیه که ایراد میگیره؟؟؟؟برنامه رو هم میفرستم.لطفا کمکم کنید نیاز دارم با تشکر..



$regfile = "m8def.dat"
$crystal = 8000000
$framesize = 128
$hwstack = 128
$swstack = 128
'$projecttime = 14
$lib "ds1307clock.lib"
'Globals
Dim Weekday As Byte , Isleapyear As Bit , Isleapyearp As Bit
Dim Jmonth_a(12) As Byte , Gmonth_a(12) As Byte
Dim Buzzer_hour As Byte
Dim Buzzer_min As Byte
Dim Buzzer1_hour As Eram Byte
Dim Buzzer1_min As Eram Byte
Dim Buzzer2_hour As Eram Byte
Dim Buzzer2_min As Eram Byte
Dim Buzzer3_hour As Eram Byte
Dim Buzzer3_min As Eram Byte
Dim Buzzer4_hour As Eram Byte
Dim Buzzer4_min As Eram Byte

Dim Buzzer5_hour As Eram Byte
Dim Buzzer5_min As Eram Byte

Dim Buzzer_m As Integer
Dim Buzzer_d As Integer
Dim Buzzer1_m As Eram Integer
Dim Buzzer1_d As Eram Integer
Dim Buzzer2_m As Eram Integer
Dim Buzzer2_d As Eram Integer
Dim Buzzer3_m As Eram Integer
Dim Buzzer3_d As Eram Integer
Dim Buzzer4_m As Eram Integer
Dim Buzzer4_d As Eram Integer

Dim Buzzer5_m As Eram Integer
Dim Buzzer5_d As Eram Integer


Dim Jday1 As Integer , Jmonth1 As Integer
Buzzer_hour = 0
Buzzer_min = 0
Config Portb.5 = Output

'Int
Enable Interrupts

'DS1307 Pins
Config Sda = Portb.0 : Config Scl = Portb.1

'Address of DS1307
Const Ds1307w = &HD0 : Const Ds1307r = &HD1

'Clock init
Config Clock = User
Config Date = Mdy , Separator = /

'LCD
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = _
Portc.5 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 2

'Keypad
Config Kbd = Portd

'Sub's
Declare Sub Init()
Declare Sub Main()
Declare Sub Task1()
Declare Sub Show()
Declare Sub Show1()
Declare Sub Ahang2()
Declare Function Jdate(byval Gdate As String) As String

'Backlight
Config Pinb.2 = Output : Backlight Alias Portb.2

'Speaker
Config Pinb.6 = Output : Speaker Alias Portb.6

'Main Prog Start Here:
Call Init()
Do
Call Main()
Loop
End
'_______________________________________________________________________________

'Keypad Decode Data Table
Keypad:
Data "1" , "2" , "3" , "Esc"
Data "4" , "5" , "6" , "F2"
Data "7" , "8" , "9" , "F3"
Data "*" , "0" , "#" , "Enter" , "no"
'_______________________________________________________________________________

Sub Init()
Cls : Cursor Off Noblink
Set Backlight
Sound Speaker , 240 , 50
Lcd "fza.ir"
Lowerline
Lcd "avr-clock-date"
Waitms 800
End Sub
'_______________________________________________________________________________

Sub Main()
Cls : Cursor Off Noblink
Call Task1()
'other task here...
End Sub
'_______________________________________________________________________________

Sub Task1()
Local _key As Byte
Local _num As String * 5
Cls
Do
Call Show()
_key = Getkbd()
_num = Lookupstr(_key , Keypad)

If _num = "1" Then
Incr _hour
If _hour > 23 Then _hour = 0
'when use (Time$ = str) to set data, the sub
'settime automatically called. else if you want to change _hour,
'_min and _sec you must call settime manually after change the var's.
Gosub Settime
Call Show()
Sound Speaker , 120 , 20
Waitms 200
End If

If _num = "2" Then
Incr _min
If _min > 59 Then _min = 0
Gosub Settime
Call Show()
Sound Speaker , 120 , 20
Waitms 200
End If

If _num = "4" Then
Incr _year
If _year > 99 Then _year = 11
Gosub Setdate
Call Show()
Sound Speaker , 120 , 20
Waitms 200
End If

If _num = "5" Then
Incr _month
If _month > 12 Then _month = 1
Gosub Setdate
Call Show()
Sound Speaker , 120 , 20
Waitms 200
End If

If _num = "6" Then
Incr _day
If _day > 30 Then _day = 1
Gosub Setdate
Call Show()
Sound Speaker , 120 , 20
Waitms 200
End If

'Reset Date and Time (first usage and every time change backup battery)
If _num = "Esc" Then
Cls
'Date format is MM/DD/YY
Date$ = "10/04/12"
Time$ = "00:00:00"
Call Show()
Sound Speaker , 120 , 20
Waitms 200

Buzzer1_hour = 25
Buzzer1_min = 0
Buzzer2_hour = 25
Buzzer2_min = 0
Buzzer3_hour = 25
Buzzer3_min = 0
Buzzer4_hour = 25
Buzzer4_min = 0
Buzzer5_hour = 25
Buzzer5_min = 0
Buzzer1_m = 0
Buzzer1_d = 0
Buzzer2_m = 0
Buzzer2_d = 0
Buzzer3_m = 0
Buzzer3_d = 0
Buzzer4_m = 0
Buzzer4_d = 0
Buzzer5_m = 0
Buzzer5_d = 0


End If

'Buzzer settings
'///////////////////////Buzzer1
If _num = "7" Then
'Date format is MM/DD/YY
Cls
Waitms 200
Buzzer_hour = Buzzer1_hour
Buzzer_min = Buzzer1_min

Buzzer_m = Buzzer1_m
Buzzer_d = Buzzer1_d
Do
_key = Getkbd()
_num = Lookupstr(_key , Keypad)
If _num = "1" Then
Incr Buzzer_hour
If Buzzer_hour > 23 Then
Buzzer_hour = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer1_hour = Buzzer_hour
Waitms 200
End If
If _num = "2" Then
Incr Buzzer_min
If Buzzer_min > 59 Then
Buzzer_min = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer1_min = Buzzer_min
Waitms 200
End If
'--------------------day and month setting
If _num = "5" Then
Incr Buzzer_m
If Buzzer_m > 12 Then
Buzzer_m = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer1_m = Buzzer_m
Waitms 200
End If
If _num = "6" Then
Incr Buzzer_d
If Buzzer_d > 31 Then
Buzzer_d = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer1_d = Buzzer_d
Waitms 200
End If
'----------------------------------------
If _num = "3" Then Exit Do

Home : Lcd "B1"
Call Show1()
Loop
Cls
End If
'///////////////////////Buzzer1 end

'///////////////////////Buzzer2
If _num = "8" Then

'Date format is MM/DD/YY
Cls
Waitms 200
Do
Buzzer_hour = Buzzer2_hour
Buzzer_min = Buzzer2_min
Buzzer_m = Buzzer2_m
Buzzer_d = Buzzer2_d
_key = Getkbd()
_num = Lookupstr(_key , Keypad)
If _num = "1" Then
Incr Buzzer_hour
If Buzzer_hour > 23 Then
Buzzer_hour = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_hour = Buzzer_hour
Waitms 200
End If
If _num = "2" Then
Incr Buzzer_min
If Buzzer_min > 59 Then
Buzzer_min = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_min = Buzzer_min
Waitms 200
End If
'--------------------day and month setting
If _num = "5" Then
Incr Buzzer_m
If Buzzer_m > 12 Then
Buzzer_m = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_m = Buzzer_m
Waitms 200
End If
If _num = "6" Then
Incr Buzzer_d
If Buzzer_d > 31 Then
Buzzer_d = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_d = Buzzer_d
Waitms 200
End If
'----------------------------------------
If _num = "3" Then Exit Do

Home : Lcd "B2"
Call Show1()
Loop
Cls
End If
'///////////////////////Buzzer2 end

'///////////////////////Buzzer3
If _num = "9" Then

'Date format is MM/DD/YY
Cls
Waitms 200
Buzzer_hour = Buzzer3_hour
Buzzer_min = Buzzer3_min
Buzzer_m = Buzzer3_m
Buzzer_d = Buzzer3_d
Do

_key = Getkbd()
_num = Lookupstr(_key , Keypad)
If _num = "1" Then
Incr Buzzer_hour
If Buzzer_hour > 23 Then
Buzzer_hour = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer3_hour = Buzzer_hour
Waitms 200
End If
If _num = "2" Then
Incr Buzzer_min
If Buzzer_min > 59 Then
Buzzer_min = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer3_min = Buzzer_min
Waitms 200
End If
'--------------------day and month setting
If _num = "5" Then
Incr Buzzer_m
If Buzzer_m > 12 Then
Buzzer_m = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer3_m = Buzzer_m
Waitms 200
End If
If _num = "6" Then
Incr Buzzer_d
If Buzzer_d > 31 Then
Buzzer_d = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer3_d = Buzzer_d
Waitms 200
End If
'----------------------------------------
If _num = "3" Then Exit Do

Home : Lcd "B3"
Call Show1()
Loop
Cls
End If
'///////////////////////Buzzer3 end

'///////////////////////Buzzer4
If _num = "F3" Then
Buzzer_hour = Buzzer4_hour
Buzzer_min = Buzzer4_min
Buzzer_m = Buzzer4_m
Buzzer_d = Buzzer4_d
'Date format is MM/DD/YY
Cls
Waitms 200
Do

_key = Getkbd()
_num = Lookupstr(_key , Keypad)
If _num = "1" Then
Incr Buzzer_hour
If Buzzer_hour > 23 Then
Buzzer_hour = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer4_hour = Buzzer_hour
Waitms 200
End If
If _num = "2" Then
Incr Buzzer_min
If Buzzer_min > 59 Then
Buzzer_min = 0
Cls
End If
'--------------------day and month setting
If _num = "5" Then
Incr Buzzer_m
If Buzzer_m > 12 Then
Buzzer_m = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer4_m = Buzzer_m
Waitms 200
End If
If _num = "6" Then
Incr Buzzer_d
If Buzzer_d > 31 Then
Buzzer_d = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer4_d = Buzzer_d
Waitms 200
End If
'----------------------------------------
Sound Speaker , 120 , 20
Buzzer4_min = Buzzer_min
Waitms 200
End If
'///////////////////////Buzzer4 end
If _num = "3" Then Exit Do
Home : Lcd "B4"
Call Show1()
Loop
Cls
End If

'2222222222222222222222222222222222222222222222222222222222222222222222222222
If _num = "3" Then Exit Do

Home : Lcd "B1"
Call Show1()
Loop
Cls
End If
'///////////////////////Buzzer1 end

'///////////////////////Buzzer2
If _num = "*" Then

'Date format is MM/DD/YY
Cls
Waitms 200
Do
Buzzer_hour = Buzzer2_hour
Buzzer_min = Buzzer2_min
Buzzer_m = Buzzer2_m
Buzzer_d = Buzzer2_d
_key = Getkbd()
_num = Lookupstr(_key , Keypad)
If _num = "1" Then
Incr Buzzer_hour
If Buzzer_hour > 23 Then
Buzzer_hour = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_hour = Buzzer_hour
Waitms 200
End If
If _num = "2" Then
Incr Buzzer_min
If Buzzer_min > 59 Then
Buzzer_min = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_min = Buzzer_min
Waitms 200
End If
'--------------------day and month setting
If _num = "5" Then
Incr Buzzer_m
If Buzzer_m > 12 Then
Buzzer_m = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_m = Buzzer_m
Waitms 200
End If
If _num = "6" Then
Incr Buzzer_d
If Buzzer_d > 31 Then
Buzzer_d = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_d = Buzzer_d
Waitms 200
End If

'2222222222222222222222222222222222
Loop
End Sub
'_______________________________________________________________________________
Sub Show1()
Locate 1 , 3 : Lcd ">H(" ; Buzzer_hour ; ")min(" ; Buzzer_min ; ")"
Locate 2 , 1 : Lcd " >M(" ; Buzzer_m ; ")day(" ; Buzzer_d ; ")"
End Sub

Sub Show()
Home : Lcd Time$
Locate 1 , 11 : Lcd " "
Lowerline
Lcd Jdate(date$)

If Buzzer1_m = Jmonth1 Or Buzzer1_m = 0 Then
If Buzzer1_d = Jday1 Or Buzzer1_d = 0 Then
If Buzzer1_hour = _hour Then
If Buzzer1_min = _min Then
Set Portb.5
Call Ahang2()
Else
Reset Portb.5
End If
End If
End If
End If
If Buzzer2_m = Jmonth1 Or Buzzer2_m = 0 Then
If Buzzer2_d = Jday1 Or Buzzer2_d = 0 Then
If Buzzer2_hour = _hour Then
If Buzzer2_min = _min Then
Set Portb.5
Call Ahang2()
Else
Reset Portb.5
End If
End If
End If
End If

If Buzzer3_m = Jmonth1 Or Buzzer3_m = 0 Then
If Buzzer3_d = Jday1 Or Buzzer3_d = 0 Then
If Buzzer3_hour = _hour Then
If Buzzer3_min = _min Then
Set Portb.5
Call Ahang2()
Else
Reset Portb.5
End If
End If
End If
End If
If Buzzer4_m = Jmonth1 Or Buzzer4_m = 0 Then
If Buzzer4_d = Jday1 Or Buzzer4_d = 0 Then
If Buzzer4_hour = _hour Then
If Buzzer4_min = _min Then
Set Portb.5
Call Ahang2()
Else
Reset Portb.5
End If
End If
End If
End If
End Sub
'_______________________________________________________________________________

Function Jdate(byval Gdate As String) As String
'Local Var's
Local Tmp As String * 5 , Tmp1 As String * 10
Local Jday As Integer , Jmonth As Integer , Jyear As Integer
Local Gyear As Integer , Gmonth As Integer , Gday As Integer
Local Gdayofyear As Integer , Gyear_ As Integer , Jdayofyear As Integer
Local Gnumdayofyear As Integer , Iloop As Byte , Temp1 As Integer
Local Temp2 As Integer , Temp3 As Integer , Temp4 As Integer
Gdayofyear = 0 : Gyear_ = 0 : Jday = 0 : Jmonth = 0 : Jyear = 0
Jdayofyear = 0 : Gnumdayofyear = 0 : Isleapyear = 0 : Isleapyearp = 0
Iloop = 0 : Temp1 = 0 : Temp2 = 0 : Temp3 = 0 : Temp4 = 0
Gmonth_a(1) = 31 : Gmonth_a(2) = 28 : Gmonth_a(3) = 31 : Gmonth_a(4) = 30
Gmonth_a(5) = 31 : Gmonth_a(6) = 30 : Gmonth_a(7) = 31 : Gmonth_a(8) = 31
Gmonth_a(9) = 30 : Gmonth_a(10) = 31 : Gmonth_a(11) = 30 : Gmonth_a(12) = 31
Gnumdayofyear = 365

'Calculate
Tmp = Mid(date$ , 7 , 2)
Gyear = Val(tmp) + 2000

Tmp = Mid(date$ , 1 , 2)
Gmonth = Val(tmp)

Tmp = Mid(date$ , 4 , 2)
Gday = Val(tmp)

Temp1 = Gyear Mod 4 : Temp2 = Gyear Mod 100
Temp3 = Gyear Mod 400 : Temp4 = Temp1 And Temp2
If Temp4 <> 0 Or Temp3 = 0 Then
Gmonth_a(2) = 28
Else
Gmonth_a(2) = 29
End If
Gyear_ = Gyear - 1
Temp1 = Gyear_ Mod 4
Temp2 = Gyear_ Mod 100
Temp3 = Gyear_ Mod 400
Temp4 = Temp1 And Temp2
If Temp4 <> 0 Or Temp3 = 0 Then
Reset Isleapyearp
Else
Set Isleapyearp
End If
Temp1 = Gmonth - 1
For Iloop = 1 To Temp1
Gdayofyear = Gmonth_a(iloop) + Gdayofyear
Next
Gdayofyear = Gday + Gdayofyear
If Gdayofyear > 79 Then
Temp1 = Gdayofyear - 79
Jyear = Gyear - 621
If Temp1 < 186 Then
Temp2 = Temp1 Mod 31
Temp3 = Temp1 / 31
If Temp2 = 0 Then
Jmonth = Temp3
Jday = 31
Else
Jmonth = Temp3 + 1
Jday = Temp2
End If
Else
Temp2 = Temp1 - 186
Temp3 = Temp2 Mod 30
Temp4 = Temp2 / 30
If Temp3 = 0 Then
Jmonth = Temp4 + 6
Jday = 30
Else
Jmonth = Temp4 + 7
Jday = Temp3
End If
End If
Else
Jyear = Gyear - 622
If Isleapyearp = 1 Then
Gdayofyear = Gdayofyear + 11
Else
Gdayofyear = Gdayofyear + 10
End If
Temp2 = Gdayofyear Mod 30
Temp3 = Gdayofyear / 30
If Temp2 = 0 Then
Jmonth = Temp3 + 9
Jday = 30
Else
Jmonth = Temp3 + 10
Jday = Temp2
End If
End If
Tmp1 = ""
Tmp = Str(jyear)
Tmp1 = Tmp1 + Tmp
Tmp1 = Tmp1 + "/"
Tmp = Str(jmonth)
Tmp = Format(tmp , "00")
Tmp1 = Tmp1 + Tmp
Tmp1 = Tmp1 + "/"
Tmp = Str(jday)
Tmp = Format(tmp , "00")
Jdate = Tmp1 + Tmp
Jday1 = Jday
Jmonth1 = Jmonth
End Function
'_______________________________________________________________________________

'called from ds1307clock.lib
'Whan use Time$ and Date$ this sub's called from DS Lib to Set and Get your data
Getdatetime:
I2cstart : I2cwbyte Ds1307w : I2cwbyte 0 : I2cstart : I2cwbyte Ds1307r
I2crbyte _sec , Ack : I2crbyte _min , Ack : I2crbyte _hour , Ack
I2crbyte Weekday , Ack : I2crbyte _day , Ack : I2crbyte _month , Ack
I2crbyte _year , Nack : I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return

Setdate:
_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
I2cstart : I2cwbyte Ds1307w : I2cwbyte 4 : I2cwbyte _day
I2cwbyte _month : I2cwbyte _year : I2cstop
Return

Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart : I2cwbyte Ds1307w : I2cwbyte 0 : I2cwbyte _sec : I2cwbyte _min
I2cwbyte _hour : I2cstop
Return
'_______________________________________________________________________________

'end of file
Sub Ahang2()
'Corona :: Rythm of The Night
Sound Speaker , 65 , 1274 'C2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 87 , 954 'F2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 98 , 850 'G2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 87 , 954 'F2(1/16)
Sound Speaker , 117 , 715 'Ais2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 110 , 758 'A2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 98 , 850 'G2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 110 , 758 'A2(1/16)
Sound Speaker , 87 , 954 'F2(1/16)
Waitms 125 'P(1/16)
Wait 2
End Sub

مهمان
این نظر توسط مدیر سایت کمینه شده است

$regfile = "m8def.dat"
$crystal = 8000000
$framesize = 128
$hwstack = 128
$swstack = 128
'$projecttime = 14
$lib "ds1307clock.lib"
'Globals
Dim Weekday As Byte , Isleapyear As Bit , Isleapyearp As Bit
Dim Jmonth_a(12) As Byte , Gmonth_a(12) As Byte
Dim Buzzer_hour As Byte
Dim Buzzer_min As Byte
Dim Buzzer1_hour As Eram Byte
Dim Buzzer1_min As Eram Byte
Dim Buzzer2_hour As Eram Byte
Dim Buzzer2_min As Eram Byte
Dim Buzzer3_hour As Eram Byte
Dim Buzzer3_min As Eram Byte
Dim Buzzer4_hour As Eram Byte
Dim Buzzer4_min As Eram Byte

Dim Buzzer5_hour As Eram Byte
Dim Buzzer5_min As Eram Byte

Dim Buzzer_m As Integer
Dim Buzzer_d As Integer
Dim Buzzer1_m As Eram Integer
Dim Buzzer1_d As Eram Integer
Dim Buzzer2_m As Eram Integer
Dim Buzzer2_d As Eram Integer
Dim Buzzer3_m As Eram Integer
Dim Buzzer3_d As Eram Integer
Dim Buzzer4_m As Eram Integer
Dim Buzzer4_d As Eram Integer

Dim Buzzer5_m As Eram Integer
Dim Buzzer5_d As Eram Integer


Dim Jday1 As Integer , Jmonth1 As Integer
Buzzer_hour = 0
Buzzer_min = 0
Config Portb.5 = Output

'Int
Enable Interrupts

'DS1307 Pins
Config Sda = Portb.0 : Config Scl = Portb.1

'Address of DS1307
Const Ds1307w = &HD0 : Const Ds1307r = &HD1

'Clock init
Config Clock = User
Config Date = Mdy , Separator = /

'LCD
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = _
Portc.5 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 2

'Keypad
Config Kbd = Portd

'Sub's
Declare Sub Init()
Declare Sub Main()
Declare Sub Task1()
Declare Sub Show()
Declare Sub Show1()
Declare Sub Ahang2()
Declare Function Jdate(byval Gdate As String) As String

'Backlight
Config Pinb.2 = Output : Backlight Alias Portb.2

'Speaker
Config Pinb.6 = Output : Speaker Alias Portb.6

'Main Prog Start Here:
Call Init()
Do
Call Main()
Loop
End
'_______________________________________________________________________________

'Keypad Decode Data Table
Keypad:
Data "1" , "2" , "3" , "Esc"
Data "4" , "5" , "6" , "F2"
Data "7" , "8" , "9" , "F3"
Data "*" , "0" , "#" , "Enter" , "no"
'_______________________________________________________________________________

Sub Init()
Cls : Cursor Off Noblink
Set Backlight
Sound Speaker , 240 , 50
Lcd "fza.ir"
Lowerline
Lcd "avr-clock-date"
Waitms 800
End Sub
'_______________________________________________________________________________

Sub Main()
Cls : Cursor Off Noblink
Call Task1()
'other task here...
End Sub
'_______________________________________________________________________________

Sub Task1()
Local _key As Byte
Local _num As String * 5
Cls
Do
Call Show()
_key = Getkbd()
_num = Lookupstr(_key , Keypad)

If _num = "1" Then
Incr _hour
If _hour > 23 Then _hour = 0
'when use (Time$ = str) to set data, the sub
'settime automatically called. else if you want to change _hour,
'_min and _sec you must call settime manually after change the var's.
Gosub Settime
Call Show()
Sound Speaker , 120 , 20
Waitms 200
End If

If _num = "2" Then
Incr _min
If _min > 59 Then _min = 0
Gosub Settime
Call Show()
Sound Speaker , 120 , 20
Waitms 200
End If

If _num = "4" Then
Incr _year
If _year > 99 Then _year = 11
Gosub Setdate
Call Show()
Sound Speaker , 120 , 20
Waitms 200
End If

If _num = "5" Then
Incr _month
If _month > 12 Then _month = 1
Gosub Setdate
Call Show()
Sound Speaker , 120 , 20
Waitms 200
End If

If _num = "6" Then
Incr _day
If _day > 30 Then _day = 1
Gosub Setdate
Call Show()
Sound Speaker , 120 , 20
Waitms 200
End If

'Reset Date and Time (first usage and every time change backup battery)
If _num = "Esc" Then
Cls
'Date format is MM/DD/YY
Date$ = "10/04/12"
Time$ = "00:00:00"
Call Show()
Sound Speaker , 120 , 20
Waitms 200

Buzzer1_hour = 25
Buzzer1_min = 0
Buzzer2_hour = 25
Buzzer2_min = 0
Buzzer3_hour = 25
Buzzer3_min = 0
Buzzer4_hour = 25
Buzzer4_min = 0
Buzzer5_hour = 25
Buzzer5_min = 0
Buzzer1_m = 0
Buzzer1_d = 0
Buzzer2_m = 0
Buzzer2_d = 0
Buzzer3_m = 0
Buzzer3_d = 0
Buzzer4_m = 0
Buzzer4_d = 0
Buzzer5_m = 0
Buzzer5_d = 0


End If

'Buzzer settings
'///////////////////////Buzzer1
If _num = "7" Then
'Date format is MM/DD/YY
Cls
Waitms 200
Buzzer_hour = Buzzer1_hour
Buzzer_min = Buzzer1_min

Buzzer_m = Buzzer1_m
Buzzer_d = Buzzer1_d
Do
_key = Getkbd()
_num = Lookupstr(_key , Keypad)
If _num = "1" Then
Incr Buzzer_hour
If Buzzer_hour > 23 Then
Buzzer_hour = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer1_hour = Buzzer_hour
Waitms 200
End If
If _num = "2" Then
Incr Buzzer_min
If Buzzer_min > 59 Then
Buzzer_min = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer1_min = Buzzer_min
Waitms 200
End If
'--------------------day and month setting
If _num = "5" Then
Incr Buzzer_m
If Buzzer_m > 12 Then
Buzzer_m = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer1_m = Buzzer_m
Waitms 200
End If
If _num = "6" Then
Incr Buzzer_d
If Buzzer_d > 31 Then
Buzzer_d = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer1_d = Buzzer_d
Waitms 200
End If
'----------------------------------------
If _num = "3" Then Exit Do

Home : Lcd "B1"
Call Show1()
Loop
Cls
End If
'///////////////////////Buzzer1 end

'///////////////////////Buzzer2
If _num = "8" Then

'Date format is MM/DD/YY
Cls
Waitms 200
Do
Buzzer_hour = Buzzer2_hour
Buzzer_min = Buzzer2_min
Buzzer_m = Buzzer2_m
Buzzer_d = Buzzer2_d
_key = Getkbd()
_num = Lookupstr(_key , Keypad)
If _num = "1" Then
Incr Buzzer_hour
If Buzzer_hour > 23 Then
Buzzer_hour = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_hour = Buzzer_hour
Waitms 200
End If
If _num = "2" Then
Incr Buzzer_min
If Buzzer_min > 59 Then
Buzzer_min = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_min = Buzzer_min
Waitms 200
End If
'--------------------day and month setting
If _num = "5" Then
Incr Buzzer_m
If Buzzer_m > 12 Then
Buzzer_m = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_m = Buzzer_m
Waitms 200
End If
If _num = "6" Then
Incr Buzzer_d
If Buzzer_d > 31 Then
Buzzer_d = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_d = Buzzer_d
Waitms 200
End If
'----------------------------------------
If _num = "3" Then Exit Do

Home : Lcd "B2"
Call Show1()
Loop
Cls
End If
'///////////////////////Buzzer2 end

'///////////////////////Buzzer3
If _num = "9" Then

'Date format is MM/DD/YY
Cls
Waitms 200
Buzzer_hour = Buzzer3_hour
Buzzer_min = Buzzer3_min
Buzzer_m = Buzzer3_m
Buzzer_d = Buzzer3_d
Do

_key = Getkbd()
_num = Lookupstr(_key , Keypad)
If _num = "1" Then
Incr Buzzer_hour
If Buzzer_hour > 23 Then
Buzzer_hour = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer3_hour = Buzzer_hour
Waitms 200
End If
If _num = "2" Then
Incr Buzzer_min
If Buzzer_min > 59 Then
Buzzer_min = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer3_min = Buzzer_min
Waitms 200
End If
'--------------------day and month setting
If _num = "5" Then
Incr Buzzer_m
If Buzzer_m > 12 Then
Buzzer_m = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer3_m = Buzzer_m
Waitms 200
End If
If _num = "6" Then
Incr Buzzer_d
If Buzzer_d > 31 Then
Buzzer_d = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer3_d = Buzzer_d
Waitms 200
End If
'----------------------------------------
If _num = "3" Then Exit Do

Home : Lcd "B3"
Call Show1()
Loop
Cls
End If
'///////////////////////Buzzer3 end

'///////////////////////Buzzer4
If _num = "F3" Then
Buzzer_hour = Buzzer4_hour
Buzzer_min = Buzzer4_min
Buzzer_m = Buzzer4_m
Buzzer_d = Buzzer4_d
'Date format is MM/DD/YY
Cls
Waitms 200
Do

_key = Getkbd()
_num = Lookupstr(_key , Keypad)
If _num = "1" Then
Incr Buzzer_hour
If Buzzer_hour > 23 Then
Buzzer_hour = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer4_hour = Buzzer_hour
Waitms 200
End If
If _num = "2" Then
Incr Buzzer_min
If Buzzer_min > 59 Then
Buzzer_min = 0
Cls
End If
'--------------------day and month setting
If _num = "5" Then
Incr Buzzer_m
If Buzzer_m > 12 Then
Buzzer_m = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer4_m = Buzzer_m
Waitms 200
End If
If _num = "6" Then
Incr Buzzer_d
If Buzzer_d > 31 Then
Buzzer_d = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer4_d = Buzzer_d
Waitms 200
End If
'----------------------------------------
Sound Speaker , 120 , 20
Buzzer4_min = Buzzer_min
Waitms 200
End If
'///////////////////////Buzzer4 end
If _num = "3" Then Exit Do
Home : Lcd "B4"
Call Show1()
Loop
Cls
End If

'2222222222222222222222222222222222222222222222222222222222222222222222222222
If _num = "3" Then Exit Do

Home : Lcd "B1"
Call Show1()
Loop
Cls
End If
'///////////////////////Buzzer1 end

'///////////////////////Buzzer2
If _num = "*" Then

'Date format is MM/DD/YY
Cls
Waitms 200
Do
Buzzer_hour = Buzzer2_hour
Buzzer_min = Buzzer2_min
Buzzer_m = Buzzer2_m
Buzzer_d = Buzzer2_d
_key = Getkbd()
_num = Lookupstr(_key , Keypad)
If _num = "1" Then
Incr Buzzer_hour
If Buzzer_hour > 23 Then
Buzzer_hour = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_hour = Buzzer_hour
Waitms 200
End If
If _num = "2" Then
Incr Buzzer_min
If Buzzer_min > 59 Then
Buzzer_min = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_min = Buzzer_min
Waitms 200
End If
'--------------------day and month setting
If _num = "5" Then
Incr Buzzer_m
If Buzzer_m > 12 Then
Buzzer_m = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_m = Buzzer_m
Waitms 200
End If
If _num = "6" Then
Incr Buzzer_d
If Buzzer_d > 31 Then
Buzzer_d = 0
Cls
End If
Sound Speaker , 120 , 20
Buzzer2_d = Buzzer_d
Waitms 200
End If

'2222222222222222222222222222222222
Loop
End Sub
'_______________________________________________________________________________
Sub Show1()
Locate 1 , 3 : Lcd ">H(" ; Buzzer_hour ; ")min(" ; Buzzer_min ; ")"
Locate 2 , 1 : Lcd " >M(" ; Buzzer_m ; ")day(" ; Buzzer_d ; ")"
End Sub

Sub Show()
Home : Lcd Time$
Locate 1 , 11 : Lcd " "
Lowerline
Lcd Jdate(date$)

If Buzzer1_m = Jmonth1 Or Buzzer1_m = 0 Then
If Buzzer1_d = Jday1 Or Buzzer1_d = 0 Then
If Buzzer1_hour = _hour Then
If Buzzer1_min = _min Then
Set Portb.5
Call Ahang2()
Else
Reset Portb.5
End If
End If
End If
End If
If Buzzer2_m = Jmonth1 Or Buzzer2_m = 0 Then
If Buzzer2_d = Jday1 Or Buzzer2_d = 0 Then
If Buzzer2_hour = _hour Then
If Buzzer2_min = _min Then
Set Portb.5
Call Ahang2()
Else
Reset Portb.5
End If
End If
End If
End If

If Buzzer3_m = Jmonth1 Or Buzzer3_m = 0 Then
If Buzzer3_d = Jday1 Or Buzzer3_d = 0 Then
If Buzzer3_hour = _hour Then
If Buzzer3_min = _min Then
Set Portb.5
Call Ahang2()
Else
Reset Portb.5
End If
End If
End If
End If
If Buzzer4_m = Jmonth1 Or Buzzer4_m = 0 Then
If Buzzer4_d = Jday1 Or Buzzer4_d = 0 Then
If Buzzer4_hour = _hour Then
If Buzzer4_min = _min Then
Set Portb.5
Call Ahang2()
Else
Reset Portb.5
End If
End If
End If
End If
End Sub
'_______________________________________________________________________________

Function Jdate(byval Gdate As String) As String
'Local Var's
Local Tmp As String * 5 , Tmp1 As String * 10
Local Jday As Integer , Jmonth As Integer , Jyear As Integer
Local Gyear As Integer , Gmonth As Integer , Gday As Integer
Local Gdayofyear As Integer , Gyear_ As Integer , Jdayofyear As Integer
Local Gnumdayofyear As Integer , Iloop As Byte , Temp1 As Integer
Local Temp2 As Integer , Temp3 As Integer , Temp4 As Integer
Gdayofyear = 0 : Gyear_ = 0 : Jday = 0 : Jmonth = 0 : Jyear = 0
Jdayofyear = 0 : Gnumdayofyear = 0 : Isleapyear = 0 : Isleapyearp = 0
Iloop = 0 : Temp1 = 0 : Temp2 = 0 : Temp3 = 0 : Temp4 = 0
Gmonth_a(1) = 31 : Gmonth_a(2) = 28 : Gmonth_a(3) = 31 : Gmonth_a(4) = 30
Gmonth_a(5) = 31 : Gmonth_a(6) = 30 : Gmonth_a(7) = 31 : Gmonth_a(8) = 31
Gmonth_a(9) = 30 : Gmonth_a(10) = 31 : Gmonth_a(11) = 30 : Gmonth_a(12) = 31
Gnumdayofyear = 365

'Calculate
Tmp = Mid(date$ , 7 , 2)
Gyear = Val(tmp) + 2000

Tmp = Mid(date$ , 1 , 2)
Gmonth = Val(tmp)

Tmp = Mid(date$ , 4 , 2)
Gday = Val(tmp)

Temp1 = Gyear Mod 4 : Temp2 = Gyear Mod 100
Temp3 = Gyear Mod 400 : Temp4 = Temp1 And Temp2
If Temp4 <> 0 Or Temp3 = 0 Then
Gmonth_a(2) = 28
Else
Gmonth_a(2) = 29
End If
Gyear_ = Gyear - 1
Temp1 = Gyear_ Mod 4
Temp2 = Gyear_ Mod 100
Temp3 = Gyear_ Mod 400
Temp4 = Temp1 And Temp2
If Temp4 <> 0 Or Temp3 = 0 Then
Reset Isleapyearp
Else
Set Isleapyearp
End If
Temp1 = Gmonth - 1
For Iloop = 1 To Temp1
Gdayofyear = Gmonth_a(iloop) + Gdayofyear
Next
Gdayofyear = Gday + Gdayofyear
If Gdayofyear > 79 Then
Temp1 = Gdayofyear - 79
Jyear = Gyear - 621
If Temp1 < 186 Then
Temp2 = Temp1 Mod 31
Temp3 = Temp1 / 31
If Temp2 = 0 Then
Jmonth = Temp3
Jday = 31
Else
Jmonth = Temp3 + 1
Jday = Temp2
End If
Else
Temp2 = Temp1 - 186
Temp3 = Temp2 Mod 30
Temp4 = Temp2 / 30
If Temp3 = 0 Then
Jmonth = Temp4 + 6
Jday = 30
Else
Jmonth = Temp4 + 7
Jday = Temp3
End If
End If
Else
Jyear = Gyear - 622
If Isleapyearp = 1 Then
Gdayofyear = Gdayofyear + 11
Else
Gdayofyear = Gdayofyear + 10
End If
Temp2 = Gdayofyear Mod 30
Temp3 = Gdayofyear / 30
If Temp2 = 0 Then
Jmonth = Temp3 + 9
Jday = 30
Else
Jmonth = Temp3 + 10
Jday = Temp2
End If
End If
Tmp1 = ""
Tmp = Str(jyear)
Tmp1 = Tmp1 + Tmp
Tmp1 = Tmp1 + "/"
Tmp = Str(jmonth)
Tmp = Format(tmp , "00")
Tmp1 = Tmp1 + Tmp
Tmp1 = Tmp1 + "/"
Tmp = Str(jday)
Tmp = Format(tmp , "00")
Jdate = Tmp1 + Tmp
Jday1 = Jday
Jmonth1 = Jmonth
End Function
'_______________________________________________________________________________

'called from ds1307clock.lib
'Whan use Time$ and Date$ this sub's called from DS Lib to Set and Get your data
Getdatetime:
I2cstart : I2cwbyte Ds1307w : I2cwbyte 0 : I2cstart : I2cwbyte Ds1307r
I2crbyte _sec , Ack : I2crbyte _min , Ack : I2crbyte _hour , Ack
I2crbyte Weekday , Ack : I2crbyte _day , Ack : I2crbyte _month , Ack
I2crbyte _year , Nack : I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return

Setdate:
_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
I2cstart : I2cwbyte Ds1307w : I2cwbyte 4 : I2cwbyte _day
I2cwbyte _month : I2cwbyte _year : I2cstop
Return

Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart : I2cwbyte Ds1307w : I2cwbyte 0 : I2cwbyte _sec : I2cwbyte _min
I2cwbyte _hour : I2cstop
Return
'_______________________________________________________________________________

'end of file
Sub Ahang2()
'Corona :: Rythm of The Night
Sound Speaker , 65 , 1274 'C2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 87 , 954 'F2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 98 , 850 'G2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 87 , 954 'F2(1/16)
Sound Speaker , 117 , 715 'Ais2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 110 , 758 'A2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 98 , 850 'G2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 110 , 758 'A2(1/16)
Sound Speaker , 87 , 954 'F2(1/16)
Waitms 125 'P(1/16)
Wait 2
End Sub

مهمان
این نظر توسط مدیر سایت کمینه شده است

برنامت اشتباهه دوست عزیز..باید اول یه متغییر برای آلارام جدید اضافه کنی و به متغیر هم توی ایپریم تعریف کنی و یه کلید هم براش تعیرف کنی ولی شما این متغیرها رو تعریف نکردید وبعد از اون فک کنم فقط بخش کلید رو درست کردید که اونم اشتباهه چون کلید به این شکله که پس از فتن توی منوی جدید وارد یه لوپ میشه و داخل اون لوپ دائم بررسی میکنه ولی شما به این لوپ توجه نکردید و اینو تکرار کردید:
If _num = "3" Then Exit Do
Home : Lcd "B1"
Call Show1()
Loop
Cls
End If
این loop قبلش باید یه do باشه که نیست و end if هم که اصلاً هماهنگ نیس با قبلی:چشمک:

مهمان
این نظر توسط مدیر سایت کمینه شده است

درود بر شما آقایِ احمدی ، با شما تماس گرفتم در رابطه با برنامه این پروژه ، از آنجایی که با کشیدنِ برقِ 5 ولتی و ریست شدن آی سی گفته بودین که برنامه چک خواهد شد .. ممنون میشم راهنمایی کنید ...اینم فایل Bas میباشد http://s5.picofile.com/file/8120044226/Jdate5.rar.html

مهمان
این نظر توسط مدیر سایت کمینه شده است

سلام
من این پروژه رو روی برد برد بصورت کامل پیاده سازی کردم،اما هرکاری میکنم ساعت شروع بکار نمیکنه و به اینصورت نوشته شده a5:a5:a5 مطابق آموزش داده شده تمامی مراحل انجام دادم.اما باز کار نمیکنه!
خواهش میکنم راهنمایی بفرمائید.

مهمان
این نظر توسط مدیر سایت کمینه شده است

دوست عزیز مشکل شما اینه دقیقا:
باید ساعت رو در ابتدای برنامه ست کنید تا شروع به کار کنه یعنی ds1307 در ابتدای کار باید یک بار ست بشه و اگه باتریش قطع بشه باز هم باید از نو ست یشه

ست کردن هم به این صورته که ثاینه وساعت رو بهش بدی و تاریخ رو البته فکر میکنم فقط ثاینه رو هم بدی کاقیه:چشمک:

مهمان

  1. بهتر است نام و نظر خود را فارسی تایپ کنید ( برای انتشار سریع نظر یا افزودن فایل پیوست، باید وارد حساب کاربری خود شوید )
0 کاراکتر
پیوست (0 / 3)
انتشار موقعیت
کد تصویری را وارد کنید
پروژه ها
«
  • PIC micro
  • ARM micro
  • FPGA
  • پروژهPLC-wincc
  • کامپیوتر نرم افزار
  • سخت افزار
  • روباتیک
  • میکروهای قدیمی
  • الکترونیک دیجیتال
  • الکترونیک آنالوگ
  • پروژه matlab
  • #C/C++
  • آردوینو
  • esp8266
  • AVR
»
این پروژه توسط یکی از دوستان ارسال شده و یک ساعت در سایز بزرگ با میکرو pic هستش که میتونه دما و ساعت رو نمایش بده و فایل پروتیوس شماتیک و pcb رو هم داره و نکته مثبت مدار pcb سون سگمنت هستش که با استفاده از led طراحی شده و شما میتونید از همین pcb در مدارات دیگه هم استفاده کنید و خیلی جاها به کار میاد.پروژه مشابه همین با AVR که قبلاً تو سایت قرار داده بودم رو هم میتونید نگاه کنید.سون سگمنت کاتد ...
این برد آموزشی arm رو از توی اینترنت گرفتم که تمام قطعاتش smd و pcb اون نیاز به متالیزه داشت از اونجائی که تو بیشتر شهر های ایران متالیزه نمیکنند تمام قطعاتشو تبدیل به DIP کردم و گذاشتم تو سایت چند تا via زیر میکرو هست که میتونید یک سیم افشان لخت کنید یک رشته از اونو از بالا کج کنید و با کمترین مقدار لحیم بالارو با پائین فیبر اتصال بدید من امتحان کردم جواب داد همان گونه که در تصویر میبینید ...
این برنامه با زبان vhdl نوشته شده و موج pwm را بر اساس عدد وارد شده تولید و به خروجی ارسال میکند.در این برنامه عدد 30 به معنای pwm کامل و 0 به معنای بدون موج خروجی میباشد.پروژه بر اساس ise طراحی شده است و برنامه ise را میتوانید از سایت دانلود نمایید.
این پروژه در مورد ژنراتور بادی می باشد به صورتی که ما در plc ان را شبیه سازی نموده و در حالت های زمان خطای شبکه مقدار توان اکتیو و راکتیو را اندازه گیری نموده و مقدار گشتاور را با توجه به شکل های زیر می توان تغییر داد تا سیستم در یک حالت پایداری در زمان خطای شبکه بتواند به کار خود ادامه دهد این پایان نامه کارشناسی ارشد بوده است و نمونه کار در سایت های دیگر ندارد.
زبان اَسمبلی (Assembly language) یک زبان نزدیک به سخت افزار است که در رابطه ی مستیم با دستورات سخت افزار قرار دارد و در واقع هر معماری با یک زبان اسمبلی خاص خودش شناخته میشود.زبان اسمبلی در هر سخت افزار تعداد دستور متفاوت و اپرندهای مختلفی دارد و دیگر زبانهای سطح بالا بر اساس همین زبان طراحی و نوشته میشوند.
این تقسیم کننده دو عدد 16 بیتی را از ورودی گرفته و حاصل تقسیم را بر اساس خارج قسمت و باقیمانده تقسیم در خروجی نمایش میدهد.الگوریتم تقیسم بر اساس شیفت و تفریق میاشد و هنگامی که عدد خروجی کمترین مقدار را دارد یعنی مقدار باقیمانده از مقدار مقسوم علیه کمتر شود یک کلاک به معنای پایان تقسیم در خروجی ایجاد میکند و علاوه بر آن مقدار باقی مانده و خارج قسمت را در خروجی نمایش میدهد. این پروژه با نرم افزار ...
در این پروژه یک بازوی مکانیکی طراحی و با استفاده از سروو موتور به کنترل آن میپردازیم.بازوی مکانیکی را با استفاده از اتوکد طراحی و با برش لیزر تمام قطعات آن را برش میدهیم و بعد با پیچ و مهره به هم اتصال میدهیم.در این پروژه از 4 عدد سروو موتور برای کنترل تمام بازوی مکانیکی استفاده شده است که به راحتی میتوان قطعات مختلف را با آن جابجا نمود.
میکرو کنترلر AT89C52 از شرکت Atmel یک میکزو کنترلر 8 بیتی از خانواده ی 8051 است که با ساختار CMOS طراحی شده و میتواند تا 24 مگا هرتز سرعت داشته باشد.از جمله امکانات این میکرو میتوان به 32 ورودی و خروجی بودن آن و همچنین 3 عدد تایمر کانتر 8 بیتی و 8 عدد وقفه و همچنین رابط سریال در آن اشاره کرد.برای برنامه نویسی این میکرو میتوان از زبان c و کامپایلر محبوب keil بهره برد البته با bascom ...
الکترونیک دانش مطالعهٔ عبور جریان الکتریکی از مواد مختلف - مانند نیمه‌رساناها، مقاومت‌ها، القاگرها و خازن‌ها - و آثار آن است. الکترونیک همچنین به عنوان شاخه‌ای از فیزیک نظری شناخته می‌شود. طراحی و ساخت مدارهای الکترونیکی برای حل مشکلات عملی، قسمتی از مباحث موجود در مهندسی الکترونیک را تشکیل می‌دهد.
پروژه ضبط و پخش کننده صدا دارای واسط گرافیکی و امکانات پیشرفته با نرم افزار متلب را آماده کردیم.(این پروژه کامل و صد درصد تست شده است)   امکانات و قابلیتهای این پروژه: قابلیت کار با سیگنالهای صوتی تک کاناله، 8 و 16 بیتی قابلیت کار با سیگنالهای صوتی با هر فرکانس نمونه برداری در بازه 8 تا 32 کیلوهرتز امکان ضبط کردن، توقف هنگام ضبط و ادامه ضبط با واسط کاربری امکان تنظیم دقت چندیسازی و ...
در فایل زیر برای تمرین به چند سوال برنامه نویسی به زبان C به شرح زیر پاسخ داده ایم:1-برنامه ای بنویسید که 20 عدد بزرگ 40 رقمی را از وردی گرفته و آنها را صعودی مرتب نماید.2-برنامه ای بنویسید که دو عدد را بدون این که عملیات ضرب یا جمع استفاده نماید یک بار ضرب و یک بار تقسیم نمیاد.3-برنامه ای بنویسید که 20 عدد بزرگ 40 رقمی را از وردی گرفته و آنها را جمع و میانگین بگیرد.4-برنامه ای بنویسید که عددی 60 ...
سنسور DS18B20 به دلیل استفاده از یک سیم برای ارسال دیتا بسیار کاربردی و قابل استفاده در کاربردهای صنعتی است.درجه اطمینان این سنسور نسبت به سنسورهای تک سیمه دیگر بالاست لذا به کار بردن این سنسور در پروژه ای صنعتی توصیه میگردد.سنسور دماسنج DS18B20 از 9 تا 12 بیت محدوده کاری دارد و از نظر سنجش دما -55 درجه سانتی گراد و +125 درجه سانتی گراد می‌باشد. از ویژگی‌های بارز سنسور DS18B20 ارسال اطلاعات ...
ماژول ESP8266 یک ماژول قدرتمند و همه کاره در زمینه ی IOT است که در سالهای اخیر کاربردهای گسترده ای در اینترنت اشیا پیدا کرده و تنها نقطه ضعف این ماژول مصرف بالای ماژول در حدود 100 میلی آمپر و امکانات کم ماژول در حالت اسلیپ است که احتمالا در ورژنهای بعدی توسط سازنده مورد توجه قرار خواهد گرفت.در این پروژه سعی کرده ایم تا یک ماژول کاربردی شبیه به نود ام سیو NodeMCU  طراحی کنیم و با اتصال ...
این دستگاه یک ریموت کنترلر 4 کاناله است، به این معنی که قادر به کنترل ۴ وسیله برقی از راه دور با استفاده از فرستنده ها و گیرنده های رادیویی می باشد.در این پروژه از ماژولهای گیرنده ی ask استفاده شده است که ماژولهایی برای دریافت و دیکد دیتاهای ارسال شده بر اساس مدولاسیون دامنه میباشند.مدولاتور های دامنه هم ازران هستند و هم کم مصرف ولی عیب اصلی آنها نویز شدید روی موج ارسالی است که عملا در فرکانسهای ...
آموزش
«
  • میکروها
  • کامپیوتر سخت افزار
  • کاربردی
  • مکاترونیک
  • الکترونیک دیجیتال
  • الکترونیک آنالوگ
  • برق صنعتی
  • طراحی وب
  • کامپیوتر نرم افزار
  • آموزشmatlab
  • VHDL,VERILOG
  • FPGA
  • #C/C++
  • نرم افزارهای برق
  • اندروید
  • اینترنت اشیاء (IOT)
»
MPLAB یک آی دی ای (IDE) منتشر شده از شرکت میکرو چیپ برای توسعه برنامه بر روی چیپ های PIC میباشد که هم اکنون آخرین ورژن آن با نام MPLAB X منتشر شده است. اگر خود برنامه ی MPLAB X IDE رو نصب کنید فقط می توانید به زبان اسمبلی در این برنامه کد نویسی کنید برای اینکه بتونید به زبان C کد بنویسید باید MPLAB XC8 Compiler رو هم روی سیستم نصب داشته باشید. برای نصب MPLAB x شما باید جاوا را در سیستم نصب داشته ...
برای ثبت اختراع به کجا مراجعه کنیم؟ برای ثبت اختراع باید به اداره کل ثبت شرکت‌ها و مالکیت صنعتی واقع در تهران، خیابان میرداماد، تقاطع بزرگراه مدرس- میرداماد، مراجعه شود .
این پروژه ی تحت عنوان (( ربات مسیر یاب هفت سنسور )) که در سه فصل تهیه شده است ، فصل اول مستندات این پروژه به بررسی تعاریف خاصی که در زمینه رباتیک وجود دارد و همچنین موضوعات مرتبط با آن مانند تاریخچه رباتیک ، انواع رباتها ، دسته بندی رباتها  پرداخته ایم. در فصل دوم کاربرد رباتها و همچنین اجزاء رباتها را مورد بررسی قرار داده ایم. در فصل سوم ، ساختن ربات مسیر یاب ، شرح عملکرد ربات ، توضیحات ...
پس از سال ۲۰۰۰ که با فراگیر شدن اینترنت جهانی و مفهوم دهکده جهانی واژه اینترنت چیزها نیز مطرح شد که هدفش ایجاد یک سیستم یک پارچه با قابلیت کنترل از طریق شبکه بود.اما چالشهای اصلی این ایده شامل امنیت‌ و پیچیدگی سطوح اجرای و بستر نامناسب (اینترنت بستر قابل اطمینانی از نظر اتصال پایدار نیست) و همچنین نبود یک سخت افزار قدرتمند و ارزان با ارتباطی دو طرفه و پایدار با مصرف انرژی پایین که از اهداف اصلی ...
ریموت کنترل ها که به منظور کنترل از راه دور تجهیزات الکترونیکی استفاده می شوند، در بازار به صورت بصورت فیکس کد و لرن کد می باشند که در هر دو نوع این ریموت ها یک دیتای چهاربیتی به طریق کد دهی ارسال می شود. در اینجا به بررسی ویژگی ها و تفاوت های فیکس کد و لرن کد و اینکه کدام بهتر می باشد، می پردازیم.
فایرفاکس مرورگری کدباز، رایگان و انعطاف پذیر برای تمام کاربرانی است که می خواهند ضمن داشتن امنیت در اینترنت، از وب گردی لذت ببرند. معمولاً فایرفاکس انتخاب اول کاربران حرفه ای و البته برنامه نویسان و توسعه دهندگان وب است.
پایتون (Python) یک زبان برنامه نویسی تفسیری ، داینامیک و شی گرا است که می توان از آن در نرم افزار ها و تکنولوژی های متنوع بهره برد . این زبان برنامه نویسی (در ایران پیتون هم تلفظ می شود) با داشتن کتابخانه های گسترده (library)روشهای بسیار قدرتمند و حرفه ای را برای کار با زبانها و ابزار های مختلف به آسانی فراهم می کند. متن باز (اوپن سورس) بوده و یادگیری و استفاده از آن در عرض چند روز ممکن است . کد ...
شاید در نگاه اول یادگیری و کار با شبکه های عصبی رو سخت و زمان بر بدونید. البته منابع و پروژه های اندکی،به زبان فارسی در این رابطه وجود دارد و این خود یادگیری رو یه مقدار دشوار میکنه. در این فیلم آموزشی میخوام در قالب مثالی شما رو با جعبه ابزار شبکه عصبی و کار با شبکه عصبی در نرم افزار متلب آشنا کنم. قطعا اگر با چند مثال آشنا شوید و مراحل کار رو یاد بگیرید درمدت کوتاهی میتونید با شبکه ...
این خودآموز به زبان فارسی نگاشته شده و برای آشنایی مقدماتی با نحو زبان Verilog و توانایی‌های آن مفید است، مخاطب این خودآموز آن دسته از علاقه‌مندانی می‌باشند كه با زبان Verilog‌ آشنایی ندارند.زبان‌های توصیف سخت‌افزار یكی از مهمترین ابزار‌های مدرن طراحی سخت‌افزار‌ها می‌باشد كه كاربرد آنها در صنعت رو به افزایش ‌است به طوری كه امروزه عضو جدا نشدنی فرایند طراحی تا پیاده سازی سخت‌افزار‌های مدرن به شمار ...
نرم افزار ISE Design Suite محصولی از کمپانی Xilinx است که برای بهینه سازی نیرو و هزینه، از طریق بهره وری طراحی بیشتر، تولید شده است است. در واقع ابزارهای طراحی ISE با ارائه ی تکنولوژی هوشمند clock-gating، برای اولین بار، مصرف نیرو را تا سی درصد کاهش داده اند. همچنین این مجموعه نرم افزاری جدید پیشرفت هایی را در رزرو طراحی timing-driven، پشتیبانی برای طراحی plug-and-play و یک جریان طراحی بصری با ...
همان طور که می دانید توسط سوکت ها ما می توانیم میان برنامه ها و نرم افزارهای خود از راه دور ارتباط برقرار کنیم که البته این کار بین کامپیوترهای client و server انجام می شود.کلاینت در حقیقت، خدمات کامپیوتر بزرگتر را درخواست می کند. فرضا این خدمات می تواند شامل جست و جوی اطلاعات و ارسال انها به کلاینت باشد مانند هنگامی که یک پایگاه داده در وب مورد پرس و جو قرار می گیرد. نمونه های دیگری از این ...
سیستمهای کنترلی دستگاههای قدیمی علاوه بر استهلاک بالا و خرابیهای مکرر، راندمان کاری دستگاه را کاهش و زمان توقف و بلا استفاده بودن دستگاه را افزایش میدهند. با تبدیل این سیستمهای قدیمی به کنترلرهای مدرن و جدید علاوه بر اینکه زمان خواب دستگاه و خرابی های مکرر کاهش می یابد، باعث عیب یابی بسیار آسان، هزینه تعمیرات و نگهداری کمتر و افزایش راندمان تولید میشود. از دیگر مزایای این سیستمها ثبت زمان کارکرد ...
رنگ های مختلفی که در طراحی لایه ها استفاده می شود  را می توان از ترکیب RGB یا همان Red Green Blue ایجاد کرد.برای هر رنگ 255 قطره داریم و قصد داریم رنگها را در شکل hex نمایش دهیم. همونطور که میدونید اعداد در مبنای هگزادسیمال به صورت زیر نمایش داده می شوند : 
هر روزه وسایل جدیدی، به اینترنت متصل می‌شوند. ساعت‌های هوشمند نمونه‌ای از این وسایل محسوب می‌شوند. خودروها، سیستم روشنایی خانه‌ها، یخچال‌ها، چراغ‌های راهنمایی و رانندگی، همگی وسایلی هستند که به عنوان یک واحد مستقل به اینترنت افزوده می‌شوند. امروزه کامپیوترها، دیگر الزاماً به آن شکل سنتی که ما می‌شناسیم (صفحه کلید و کیس و مانیتور)‌ نیستند. بلکه در قالب قطعات کوچک، میکروکنترلرها، تراشه‌های ...
مقالات
«
  • کامپیوتر
  • برق-الکترونیک
  • طرح توجیهی
  • گزارش کار آموزی
  • برق قدرت
»
سیستم محاسباتی گرید از گروهی از برنامه ها و منابع که در سراسر ماشینهای گرید گسترده شده اند تشکیل میشود. گرید دارای محیطی پویا و منابع توزیعشده غیرمتمرکز است. یکی از مهمترین موضوعات درزمینهی اجرای کارها در محیط توزیع شده مسئله زمانبندی کارها میباشد، هدف از زمانبندی، واگذاری بهینه و مناسب کارها به وظایف است. زمانبندی جز مسائل NP-Complete میباشد و الگوریتمهای قطعی برای حل اینگونه مسائل مناسب نیستند ...
امــروزه بحران مصرف برق شايد مسئله اي مشكل سـاز براي آينده كشورمـان باشد ، با كاهش و صـرفه جويي در مصـرف برق شايد بتوان نيمي از اين مشكل را حل نمود ، اما با كمي تدبير مي توان كمك بزرگي به آينده و اقتصاد نمود . ساخت دستگاه آنالايزر (VCA005) تنها گامي در بهينه سازي مصرف انرژي مي باشد ، اين دستگاه با آناليز كامل از مصـرف انرژي نموداري بصورت ماكزيمم و مينيمم مصرف در اختيار كاربر قرار مي دهـد ، ...
در این گزارش کارآموزی به مراحل مختلف انجام شده روی شیر خام برای تولید انواع فرآوردهای آن پرداخته شده،همچنین انواع دستگاهای مختلف کارخانه شیر و قسمتهای مختلف این دستگاها(میزان تولید، ظرفیت و...) ذکر شده است. در یک کارخانه شیر انواع و اقسام سنسور ها برای کنترل مراحل مختلف تولید به کار برده میشود. در بخش بعدی این گزارش مهمترین سنسور های به کار رفته در چرخه تولید کارخانه شیر و عملکرد آنها را شرح داده ...
پایان نامه ی پیش رو که در 242 صفحه جمع آوری شده است کاملترین پایان نامه موجود در زمینه ی بررسی تلفات در بخش توزیع و روش های کاهش آن میباشد. شبكه قدرت شامل سه بخش توليد ،انتقال و توزيع نيرو است . انرژي الكتريكي پس از توليد در نيروگاهها و عبور از شبكه هاي انتقال و توزيع به مصرف كنندگان مي رسد در اين مسير مقداري از انرژي بدلايل مختلف تلف مي شود قدمت بحث تلفات در بخش توزیع به اندازه قدمت صنعت برق مي ...