MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки
 Новости   Конференция   Контакты 
 

клавишная матрица (+)

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 клавишная матрица (+)
Автор: Wud ()
Дата:   17/05/2004 22:17

есть стандартная клавишная матрица 3 столбца, 4 строки. всего 12 клавиш.
с дребезгом все понятно. интересует если чел нажмет много клавиш сразу?
как обработать?
-
это типа нажал клавишу, теперь ждем пока отпустит, и только потом обработка если не
нажато ничего то далее? не слишком сложно?
есть что-нить по проще?
-
а впринципе ведь возможно, что чел нажмет две одновременно клавиши сразу?
нет ну ясно, что это очень сложно, но не может быть такого, что комбинация даст
третью клавишу?



Отправка отредактированного (17/05/2004 22:19)


 
 Re: клавишная матрица (+)
Автор: MajorPAE ()
Дата:   17/05/2004 22:23

Там-же опрос последовательный, так что вроде все программно отлавливается... ИМХО...


 
 Re: клавишная матрица (+)
Автор: Andrey ()
Дата:   18/05/2004 00:03

Wud писал(а):

> есть стандартная клавишная матрица 3 столбца, 4 строки. всего 12 клавиш.
...
> а впринципе ведь возможно, что чел нажмет две одновременно
> клавиши сразу?
> нет ну ясно, что это очень сложно, но не может быть такого, что
> комбинация даст третью клавишу?

Комбинация мз 3 клавиш,треугольником - даст 4-ую,фантом...
и у вас что-то сработает :)

обрабатывать можно уже по нажатию,чего ждать-то?

Анализ...затрахался я с ним...
Если в снятом столбце есть более одной нажатой клавиши,надо проверять на соответствие другим
столбцам.Если есть корреляция,то проще бросить всё,нафиг и подождать ситуации когда нажата
только одна клавиша...


 
 какой ещё фантом?
Автор: letopisec ()
Дата:   18/05/2004 07:39

>Комбинация мз 3 клавиш,треугольником - даст 4-ую,фантом...
>и у вас что-то сработает :)


МОЖНО однозначно определить хоть все 12 нажатые клавиши - препядствий нет!
Или это шутка?


 
 я вот что-то тоже не уловил, просим разъяснений
Автор: Wud ()
Дата:   18/05/2004 08:56

!




 
 А чё какие разъяснения кому нужны
Автор: patton ()
Дата:   18/05/2004 11:24

Andrey писал(а):

> Комбинация мз 3 клавиш,треугольником - даст 4-ую,фантом...
> и у вас что-то сработает :)
Что мне написать - "поздравляю соврамши"?
Ну не работал человек с такими клавиатурами, где это возможно...
Или сейчас меня спросят, а в каких клавиатурах это невозможно? :-D


 
 Re: клавишная матрица (+)
Автор: SSH ()
Дата:   18/05/2004 11:52

Можно так :

Где-нибудь, в прерывании например, опрашивается клавиатура, давится дребезг,
сравнивается с предыдущим сканированием и.т.д. Результат скана преобразовывается и
записывается в int, а после, в switch-е обрабатывается побитно:

...
int keys ;

switch( keys )
{
case 0x1 : // первая клавиша
... // обработка
break ;
case 0x2 : // вторая клавиша
... // обработка
break ;

case 0x4 : // третъя клавиша
... // обработка
break ;

case 0xXX : // XX-я клавиша
... // обработка
break ;

default : // Нажато более одной клавиши

}

Таким образом можно игнорировать как ненужные одновременные нажатия, так и
предопределенные.

SSH


 
 Re: какой ещё фантом?
Автор: LED ()
Дата:   18/05/2004 11:53

letopisec писал(а):

> МОЖНО однозначно определить хоть все 12 нажатые клавиши -
> препядствий нет!
> Или это шутка?

Каким пардон образом ? Действительно БЭЗ диодов (просто матрица) однозначно
определить произвольные комбинации кнопок никак не получица, Andrey прав.


 
 хотя бы так
Автор: letopisec ()
Дата:   18/05/2004 12:04

