Шрифт:
Программа опроса клавиатуры последовательно анализирует состояние клавиш каждого ряда, последовательно выставляя логический 0 на выводы PORTx[0]…PORTx[3]. На рис. 5.5 приведена таблица, в которой показаны коды, которые будут на линиях порта при нажатии каждой из клавиш. Эти коды должны быть использованы программой опроса для приведения кода нажатой клавиши к одному из стандартных представлений, например к коду ACSII.
Рассмотренная нами клавиатура может иметь иные символы на кнопках, в соответствие с функциональным назначением кнопки в устройстве. Например, подобная клавиатура используется для управления насосом бензоколонки. Тогда клавиши могут задавать тип отпускаемого бензина, форму приема платежа и т.д. Микроконтроллер должен распознать, какая клавиша нажата, и перейти к соответствующей подпрограмме.
Рис. 5.6. Блок-схема алгоритма опроса матричной клавиатуры
На рис. 5.6 приведена блок-схема алгоритма опроса матричной клавиатуры из 16 клавиш. Этот алгоритм состоит из четырех одинаковых блоков, в которых сначала устанавливается в 0 одна из линий PORTx[0]…PORTx[3], а затем контролируется состояние линий PORTx[4]…PORTx[7]. Если на входах линий PORTx[4]…PORTx[7] логические 1, то ни одна кнопка активизированного ряда не нажата, и следует перейти к опросу следующего ряда. Если на какой-либо из линий PORTx[4]…PORTx[7] обнаружен потенциал логического 0, то по номеру линии и по номеру активизированного ряда программа должна восстановить код нажатой клавиши. Для этого удобно использовать таблицу рис. 5.5. Мы привели лишь общую структуру алгоритма. Детальное ее рассмотрение последует после примера программного кода, и описания ЖК дисплея.