|
|||||||
Кнопочный ввод с помощью АЦП и гребенки сопротивлений на AVR контроллере
Время создания: 02.12.2021 18:01
Текстовые метки: avr, arduino, ввод, кнопка, клавиатура, сопротивление, контроллер, опрос
Раздел: Компьютер - Программирование - Ассемблеры - Архитектура AVR
Запись: xintrea/mytetra_syncro/master/base/1638457318jnd3e3t992/text.html на raw.github.com
|
|||||||
|
|||||||
Схема кнопочного ввода выглядит следующим образом: Рис.1 Опрос кнопок с помощью АЦП Если в микроконтроллере имеется АЦП, то его также можно использовать для опроса кнопок. Схема подключения показана на рис.1. Как видим для группы кнопок SB1…SBN такой интерфейс потребует всего одной аналоговой линии. Нажатие кнопки определяется по изменению напряжения U0. Если для простоты все сопротивления R делителя напряжения выбрать одинакового номинала, то номер нажатой кнопки N, будет связан с U0 следующим образом: U0 = ((N-1)/N)*VCC, N = VCC/(VCC- U0), где VCC – напряжение питания. Если в качестве опорного напряжения VREF выбрать напряжения питания VCC, то получим N = 0x3FF/(0x3FF – ADCH:ADCL), где ADCH:ADCL – регистр с 10-разрядным результатом измерения U0. Для опроса кнопок вполне достаточно 8-разрядной точности измерения U0. Поэтому можно спокойно отбросит 2 младших разряда и работать с однобайтовыми числами. Конечная формула при этом станет ещё проще: N = 0xFF /(0xFF – ADCH) Старший байт результата окажется в регистре ADCH если в настройках АЦП включён режим выравнивания по левому краю. При этом 8 старших битов результата заносятся в ADCH, а 2 младших, которые в данном случае будут отброшены, в 6-й и 7-й разряды ADCL. Подпрограмма опроса кнопок:
При таком подключении лучше всего использовать 2-8 кнопок, а для увеличения их количества можно задействовать другие аналоговые линии. Платой за простоту является невозможность распознания комбинаций клавиш. При нажатии двух или более кнопок всегда будет считана та, которая на схеме имеет меньший номер. Кнопка SB1 будет всегда иметь наивысший приоритет. В некоторых приложениях эта особенность может быть даже преимуществом, когда, например, необходимо выдать сигнал отключения независимо от остальных команд, приходящих с клавиатуры. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|