реклама на сайте
подробности

 
 
> Контроллер 16 кнопочной клавиатуры в Quartus
jheleznoff
сообщение Oct 21 2009, 20:22
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 21-10-09
Пользователь №: 53 114



Доброго времени суток всем. Нужно сделать курсовой проект, а именно как звучит тема "контроллер 16 кнопочной клавиатуры". Проект нужно сделать в Quartus'е. Но поскольку специальность моя была все эти пять лет обучения никак не связана с цифровой техникой (лишь отчасти), мы все более по движениям жлектронов в средах ))), то я не бельмеса как это вообще должно выглядеть. Представляю лишь себе то, что клавиатура должна матричной, наверное, быть и то, что на четрые линни подаем, допустим, импульсы с определенной частотой, на каждой линии смещенные по фазе, а при замыкании (опять же вопрос, как сэмулировать нажатие на кнопку в квартусе) на ваходе одной из других четырех линий появится соответствующий сигнал, который нужно преобразовать в код, наверное, дешифратором... Пожалуйста, поделитесь своими конструктивными мыслями по этому поводу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
Student Pupkin
сообщение Oct 21 2009, 22:44
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Для наглядности smile.gif :
Прикрепленное изображение

X0...X4 - выходы, управляемые буферами с тремя состояниями (выдают или '0' или 'Z');
Y0...Y1 - входы, подтянутые к питанию (тут 3, у вас будет четыре).
Делал так - имеется управляющий автомат, счетчик для задержки.
1) В исходном состоянии автомат держит счетчик в сбросе, все Х0...Х4 в '0'. На вход автомата заведено (Y0 & Y1 Y2). При появлении '0' (т.е. нажатие хотя бы одной кнопки) автомат переходит в следующее состояние.
2) Здесь автомат запускает счетчик - задержка для защиты от дребезга (обычно порядка 20-40 мс достаточно). Состояние выходов X0...X4 переводил в 'Z'. Счетчик выдает на автомат строб - автомат переходит в следующее состояние.
3) Дальше собсно сканирование - поочередно каждый из выходов X0...X4 переводится в '0' (остальные остаются в 'Z') - считываем каждую строку поочередно. Сначала получаем состояние S1, S6 и S11. Потом S2, S7, S12 и т.д. Тут поведение автомата (и соответсвенно число необходимых состояний) зависит от требований к клавиатуре - можно ли нажимать одновременно несколько кнопок или только по одной, когда завершать сканирование (до появления первого результата или надо все строки обязательно проверить) и т.д.
4) Завершение сканирования. Снова все выходы Х0...Х4 переводятся в '0' - теперь ждем когда (Y0 & Y1 Y2) станет '1' - т.е. все кнопки отжаты.
4) Снова запускаем счетчик для задержки против дребезга.
5) Возвращаемся в исходное состояние.
По поводу сымулировать - писал на МHDL элемент "кнопка" - два входа (вход-контакт и упр. вход), один выход. Если на упр. входе '1', то выход повторяет значение на входе-контакте (в т.ч. и 'Z'), иначе на выходе всегда Z. Потом сколько надо кнопок объединил в матрицу. На упр.входы каждой кнопки подавал сигнал от тестового генератора - так и моделировал (одно нажатие, нажатие нескольких кнопок).
Другой вариант - непрерывное сканирование. Защита от дребезга нужна все равно (усреднять результат по нескольким считываниям). Вопрос о формировании выходного кода - тут опять исходя из требований к клавиатуре.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 22 2009, 07:26
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 jheleznoff:
Нужно посмотреть сюда
keyboardcontroller
и сюда keypad_scanner
Это наверно 80/90% ответов на все ваши вопросы biggrin.gif

( "Гуглю на заказ.Быстро. Недорого." laughing.gif )
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th August 2025 - 23:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01332 секунд с 7
ELECTRONIX ©2004-2016