میکرو لایب

راه اندازی کیپد ۸x8 با انکدر و دیکدر

قبل از مشاهده پست اگر با انکودر و دیکدر آشنا نیستید به این دو پست مراجعه کنید

دیکدر چیست؟

انکدر چیست؟

همانطور که در دو پست قبلی با انکدر و دیکدر اشنا شدید حال می خواهیم که یک صفحه کلید ۸x8 را با استفاده از انکودر و دیکدر و atmega هشت راه اندازی کنیم

برای نمایش اطلاعات کلید فشرده شده از ال سی دی ۲x16 استفاده می کنیم

یک صفحه کلید ۸x8 بدون استفاده از دیکدر و انکدر جمعا ۱۶ پایه از میکرو را اشغال می کنند که با استفاده از انکدر و دیکدر این ۱۶ پایه به ۷ پایه کاهش پیدا می کند

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

نوع اسکن به دو روش انجام می گیرد اسکن سطری و اسکن ستونی که در اینجا از اسکن سطری استفاده شده است

قبل از هر چیزی ابتدا ویدیو دو دقیقه ای زیر را برای آشنایی با نحوه اسکن سوئیچ ها مشاهده کنید.

 

 

کد در کامپایلر کدویژن نوشته شده و به راحتی با تنظیمات پین و پورت برای دیگر کامپایلر های زبان C قابل استفاده است.

و همینطور کد بیسیک هم در زیر قرار داده شده است.

می توانید عملکرد برنامه شبیه ساز پروتیوس را در ویدیو زیر مشاهده کنید:

 

 

نمونه کد راه اندازی کیپد به زبان C:

 

نمونه کد راه اندازی کیپد به زبان بیسیک:

شرح خلاصه:

برای اسکن سوئیچ ها یه تابع به نام scan_kbd ایجاد کردیم که وضعیت خوانده شده کلید ها را بر می گرداند

در داخل تابع برای اسکن سطر ها از دستور for استفاده شده است

تعداد سطر هایی که اسکن خواهند شد هشت پایه بوده بنابراین حلقه for را از صفر تا هفت محدود کردیم بعد از هر بار اسکن مقدار را از portb.3 تا portb.6 خوانده و توسط دستورات شیفت در متغیر var ذخیره کرده ایم تا یک عدد کامل چهار بیتی داشته باشیم

اگر سوئیچی زده شده باشه مقداری که می خوانیم عددی غیر از پانزده خواهد بود پس با استفاده از دستور شرطی گفتیم که اگر مقدار خوانده شده غیر پانزده بود یعنی اینکه کلیدی زده شده و متغیر kbd_var را مقدار دهی می کنیم…

کد را تحلیل کنید اگر جایی از کد براتون مبهم بود بپرسید تا پاسخ بدیم

از جعبه دانلود هم می توانید فایل شبیه ساز پروتیوس و کدویژن و بسکام را دانلود کنید

راه اندازی کیپد 8 در 8 با بسکام avr
  • رمز فایل www.mculibrary.ir
راه اندازی کیپد 8 در 8 با کدویژن avr
  • رمز فایل www.mculibrary.ir

دیدگاه‌ها (0)

*
*

question