Статистика | |
Онлайн лист | |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 | |
Главная » Статьи » Микроконтроллеры |
Подключение кнопок к Atmega16
Одним из простых и удобных способов управления микроконтроллером являются кнопки. Сейчас покажу как просто подключить кнопки к микроконтроллеру atmega16 (по аналогии и к любому другому AVR). Для начала схема: К порту А я подключил LCD на основе контроллера HD44780. На него будет выводится результат нажатия кнопок. Сами кнопки, в количестве двух штук, я подключил на порт B, на 0 и 1 пины, с одой стороны и на землю с другой стороны. Эти две ножки я настроил на выходы и установил на них высокий уровень: PORTB=0x03; DDRB=0x03; Теперь о том как все будет работать: Пока кнопка отжата, на выходе,например PB0, будет высокий уровень(1). Если нажать кнопку то этот выход окажется подключенным к земле и уровень сменится с 1 на 0. Вот это изменение мы можем легко отследить и задать по нему какое то действие. В работе с кнопками есть один нюанс - дребезг контактов, в двух словах: при фактическом нажатии кнопки происходит неоднократное замыкание и размыкание контактов, что не очень то и приятно и удобно. Так вот для борьбы с дребезгом есть несколько разных способов, но сейчас покажу самый простой, он не всегда подходит, но для начала и для простого проекта он вполне подойдет. Способ заключается в простой задержке. Т.е. когда микроконтроллер понял что кнопка была нажата, он включает задержку на заданное время, тем самым исключая возможность реакции на изменение состояния кнопки. В коде это выглядит так: if(PINB.0==0) // Сравнение уровня на выходе PB0 с 0 { delay_ms(200); // Задержка в 200 миллисекунд Действие // какое то действие по нажатию кнопки } Получается все очень просто. А теперь небольшой примерчик. Схема есть выше и к ней код:
Что делает эта программа. На экран она выводит число 50. При нажатии на кнопку, подключенную к PB0, число на экране увеличивается на 1, при нажатии на кнопку, подключенную к PB1, число уменьшается на 1. То есть по нажатиям на кнопки происходит изменение некоего параметра на 1. Очень простой пример управления. $RELATED_ENTRIES$(6)?> | |
| |
Категория: Микроконтроллеры | Добавил: Naprisar (26.09.2012) | |
Просмотров: 11232 | Комментарии: 7
| Теги: |
Всего комментариев: 7 | ||||||
| ||||||