хотя бы так

http://www.microchip.ru/phorum/read.php?f=2&i=51700&t=51581

имею ввиду клавы какие делаются в любом сотике, радиотелефоне и.т.п.
Те для 16 клавиш надо 4+4 выводов или 8+2 выводов ...
А чё распространены ещё какие нибудь матричные клв.? - где не встречал всё одно.


 
 всё понял - долго доходило :) (-)
Автор: letopisec ()
Дата:   18/05/2004 12:38

-


 
 Мне объясняй (+)
Автор: Wud ()
Дата:   18/05/2004 17:21

>Я имею в ввиду...
>матрица кнопок:
>1 2 3
>4 5 6
>7 8 9
>-нулем включаешь столбец 1
>-считываешь,обнаруживаешь что замкнуты кнопки 4 и 7
>-нулем включаешь столбец 2
>-считываешь,обнаруживаешь что замкнуты кнопки 5 и 8
>...
>на самом деле замкнуты только 5,7,8...

---
обычная матрица без каких либо пассивных элементов.
-
как это якобы замкнута "4".
включаю столбец1, смотрим 1строку....нет 2строку....нет, 3строку..есть7
включаю столбец2, смотрим 1строку....нет 2строку....есть5, 3строку..есть8
и т.д




 
 Попробую нарваться :) И ничего ты с этим не поделаешь, при таком подключении
Автор: patton ()
Дата:   18/05/2004 17:26

никак этого не избежать


 
 Окончательно запутал... что ты имел ввиду?
Автор: Wud ()
Дата:   18/05/2004 17:35

Погодите, погодите, вот сегодня завтра доберусь до матрицы клавиатурной, вот
ипосмотрим вживую на то, что там и как нажимается.



Отправка отредактированного (18/05/2004 17:37)


 
 Я в живую сделаю сегодня вечером клавиатурку одну
Автор: patton ()
Дата:   18/05/2004 17:45

тогда расскажу на живом примере.
Существует схемотехника при которой если исходить из наших вышеговоренных обозначений если
нажаты кнопки 5,7,8, то для программы будет эффект как будто нажата ещё и кнопка 4, чтобы этого
не было надо как писал LED и ещё раньше Andrey
>>...или диодами развязывать кажную кнопочку
а я плохо прочитал, что писал Andrey и думал, что он как раз отрицает этот факт.
Сорри, все. :-Р

юзера дурковали по чёрному... ©

Отправка отредактированного (18/05/2004 17:46)


 
 Я тоже вечером буду подключать клаву к пику на плату (+)
Автор: Wud ()
Дата:   18/05/2004 17:55

а клава у меня такая, чтоб уж наверняка знали вы о чем речь.
-
та, которая на 12клавиш
http://www.keymat.com/products/keypads/1000plx.html
-
pdf тут
ftp://Key:mat@ftp.ambrit.co.uk/technicalspecs/1000plx_high.pdf
-
кстати, манерная клава...:) мет.подложка, плата хорошо разведена, площадки хорошие,
графит напылен качественно, типа обещают более 4млн нажатий ну и т.д. короче меня
переполняют чувства после покупки.
тянет на баксов 50, а стоит всего 9,5.



Отправка отредактированного (18/05/2004 18:01)


 
 А чего-то я там схемы электрической-принципиальной не нашёл
Автор: patton ()
Дата:   18/05/2004 18:06

так что рассказывать похоже - тебе :)
А это уже в готовом конструктиве, как я погляжу.
А там чего-нибудь плёночное и не на заказ есть?
А на заказ какие цены?
Но это вопросы риторические, изучаю сайт и наверное скоро сам найду.


 
 Принципиалки там нет (+)
Автор: Wud ()
Дата:   18/05/2004 18:51

конструкция готовая, просто ставь(что мне сейчас и надо).
есть pls выводы штыревые, 8контактов. в pdf указано какой штырь какой(столбцы и
строки).
заказывал я в Ультра-Старе в Питерском. 2недели и все ок.
-
имхо сегодня врядли соберу, надо по работе срочное уехать.
завтра с утра сяду собирать, а там поглядим, где там циферка 4 и 5.



