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