PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : 2 سوال در مورد LCD



esmaeil57
11-03-2009, 12:06
با سلام
1- چگونه میشه ساعت روی LCD را که در حین کار است استوپ کنیم بدون اینکه ریست شود و باز دوباره بکار بیندازیم یعنی از ادامه کار؟
2- آیا میشه وقتی که LCD مشغول نمایش مثلا ساعت و تایمر و....است هر چندگاهی عبارات متنی را بعنوان تبلیغ نمایش بدیم بعد دوباره عملیات قبلیمون بیاد رو صفحه بدون اختلال در کارشان؟
اگه میشه با چه دستوراتی؟
ممنونم

kavir
12-03-2009, 02:35
سلام
1.خوب ساعت داره کار می کنه ولی شما روی ال سی دی نشون نده و در متغییر ذخیره کنید
2.بله می تونید
3.اینطوری فرض می گیریم که شما از تایمر برای ساعت هم استفاده کردید
مثلا یک متغییر در نظر بگیرید که تا 3 ثانیه (عدد 3) رسید که پیام خاصی روی ال سی دی نشون بده
البته این کار رو در حالتی انجام بدین که تایمر به صورت وقفه ای باشه
این سوالات خیلی ساده هستند و به سادگی می تونید این کارهایی که می خواین انجام بدین
شما برنامه رو استارت بزن بعدش کمک می کنیم

hadi-e
13-03-2009, 19:53
این برنامه است
$regfile = "M8def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = _
Portc.3 , Db7 =Portc.4 , E = Portd.2 , Rs = Portd.3
Ddrd.5 = 0 : Portd.5 = 1
Ddrd.4 = 0 : Portd.4 = 1
Config Lcd = 16 * 2
Deflcdchar 1 , 32 , 32 , 32 , 21 , 21 , 31 , 32 , 32 ' replace ? with number (0-7)
Deflcdchar 2 , 8 , 8 , 8 , 8 , 8 , 15 , 32 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 32 , 32 , 7 , 4 , 4 , 31 , 32 , 32 ' replace ? with number (0-7)
Deflcdchar 4 , 32 , 12 , 32 , 17 , 17 , 31 , 32 , 32 ' replace ? with number (0-7)
Declare Sub Hour
Declare Sub Minute
Dim S As Byte
Dim M As Byte
Dim H As Byte
Saat:
S = 0
M = 0
H = 1
Cls
home
Lcd Chr(4)
Lcd Chr(3)
Lcd Chr(2)
Lcd Chr(1)
Do
If Pind.4 = 0 Then Call Minute
If Pind.5 = 0 Then Call hour
Locate 2 , 1
Lcd " " ; H ; ":" ; M ; ":" ; S
Waitms 112
Incr S
If S > 59 Then
S = 0
Incr M
Shiftcursor Left , 2
Lcd " "
If M > 59 Then
Incr H
M = 0
If H > 12 Then
jmp saat
End If
End If
End If
Loop
End

Minute:
Incr M
If M > 59 Then
M = 0
End If
Return

hour:
Incr H
If H > 12 Then
H = 1
End If
Return

کلید ها به صورت pull up است
متشکرم :wink:

hadi-e
13-03-2009, 19:54
این برنامه است
$regfile = "M8def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = _
Portc.3 , Db7 =Portc.4 , E = Portd.2 , Rs = Portd.3
Ddrd.5 = 0 : Portd.5 = 1
Ddrd.4 = 0 : Portd.4 = 1
Config Lcd = 16 * 2
Deflcdchar 1 , 32 , 32 , 32 , 21 , 21 , 31 , 32 , 32 ' replace ? with number (0-7)
Deflcdchar 2 , 8 , 8 , 8 , 8 , 8 , 15 , 32 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 32 , 32 , 7 , 4 , 4 , 31 , 32 , 32 ' replace ? with number (0-7)
Deflcdchar 4 , 32 , 12 , 32 , 17 , 17 , 31 , 32 , 32 ' replace ? with number (0-7)
Declare Sub Hour
Declare Sub Minute
Dim S As Byte
Dim M As Byte
Dim H As Byte
Saat:
S = 0
M = 0
H = 1
Cls
home
Lcd Chr(4)
Lcd Chr(3)
Lcd Chr(2)
Lcd Chr(1)
Do
If Pind.4 = 0 Then Call Minute
If Pind.5 = 0 Then Call hour
Locate 2 , 1
Lcd " " ; H ; ":" ; M ; ":" ; S
Waitms 112
Incr S
If S > 59 Then
S = 0
Incr M
Shiftcursor Left , 2
Lcd " "
If M > 59 Then
Incr H
M = 0
If H > 12 Then
jmp saat
End If
End If
End If
Loop
End

Minute:
Incr M
If M > 59 Then
M = 0
End If
Return

hour:
Incr H
If H > 12 Then
H = 1
End If
Return

کلید ها به صورت pull up است
متشکرم :wink: