جلسه ششم
مقدمه
در این جلسه با سه بخش مهم و بسیار کاربردی در سیستمهای مبتنی بر میکروکنترلر آشنا میشویم:
- روش خواندن ورودی از کیبورد ماتریسی
- نمایش اطلاعات روی LCD کاراکتری
- آشنایی مقدماتی با زمانسنج/شمارنده میکروکنترلر در حالتهای عملکردی پایه
ترکیب این سه موضوع، مسیر را برای ساختن سیستمهای تعاملی مانند صفحهکلید، منوی تنظیمات، تایمرها و شمارندههای دیجیتال هموار میکند.
۱) کیبورد ماتریسی چیست؟
کیبورد ماتریسی مجموعهای از کلیدهاست که به صورت سطر و ستون مرتب شدهاند تا با تعداد کمتری از پایههای میکروکنترلر بتوان تعداد زیادی کلید را مدیریت کرد.
ویژگیها:
- کلیدها در قالب یک شبکه (ماتریس) ساماندهی شدهاند (مثلاً ۴ سطر و ۳ ستون)
- هر کلید در نقطه تقاطع یک سطر و یک ستون قرار دارد
- به جای اتصال جداگانه هر کلید به یک پایه مستقل، سطرها و ستونها بهصورت مشترک استفاده میشوند
مزیت اصلی:
کاهش تعداد پایههای مورد نیاز میکروکنترلر برای خواندن تعداد زیاد کلید.
۲) روش کلی اسکن کیبورد ماتریسی
برای فهم عملکرد، فرض کنید یک کیپد ۴×۳ داریم (۴ سطر، ۳ ستون).
مراحل کلی اسکن:
تنظیم پایهها
- معمولاً سطرها خروجی و ستونها ورودی تنظیم میشوند (یا برعکس، ولی اصل کار یکسان است).
فعال کردن تدریجی سطرها
- در هر لحظه فقط یک سطر «فعال» میشود (مثلاً در سطح صفر یا یک قرار میگیرد).
خواندن ستونها
- در همان لحظه، وضعیت ستونها خوانده میشود.
- اگر کلیدی در محل تقاطع آن سطر و یک ستون فشرده شده باشد، تغییر وضعیت در ستون مربوطه دیده میشود.
تکرار برای تمام سطرها
- این فرایند برای همه سطرها تکرار میشود تا بفهمیم کدام کلید (یا کلیدها) فشرده شدهاند.
نتیجه:
با یک حلقه اسکن ساده، موقعیت هر کلید (سطر و ستون) مشخص میشود و میتوان آن را به یک عدد یا کاراکتر تبدیل کرد.
۳) تشخیص کلید فشرده شده و رفع تداخلها
پس از اسکن، باید بدانیم کدام کلید معادل چه مقداری است:
- هر ترکیب سطر–ستون به یک عدد یا حرف نسبت داده میشود (مثلاً ۱، ۲، ۳، A، B و غیره)
- برای جلوگیری از خطا و پرش ناشی از تماس مکانیکی کلیدها، معمولاً:
- چند بار پشت سر هم وضعیت کلید خوانده میشود
- یا کمی تأخیر کوتاه بعد از تشخیص فشرده شدن اعمال میشود (Debouncing)
این کار باعث میشود سیگنال ناپایدار اولیه کلید، به صورت یک فشردن واضح و قابلاعتماد تشخیص داده شود.
۴) آشنایی با LCD کاراکتری
LCD کاراکتری یک نمایشگر ساده و پرکاربرد است که میتواند متن و نمادها را نمایش دهد (مثلاً 2×16، یعنی ۲ سطر و ۱۶ ستون).
ویژگیهای اصلی:
- نمایش کاراکترها در خانههای منظم (مشابه جدول)
- امکان نمایش حروف، اعداد و برخی نمادهای خاص
- نیازمند راهاندازی اولیه قبل از استفاده
۵) مراحل کلی راهاندازی و استفاده از LCD
برای استفاده از LCD کاراکتری معمولاً مراحل زیر طی میشود:
راهاندازی اولیه (Initialization)
- تنظیم نوع نمایش (تعداد سطر، اندازه کاراکتر و غیره)
- پاک کردن صفحه
- قرار دادن مکاننما در موقعیت مناسب
ارسال دستور (Command)
- دستوراتی مانند پاک کردن صفحه، رفتن به ابتدای سطر، یا جابهجایی مکاننما
ارسال داده (Data)
- کاراکترهایی که باید روی LCD نمایش داده شوند (مثلاً حروف یک کلمه یا عدد)
تنظیم موقعیت نمایش
- انتخاب سطر و ستون جهت نمایش متن جدید
در سطح آزمایشگاهی، هدف این است که دانشجو بتواند یک متن ساده یا مقدار دریافتی از کیپد را روی LCD نمایش دهد.
۶) ارتباط کیبورد ماتریسی و LCD در یک مثال مفهومی
ترکیب این دو بخش:
- با کیبورد ماتریسی → ورود عدد یا کاراکتر توسط کاربر
- با LCD → نمایش همان عدد یا نتیجه پردازش روی صفحه
مثال مفهومی:
- دانشجو عددی را از روی کیپد وارد میکند
- میکروکنترلر عدد را دریافت و تفسیر کرده
- سپس آن را روی LCD (مثلاً در سطر اول، ستون اول) نمایش میدهد
این کار اساس ساختن منوها، سیستمهای رمز عبور، صفحات تنظیمات و بسیاری کاربردهای دیگر است.
۷) آشنایی مقدماتی با زمانسنج/شمارنده (Timer/Counter)
زمانسنج/شمارنده یکی از واحدهای داخلی میکروکنترلر است که دو نقش کلی میتواند داشته باشد:
- زمانسنج (Timer): اندازهگیری زمان بر اساس یک فرکانس داخلی
- شمارنده (Counter): شمارش پالسهای ورودی از خارج میکروکنترلر
در این جلسه به صورت مقدماتی با حالتهای پایهای آن آشنا میشویم.
۸) حالتهای عملکردی پایه زمانسنج/شمارنده
حالتهای رایج:
حالت زمانسنج (Timer Mode)
- منبع تیک (Clock) از داخل میکروکنترلر است
- برای ایجاد تأخیرهای زمانی، اندازهگیری زمان، تولید دورهها و… استفاده میشود
حالت شمارنده (Counter Mode)
- منبع تیک از یک پایه خارجی است
- برای شمردن تعداد رویدادها (مثلاً عبور اجسام از مقابل سنسور) استفاده میشود
مواردی که معمولاً در کار مقدماتی انجام میشود:
- انتخاب منبع کلاک (داخلی یا خارجی)
- تنظیم سرعت شمارش با ضریب تقسیمکننده (Prescaler)
- مشاهده مقدار شمارنده در بازههای زمانی مشخص
۹) کاربرد اولیه تایمر در کنار کیپد و LCD
در همین سطح مقدماتی میتوان از تایمر برای:
- ایجاد تأخیرهای دقیقتر نسبت به تأخیر نرمافزاری
- کنترل سرعت اسکن کیبورد ماتریسی
- تنظیم سرعت بهروزرسانی نوشته روی LCD
استفاده کرد.
این کاربردها پایهای برای مباحث پیشرفتهتر مدیریت زمان و وقفهها در جلسات بعدی هستند.
جمعبندی جلسه
در این جلسه با سه بخش مهم آشنا شدیم:
- کیبورد ماتریسی: ساختار سطر–ستون و روش اسکن برای تشخیص کلید فشردهشده
- LCD کاراکتری: راهاندازی اولیه، ارسال دستور و داده، و نمایش متن
- زمانسنج/شمارنده در حالتهای پایه: آشنایی با مفهوم Timer و Counter و کاربردهای ابتدایی آن
این مفاهیم در کنار هم، امکان ساخت سیستمهای تعاملی ساده ولی کاربردی را فراهم میکنند. در جلسات آینده از این ابزارها برای پیادهسازی پروژههای پیچیدهتر استفاده خواهد شد.