ايران ويج

نسخه‌ی کامل: تابلو روان با LCD 16*2
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4 5
مهندس این برنامه رو تست کن :

کد php:
$regfile = "m16def.dat" : $crystal = 1000000

Config Lcdpin 
= Pin , Rs = Pinc.0 , Db4 = Pinc.4 , Db5 = Pinc.5 , Db6 = Pinc.6 , Db7 = Pinc.7 , E = Pinc.2
Config Lcd 
= 16 * 2 : Cursor Off : Cls

Dim Ss 
As String * 255 , S As String * 16
Dim B 
As Byte , C As Byte , A As Byte

Ss 
= "happy birthday to you i wish you will be happy - www.forum.iranled.com - A.N.T"

Do

   
B = Len(ss)

   If 
B < 17 Then :

      For 
A = 16 To 1 Step -1
         S 
= Mid(ss , A , 1 ) : Locate 1 , A : Lcd S
         Waitms 200
      Next

      Wait 1

      
For A = 1 To 16
         Locate 1 
, A : Lcd " "
         
Waitms 200
      Next

      Wait 1

   
Else :

      
S = Left(ss , 16)

      For 
A = 15 To 1 Step -1
         Locate 1 
, A : Lcd S
         Waitms 200
      Next

      C 
= B - 16

      
For A = 2 To C
         S 
= Mid(ss , A , 16 ) : Locate 1 , 1 : Lcd S
         Waitms 200
      Next

      
For A = 16 To 1 Step -1
         S 
= Right(ss , A) : Locate 1 , 1 : Lcd S ; " "
         
Waitms 200
      Next

      Locate 1 
, 1 : Lcd " " : Wait 1

   End 
If

Loop

End 
کد php:
$regfile = "m16def.dat"
$crystal = 8000000
Config Portc 
= Output
Config Lcdpin 
= Pin , Rs = Pinc.0 , Db4 = Pinc.4 , Db5 = Pinc.5 , Db6 = Pinc.6 , Db7 = Pinc.7 , E = Pinc.2
Config Lcd 
= 16 * 2 : Cursor Off : Cls
Dim S 
As String * 22 , N As Byte , M As String * 16 , A As Byte , K As String * 1
Do
For 
N = 16 To 1 Step -1

Locate 1 
, N
S 
= "happy birthday to you"
M = Left(s , 16)
Lcd M
Waitms 200

Next
Do
For 
N = 2 To 1 Step -1
Cls
Home
Locate 1 
, N
S 
= "happy birthday to you"
K = Mid(s , A , 16)
Incr A
Lcd K
Waitms 200
Loop Until A 
= 5
Next
Loop 


اخرش اینو نوشتم تحویل دادم ممنونم ازتون مهند س


برنامه ای که گذاشتیدو تست کردم عالی بود . حیف شد که دیر رسید به دستم .
مهندس من تازه برنامشو ظهری کامل تر کردم !


بگیرد تا توضیحاتشو بدم !

با فشردن کلید اینتر می تونین متن مورد نظر رو وارد کنی !

با فشار دوباره اینتر متن نمایش داده می شه !

در هنگام نمایش می تونید با کلید های 0 تا 9 صفحه کلید سرعت نمایش رو تغییر بدین !

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

تقریبا یه تابلو روان کوچولو شد !

نکته جالب تو نمایش حروف هستش !
یعنی بین یه متن 16 کارکتری و کمتر یا یه متن بیشتر از 16 کارکتر فرق می ذاره برای نمایشش ! ( خودتون تست کنین منظورمو می فهمین )
کد php:
$regfile = "m16def.dat" : $crystal = 1000000

Config Lcdpin 
= Pin , Rs = Pinc.0 , Db4 = Pinc.4 , Db5 = Pinc.5 , Db6 = Pinc.6 , Db7 = Pinc.7 , E = Pinc.2
Config Lcd 
= 16 * 2 : Cursor Off : Cls

Dim Ss 
As String * 255 , S As String * 16
Dim B 
As Byte , C As Byte , A As Byte

Ss 
= "happy birthday to you i wish you will be happy - www.forum.iranled.com - A.N.T"

Do

   
B = Len(ss)

   If 
B < 17 Then :

      For 
A = 16 To 1 Step -1
         S 
= Mid(ss , A , 1 ) : Locate 1 , A : Lcd S
         Waitms 200
      Next

      Wait 1

      
For A = 1 To 16
         Locate 1 
, A : Lcd " "
         
Waitms 200
      Next

      Wait 1

   
Else :

      
S = Left(ss , 16)

      For 
A = 15 To 1 Step -1
         Locate 1 
, A : Lcd S
         Waitms 200
      Next

      C 
= B - 16

      
For A = 2 To C
         S 
