Мигащият светодиод е първата стъпка, която бихте искали да предприемете, за да започнете с електрониката. В този урок ще свържем светодиод с ATmega32, който е микроконтролер от серия AVR. Ще премигваме светодиода с половин секунда.
Необходими компоненти
Хардуер:
Микроконтролер ATmega32A
Захранване (5v)
Програмист AVR-ISP
Кондензатор 100uF
LED
220Ω резистор
Софтуер
Atmel studio 6.1
Прогисп или флаш магия
Схема и работно обяснение
Както е показано в горната схема на свързване на LED с AVR микроконтролер, няма нужда да свързвате външен кристал тук. Тъй като ATMEGA работи по подразбиране на вътрешен 1MHz резистор-кондензатор. Само когато е необходима точността на часовника, тъй като прилагането на прецизно броене, се прикрепя външен кристал. Когато контролерът е закупен за първи път, той по подразбиране работи с вътрешен кристал.
Резисторът е свързан тук, за да ограничи текущото изтегляне от светодиода. Не забравяйте, че контролерът не може да осигури повече от 30 mA на терминалите.
Обяснение на програмирането
Програмата за ATmega32 микроконтролер за мигане на светодиод е показана по-долу. Коментарите в кода обясняват целта на отделния ред на кода.
#include // header, за да се даде възможност за контрол на потока от данни над щифтове
#define F_CPU 1000000 // казва на честотата на кристала на контролера
#include
int main (void)
{
DDRD = 0xFF; // (или 0b1111 1111) В AVRSTUDIO, за да кажем на контрола да използва определен бит от порт като вход, използваме „ZERO“, за да му кажем да използва определен бит като изход използваме „ONE“. Тъй като поставихме осем „ONE“, всички изводи на PORTD са разрешени като изход. Ако поставим нула като „0b1111 0111“, сега всички пинове 0,1,2,4,5,6,7 са активирани като входове и ПИН 3 е активиран като вход.
докато (1) // цикълът продължава завинаги и светодиодът ще мига завинаги
{
PORTD = 0xFF; // за всички пинове на PORTD се казва, че осигуряват 5v изход или им се казва да дръпнат високо (LED ON)
_delay_ms (220); // закъснение за 200ms
_delay_ms (220);); // закъснение за 200ms
PORTD = 0x00; // се казва, че всички щифтове на PORTD осигуряват земя на изхода или изтегляне надолу
_delay_ms (220);); // закъснение за 200ms
_delay_ms (220);); // закъснение за 200ms
}
}