درود بر همگی
دوستان من میخوام با سون سگمنت ساعت و تاریخ دیجیتالی رو با ds1307 نمایش بدم اونم به صورت دائمی یعنی هم تاریخ هم ساعت نمایش داده بشه یه سری دستورات رو استفاده کردم اما موقع شبیه سازی ایراد داره اگه میشه کمک کنید چطوری تابع تبدیل تاریخ رو به این برنامه اضافه کنم که جداگانه تاریخ رو هم برام نمایش بده؟ فایل برنامه و شبیه سازی رو قرار میدم ممنون میشم کمک کنید
لینک برنامه:
http://upir.ir/934/saat-ba-ds1307.zip
دوستان من میخوام با سون سگمنت ساعت و تاریخ دیجیتالی رو با ds1307 نمایش بدم اونم به صورت دائمی یعنی هم تاریخ هم ساعت نمایش داده بشه یه سری دستورات رو استفاده کردم اما موقع شبیه سازی ایراد داره اگه میشه کمک کنید چطوری تابع تبدیل تاریخ رو به این برنامه اضافه کنم که جداگانه تاریخ رو هم برام نمایش بده؟ فایل برنامه و شبیه سازی رو قرار میدم ممنون میشم کمک کنید
کد:
$regfile = "m32def.dat"
$crystal = 8000000
Config Porta = Output
Config Portb = Output
Config Portd = Output
Config Pinc.5 = Input
Config Pinc.6 = Input
Config Pinc.7 = Input
$lib "Ds1307clock.lib"
Config Sda = Portc.1
Config Scl = Portc.0
Dim Second As Byte
Dim Minute As Byte
Dim Hour As Byte
Dim H2 As Word
Dim H1 As Word
Dim M2 As Word
Dim M1 As Word
Dim S2 As Word
Dim S1 As Word
Const Ds1307w = &HD0
Const Ds1307r = &HD1
Gosub Ds1307h
Main:
Do
Gosub Ds1307
Gosub Korosh
Gosub Keyscan
Loop
Korosh:
Second = Makedec(second)
Minute = Makedec(minute)
Hour = Makedec(hour)
If Second > 59 Then Second = 0
If Minute > 59 Then Minute = 0
If Hour > 23 Then Hour = 0
H1 = Hour / 10
H2 = Hour Mod 10
M1 = Minute / 10
M2 = Minute Mod 10
S1 = Second / 10
S2 = Second Mod 10
Set Portb.1
Reset Portb.2
Reset Portb.3
Reset Portb.4
Reset Portb.5
Reset Portb.6
Porta = Lookup(h2 , Dta)
Waitms 2
Reset Portb.1
Set Portb.2
Reset Portb.3
Reset Portb.4
Reset Portb.5
Reset Portb.6
Porta = Lookup(h1 , Dta)
Waitms 2
Reset Portb.1
Reset Portb.2
Set Portb.3
Reset Portb.4
Reset Portb.5
Reset Portb.6
Porta = Lookup(m2 , Dta)
Waitms 2
Reset Portb.1
Reset Portb.2
Reset Portb.3
Set Portb.4
Reset Portb.5
Reset Portb.6
Porta = Lookup(m1 , Dta)
Waitms 2
Reset Portb.1
Reset Portb.2
Reset Portb.3
Reset Portb.4
Set Portb.5
Reset Portb.6
Porta = Lookup(s2 , Dta)
Waitms 2
Reset Portb.1
Reset Portb.2
Reset Portb.3
Reset Portb.4
Reset Portb.5
Set Portb.6
Porta = Lookup(s1 , Dta)
Waitms 2
Return
Ds1307:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Ds1307r
I2crbyte Second , Ack
I2crbyte Minute , Ack
I2crbyte Hour , Nack
I2cstop
Return
Ds1307h:
If Second > 59 Then Second = 0
Second = Makebcd(second)
If Minute > 59 Then Minute = 0
Minute = Makebcd(minute)
If Hour > 23 Then Hour = 0
Hour = Makebcd(hour)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Second
I2cwbyte Minute
I2cwbyte Hour
I2cstop
Return
Keyscan:
Debounce Pinc.5 , 0 , Yseco , Sub
Debounce Pinc.6 , 0 , Ymin , Sub
Debounce Pinc.7 , 0 , Yhour , Sub
Return
Yseco:
Incr Second
If Second > 59 Then Second = 0
Second = Makebcd(second)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte Second
I2cstop
Return
Ymin:
Incr Minute
If Minute > 59 Then Minute = 0
Minute = Makebcd(minute)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 1
I2cwbyte Minute
I2cstop
Return
Yhour:
Incr Hour
If Hour > 23 Then Hour = 0
Hour = Makebcd(hour)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 2
I2cwbyte Hour
I2cstop
Return
End
Dta:
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90 , &HBF
لینک برنامه:
http://upir.ir/934/saat-ba-ds1307.zip






دیدگاه