= Mid(ss , A , 16 ) : Locate 1 , 1 : Lcd S
         Waitms 200
      Next

      
For A = 16 To 1 Step -1
         S 
= Right(ss , A) : Locate 1 , 1 : Lcd S ; " "
         
Waitms 200
      Next

      Locate 1 
, 1 : Lcd " " : Wait 1

   End 
If

Loop

End 

باسلام
آقای t3r!p3000 ممنون ازبرنامه ات.
چیکارکنم که این برنامه در سطر دوم نشان داده شود(lowerline رادرکجای برنامه قراردهم)
ممنون
مهندس با اجازت پستتو ویرایش کردم تا مرتب تر دیده بشه !


هر جا این دستور رو دیدین :

کد:
Locate 1 , A

به جای 1 عدد 2 رو بذارین !!!

مثلا دستور زیر تو برنامه :

کد php:
Locate 1 , 1 

می شه این :

کد php:
Locate 2 , 1 

کلا هر چی دستور Locate رو دیدین عدد اولش که نشون دهنده ستون نمایش هستش رو 2 کنین !!!
ممنون
من میخواهم برنامه ای که درزیرنوشتم درسطراول وبرنامه بالایی درسطردوم بطورهمزمان نشان داده شوند.

کد php:
[php]$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd 
= 16 * 2
Config Lcdpin 
= Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
Config Pind.0 
= Input
Config Pind.1 
= Input
Dim F 
As Word
F 
= 0
Cls
Lcd F
Waitms 107
Do
If 
Pind.0 = 1 Then
Incr F
Cls
Lcd F
Waitms 165
End 
If
If 
Pind.1 = 1 Then
Decr F
Cls
Lcd F
Waitms 165
End 
If
Loop 

ممنون میشم بازم راهنماییم کنید
با اجازت بازم پستتو ویرایش کردم


خوب هر جا که نوشتی :

کد php:
Lcd F 

این دو دستور رو زیرش اضافه کن !

کد php:
Home L
Lcd F 
نه اشکال نداره خیلی هم خوب میشه بعد ازویرایش من خودم بلدنیستم.
من برنامه کلی ام رابصورت زیر نوشتم اما درهر دوسطر فقط برنامه سطر اول رانشان میدهد ودرضمن سرعتش هم خیلی زیاد می شود...

کد php:
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd 
= 16 * 2
Config Lcdpin 
= Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
Config Pind.0 
= Input
Config Pind.1 
= Input
Dim F 
As Word
F 
= 0
Cls
Lcd F
Home L
Lcd F
Waitms 107
Do
If 
Pind.0 = 1 Then
Incr F
Cls
Lcd F
Home L
Lcd F
Waitms 165
End 
If
If 
Pind.1 = 1 Then
Decr F
Cls
Lcd F
Home L
Lcd F
Waitms 165
End 
If
Loop 

کد php:
$regfile = "m8def.dat" : $crystal = 1000000

Config Lcdpin 
= Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
Config Lcd 
= 16 * 2 : Cursor Off : Cls

Dim Ss 
As String * 255 , S As String * 16
Dim B 
As Byte , C As Byte , A As Byte

Ss 
= "www.iranled.com"

Do

 
B = Len(ss)

 If 
B < 17 Then :

 For 
A = 16 To 1 Step -1
 S 
= Mid(ss , A , 1 ) : Locate 2 , A : Lcd S
 Waitms 500
 Next

 Wait 1

 
For A = 1 To 16
 Locate 2 
, A : Lcd " "
 
Waitms 500
 Next

 Wait 1

 
Else :

 
S = Left(ss , 16)

 For 
A = 15 To 1 Step -1
 Locate 2 
, A : Lcd S
 Waitms 500
 Next

 C 
= B - 16

 
For A = 2 To C
 S 
= Mid(ss , A , 16 ) : Locate 2 , 1 : Lcd S
 Waitms 500
 Next

 
For A = 16 To 1 Step -1
 S 
= Right(ss , A) : Locate 2 , 1 : Lcd S ; " "
 
Waitms 500
 Next

 Locate 2 
, 1 : Lcd " " : Wait 1

 End 
If

Loop

End 
مهندس اینو یه نگاه کن : [تصویر:  help.gif]
فقط کافیه دستورهاتون رو بین دو تگ [ php ] و [ /php ] بذارین ( البته دتسور فوق بدون فاصله هستش ) !.



برنامه ها که درسته !

دقیقا نفهمیدم مشکلت چی هستش ؟؟؟

اینم تست کن !
به جای این دستور :

کد php:
Home L 

اینو جایگزین کن :

