ايران ويج

نسخه‌ی کامل: تابلو روان با 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 Pinc.2
Config Lcd 
16 Cursor Off Cls

Dim Ss 
As String 255 As String 16
Dim B 
As Byte As Byte As Byte

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

Do

   
Len(ss)

   If 
17 Then :

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

      Wait 1

      
For 1 To 16
         Locate 1 
Lcd " "
         
Waitms 200
      Next

      Wait 1

   
Else :

      
Left(ss 16)

      For 
15 To 1 Step -1
         Locate 1 
Lcd S
         Waitms 200
      Next

      C 
16

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

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

      Locate 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 Pinc.2
Config Lcd 
16 Cursor Off Cls
Dim S 
As String 22 As Byte As String 16 As Byte As String 1
Do
For 
16 To 1 Step -1

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

Next
Do
For 
2 To 1 Step -1
Cls
Home
Locate 1 
N
"happy birthday to you"
Mid(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 Pinc.2
Config Lcd 
16 Cursor Off Cls

Dim Ss 
As String 255 As String 16
Dim B 
As Byte As Byte As Byte

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

Do

   
Len(ss)

   If 
17 Then :

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

      Wait 1

      
For 1 To 16
         Locate 1 
Lcd " "
         
Waitms 200
      Next

      Wait 1

   
Else :

      
Left(ss 16)

      For 
15 To 1 Step -1
         Locate 1 
Lcd S
         Waitms 200
      Next

      C 
16

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

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

      Locate 1 
Lcd " " Wait 1

   End 
If

Loop

End 

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


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

کد:
Locate 1 , A

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

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

کد php:
Locate 1 

می شه این :

کد php:
Locate 2 

کلا هر چی دستور 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 Portc.4 Rs Portc.5
Config Pind.0 
Input
Config Pind.1 
Input
Dim F 
As Word
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 Portc.4 Rs Portc.5
Config Pind.0 
Input
Config Pind.1 
Input
Dim F 
As Word
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 Portc.4 Rs Portc.5
Config Lcd 
16 Cursor Off Cls

Dim Ss 
As String 255 As String 16
Dim B 
As Byte As Byte As Byte

Ss 
"www.iranled.com"

Do

 
Len(ss)

 If 
17 Then :

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

 Wait 1

 
For 1 To 16
 Locate 2 
Lcd " "
 
Waitms 500
 Next

 Wait 1

 
Else :

 
Left(ss 16)

 For 
15 To 1 Step -1
 Locate 2 
Lcd S
 Waitms 500
 Next

 C 
16

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

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

 Locate 2 
Lcd " " Wait 1

 End 
If

Loop

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



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

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

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

کد php:
Home L 

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

کد php:
Locate 2 
ببینید من درحقیقت می خواهم برنامه زیر
کد 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 Portc.4 Rs Portc.5
Config Pind.0 
Input
Config Pind.1 
Input
Dim F 
As Word
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 Portc.4 Rs Portc.5
Config Lcd 
16 Cursor Off Cls

Dim Ss 
As String 255 As String 16
Dim B 
As Byte As Byte As Byte

Ss 
"www.iranled.com"

Do

 
Len(ss)

 If 
17 Then :

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

 Wait 1

 
For 1 To 16
 Locate 2 
Lcd " "
 
Waitms 500
 Next

 Wait 1

 
Else :

 
Left(ss 16)

 For 
15 To 1 Step -1
 Locate 2 
Lcd S
 Waitms 500
 Next

 C 
16

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

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

 Locate 2 
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 Pinc.2
Config Lcd 
16 Cursor Off Cls

Ddrd 
Portd 3

Dim Ss 
As String 255 As String 16
Dim B 
As Byte As Byte As Byte
Dim F 
As Integer As Word

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

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

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 
0 To 4000
      Debounce Pind.0 
Incr_f Gosub
      Debounce Pind.1 
Decr_f Gosub
   Next

Return

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

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

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

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