Интерфейсы периферийных устройств. Ключев А.О - 245 стр.

UptoLike

244
чтение/запись регистра ПЛИС (адрес 0х080000): младшие 4 бита соответствуют
4 столбцам (COL1..COL4), старшие 4 битастрокам (ROW1..ROW4).
Как это работает? Линии сканирующего порта (столбцы) по умолчанию
находятся в состоянии, когда на всех линиях, кроме одной, установлен высокий
логический уровень. Линия, на которой установлен низкий логический уровень,
является опрашиваемой в текущий момент, т.е.
определяет опрашиваемый
столбец. Если какая-либо кнопка этого столбца будет нажата, на
соответствующей линии считывающего порта (строке) также будет низкий
логический уровень, потому что замкнутая кнопка подтянет строку к
потенциалу столбца, т.е. к земле. Если известен номер опрашиваемого столбца
и номера линий считывающего порта, на которых установлен логический «0»,
можно однозначно
определить, какие кнопки этого столбца нажаты.
Далее выбирается следующий опрашиваемый столбец путем установки
логического «0» на соответствующей линии сканирующего порта и со
считывающего порта снова снимаются данные. Цикл сканирования
продолжается до тех пор, пока не будут перебраны таким образом все
сканирующие линии. Традиционным решением является помещение процедуры
опроса клавиатуры в обработчик
прерывания от таймера. В контроллере SDK-
1.1 есть еще другая возможность. В полной конфигурации ПЛИС работа с
клавиатурой может быть организована по прерыванию: 6-й бит (KB) регистра
ENA заведен на вход внешнего прерывания INT0 МК ADuC812. Внешнее
прерывание будет возникать, как только на клавиатуре будет нажата хоть одна
клавиша (любая).
Для случая, когда одновременно нажато несколько
кнопок одного столбца
все понятно. Будет установлено в логический «0» несколько битов
считывающего порта одновременно. Но что произойдет, если будут замкнуты
контакты нескольких кнопок из разных столбцов одной строки? Ведь в разных
столбцах могут оказаться разные напряжения, так как на всех столбцах, кроме
одного, логическая «1». Одновременное нажатие двух кнопок в одной
строке
привело бы к короткому замыканию и выжженным портам, если бы не диоды
D3-D6 (рис. 134, рис. 135). Именно они защищают порты от короткого
замыкания.
Резисторы RP5 на схеме являются подтягивающими. Если используемый
микроконтроллер (в нашем случае используется ПЛИС) имеет в своем составе
подтягивающие резисторы, от них можно отказаться.
Рис. 135. Матричная клавиатура на принципиальной электрической схеме SDK-1.1