| |||||||
Опубликовано 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;
Комментарии - (0) Добавить комментарийДля отправки комментария вы должны авторизоваться. |