Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕОРІЯ.doc
Скачиваний:
12
Добавлен:
23.11.2018
Размер:
1.74 Mб
Скачать

Скануючі клавіатури

Розглянемо організацію некодуючої клавіатури розмірністю 5х3. Горизонтальні лінії Х0…Х4 (рядки або стовпці) є вихідними, а вертикальні Y0…Y2 (колонки) являються вхідними (рисунок 1).

Рисунок 1. Рисунок матричної клавіатури

В неактивному стані на виходах Х0…Х4 присутній рівень логічної 1, а входи Y0…Y2 зазвичай підтягнуті до живлення резисторами. Для цього кола, зазвичай, використовуються вбудовані резистори pullup, які містяться у деяких портів мікроконтролерів (наприклад, для мікроконтролерів Microchip це PORTTB). При скануванні на горизонтальних лініях матриці формується сигнал нуля « що біжить». На інших виходах зберігається рівень логічної 1. Для кожної фрази нуля «що біжить» виконується зчитування і аналіз коду Y0…Y2. При замиканні якої-небудь з клавіш матриці, програмно встановлюється код даної клавіші.

Крім розпізнавання положення натиснутої клавіші необхідно програмно захиститися від «брязкоту» контактів, тобто від впливу перехідних процесів, а також ситуацій, зв’язаних з одночасним натисненням клавіш.

Для того, що перешкодити протіканню небезпечних струмів при одночасному замиканні декількох клавіш в одній колонці, в колах Х0…Х4 зазвичай послідовно встановлюють розв’язуючі резистори або діоди. З цією ж метою можна використовувати і інший метод сканування, при якому всі неактивні горизонтальні шини, крім шини нуля «що біжить» , програмно назначаються входами. Вплив перехідних процесів можна уникнути, якщо ввести інтегрування за допомогою повторного зчитування станів матриці сканування через певну часову затримку.

Зазвичай в невеликих клавіатурних матрицях комбінації декількох натиснутих клавіш не використовуються. Але якщо це все-таки потребується, то для сканування краще використовувати метод з призначенням входів неактивних рядків. В цьому випадку можна впевнено визначати дві одночасно натиснуті клавіші як в одному рядку, так і в одній стрічці і навіть визначати позиції трьох одночасно натиснутих клавіш. Але це справедливо коли топологія трьох нажатих кнопок не створює прямого кута, як показано на рисунку 2.

Рисунок 2. Хибна клавіша при скануванні

В цьому випадку, крім позицій трьох дійсно натиснутих кнопок буде зчитана як натиснута «фантомна» кнопка, що розміщена в кутку прямокутника. В топології клавіатур з великими розмірами, таких як, наприклад, клавіатура IBM PCAT, виконується рознесення клавіш, що створюють одночасні подвійні та потрійні натискання на різні горизонтальні та вертикальні шини. таким чином вдається уникнути появу «фантомної» клавіші для популярних клавішних комбінаці й. Інші комбінації, що призводять до появи «фантомних» клавіш програмно блокуються.

Для раціонального використання ресурсу ніжок портів їх виводи, які використовуються для сканування клавіатури, можна використовувати і для інших функцій, наприклад, для підтримки динамічної світлодіодної індикації. На рисунку 3 показаний приклад такого мультиплексування портів мікроконтролера.

Рисунок 3. Мультиплексне управління матричною клавіатурою і семи сегментним цифровим світлодіодним табло

Існують і інші способи зменшення числа виводів мікроконтролера, призначених для сканування клавіатури. Реалізація одного із таких способів показана на рисунку 4.

Рисунок 4. Топологія клавіатури з одним контактом

В звичайних матричних клавіатурах при замиканні кожного контакту утворюється електричне з’єднання між вихідним і вхідним колами схеми сканування. Але якщо змінити топологію розташування клавіш таким чином, щоб при замиканні контакту забезпечувалася зміна потенціалів групи шин, то число клавіш, що кодуються можна значно збільшити. Суть розглянутого нижче методу полягає у використанні саме такої топології клавіш, а також провідникових контактів, наприклад еластомеру з провідникової гуми. Така конструкція клавіатури забезпечує кодування більшого числа клавіш, ніж звичайна матрична, при однаковому числі використовуваних кодуючих шин. Збільшення досягнуто за рахунок того, що додаткові кодові комбінації утворюються парами кодуючих шин.

Для подібного варіанту топології сканування не потрібно. Всі шини є входами з підтяжкою до напруги живлення резисторами. Контактор з'єднаний із загальною шиною. При замиканні контакту потенціал контактора передається на одну або дві кодові шини, на перетині яких він знаходиться. Ця подія може викликати переривання, за яким програма просто зчитує стан Х0…Х3 і за таблицею визначає позицію натиснутої клавіші. Контактні майданчики S0...S10 виконуються друкованими провідниками на друкованій платі, а в якості контактора замість провідникового еластомеру може бути використана лавсанова плівка з нанесеним провідниковим шаром.

Вище описаний варіант схеми сканування використовувався в програмованих калькуляторах CASIO, а також в калькуляторі «Електроніка МК-85». Необхідно підкреслити, що даний варіант топології клавіатури забезпечує відповідні позиції тільки однієї або двох одночасно натиснутих клавіш, причому лише в визначених комбінаціях.

Якщо ввести другий замикаючий контактор з потенціалом живлення, то можливо вдвічі збільшити кількість скануємих клавіш. Для цього варіанту необхідно проводити сканування, наприклад, з періодом 20–30 мс. При скануванні використовується ефект пам'яті на паразитній ємності кодуючи шин. В першій фазі сканування всі шини визначаються виходами, і на них подається потенціал лог. 0. Потім виводи порту перевизначаються входами, і проводиться зчитування їхнього стану. Факт замикання фіксується по зміні потенціалу, після чого проводиться друга фаза сканування. Цього разу на шину подається потенціал живлення. Після чого проводиться аналіз зчитаних станів шин і визначаються позиції замкнених контактів.

Рисунок 5. Топологія клавіатури на 20 клавіш

з 4 лініями сканування

При використанні зазначеного методу є дійсною наступна формула, яка пов'язує кількість кодуючи шин з кількістю клавіш:

М=N*(N+1)

де М - максимальне число клавіш, яке кодується N шинами.

Необхідно відмітити, що це значення завжди буде більшим максимального числа кодуючих клавіш для звичайної матричної клавіатури. Наприклад, для використання чотирьох кодуючи шин зі звичайною матричною топологією, можливо сканувати лише 4 кнопки, а з використанням вищеописаного методу вже 20!

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]