Отправка отредактированного (19/05/2004 09:12)


 
 вот накатал по-быстрому
Автор: letopisec ()
Дата:   19/05/2004 14:10

http://letopisec.front.ru




 
 Re: клавишная матрица (+)
Автор: Igor_N ()
Дата:   19/05/2004 14:44

Чё тут сканировать-то...
Дал на столбцы все нули (не принципиально) в строках собрал всех нажатых.
Потом перевернул строки на вывод, а столбцы на ввод. Выдал на строки чё только что
получил и собрал в столбцах код. Исходя из нулей в полученном коде строк и столбцов
сделал вывод чё нажато.
Чё тут сканировать -то?


 
 Re: клавишная матрица (+)
Автор: Andrey ()
Дата:   19/05/2004 15:00

Igor_N писал(а):

> Чё тут сканировать-то...
> Дал на столбцы все нули (не принципиально) в строках собрал
> всех нажатых.
> Потом перевернул строки на вывод, а столбцы на ввод. Выдал на
> строки чё только что
> получил и собрал в столбцах код. Исходя из нулей в полученном
> коде строк и столбцов
> сделал вывод чё нажато.
> Чё тут сканировать -то?
И получишь теже яй.. ,только в профиль :)
Чё тут думать-то?


 
 Re: клавишная матрица (+)
Автор: Igor_N ()
Дата:   19/05/2004 15:09

Теже, только быстрее я забыл добавить.


 
 Re: клавишная матрица (+)
Автор: AL ()
Дата:   19/05/2004 20:38

Вот теперь и я завис, почему

>МОЖНО однозначно определить хоть все 12 нажатые клавиши - препядствий нет!

так нельзя сделать?

>Автор: LED (202.174.158.---)
>Дата: 18/05/2004 11:53
>
>letopisec писал(а):
>
>> МОЖНО однозначно определить хоть все 12 нажатые клавиши -
>> препядствий нет!
>> Или это шутка?
>
>Каким пардон образом ? Действительно БЭЗ диодов (просто матрица) однозначно
>определить произвольные комбинации кнопок никак не получица, Andrey прав.

И это непонятно, почему нельзя без диодов?

Когда я делал клаву 4х4 то диоды ставил только потому что возникает КАЗА
между двумя лапами ПИКа настроенными на выход: на одном "1", а на другом
"0".
Убрать диоды можно ведь и программно, настроить все на вход, и записывать
там где надо "0"сначало в защелку, а потом и ТРИСом включаем ОДИН бит на выход
и КЗ небудет.

Если, например, ПОРТБ настроить на вход, вкл. подтяжки => PORTB=0xff (на лапах)
Пусть хоть все 12 клавиш нажаты, а клава 3 столбца * 4 строки,
В этом случае мы будем считывать 1ст-"0000" 2ст-"0000" 3ст-"0000"
А по умолчанию(когда все отжато) 1ст-"1111" 2ст-"1111" 3ст-"1111"
---------------------------------биты-3210
ПОРТБ "хх хх хх хх"
--биты-76 54 32 10
-------------|| ||
--------| || строки
--------столбцы
Ну и смотрим 1столбец бит0 => если "0" то клавиша нажата, выполнили, смотрим дальше
бит1, (если надо выполнили)... 2... 3... ; потом столбец 2 и т.д.
Но это "нажал какое угодно количество клавиш и ПИК будет выполнять все клавишы
одна за другой, непрерывно"
>Wud
>...а впринципе ведь возможно, что чел нажмет две одновременно клавиши сразу?...

Выполнится сначало 1я, а потом 2я клавиша

Другое дело что попроще наверно не получится...
Или в чем я не прав?


 
 2ALL - А зачем мудрить? (+)
Автор: Wud ()
Дата:   20/05/2004 01:07

