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

Ликбез по программированию PIC , vol. # 2

1 17

Начало см. здесь: http://pro-radio.ru/controllers/2108-1/ - http://pro-radio.ru/controllers/2108-25/

Если мы будем в дальнейшем использовать индикатор со встроенным контроллером, то есть ли смысл сейчас ставить 7-сегментный индикатор? К нему нужен еще дешифратор, который потом придется убрать. Хотя для наглядности можно и поставить, только тогда уж несколько разрядов (например 4) и с индикатором со встроенным контроллером пока не связываться.

PS: предлагаю использовать 7-сегм. индикатор А-564G фирмы Para Light, он недорогой, яркий и имеет 4 разряда.

 

Так, процесс пошел далее. Отлично. Вот пара ссылок на примеры применения PIC. Там и про клавиатуры есть. Только по-английски
http://www.microchip.ru/?mid=3x1&fid=5
http://www.microchip.ru/?mid=3x1&fid=6
Для 7-сегментного светодиодного индикатора дешифратор нам не обязателен. Программно дешифрацию сделаем. Сегменты можем через резисторы подключить, например, к выводам PORTB. К этим же выводам - и клавиатуру. Они друг дружке помешать не должны. А выводы разрядов (общие аноды или катоды) - к выводам PORTA. Для начала динамическую индикацию можно и не делать, для отображения кода клавиши нам одного разряда хватит.
Достоинств у светодиодного индикатора немало - он недорог, доступен, работать с ним очень просто и наглядно.
Splav56, этот индикатор с общими анодами или катодами?

Ага, даташит уже нашёл, вопрос снят - общие аноды.

 

Насчет подключения клавиатурной матрицы. Простой вариант:
http://www.pic16.nm.ru/likbez2/ButtonMatrix1.gif

Опасность - "фантомные" кнопки при нажатии трех (и более) кнопок сразу:
http://www.pic16.nm.ru/likbez2/ButtonMatrix1phantom.gif

 

А вот так предлагаю сформулировать второе техзадание:

Техзадание № 2 (учебное).
Разработать устройство опроса клавиатуры с использованием микроконтроллера PIC16F628(A). Клавиатуру выполнить в виде матрицы кнопок 3x4. Символ, соответствующий нажатой кнопке, отображать на 7-сегментном светодиодном индикаторе с общим анодом. Отображение символа должно происходить только при нажатой кнопке. При нажатии двух (и более) кнопок одновременно должен отображаться спецсимвол "П". Если все кнопки отпущены, то устройство должно переходить в режим минимального энергопотребления и находиться в нем до момента нажатия любой кнопки.

 

1. А не нужно ли развязать столбцы диодами?
2. Если не ошибаюсь, то будем для начала использовать только один разряд из четырех?
3. Остальное завтра, после более глубокого осмысления информации.

 

1. Да, желательно.
2. Для начала одного хватит, хотя подключить и все сразу можем.
3. Аналогично. Есть еще одна хитрая схема подключения - всего 4 вывода используется. Левон про нее упоминал в прошлой ветке. Я сейчас к ней внимательно присматриваюсь. Там программа заметно сложнее получается.

 

Посмотрел я ту хитрую схему. Принцип там такой:
http://www.pic16.nm.ru/likbez2/ButtonMatrix4.gif

В этом случае будут трудности с выходом из режима sleep по нажатию любой клавиши из 12. Легко сделать по нажатию одной из трех (1 или 2 или 3, либо 456, либо 789, либо *0#).

 

Нашел вот такое подключение кнопок:

Позволяет осуществлять сброс при нажатии кнопки "*".

Если портов нам хватит для ввода и вывода в дальнейшем (датчик положения двери, пищалка, исполнительный механизм, 4-х разрядная матрица), то можно не заморачиваться с экономией портов и занять клавой 7 портов. Защиту от "фантомной кнопки" сделать программно.

PS в схеме ошибочка: у кнопки "*" не должно быть соединения с С5 и кнопками "7", "4" и "1"

 

Я по-моему уже приводил ссылку на клавиатуру с 4 выводами ( http://www.disall.narod.ru/circuit.htm ) там и кусочек программы есть - никак не подойдёт?
P.S. picmaniac: Левон про нее упоминал в прошлой ветке. - поздно заметил....

 

Я нарисовал такую: