Опубликовано 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)

Добавить комментарий

Для отправки комментария вы должны авторизоваться.