ghosh
کاربر جدید
وضعيت: آفلاين 15 شهريور ماه ، 1392 تعداد ارسالها: 4 امتياز: 8 تشکر کرده: 0 تشکر شده 0 بار در 0 پست
محل سكونت: lمشهد
|
ارسال شده در: جمعه، 15 شهريور ماه ، 1392 16:28:59 موضوع مطلب: |
|
|
سلام خدمت مهندس عزیز. من خیلی چیزها درباره تابلو روان از شما یاد گرفتم.
پروژه ای که دارم بدین صورته که حروف رو از صفحه کلید کامپیوتر بگیره و روی تابلو روان نشون بده(فارسی):
Main1:
Daryaft = Getatkbd()
main2:
Select Case Daryaft
Case 102 :
K = 0
For I = 0 To 7
Ki = 7 - I
Kol1(j) = Lookup(ki , Bv)
Incr J
If J > 1 Then
If Kol1(j -1) = 0 Then
Kol1(j -1) = Kol1(j)
P = P + 1
J = J - 1
End If
End If
Next I
K = 1
Goto Main1
Case 13:
If J < 8 Then
For I = J To 8
Kol1(i) = &HFF
Next I
End If
' For S = 0 To 7
For Refresh = 1 To 5
Scan = &HFE
For S1 = 1 To 8
D = S1 '+ S
Portb = Kol1(d)
Porta = Scan
Rotate Scan , Left , 1
Waitus 600
Portb = &H00
Next S1
Next Refresh
' Next S
Goto Main
Case Else :
End Select
Keydata:
'normal keys lower case
Data 0 , 0 , 0 , 0 , 0 , 200 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
این برنامه برای امتحان نوشتم.گرفتن کد اسکی حرفf از کیبورد.بعد از زدن کلید اینتر ارایه رو با کد هگز معادل شده bv پر میکنه. از متغییر هایی برای اینکه بین حروف زیاد فاصله نباشه کمک گرفتم.پروژه رو بستم .یه متن برای نمایش در ابتدا داره.که کار میکنه.ولی دیتایی از صفحه کلید نمیگره.پیکربندی موجود در کتاب کاهه رو نوشتم.لطفا رهنماییم کنید که بتونم سریع ارایه بدم. مهاتی ندارم.ممنون |
|
ghosh
کاربر جدید
وضعيت: آفلاين 15 شهريور ماه ، 1392 تعداد ارسالها: 4 امتياز: 8 تشکر کرده: 0 تشکر شده 0 بار در 0 پست
محل سكونت: lمشهد
|
ارسال شده در: جمعه، 29 شهريور ماه ، 1392 17:04:08 موضوع مطلب: |
|
|
سلام
سورس برنامه میکرو وصفحه کلید وlcd مهندس لاچینی به صورت زیر هست که به طور عملی اجرا کردم و پاسخ گرفتم.
'*********************************************
$regfile = "m32def.dat"
$crystal = 4000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , Rs = Porta.0 , E = Porta.1
Config Keyboard = Pind.2 , Data = Pind.4 , Keydata = Keydata
Dim Text As String * 20
Dim I As Byte
Dim L As Byte
$serialinput = Kbdinput
$serialinput2lcd
Text = "This is a Test!"
L = Len(text)
Cursor Off
Cls
Print Text
Wait 1
For I = 1 To 16
Shiftlcd Right
Wait 1
Next I
For I = 1 To L
Shiftlcd Left
Wait 1
Next I
Do
Cls
Cursor Blink
Cursor On
Print "Enter Text :"
Locate 2 , 1
Input Text
L = Len(text)
Cursor Noblink
Cursor Off
Cls
Print Text
For I = 1 To 16
Shiftlcd Right
'Wait 1
Next I
Wait 1
L = L + 16
For I = 1 To L
Shiftlcd Left
Wait 1
Next I
Loop
End
Kbdinput:
$asm
push r16 ; save used register
push r25
push r26
push r27
Kbdinput1:
rCall _getatkbd ; call the function
tst r24 ; check for zero
breq Kbdinput1 ; yes so try again
pop r27 ; we got a valid key so restore registers
pop r26
pop r25
pop r16
$end Asm
Return
I = Getatkbd()
Keydata:
'normal keys lower case
Data 0 , 0 , 0 , 0 , 0 , 200 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
'shifted keys UPPER case
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
من کلیه دستورهای مربوط به lcd پاک کردم.حتی دستور:
$serialinput2lcd
که برنامه به شکل زیر می شود:
$regfile = "m32def.dat"
$crystal = 4000000
Config Keyboard = Pind.2 , Data = Pind.4 , Keydata = Keydata
$serialinput = Kbdinput
Input Text
Kbdinput:
$asm
push r16 ; save used register
push r25
push r26
push r27
Kbdinput1:
rCall _getatkbd ; call the function
tst r24 ; check for zero
breq Kbdinput1 ; yes so try again
pop r27 ; we got a valid key so restore registers
pop r26
pop r25
pop r16
$end Asm
Return
I1 = Getatkbd()
Keydata:
'normal keys lower case
Data 0 , 0 , 0 , 0 , 0 , 200 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
'shifted keys UPPER case
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
ایا در برنامه بدست امده بالا متغیر text با استفاده از صفحه کلید مقداردهی میشود؟
ممنون میشم کمکم کنید. |
|