Суббота, 27.04.2024, 07:42
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Реклама Google
Форма входа
Категории раздела
Это нужно знать! [17]
Изучаем AVR [30]
Программаторы [12]
Необходимое ПО [8]
Готовые устройства [73]
Справочная [38]
Инструмент [0]
Технология [8]
Литература [0]
Arduino скетчи [18]
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Микроконтроллеры - это просто!
Главная » Статьи » Изучаем AVR

Подключение кнопок
Очень важно уметь подключать кнопки к вашим устройствам на основе МК. Трудно себе представить какое-либосовременное электронное устройство без кнопок управления.

Электронная кнопка.


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



Краткое описание: суть нашей программы весьма проста . У нас есть 8 светодиодов на которые мы будем выводить двоичное число. В начале работы МК наше число ==0 но мы при помощи кнопок сможем увеличивать его значение на 1 либо уменьшать на 1.

Вот блок схема  опроса кнопки(общий вид)



 

Код программы:

#define F_CPU 1000000UL     //выбор частоты тактирования (1Мгц)
#include <avr/io.h>                   //подключение заголовочного файла (содержит физические адреса регистров МК)
#include <util/delay.h>           //подключение заголовочного файла (описание функции _delay_ms() и _delay_us())

int main(void)                              //главная функция (начало программы)
{
DDRB= 0b11111111;                 //определяем PORTB на выход
PORTB=0b11111111;               //устанавливаем 5V на всех ножках порта B

DDRD = 0b11111100;             //устанавливаем первые две ножки на вход остальные на выход
PORTD= 0b00000011;        //подключаем к первым двум ножкам подт резисторы остальные уст в 0

unsigned char N=0;                //создаем счетную переменную 

char Flag1=0;                           // создаем флажок для кнопки 1
char Flag2=0;                           // создаем флажок для кнопки 2
//не обязательно создавать 2 переменных можно использовать биты одной переменной  используя побитовые операции можно сделать 8 флажков используя только одну переменную типа char

while(1)                      //бесконечный цикл 
{
PORTB=N;                 //выводим переменную

if(!(PIND&1))          // опрашиваем кнопку 1(+)
{
Flag1=1;                    //кнопка нажата (устанавливаем флаг в 1)
_delay_ms(10);     //задержка (защита от дребезга)
}

if(( Flag1==1 )&&(PIND&1))         //условие если кнопка была нажата а потом отпущена
{ N+=1; Flag1=0;  }           // увеличиваем счетную переменную на единицу и сбрасываем флажок

if(!(PIND&2))                // опрашиваем кнопку 2(+)
{
Flag2=1;                         //кнопка нажата (устанавливаем флаг в 1)
_delay_ms(10);               //задержка (защита от дребезга)
}

if(( Flag2==1 )&&(PIND&2))          //условие если кнопка была нажата о потом отпущена
{ N-=1; Flag2=0;  }                             // уменьшаем счетную переменную на единицу и сбрасываем флажок

}
}

Есть и другие способы подключения кнопок. Описанный выше способ является весьма наглядным и простым.
Важно понимать:

1) Дребезг контактов — при нажатии кнопки  происходит многократная смена напряжения  с 5V до 0V что может привести к многократной регистрации нажатия кнопки. Для того чтобы этого не происходило мы используем програмную задержку _delay_us().



2) Побитовые операции- (&-битовое «И». |-битовое «ИЛИ». ~-побитовая «НЕ». ^-битовое «ИСКЛ ИЛИ») это операции над битами чисел.

3)Опрос напряжения на ножке происходит при помощи регистра PIN(A.B.C…) в этом 8 разрядном регистре хранится информация о приложенных напряжениях к ножкам соответствующего порта.
unsigned char N=0;     //создаем переменную для хранения состояний ножек на порте B
N=PINB;                           //присваиваем переменной значение регистра PIN

Регистр PIN(A.B.C…) предназначен только для чтения.Например, если в переменнуюN записалось число 0b00000001; это означает, что на первой ножке  напряжение  5V а на других ножках 0V.
Категория: Изучаем AVR | Добавил: Alex (20.01.2014)
Просмотров: 4683 | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024