رفتن به مطلب

کمک برای ساخت ساعت دیجیتال باavrوسون سگمنت


gmaissam

ارسال های توصیه شده

  • پاسخ 87
  • ایجاد شد
  • آخرین پاسخ

بهترین ارسال کنندگان این موضوع

بهترین ارسال کنندگان این موضوع

خب ما از این تراشه به عنوان RTC خارجی استفاده میکنیم که بتونه توسط باطری بک آپ و حافظه داخلیش موندگاری و ریست نشدن زمان مارو تضمین کنه پس باید برای بهره گیری از حافظه اش از دستورایی استفاده کنیم:

 

I2cwbyte برای خوندن و از I2cbyte برای نوشتن داخل حافظه آی سی DS1307

 

البته تو خود بیسکام آماده اش هست

  • Like 3
لینک به دیدگاه

سلام

koroshe_Hakhamanesh

عزیز

آقا من با مطالعه سای های مختلف بالاخره تونستم برنامشو بنویسم

ولی سوالات زیادی برام بوجود اومده

برنامه رو میزارم ببیننید

تو پروتئوس کار میکنه

راستش گیج شدم ونمی تونم کلید ست براش بزارم

راهنمایی میفرمایید:ws3:

  • Like 3
لینک به دیدگاه

اینم برنامه ای که نوشتم..فکرکنم خالی از اشکال نباشه

باید بهش کلید اضافه کنم

 

 

$regfile = "m32def.dat"

$crystal = 4000000

$hwstack = 40

$swstack = 16

$framesize = 32

$lib "ds1307clock.lib"

Const Ds1307w = &HD0

Const Ds1307r = &HD1

Config Porta = Output

Config Portd = Output

Config Portc = Output

Config Pinb.5 = Input

Config Scl = Portb.1

Config Sda = Portb.0

Dim _sec As Byte

Dim _min As Byte

Dim _hour As Byte

Dim Second As Byte

Dim Minute As Byte

Dim Hours As Byte

_sec = 1

_min = 1

Do

Gosub Ds1307

_sec = Makedec(_sec)

_min = Makedec(_min)

_hour = Makedec(_hour)

If _sec > 59 Then _sec = 0

Second = Makebcd(_sec)

Portd = Second

If _min > 59 Then _min = 0

Minute = Makebcd(_min)

Portc = Minute

If _hour > 23 Then _hour = 0

Hours = Makebcd(_hour)

Porta = Hours

Loop

Ds1307:

I2cstart

I2cwbyte Ds1307w

I2cwbyte 0

I2cstart

I2cwbyte Ds1307r

I2crbyte _sec , Ack

I2crbyte _min , Ack

I2crbyte _hour , Nack

I2cstop

Return

End

  • Like 3
لینک به دیدگاه

سلام

چرا؟بد نوشتم؟

:w58:چندتا پروژه دیگه رو آنالیز کردم....تابالاخره نوشتمش البته با کلی دردسرو آزمون وخطا

ولی تو برنامه ست تایمش موندم جور نمشه

شما میتونی یه حالی بهش بدی؟

  • Like 4
لینک به دیدگاه
سلام

چرا؟بد نوشتم؟

:w58:چندتا پروژه دیگه رو آنالیز کردم....تابالاخره نوشتمش البته با کلی دردسرو آزمون وخطا

ولی تو برنامه ست تایمش موندم جور نمشه

شما میتونی یه حالی بهش بدی؟

 

همه خطهاشو میتونی آنالیز کنی؟الان واسه شاسی ها ننوشتی که :ws38:

  • Like 3
لینک به دیدگاه
همه خطهاشو میتونی آنالیز کنی؟الان واسه شاسی ها ننوشتی که :ws38:

برای تنظیمات،الان نوشتم با کمک یکی از دوستان

با این حال موقع تنظیم دقیقه،تا 10 منظم میشه زیادش کرد ولی از 10میپره 17و24و37و56

درمورد تنظیم ساعت هم تا10 خوبه ولی از 10میپره 17 وصفر مشه

اشکالش چی میتونه باشه

اینم برنامه اپدیت شده:::::

 

 

 

 

 

$regfile = "m32def.dat"

$crystal = 4000000

$hwstack = 40

$swstack = 16

$framesize = 32

$lib "ds1307clock.lib"

Const Ds1307w = &HD0

Const Ds1307r = &HD1

Config Portc = Output

Config Porta = Output

Config Portd = Output

Config Pinb.5 = Input

Config Scl = Portb.1

Config Sda = Portb.0

Dim _sec As Byte

Dim _min As Byte

Dim _hour As Byte

Dim Second As Byte

Dim Minute As Byte

