ايران ويج

نسخه‌ی کامل: نوشتن عدد روی LCD با KEYPAD
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام سلام بچه ها Happy
بازم یه مشکلWhistle
این دفعه مشکلم اینه که میخوام یه عددی مثلا 3272 رو با KEYPAD روی LCD بنویسم
ولی......جریان دارهAngry
اول برنامه رو داشته باشین
تا توضیحاتشم بدم:
کد:
$regfile = "m16def.dat"
$crystal = 1000000

Config Kbd = Portb

Dim A As Word , B As Word , C As Word

Cursor Off
Home

Main:
Locate 2 , 1

Do

A = Getkbd()

If A > 15 Then
   Goto Main
Else


If A = 14 Then B = 2
If A = 13 Then B = 3
If A = 11 Then B = 4
If A = 10 Then B = 5
If A = 9 Then B = 6
If A = 8 Then B = 5
If A = 2 Then B = 0
If A = 7 Then B = 7
If A = 5 Then B = 9
If A = 6 Then B = 8
If A = 2 Then B = 0
If A = 1 Then B = 1
If A = 0 Then B = 1



     If B <= 9 Then
           C = C * 10
           C = C + B
             Lcd C

             Waitms 1000


Loop
  End If

End If

End

حالا مشکل کجاس......!Whistle
مشکل اینه که میخوام وقتی عدد 3 رو به عنوان عدد اول زدم تا تهش نرهAngry
یعنی 3 رو زدم حتی اگه دستم روی دکمه هم باشه همون 3 رو نشون بده
بعدش که دستمو از 3 برداشتم
2 رو زدم تا اینجاش 32 رو نشون بده

خلاصش:
دستمو رو دکمه نگه داشتم تا ته نره و 1 عدد نمایش بده نه N تا

همینConfused
سلام.

وقتي دكمه اي زده نشه ، عدد 16 به ميكرو فرستاده مي شه ... ( اين يه قائده هست ... )
يعني براي getkbd :
قبلش يه label براش بذاريد. بعد از getkbd يه شرط مي ذاريد كه اگر مقدار گرفته شده مثلا بيشتر از 15 بود ، پرش كنه به همون label ...
اينطوري اونقدر دور مي خورهه تا شما يه عدد رو وارد كنيد .

براي وارد كردن چندتا عدد باز بايد به صورت جدا گانه اين كار رو انجام بديد ( البته از حلقه هم مي شه استفاده كرد كه فعلا توصيه نمي شه ... )
مابين هر بار getkbd بايد با دستور waitms ، كمي تاخير ايجاد كنيد.
.
.
.
چند بار سعي كنيد مشكلتون حل مي شه ...

موفق باشيد.
يا علي.
سلام دوسته من شما اگه از دستور حلقه شرطی استفاده کنی کارت راحت تر و با اطمینان تر میشه..
کد:
a=grtkbd()
while a=16
a=getkbd()
waitms 20
wend
lcd a
while a<>16
a=get kbd()
wend
کل برنامت میشه همین .. راحت..
اگه سوالی داشتی بپرس تا بهت بگم..
موفق باشی
یه فرمان wait بهش اضافه کن درست میشه