کد php:
Locate 2 , 1 
ببینید من درحقیقت می خواهم برنامه زیر
کد php:
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd 
= 16 * 2
Config Lcdpin 
= Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
Config Pind.0 
= Input
Config Pind.1 
= Input
Dim F 
As Word
F 
= 0
Cls
Lcd F
Waitms 107
Do
If 
Pind.0 = 1 Then
Incr F
Cls
Lcd F
Waitms 165
End 
If
If 
Pind.1 = 1 Then
Decr F
Cls
Lcd F
Waitms 165
End 
If
Loop 
در سطراول ال سی دی وبرنامه
کد php:
$regfile = "m8def.dat" : $crystal = 1000000

Config Lcdpin 
= Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
Config Lcd 
= 16 * 2 : Cursor Off : Cls

Dim Ss 
As String * 255 , S As String * 16
Dim B 
As Byte , C As Byte , A As Byte

Ss 
= "www.iranled.com"

Do

 
B = Len(ss)

 If 
B < 17 Then :

 For 
A = 16 To 1 Step -1
 S 
= Mid(ss , A , 1 ) : Locate 2 , A : Lcd S
 Waitms 500
 Next

 Wait 1

 
For A = 1 To 16
 Locate 2 
, A : Lcd " "
 
Waitms 500
 Next

 Wait 1

 
Else :

 
S = Left(ss , 16)

 For 
A = 15 To 1 Step -1
 Locate 2 
, A : Lcd S
 Waitms 500
 Next

 C 
= B - 16

 
For A = 2 To C
 S 
= Mid(ss , A , 16 ) : Locate 2 , 1 : Lcd S
 Waitms 500
 Next

 
For A = 16 To 1 Step -1
 S 
= Right(ss , A) : Locate 2 , 1 : Lcd S ; " "
 
Waitms 500
 Next

 Locate 2 
, 1 : Lcd " " : Wait 1

 End 
If

Loop

End 
درسطردوم ال سی دی نشان داده شود(یعنی هرکدام کارمربوط به خودراانجام دهند وهردو درروی ال سی دی بطور همزمان نشان داده شوند)
الان شما می خواین دو برنامه فوق یه برنامه بشن !!؟؟؟

اینو ببین : ( تست در پروتئوس و برنامه اصلی )

اینم برنامش :

کد php:
$regfile = "m16def.dat" : $crystal = 1000000

Config Lcdpin 
= Pin , Rs = Pinc.0 , Db4 = Pinc.4 , Db5 = Pinc.5 , Db6 = Pinc.6 , Db7 = Pinc.7 , E = Pinc.2
Config Lcd 
= 16 * 2 : Cursor Off : Cls

Ddrd 
= 0 : Portd = 3

Dim Ss 
As String * 255 , S As String * 16
Dim B 
As Byte , C As Byte , A As Byte
Dim F 
As Integer , Z As Word

Ss 
= "happy birthday to you i wish you will be happy - www.forum.iranled.com - A.N.T"
Home : Lcd "COUNTER = " ; F ; "      "

'===============================================================================

Do

   B = Len(ss)

   If B < 17 Then :

      For A = 16 To 1 Step -1
         S = Mid(ss , A , 1 ) : Locate 2 , A : Lcd S
         Gosub Get_sw
      Next

      Gosub Get_sw : Gosub Get_sw

      For A = 1 To 16
         Locate 2 , A : Lcd " "
         Gosub Get_sw
      Next

      Gosub Get_sw : Gosub Get_sw

   Else :

      S = Left(ss , 16)

      For A = 15 To 1 Step -1
         Locate 2 , A : Lcd S
         Gosub Get_sw
      Next

      C = B - 16

      For A = 2 To C
         S = Mid(ss , A , 16 ) : Locate 2 , 1 : Lcd S
         Gosub Get_sw
      Next

      For A = 16 To 1 Step -1
         S = Right(ss , A) : Locate 2 , 1 : Lcd S ; " "
         Gosub Get_sw
      Next

      Locate 2 , 1 : Lcd " " : Gosub Get_sw : Gosub Get_sw

   End If

Loop

'
===============================================================================

Get_sw:

   For 
Z = 0 To 4000
      Debounce Pind.0 
, 0 , Incr_f , Gosub
      Debounce Pind.1 
, 0 , Decr_f , Gosub
   Next

Return

Incr_f:
   
Incr F : Home : Lcd "COUNTER = " ; F ; "      "
Return

Decr_f:
   
Decr F : Home : Lcd "COUNTER = " ; F ; "      "
Return 

البته قشنگ بودش که با وقفه ها این کارو می کردم ( چون اونطوری سرعتش یک نواخت تر بودش )
ولی فهم برنامه سخت تر می شد که خوب فلان همین جواب می ده !
با وقفشو خودت بنویس !!

وای که ساعت 4 امتحان دارم !!! ( هیچی هم نخوندم و از خونه ما تا مدرسه هم یک ساعت راه هستش - دعا کنید برسم ) !!!
صفحه‌ها: 1 2 3 4 5