Dim Hours As Byte

_sec = 1

_min = 1

Do

Gosub Ds1307

Gosub Tanzimat

_sec = Makedec(_sec)

_min = Makedec(_min)

_hour = Makedec(_hour)

If _sec > 59 Then _sec = 0

Second = Makebcd(_sec)

Portd = Second

If _min > 59 Then _min = 0

Minute = Makebcd(_min)

Portc = Minute

If _hour > 23 Then _hour = 0

Hours = Makebcd(_hour)

Porta = Hours

Loop

 

Ds1307:

I2cstart

I2cwbyte Ds1307w

I2cwbyte 0

I2cstart

I2cwbyte Ds1307r

I2crbyte _sec , Ack

I2crbyte _min , Ack

I2crbyte _hour , Nack

I2cstop

Tanzimat:

Debounce Pinb.5 , 0 , Mine , Sub

Debounce Pinb.7 , 0 , Hour , Sub

Return

Mine:

Incr _min

If _min > 59 Then _min = 0

_min = Makebcd(_min)

I2cstart

I2cwbyte Ds1307w

I2cwbyte 1

I2cwbyte _min

I2cstop

Return

Hour:

Incr _hour

If _hour > 23 Then _hour = 0

_hour = Makebcd(_hour)

I2cstart

I2cwbyte Ds1307w

I2cwbyte 2

I2cwbyte _hour

I2cstop

Return

End

  • Like 4
لینک به دیدگاه
برای تنظیمات،الان نوشتم با کمک یکی از دوستان

با این حال موقع تنظیم دقیقه،تا 10 منظم میشه زیادش کرد ولی از 10میپره 17و24و37و56

درمورد تنظیم ساعت هم تا10 خوبه ولی از 10میپره 17 وصفر مشه

اشکالش چی میتونه باشه

اینم برنامه اپدیت شده:::::

 

 

 

 

 

$regfile = "m32def.dat"

$crystal = 4000000

$hwstack = 40

$swstack = 16

$framesize = 32

$lib "ds1307clock.lib"

Const Ds1307w = &HD0

Const Ds1307r = &HD1

Config Portc = Output

Config Porta = Output

Config Portd = Output

Config Pinb.5 = Input

Config Scl = Portb.1

Config Sda = Portb.0

Dim _sec As Byte

Dim _min As Byte

Dim _hour As Byte

Dim Second As Byte

Dim Minute As Byte

Dim Hours As Byte

_sec = 1

_min = 1

Do

Gosub Ds1307

Gosub Tanzimat

_sec = Makedec(_sec)

_min = Makedec(_min)

_hour = Makedec(_hour)

If _sec > 59 Then _sec = 0

Second = Makebcd(_sec)

Portd = Second

If _min > 59 Then _min = 0

Minute = Makebcd(_min)

Portc = Minute

If _hour > 23 Then _hour = 0

Hours = Makebcd(_hour)

Porta = Hours

Loop

 

Ds1307:

I2cstart

I2cwbyte Ds1307w

I2cwbyte 0

I2cstart

I2cwbyte Ds1307r

I2crbyte _sec , Ack

I2crbyte _min , Ack

I2crbyte _hour , Nack

I2cstop

Tanzimat:

Debounce Pinb.5 , 0 , Mine , Sub

Debounce Pinb.7 , 0 , Hour , Sub

Return

Mine:

Incr _min

If _min > 59 Then _min = 0

_min = Makebcd(_min)

I2cstart

I2cwbyte Ds1307w

I2cwbyte 1

I2cwbyte _min

I2cstop

Return

Hour:

Incr _hour

If _hour > 23 Then _hour = 0

_hour = Makebcd(_hour)

I2cstart

I2cwbyte Ds1307w

I2cwbyte 2

I2cwbyte _hour

I2cstop

Return

End

 

مشکل مقاومت پول آپ ،داشتم همینو میگفتم دیگه :a030:

  • Like 4
لینک به دیدگاه

سلام دوست عزیز

این کدهارو تصحیح کن ببین جواب میگیری یانه

Mine:

Minute = Makedec(minute)

Incr _min

If _min > 59 Then _min = 0

_min = Makebcd(_min)

I2cstart

I2cwbyte Ds1307w

I2cwbyte 1

I2cwbyte _min

I2cstop

Return

Hour:

Hours = Makedec(Hours)

Incr _hour

If _hour > 23 Then _hour = 0

_hour = Makebcd(_hour)

I2cstart

I2cwbyte Ds1307w

I2cwbyte 2

I2cwbyte _hour

I2cstop

Return

End

  • Like 4
لینک به دیدگاه

×
×
  • اضافه کردن...