способ опроса матричной клавиатуры
Классы МПК: | G06F3/023 устройства для преобразования дискретной информации в код, например устройства для интерпретирования генерируемых клавиатурой кодов, таких как буквенно-цифровые коды, коды операнда или коды команд |
Автор(ы): | Гришин Сергей Иннокентьевич (RU) |
Патентообладатель(и): | Закрытое Акционерное Общество "Корпоративный институт электротехнического приборостроения "Энергомера" (RU) |
Приоритеты: |
подача заявки:
2006-09-06 публикация патента:
10.11.2008 |
Изобретение относится к области электронной техники, а более конкретно к способу обработки вводимой информации с клавиатуры.
Техническим результатом является уменьшение времени, затрачиваемого микроконтроллером на опрос клавиатуры. Указанный технический результат достигается за счет того, что дополнительно вводят операцию переключения входов и выходов матричной клавиатуры, которую осуществляют после нажатия любой клавиши клавиатуры. Для определения кода нажатой клавиши производят считывание с клавиатуры два раза: по сигналу прерывания после нажатия клавиши с вертикальных линий и после переключения входов и выходов клавиатуры с горизонтальных линий. При этом для определения кода нажатой клавиши используют комбинацию кода, считанного с выходов матричной клавиатуры до переключения входов с выходами, и кода, считанного с выходов матричной клавиатуры после переключения входов с выходами. 1 ил.
Формула изобретения
Способ опроса матричной клавиатуры, выполняемый с помощью микроконтроллера, все выводы которого, соединенные с горизонтальными линиями клавиатуры, программируют как выходы, при этом горизонтальные линии клавиатуры являются входными, а все выводы микроконтроллера, соединенные с вертикальными линиями клавиатуры, программируют как входы, при этом вертикальные линии клавиатуры являются выходными, имеющими возможность вызывать прерывание выполнения программы микроконтроллера, при этом производят чтение кода с вертикальных линий клавиатуры, отличающийся тем, что дополнительно вводят операцию переключения входов и выходов матричной клавиатуры, при этом горизонтальные линии клавиатуры становятся выходами, а вертикальные линии клавиатуры становятся входами, которую осуществляют после нажатия любой клавиши клавиатуры по сигналу прерывания, затем выполняют чтение кода с горизонтальных линий клавиатуры, а затем снова переключают входы и выходы клавиатуры, для определения кода нажатой клавиши используют комбинацию кода, считанного с выходов матричной клавиатуры с вертикальных линий до переключения входов с выходами, и кода, считанного с выходов матричной клавиатуры с горизонтальных линий после переключения входов с выходами.
Описание изобретения к патенту
Изобретение относится к области электронной техники, а более конкретно к способу обработки вводимой информации с клавиатуры.
В настоящее время известны несколько способов опроса клавиатуры, позволяющих вводить информацию в различные приборы и устройства. В большинстве из них опрос выполняют с помощью контроллера (микроконтроллера), при этом постоянно сканируют клавиатуру для определения кода нажатой клавиши. Эти способы являются аналогами к заявляемому техническому решению и описаны в источниках [1], [2].
Ближайшим техническим решением из аналогов - прототипом к заявляемому способу, является способ опроса клавиатуры методом сканирования, приведенный в статье [1].
В этом способе, в клавиатуре, выполненной в виде матрицы, горизонтальные линии являются для микроконтроллера выходными, а вертикальные - входными, подтянутыми с помощью резисторов к уровню питания. Для определения кода нажатой клавиши, микроконтроллер постоянно производит циклическое сканирование горизонтальных линий матрицы, т.е. попеременно выставляет на одной из горизонтальных линий сигнал логического "0", а на остальных - сигнал логической "1". В каждой фазе сканирования считывается и анализируется код на вертикальных линиях матрицы. При замыкании какой-либо из клавиш и появлении сигнала логического "0" в вертикальной линии, микроконтроллер считывает код с вертикальных линий и определяет код нажатой клавиши.
Основным недостатком этого способа является то, что микроконтроллеру необходимо постоянно выполнять сканирование клавиатуры, независимо от того, нажимается клавиша или нет.
Задачей заявляемого решения является уменьшение времени, затрачиваемого микроконтроллером на опрос клавиатуры.
Для решения поставленной задачи предлагается способ опроса матричной клавиатуры, осуществляемый с помощью микроконтроллера.
Общими с прототипом признаками являются следующие: все выводы микроконтроллера, соединенные с горизонтальными линиями клавиатуры, программируют как выходы, при этом горизонтальные линии клавиатуры являются входными, а все выводы микроконтроллера, соединенные с вертикальными линиями клавиатуры, программируют как входы, при этом вертикальные линии клавиатуры являются выходными, имеющие возможность вызывать прерывание выполнения программы микроконтроллера, при этом производят чтение кода с вертикальных линий клавиатуры.
Отличием является то, что после нажатия любой клавиши клавиатуры и появления сигнала, вызывающего прерывание основной программы микроконтроллера, вводят операцию переключения входов и выходов матричной клавиатуры. При этом горизонтальные линии клавиатуры становятся выходами, а вертикальные линии клавиатуры становятся входами. Затем выполняют чтение кода с горизонтальных линий клавиатуры, а затем снова переключают входы и выходы клавиатуры. Для определения кода нажатой клавиши используют комбинацию кода, считанного с выходов матричной клавиатуры с вертикальных линий до переключения входов с выходами, и кода, считанного с выходов матричной клавиатуры с горизонтальных линий, после переключения входов с выходами.
Схемотехническая реализация способа может быть такой, как в прототипе, и приведена в статье [1].
Примером для реализации способа опроса матричной клавиатуры может служить устройство, состоящее из двух горизонтальных и двух вертикальных линий, изображенное на чертеже. Устройство содержит микроконтроллер 1, к порту 2 которого подключены горизонтальные линии 3 и 4 матричной клавиатуры 5, а к порту 6 подключены вертикальные линии 7 и 8 матричной клавиатуры 5, которая содержит клавиши 9, 10, 11, 12 и резисторы 13, 14, 15, 16, подтягивающие горизонтальные линии 3 и 4 и вертикальные линии 7 и 8 к напряжению питания.
Устройство работает следующим образом. В исходном состоянии в микроконтроллере 1 настраивают порт 2 на выход и на горизонтальных линиях 3 и 4 устанавливают уровень логического "0", а порт 6 настраивают на вход с возможностью работы по прерыванию. На вертикальных линиях 7 и 8 подтягивающими резисторами 15 и 16 задают уровень логической "1". Пока ни одна из клавиш не нажата, микроконтроллер 1 не получает сигнал прерывания по порту 6 и выполняет основную программу, не затрачивая времени на обслуживание клавиатуры. При нажатии клавиши, например 9, на вертикальной линии 7 появляется уровень логического "0", вызывающий прерывание микроконтроллера 1. Микроконтроллер 1 читает состояние порта 6, затем перепрограммируют линии порта 2 на вход, а линии порта 6 на выход с повторением считанного состояния, т.е. устанавливая в линии 7 уровень логического "0", а в линии 8 уровень логической "1". При этом уровень в линии 3 станет равным логическому "0", который считывают микроконтроллером 1, читая состояние порта 2. Из совокупности кода, установленного в порт 6 и принятого по порту 2, формируют код нажатой клавиши. Уровень логической "1" в порту 2 задают подтягивающими резисторами 13 и 14. После отжатия клавиши, микроконтроллер 1 возвращается в исходное состояние и настраивает порт 2 на выход, а порт 6 - на вход.
В результате реализации заявляемого способа уменьшается ресурс времени, затрачиваемый микроконтроллером на обработку вводимой информации с клавиатуры, и увеличивается время на выполнение других операций, что так важно в устройствах, где совмещается функция опроса клавиатуры с выполнением основной программы.
Литература
1. Схемотехника, №10, 11, 2001 г., «Интерфейсы с клавиатурой».
2. Интернет страница: //ofap.ulstu.ru - Справочник по однокристальным микроконтроллерам КМ1816ВЕ48.
Класс G06F3/023 устройства для преобразования дискретной информации в код, например устройства для интерпретирования генерируемых клавиатурой кодов, таких как буквенно-цифровые коды, коды операнда или коды команд