Или это моя крыша уехала безвозвратно?
-
зачем резисторы, диоды, какой-то головняк с подозрительными кнопками...
-
есть клавишная матрица 3столбца, 4строки, имхо 12клавиш.
есть пик, у которого 3порта настроены на столбцы, 4порта на вход, строки.
ок...
-
1 2 3
4 5 6
7 8 9
* 0 #
-
начало кода
делаем все строки как вход
делаем все столбцы как вход.
цикл
делаем столбец1 как выход и bsf ему, пробегаемся по строкам, если что-то нажато
(btfsc), то обрабатываем
делаем столбец1 как вход.
двигаемся на второй столбец, делаем его как выход... и т.д. по циклу
...
-
я что-то не уловил?
а мне кажется:
1. простенько так выглядит
2. кратенько
3. никаких КЗ
4. наверняка обработаем все клавиши, сколько бы их не нажали, потому как
мы обрабатываем последовательно одну за другой.



Отправка отредактированного (20/05/2004 01:21)


 
 Возможно придется резисторы (+)
Автор: Wud ()
Дата:   20/05/2004 01:25

повесить на столбцы, тянущие на общий. Но это сомнительно, может и не надо.
завтра попробую.




 
 Re: 2ALL - А зачем мудрить? (+)
Автор: AL ()
Дата:   20/05/2004 01:48

Упражнение:
1) Слаживаем ладошки вместе
2) Поднимаем руки вверх
3) И сгибая в локтях начинаем ЭНЕРГИЧНО ИМИ ТРЯСТИ!!! :)


 
 Взято из AN529 (+)
Автор: letopisec ()
Дата:   20/05/2004 05:46

лишнее только убрал - чтобы глаза не мозолило. Можно бы и переключать направление портов -
тогда диоды не нужны. Подтягивающие резисторы необходимы хотя может и внутренние.
Но хотелось показать не это. Можно оторвать j1,j2,j3 - только эффект остаётся:
при опросе первого столбца и нажатых 1+2+8 нули будут на i0,i2 - с такой схемой ничего
изменить нельзя!

P.S. см. внимательнее


 
 А почему и нет? (+)
Автор: Nиколай ()
Дата:   20/05/2004 16:03

Wud писал(а):

> -
> я что-то не уловил?
> а мне кажется:
> 1. простенько так выглядит
> 2. кратенько
> 3. никаких КЗ
> 4. наверняка обработаем все клавиши, сколько бы их не нажали,
> потому как мы обрабатываем последовательно одну за другой.
>

Все красиво, а если начать просмотр по столбцам - получим информацию о возможной
ошибке определения кода клавиш.
> -
> есть клавишная матрица 3столбца, 4строки, имхо 12клавиш.
> -
> 1 2 3
> 4 5 6
> 7 8 9
> * 0 #
> -
> начало кода
> делаем все строки как вход
> делаем все столбцы как вход.
> цикл
> делаем столбец1 как выход и bsf ему,
пробегаемся по столбцам ,
если что-то нажато(btfsc), то выставляем фаг о возможной ошибке определения кода
или запрещенной комбинации.

> пробегаемся по строкам,
если что-то нажато(btfsc), то обрабатываем с учетом фага о возможной ошибки
> делаем столбец1 как вход.
> двигаемся на второй столбец, делаем его как выход... и т.д. по
> циклу
> ...

Помоему так ...


 
 Re: клавишная матрица (+)
Автор: DIMENTY ()
Дата:   24/05/2004 12:13

Молодец!!!
А то развезли не понятно что.




 
 Мне так кажется, что это вы не в тему сказали (+)
Автор: Wud ()
Дата:   24/05/2004 12:50

Кроме вас, здесь вроде все по делу говорили.
А вопрос вроде давно снят.
-
почти ничего не дорабатывал, повесил резисторы на столбцы, тянущие на общий.
остальное программно.
девайс с клавой давно сделан, и стоит на объекте, замечательно функционирует.



Отправка отредактированного (24/05/2004 12:50)


 
 Re: Мне так кажется, что это вы не в тему сказали (+)
Автор: DIMENTY ()
Дата:   24/05/2004 13:04

Это Я не Вашу сторону.
Запарки у всех в голове бывают. А советы давать, лучше бы буквари почитали.