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

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

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