Свежие обсуждения
Микроконтроллеры

Подключить кнопки к МК

1 3

Можно ли как-нибудь сделать опрос кнопок с помощью последовательного регистра сдвига 74HC164 ?

Например, бкдет ли работать такая схема? http://i006.radikal.ru/0711/61/08fc5e7e6db5.gif

 

А чего ей не работать? Вываливаете бегущую единицу и работаете.

 

А может проще отдельный МК поставить и залить в него программу подавления дребезга и др.?

 

Если опрос делать, например, каждые 5 мс и состояния кнопок выбирать из двух выборок подряд (если две последние выборки состояние кнопки не изменилось - это стабильное состояние), то от дребезга ничего не останется.
Также на этот регистр удобно посадить за компанию динамическую индикацию на светодиодном индикаторе.

 

У меня при работе такой схемы (та, что в пером посте) программа принимала ересь какую-то, я, видать, где-то намудрил, но так и не понял, где

Но проблема решилась другим путем - клавиатуру сделал на параллельных регистрах, все работает отлично. А защиту от дребезга поставил аппаратную, т.к. важно время отклика на нажатие кнопки.

Насчет индикации - она уже сделана на последовательных регистрах

 

можно сделать матрицей
можно сделать при помощи ацп и резисторов (видел такой вариант в одном из мониторов)

 

2 Алконаффт
Чтобы не мудрить, соберите схемку в Proteus,
либо в EWB 9. Работу матричной клавиатуры удобно
просмотреть в PIC симуляторе.

 

Насчет индикации - она уже сделана на последовательных регистрах
если регистр уже есть, то нужен ОДИН пин -- и у вас будет кнопок по одной на выход регистра ... Писать подробней? (время жалко, если не
нужно)
Можно в аську 398740610

 

Появилась новая микруха MAX7359ETG - сканер клавиатуры 8x8 с I2C-интерфейсом и выходом прерывания для микроконтроллера.
Можно сконфигурировать ее как сканер клавиатуры 8x2, а остальные 6 выводов как GPO использовать + еще куча настроек (3 адреса).
Может много функциональности, но вдруг пригодится?

 

Недавно наткнулся на вариант подключения клавиатуры на 16 кнопок к одному аналоговому входу МК.
Схема:

Есть некоторая нелинейность, но работает. Плохо только, что матрица кнопок 4х4 получается урезаной. Можно подключить полную матрицу 4х4, но появляется нелинейность.
На графике ниже, показывающем зависимость выходного напряжения от номера нажатой кнопки видно, что если подключать матрицу, выбросив портящие её резисторы R4, R5 и R6, то нелинейность становится ещё хуже. Но всё равно вариант рабочий.

Помня, что запитка подобных делителей не источником напряжения, а источником тока хорошо линеаризует характеристику, пересчитал резисторы и получил отличный результат.
График ниже показывает, что линейность отличная:

Изменения:
Резисторы R1,R2,R3 на 4 КОм.
Резисторы R4,R5,R6 заменены перемычками.
Резисторы R7,R8,R9,R10 на 1 КОм.
Схема запитывается любым источником тока, подключенным к точке VCC. С этой же точки снимается напряжение и подаётся на аналоговый вход МК.

При указанных значениях резисторов и токе 0.3мА выходное напряжение меняется от 0,3В до 4,8В с шагом 0,3В.
Высокая линейность и большой шаг позволяют сделать вывод, что по такому же принципу к одному входу АЦП можно подключить матрицу на большее число кнопок.