Опубликовано 2010-03-21 17:40:28 автором Ruslan Как подключить к микроконтроллеру кнопки. Урок AVR 5 В предыдущих уроках я рассказывал, как с мк вывести информацию: подключения семисегментного индикатора и Lcd дисплея . А в этом уроке мы будем вводить информацию при помощи кнопок. Кнопки бывают нескольких видов: фиксирующие и тактовые.Из названия кнопки понятен принцип ее работы: тактовая - нажал, контакты замкнулись, разжал - разомкнулись; фиксирующие фиксируют своё состояние: нажал - замкнулись контакты, еще раз нажал - разомкнулись.Стандартная схема подключения кнопок очень простая, выглядит так
Идея работы такова: на ножку через резистор 10к подается напряжение 5 вольт, на ножке логическая единица. Но когда мы нажимаем кнопку, мы ножку замыкаем на землю, а ток-то через резистор потечет маленький, и он будет не в состоянии удержать 5 вольт, и на ножке напряжение просядет до 0 вольт, а это логический 0.Эти моменты мы и будем отлавливать в программе.
Напишем программу, которая будет при нажатии кнопки включать светодиод, при отжатой - выключать
#include <mega8.h>
#include <delay.h>
void main(void)
{
// инициализация порта D
PORTD=0b00000000;
DDRD=0b10000000;
while (1)
{
if (PIND & 0b00000100) /*проверяем, какой логический уровень у нас на ножке знак & - означает побитовое 'И'
например в PIND в нас находится 0b00000100, тогда 0b00000100 & 0b00000100 = 0b00000100,
то есть true, а если в PIND у нас 0b00000000, то 0b00000000 & 0b00000100 = 0b00000000 а это false */
PORTD=0b00000000; // записываем ноль в седьмой бит порта D
else
PORTD=0b10000000; // записываем единицу в седьмой бит порта D
};
delay_ms(100); // делаем задержку в 100 милисекунд для защиты от дребезга контактов
}
В большинстве современных микроконтроллеров есть встроенный подтягивающий резистор R1, поэтому внешний можно и не ставить
Чтобы включить внутренний подтягивающий резистор нужно при инициализации порта в регистре PORTD выставить соответствующий бит, на котором висит кнопка, в единицу: PORTD=0b00000100;
А что же произойдет, если вывод будет сконфигурирован как выход:
- Если на выводе логический ноль, ничего страшного не случится
- если на выводе вдруг окажется логическая единица, то при нажатии кнопки мы попросту закоротим вывод на землю, и через него потечет ток, который ножка не выдержит (ток через ножку не должен превышать 40 милиампер), и вероятнее всего, она перегорит
Поэтому для защити желательно поставить между выводом микроконтроллера и кнопкой резистор ом на 300
Есть еще много способов как подключить кнопки к микроконтроллеру, например с помощью диодов или с помощью ацп, но я их описывать не буду, так как курс рассчитан для начинающих. Если надо, то найдете сами. Комментарии - (0) Добавить комментарийДля отправки комментария вы должны авторизоваться.
|