صفحه کلید 4 در 4

irpersian20

عضو جدید
سلام

امکان داره در رابطه با صفحه کلید 4در 4 مطلبی بهم بدید تا مراجعه کنم
 

سعید گروسی

عضو جدید
کاربر ممتاز
سلام

امکان داره در رابطه با صفحه کلید 4در 4 مطلبی بهم بدید تا مراجعه کنم
سلام

اتصال کی پدواتصال به avr
ابتدا در مورد چگونگی کار کی پد بحث کنيم . در زير شکل اين وسيله را مشاهده ميکنيد






'گاهی نياز از که چندين کليد را به ميکرو متصل کنيم ، برای اين کار دو راه وجود دارد که روش اول اتصال هر کليد به
يک پايه وروش دوم استفاده از صفحه کليد ماتريسی است .
روش اول، چون تعداد زيادی از پايه های ميکرو اشغال ميشود،کمتر مورد استفاده قرار ميگيرد .دستور بسکام برای
ميگوييم به شرح زير است : kbd استفاده از صفحه کليد ماتريسی که از اين به بعد به ان
CONFIG KBD = PORTx , DEBOUNCE = value
تاخير کليد است که بين 20 تا 255 ميلی ثانيه است DEBOUNCE به ان متصل ميشود و kbd پورتی است که ، portx که
(هنگامی که کليد فشرده ميشود ،براثر لرزش دست چندين با دو کنتاکت ان به هم برخورد ميکنند و در نهايت ثابت ميشوند
استفاده نشوند لرزش به منزله فشردن کليد است ) DEBOUNCE اگر از دستور
در برنامه نوبت به استفاده از ان است برای اين کار از دستور زير استفاده می شود kbd بعد از تعريف
A = Getkbd()
در ان گذاشته ميشود و در صورتی که کليدی فشرده نشود kbd يک متغيير از جنس بايت است که عدد گرفته شده از a که
استفاده کرد. مانند: if عدد 16 در داخل ان گذاشته می شود ، برای حذف عدد 16 می توان از دستور شرطی
$regfile = "m16def.dat"
$crystal = 12000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 =
Portd.3 , E = Portd.4 , Rs = Portd.5
Config Kbd = Portb,DEBOUNCE = 50
Dim A As Byte
:Q
()A = Getkbd
If A > 15 Then
Goto Q
End If
Locate 1 , 1
Lcd A
Goto Q
End​
تحليل برنامه :
دو خط اول برنامه مثل هميشه معرفی ميکرو و کريستال است (که در اينجا از ميکرو مگا 16 و کريستا ل 8مگاهرتز
استفاده شده است) .
متصل d به پورت lcd استفاده شده و lcd 16* راه اندازی شده است ( که در اينجا از 2 lcd در خط سوم و چهارم و پنجم
است) .
پنجاه ميلی ثانيه گرفته شده است DEBOUNCE متصل شده و b به پورت kbd معرفی شده(که در اينجا kbd در خط ششم
. (

در خط هفتم يک متغيير از جنس بايت معرفی گرديده .
قرار داده شده است . q در خط هشتم يک برجسب به نام
(a=16) قرار ميگيرد (در صورتی که هيچ کليدی فشرده نشود مقدار 16 a در متغيير kbd در خط نهم عدد گرفته شده از
ريخته ميشود ) . a در
بزرگتر از 15 شد به a در خط ده ويازده و دوازده يک دستور شرطی قرار گرفته که اين دستور شرطی ميگويد :اگر
اجرا ميشود و اگر شرط درست نباشد endif و if برش کن(در صورتی که شرط درست باشد دستورات بين q برچسب
ادامه مييابد ). endif برنامه از خط بعد از
نمايش داده ميشود . lcd در سطر اول و ستون اول a در خط سيزده و چهارده مقدار
پرش ميکند و مراحل قبل دوباره تکرار ميگردد . q و در خط پانزده برنامه به برچسب
است . end خط اخر برنامه هميشه
مدار مورد استفاده :




در اين مثال به ازای هر کليد در lcdيک نام نوشته ميشود :

$regfile = "m16def.dat"
$crystal = 12000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 =
Portd.3 , E = Portd.4 , Rs = Portd.5
Config Kbd = Portb , Debounce = 20
Dim A As Byte
:Q
()A = Getkbd
If A > 15 Then : Goto Q : End If
If A = 0 Then : Locate 1 , 1 : Lcd "qwer" : End If
If A = 1 Then : Locate 1 , 1 : Lcd "asdf" : End If
If A = 3 Then : Locate 1 , 1 : Lcd "FDFD" : End If
If A = 4 Then : Locate 1 , 1 : Lcd "aFDf" : End If
If A = 5 Then : Locate 1 , 1 : Lcd "SAKr" : End If
If A = 6 Then : Locate 1 , 1 : Lcd "1234" : End If
If A = 7 Then : Locate 1 , 1 : Lcd "5687" : End If
If A = 8 Then : Locate 1 , 1 : Lcd "7541" : End If
If A = 9 Then : Locate 1 , 1 : Lcd "IO12" : End If
If A = 10 Then : Locate 1 , 1 : Lcd "wqsf" : End If
If A = 11 Then : Locate 1 , 1 : Lcd "1l2k" : End If
If A = 12 Then : Locate 1 , 1 : Lcd "3,m5" : End If
If A = 13 Then : Locate 1 , 1 : Lcd ")(*(" : End If
If A = 14 Then : Locate 1 , 1 : Lcd "****" : End If
If A = 15 Then : Locate 1 , 1 : Lcd "++++" : End If
Locate 2 , 1 : Lcd A : Goto Q
End​
در برنامه بالا برای اينکه حجم کمتری اشغال شود دستورات به صورت سطری نوشته شدهاند ، شما ميتوانيد با قرار دادن
علامت دونقطه :) ) در بين دو دستور انها را در يک خط بنويسيد ، هعمچنين با قرار دادن علامت ويرگول چندين
در يک خط نمايش دهيد ، همچنين با دستور کما (,) چندين متغيير را در يک خط معرفی کنيد lcd علامت را روی
مينويسيم برنامه بالا را با استفاده از جدول: lookupstr

$regfile = "m16def.dat"
$crystal = 12000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 =
Portd.3 , E = Portd.4 , Rs = Portd.5
Config Kbd = Portb , Debounce = 20
Dim A As Byte
Dim B As String * 5
:Q
()A = Getkbd
If A > 15 Then
Goto Q
End If
(B = Lookupstr(a , W
Locate 1 , 1: Lcd B
Locate 2 , 1: Lcd A
Goto Q
End
:W
Data "qwer" , "asdf" , "gdfh" , "jlhl" , "hkn," , "yryh" , "bmn4" , "2452" ,
"jkym" , "jytj" , "njhf" , "uyjn" , "dyr4" , "e5yh" , "9768" , "hnbh”​
برای lookupstr يز مانند جدول lookup است اما جدول lookupبرای باز گردانی اعداد و جدول lookupstr برای
بازگردانی حروف به کار ميرود .
که به پايه ميکرو متصل است را تغيير دهيد ونتيجه راببينيد.هميشه نياز نيست که ورودی يک کليد kbd شما جای پايه های
باشد بعضی وقت ها می توان صفر يا يک شدن يک پين را هم چک کرد.
 
آخرین ویرایش:

self.f_t_m990

کاربر فعال تالار اسلام و قرآن ,
کاربر ممتاز
سلام
میشه یه عکس از مدار اتصال صفحه کلید 4*4 به میکرو بزارین ؟
با تشکر
 
بالا