ايران ويج

نسخه‌ی کامل: نمايش متن در پروژه ساعت
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام من اين پروژه ساعتو (ساعت و تقويم با 1307 و مگا8) دانلود كردم من يك متني دارم كه ميخوام هر 1 دقيقه يا 25 ثانيه اين پيام تو lcd نشون داده بشه ولي نمي شه چون وقتي از دستور ويت استفاده مي كنم 25 ثانيه مكث ميكنه و بعد پيام من نمايش داده ميشه بعد ثانيه شمار ميره 50Sad
لطفا كمك كنيد

متن من :
کد:
lcd "salam khoobi ?"

كد ساعت و تقويم :

کد:
$regfile = "m8def.dat"
$crystal = 8000000


Declare Function M_kabise(byref Sal As Word)as Byte
Declare Function Sh_kabise(byref Sal As Word)as Byte
'-----------------------------------------------------
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , _
Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.0 , Rs = Portb.1
Cursor Off
'-----------------------------------------------------

Config Sda = Portd.7
Config Scl = Portd.6
'****************************
Const Ds1307w = &HD0
Const Ds1307r = &HD1


Dim _sec As Byte
Dim _min As Byte
Dim _hour As Byte
Dim _year As Word
Dim Weekday As Byte
'--------------
Dim M_day As Word
Dim Sh_day As Word
Dim M_year As Word
Dim Sh_year As Word
Dim M_month As Word
Dim Sh_month As Word
Dim Kabise As Byte
Dim Kole_roz_m As Word
Dim Kole_roz_sh As Word
'-------------

'********************************

Dim Conter1 As Word
Dim Conter2 As Wor
For M_month = 1 To 12

If Kole_roz_m < 31 Then Exit For
Kole_roz_m = Kole_roz_m - Day_of_month(m_month)

Next


If Kole_roz_m > Day_of_month(m_month) Then

Kole_roz_m = Kole_roz_m - Day_of_month(conter1)
Incr M_month

End If

M_day = Kole_roz_m

Return


End




Function M_kabise(byref Sal As Word)as Byte

Local T1 As Integer
Local T2 As Integer
Local T3 As Integer
Local B As Byte
'=========================
T1 = Sal Mod 4
T2 = Sal Mod 100
T3 = Sal Mod 400
B = 0
'=========================
'------
If T1 = 0 And T2 <> 0 Then
B = 1
End If
'------
If T2 = 0 And T3 = 0 Then
B = 1
End If
'------
M_kabise = B

End Function


Function Sh_kabise(byref Sal As Word)as Byte

Local T1 As Integer
Local B As Byte
'==================
T1 = Sal Mod 33
B = 0
'==================
'------
If T1 = 1 Or T1 = 5 Or T1 = 9 Or T1 = 13 Or T1 = 17 Or T1 = 22 Or _
T1 = 26 Or T1 = 30 Then

B = 1

End If
'------
Sh_kabise = B

End Function
سلام
این برنامه ای که شما گذاشتین خیلی پیچیده هست و من سادش کردم و یه برنامه ساعت ساده براتون گذاشتم
کد:
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.0 , Rs = Portb.1
'*****************************I2C***********************************************
Config Sda = Portd.7
Config Scl = Portd.6
'*****************************PORT**********************************************
Config Portc = Output
Config Portb = Output
'*******************************************************************************
Dim S As Byte , M As Byte , H As Byte
Do
'*****************************I2C***********************************************
I2cstart
I2cwbyte &HD0
I2cwbyte 0
I2cstart
I2cwbyte &HD1
I2crbyte S , Ack
I2crbyte M , Ack
I2crbyte H , Nack
I2cstop
'************************************************
S = Makedec(s) : M = Makedec(m) : H = Makedec(h)
If H > 100 Then H = 24
If M > 100 Then M = 59
If S > 100 Then S = 59
If H > 24 Then H = 0
If M > 59 Then M = 0
If S > 59 Then S = 0
Home
Lcd H ; ":" ; M ; ":" ; S ; " "
تا اینجا ساعته ولی بایه دستور شرطی می تونی روی ال سی دی بنویسی
If S < 25 Then
Home L
Lcd "salam khobi"
Else
Home L
Lcd " "
End If
'*******************************************************************************
Loop
End 'end program
'*****************************END MAIN******************************************
همیشه سعی کن کمتر از wait استفاده کنی چون دقیق نیست
موفق باشید
ممنون دوست عزيز ولي من چون از آي سي 1307 استفاده مي كنم برنامش اينطوري طولانيه و نمي دونم متنو كجاي اين برنامه قرار بدم
نقل قول: تا اینجا ساعته ولی بایه دستور شرطی می تونی روی ال سی دی بنویسی
نمي شه اين دستور شرطيو تو برنامه اصلي (ساعت با آي سي 1307) گذاشت ؟
نقل قول: تا اینجا ساعته ولی بایه دستور شرطی می تونی روی ال سی دی بنویسی
این نوشتم که جای دستورات شرطی رو بدونی، دستورات شرطی که اینها هستن
کد:
If S < 25 Then
Home L
Lcd "salam khobi"
Else
Home L
Lcd "            "
End If
حالا تو do-loop اصلی برنامت هر کجا که دوست داشتی بنویس مشکلی نداره
موفق باشیدWink