Мигающий светодиод - это первый шаг, который вы хотели бы сделать, чтобы начать работу с электроникой. В этом руководстве мы собираемся подключить светодиод к ATmega32, который является микроконтроллером серии AVR. Мы собираемся мигать светодиодом с частотой полсекунды.
Необходимые компоненты
Оборудование:
Микроконтроллер ATmega32A
Источник питания (5В)
Программист AVR-ISP
Конденсатор 100 мкФ
СВЕТОДИОД
220 Ом резистор
Программного обеспечения
Атмель Студия 6.1
Прогисп или флеш-магия
Схема и объяснение работы
Как показано на приведенной выше схеме подключения светодиода к микроконтроллеру AVR, здесь нет необходимости подключать внешний кристалл. Потому что по умолчанию ATMEGA работает от внутреннего генератора резистора-конденсатора с частотой 1 МГц. Только тогда, когда требуется точность часов, как применение высокоточного счета, прикрепляется внешний кристалл. Когда контроллер покупается впервые, он по умолчанию работает на внутреннем кристалле.
Сюда подключается резистор для ограничения тока, потребляемого светодиодом. Помните, что контроллер не может подавать на клеммы более 30 мА.
Объяснение программирования
Программа микроконтроллера ATmega32 для мигания светодиода показана ниже. Комментарии в коде объясняют назначение отдельной строки кода.
#include // заголовок для включения управления потоком данных на выводах
#define F_CPU 1000000 // сообщаем частоту кристалла контроллера
#включают
int main (пусто)
{
DDRD = 0xFF; // (или 0b1111 1111) В AVRSTUDIO для указания управляющему элементу использовать определенный бит порта в качестве входа мы используем «ZERO», чтобы указать ему использовать определенный бит в качестве выхода, мы используем «ONE». Поскольку мы установили восемь «ЕДИНИЦ», все выводы PORTD активированы как выходные. Если мы поставим ноль как «0b1111 0111», теперь все контакты 0,1,2,4,5,6,7 включены как входы, а PIN 3 включен как вход.
while (1) // цикл продолжается вечно и светодиод будет постоянно мигать
{
PORTD = 0xFF; // все контакты PORTD, как говорят, обеспечивают выход 5 В или требуют высокого уровня (светодиод горит)
_delay_ms (220); // задержка на 200 мс
_delay_ms (220);); // задержка на 200 мс
PORTD = 0x00; // все контакты PORTD, как говорят, обеспечивают заземление на выходе или понижают
_delay_ms (220);); // задержка на 200 мс
_delay_ms (220);); // задержка на 200 мс
}
}