ايران ويج

نسخه‌ي كامل: مشکل در برنامه ی تایپ با کیپد 4×4
شما هم اكنون متن قالب بندي نشده را مي‌بينيد.مشاهده‌ي نسخه‌ي اصلي
سلام به همگی
چند وقتیه روی برنامه ی شبیه سازی تایپ(فقط حروف انگلیسی) با کیپد 4×4 روی ATMGA32 کار می کنم.
روش کار هم اینه:
{
کلید های 1 تا 9 در کیپد مثل کیپد نوکیا حروف را دربر دارند با این تفاوت که الفبای انگلیسی + فاصله به طور همگن بین 9 کلید کیپد تقسیم بندی شده اند و با فشردن (مثلا) کلید 1 در خط دوم ال سی دی (باید!) حروف a-b-c نمایش داده شوند تا کاربر با انتخاب حرف مورد نظر بوسیله ی فشردن کلید های 1 تا 3 آنرا در خط اول ال سی دی تایپ کند(locate 1,1)}
اما نمی دونم اشکال کار کجاست که وقتی دکمه ای از کیپد رو می زنم به جای نمایش 3 تا حرف یک سطر نشون میده. اگه به برنامه و عکس نگاه کنید متوجه می شین.

[img][تصوير: th.d1c09bde1c.jpg][/img]

کد PHP:
$regfile "m32def.dat"
Declare Function Getkey(byval Value As Integer )as Integer
$crystal 
16000000
Config Lcdpin 
Pin Db4 Portb.1 Db5 Portb.2 Db6 Portb.3 Db7 Portb.4 Portb.5 Rs Portb.6
Config Lcd 
16 2
Config Kbd 
Portc Debounce 50 Delay 10

Dim Key 
As Integer Key_0 As Integer Modd As Boolean S_key As Integer T1 As Integer T2 As Integer T3 As Integer Tmpp As Integer

Dim A_b 
As String 27
Dim Ab
(27) As String 1


A_b 
"AbcDefGhiJklMnoPqrStuVwxYz "




Main:

For 
Tmpp 1 To 27

 Ab
(tmpp -1) = Mid(a_b Tmpp 1)

Next Tmpp

Do

 
Waitms 15
 
If Modd 0 Then

 S_key 
Getkbd()
 If 
S_key <> 16 Then
 Modd 
1
 Key_0 
Getkey(s_key)
 
Locate 2 1
 T1 
Key_0 1
 T2 
T1 3
 T3 
T2 2

 
For Tmpp T2 To T3

 Lcd Ab
(tmpp) ; "-"

 
Next Tmpp
 End 
If

 Else

 
S_key Getkbd()
 If 
S_key <> 16 Then
 Modd 
0
 Key 
Getkey(s_key)
 
Locate 2 1
 Lcd 
" "
 
Locate 1 1

 T1 
Key_0 1
 T2 
T1 3
 T3 
T2 Key

 Lcd Ab
(t3)

 
End If

 
End If
Loop

End



Function Getkey(byval Value As Integer )as Integer
 Local Rtn 
As Byte

 
If Value And <= Value Then
 Rtn 
Value 1
 End 
If

 If 
Value And Value 7 Then
 Rtn 
Value
 End 
If
 If 
Value And Value 11 Then
 Rtn 
Value 1
 End 
If
 
Select Case Value
 
Case 3
 Rtn 
255
 
Case 7
 Rtn 
254
 
Case 11
 Rtn 
253
 
Case 15
 Rtn 
252
 
Case 12
 Rtn 
200
 
Case 13
 Rtn 
0
 
Case 14
 Rtn 
199

 End Select
 
If Value 16 Then
 Rtn 
111
 End 
If
 
Getkey Rtn
End 
Function 
مهندس میشه بگی تو برنامه چی کار کردی و روش کارت به چی صورت بوده !

آخه از برنامت فقط خودت سر در میاری !!!
(۱-اسفند-۱۳۸۸ ۰۰:۴۰:۲۳)t3r!p3000 نوشته : [ -> ]مهندس میشه بگی تو برنامه چی کار کردی و روش کارت به چی صورت بوده !

آخه از برنامت فقط خودت سر در میاری !!!

ببخشید.
من به طور تجربی برنامه نویسی رو یاد گرفتم (با چند تا کتاب) ....
اما یه خبر خوش => تونستم درستش کنم .
اینم کد برنامه (گفتم شاید به درد بعضی ها بخوره)

کد PHP:
$regfile "m32def.dat"
Declare Function Getkey(byval Value As Integer )as Integer
$crystal 
16000000
Config Lcdpin 
Pin Db4 Portb.1 Db5 Portb.2 Db6 Portb.3 Db7 Portb.4 Portb.5 Rs Portb.6
Config Lcd 
16 2
Config Kbd 
Portc Debounce 50 Delay 10
Dim S 
As String 13
Dim Key 
As Integer Key_0 As Integer Tmp As String 16 Modd As Boolean S_key As Integer T_ab As String T_ab1 As String Lng As Integer
Dim T1 
As Integer T2 As Integer T3 As Integer

Dim A_b 
As String 27
Dim Ab
(27) As String 1
Dim Tmpp 
As Integer

A_b 
"AbcDefGhiJklMnoPqrStuVwxYz "

Main:
Locate 1 1
For Tmpp 1 To 10

 Ab
(tmpp -1) = Mid(a_b Tmpp 1)
 
Lcd Ab(tmpp -1)
Next Tmpp



Goto Main

End



Function Getkey(byval Value As Integer )as Integer
 Local Rtn 
As Byte

 
If Value And <= Value Then
 Rtn 
Value 1
 End 
If

 If 
Value And Value 7 Then
 Rtn 
Value
 End 
If
 If 
Value And Value 11 Then
 Rtn 
Value 1
 End 
If
 
Select Case Value
 
Case 3
 Rtn 
255
 
Case 7
 Rtn 
254
 
Case 11
 Rtn 
253
 
Case 15
 Rtn 
252
 
Case 12
 Rtn 
200
 
Case 13
 Rtn 
0
 
Case 14
 Rtn 
199

 End Select
 
If Value 16 Then
 Rtn 
111
 End 
If
 
Getkey Rtn
End 
Function 
اشکال برنامه توی تبدیل نوع داده ها بود.
آدرس اصلي