Блимаючий світлодіод - це перший крок, який ви хотіли б зробити, щоб розпочати роботу з електронікою. У цьому підручнику ми збираємось підключити світлодіод до ATmega32, який є мікроконтролером серії AVR. Ми збираємося блимати світлодіодом на половині секунди.
Потрібні компоненти
Обладнання:
Мікроконтролер ATmega32A
Блок живлення (5 В)
Програміст AVR-ISP
Конденсатор 100 мкФ
СВІТЛОДІОДНИЙ
Резистор 220 Ом
Програмне забезпечення
Студія Atmel 6.1
Прогісп або флеш-магія
Схема та робоче пояснення
Як показано на наведеній вище схемі для взаємодії світлодіода з мікроконтролером AVR, тут немає необхідності підключати зовнішній кристал. Оскільки ATMEGA за замовчуванням працює на внутрішньому генераторі резистор-конденсатор 1 МГц. Лише коли потрібна точність годинника, оскільки застосовується високоточний підрахунок, зовнішній кристал кріпиться. Коли контролер купується вперше, він за замовчуванням працює на внутрішньому кристалі.
Сюди підключений резистор, щоб обмежити струм струму від світлодіода. Пам'ятайте, контролер не може подавати більше 30 мА на термінали.
Пояснення програмування
Програма для мікроконтролера ATmega32 для блимання світлодіода показана нижче. Коментарі в коді пояснюють призначення окремого рядка коду.
#include // заголовок, щоб увімкнути контроль над потоками даних над контактами
#define F_CPU 1000000 // повідомляє про частоту кристалів контролера
#включати
int main (void)
{
DDRD = 0xFF; // (або 0b1111 1111) В AVRSTUDIO для того, щоб сказати контролеру використовувати певний біт порту як вхід, ми використовуємо “НУЛЬ”, для того, щоб сказати йому використовувати певний біт як вихід, ми використовуємо “ОДИН”. Оскільки ми поставили вісім "ОДНО", усі штифти PORTD включені як вихід. Якщо ми ставимо нуль як "0b1111 0111", тепер усі висновки 0,1,2,4,5,6,7 включені як входи, а PIN 3 увімкнено як вхід.
в той час, як (1) // цикл триває вічно, і світлодіод буде блимати вічно
{
PORTD = 0xFF; // всі штифти PORTD, як кажуть, забезпечують вихід 5 В або кажуть, що потрібно тягнути високо (світлодіод увімкнено)
_delay_ms (220); // затримка на 200мс
_delay_ms (220);); // затримка на 200мс
PORTD = 0x00; // всі штифти PORTD, як кажуть, забезпечують землю на виході або тягнуть вниз
_delay_ms (220);); // затримка на 200мс
_delay_ms (220);); // затримка на 200мс
}
}