تبلیغات
الکترونیک ELECTRONIC - راه اندازی صفحه کلید 4*4
الکترونیک ELECTRONIC
هر آنچه از الکترونیک میخواهید
مرتبه
تاریخ : 1390/06/4

راه اندازی صفحه کلید در bascom کار ساده ای است و تنها کافی است صفحه کلید خود رو مثل شکل زیر به یکی از پورت های میکرو وصل کنید و توسط دستور CONFIG KBD آن را پیکربندی کنید.

در داخل این کی پد ها مدار خاصی وجود ندارد و فقط 16 کلید فشاری ( 4*4 ) به صورت ماتریسی 4 سطر و 4ستون به هم متصل شده اند. در کی پد های استاندارد معمولا ستون اول با C1 و سطر اول با R1 مشخص میشود که باید به این نکته توجه داشته باشید .

صفحه کلید توسط دستور زیر پیکر بندی میشود:

[CONFIG KBD = PORTx , DEBOUNCE = value [,DELAY =value

PORTx مشخص کننده پورتی است که صفحه کلید به آن متصل میشود.کی پد را به هر پورتی از میکرو میتوانید وصل کنید ولی باید ترتیب آن درست باشد یعنی ستون اول به پین صفر و سطر آخر به پین هفت پورت مورد نظر وصل شود.

DEBOUNCE به صورت پیش فرض 20 است و میتواند تا مقدار 255 را داشته باشد.

DELAY KDC پارامتری اختیاری است و مشخص کننده تاخیری بر حسب میلی ثانیه است که در زمان خواندن کلید توسط دستور() GETKBD ایجاد میشود . این گزینه برای کاهش نویز پذیری ایجاد شده است و مقدار DELAY=100 به طور مثال مشکل نویز زا میتوند برطرف کند.

ساده شده ی دستورات بالا به صورت زیر است :

CONFIG KBD = PORTx

دستور () GETKBD :

توسط این دستور میکرو صفحه کلید را خوانده و عدد متناظر با کلید فشرده شده را در متغییر SOURCE قرار میدهد . این دستور زمانی که کلیدی فشرده نشده عدد 16 را بر میگرداند. شما از جدول () LOOKKUP میتوانید برای تبدیل عدد بدست آمده از صفحه کلید به مقدار دلخواه خود استفاده نمایید. در صورت اتصال صفحه کلید عدد متناظر با کلید فشرده شده توسط دستور () GETKBD به صورت شکل زیر دریافت خواهد شد و هیچ ارتباطی با لیبل چسبانده شده روی کی پد ندارد.

مثال:

'Blog:www.electornic.mihanblog.com
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , _
Db7 = Pinb.7 , Rs = Pinb.2 , E = Pinb.3
Config Lcd = 16 * 2

'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Config Kbd = Portd , Debounce = 50 , Delay = 100

'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Dim A As Byte
Lcd "press any key "
Do
Lcd " pressed"
Main:

'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""'""
A = Getkbd()
'wait 100ms by compiler because of delay = 100

'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
If A > 15 Then Goto Main
Cls
Lcd A
Loop
End

در مثال بالا با فشردن هر کلید عدد متناظر با آن بر روی ال سی دی نمایش داده خواهد شد و اگر کلیدی فشرده نشود عددی نمایش داده نخواهد شد .

مثال 2:

'blog:electornic.mihanblog.com

$regfile = "m8def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , _
Db7 = Pinb.7 , Rs = Pinb.2 , E = Pinb.3
Config Lcd = 16 * 2
'==============================================================================

Config Kbd = Portd

'===============================================================================
Cursor Blink
Dim A As Byte
Dim B As String * 6
Do
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A = Getkbd()
B = Lookupstr(a , Keydata)
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
If B <> "" Then
Cls
Home
Lcd B
End If
Loop
End

Keydata:
Data "1" , "2" , "3" , "A"
Data "4" , "5" , "6" , "B"
Data "7" , "8" , "9" , "C"
Data "*" , "0" , "#" , "D"
Data ""

در این مثال با توجه به شکل بالا با فشردن هر کلید برچسب مربوط به همان کلید بر روی کی پد بر گردانده شده و بر روی ال سی دی نمایش داده خواهدشد . و اگر کلیدی فشرده نشود کاراکتری نمیش داده نخواهد شد.




طبقه بندی: آموزش الکترونیک، 
ارسال توسط بهنام
آرشیو مطالب
نظر سنجی
با کدام کامپایلر برای AVR راحتترید؟









مطالب پر بازدید
پیوند های روزانه

قالب وبلاگ