آموزش BASCOM AVR – بسکام – جلسه چهارم
📘 آموزش BASCOM AVR – بسکام – جلسه چهارم
کار با کیپد ماتریسی (Keypad)
۱. مقدمه
در جلسات قبل یاد گرفتیم چطور LED را کنترل کنیم و متن روی LCD نمایش دهیم. حالا نیاز داریم از کاربر ورودیهای پیچیدهتر بگیریم؛ مثلاً عدد یا رمز عبور. سادهترین راه استفاده از کیپد ماتریسی است. این قطعه در پروژههایی مثل ماشین حساب، قفل رمز دیجیتال و منوهای کنترلی استفاده میشود.
۲. معرفی کیپد ماتریسی
- کیپد ماتریسی مجموعهای از کلیدهاست که به صورت ردیف و ستون مرتب شدهاند.
- رایجترین مدل: ۴×۴ (۱۶ کلید).
- هر کلید در محل تقاطع یک ردیف و یک ستون قرار دارد.
- به جای اتصال جداگانه هر کلید، فقط ۸ پایه (۴ ردیف + ۴ ستون) داریم.
۳. نحوه اتصال به میکرو
- ۴ پایه ردیف به پورت مثلاً PortC.0 تا PortC.3
- ۴ پایه ستون به پورت مثلاً PortC.4 تا PortC.7
- هنگام اسکن، ردیفها یکییکی فعال میشوند و ستونها خوانده میشوند.
۴. روش اسکن کیپد
- یک ردیف را فعال کنید (مثلاً صفر منطقی بدهید).
- ستونها را بخوانید. اگر یکی از ستونها صفر شد، یعنی کلید مربوطه فشرده شده است.
- همین کار را برای همه ردیفها تکرار کنید.
- ترکیب ردیف و ستون مشخص میکند کدام کلید فشار داده شده است.
۵. کدنویسی در BASCOM
کد ساده:
' پروژه خواندن کلید از کیپد 4x4
$regfile = "m32def.dat"
$crystal = 1000000
Config Kbd = PortC
Do
K = Getkbd() ' خواندن کلید
If K <> 0 Then
Lcd K ' نمایش کلید روی LCD
End If
Loop
End
۶. توضیح خطبهخط کد
Config Kbd = PortC→ معرفی پورت C برای اتصال کیپد.Getkbd()→ تابع آماده در BASCOM برای خواندن کلید.- اگر کلیدی فشرده شود، مقدار آن در متغیر K ذخیره میشود.
- سپس مقدار K روی LCD نمایش داده میشود.
۷. پروژه عملی: ماشین حساب ساده
کد:
Dim A As Byte , B As Byte , Result As Byte
Dim K As Byte
Do
K = Getkbd()
If K <> 0 Then
If K >= 48 And K <= 57 Then ' اگر عدد بود
A = K - 48
Lcd A
End If
If K = 43 Then ' اگر کلید + بود
B = Getkbd()
Result = A + (B - 48)
Lcd "Result=" ; Result
End If
End If
Loop
End
توضیح: این برنامه دو عدد را میگیرد و جمع آنها را نمایش میدهد.
۸. نکات عملی
- اگر کلیدها درست کار نکردند، ترتیب اتصال ردیفها و ستونها را بررسی کنید.
- برای جلوگیری از نویز، میتوانید دیبانس نرمافزاری اضافه کنید (مثل جلسه قبل).
- میتوانید کلیدها را به کاراکترهای خاص (مثل * یا #) نگاشت کنید.
۹. تمرینها
- برنامهای بنویسید که با فشار کلید خاص، LED روشن یا خاموش شود.
- یک رمز عبور ۴ رقمی تعریف کنید و با فشار کلیدها بررسی کنید درست وارد شده یا نه.
- یک منو طراحی کنید که با کلیدهای کیپد بین گزینهها جابهجا شود.
نتیجه جلسه چهارم
در این جلسه یاد گرفتیم:
- کیپد ماتریسی چیست و چگونه کار میکند.
- روش اسکن ردیف و ستونها.
- استفاده از تابع آماده
Getkbd()در BASCOM. - پروژه عملی ماشین حساب ساده.
🔹 جلسه پنجم: کار با LCD گرافیکی و نمایش متن و اشکال هندسی.