Blikající LED je první krok, který byste chtěli podniknout, abyste mohli začít s elektronikou. V tomto tutoriálu se chystáme připojit LED k ATmega32, což je mikrokontrolér řady AVR. Budeme blikat LED diodou rychlostí půl sekundy.
Požadované komponenty
Hardware:
Mikrokontrolér ATmega32A
Napájení (5 V)
Programátor AVR-ISP
100uF kondenzátor
VEDENÝ
220Ω rezistor
Software
Atmel studio 6.1
Progisp nebo flash magie
Vysvětlení obvodu a práce
Jak ukazuje výše uvedené schéma zapojení rozhraní LED s mikrokontrolérem AVR, není třeba zde připojovat externí krystal. Protože ATMEGA ve výchozím nastavení pracuje na interním oscilátoru 1MHz rezistor-kondenzátor. Pouze v případě, že je nutná přesnost hodin, jako aplikace vysoce přesného počítání se připojí externí krystal. Když je ovladač poprvé zakoupen, je ve výchozím nastavení fúzován, aby fungoval na interním krystalu.
Zde je připojen odpor, aby se omezil odběr proudu z LED. Pamatujte, že ovladač nemůže na svorkách poskytnout více než 30 mA.
Vysvětlení programování
Program pro mikrokontrolér ATmega32 pro blikání LED je uveden níže. Komentáře v kódu vysvětlují účel jednotlivých řádků kódu.
#include // header to enable data flow control over pins
#define F_CPU 1000000 // sdělování krystalové frekvence řadiče
#zahrnout
int main (neplatný)
{
DDRD = 0xFF; // (nebo 0b1111 1111) V AVRSTUDIO k tomu, abychom říkali řídícímu, aby použil určitý bit portu jako vstup, použijeme „ZERO“, pro to, abychom mu řekli, že použije určitý bit jako výstup, použijeme „ONE“. Protože jsme vložili osm „JEDEN“, jsou všechny piny PORTD povoleny jako výstup. Pokud dáme nulu jako „0b1111 0111“, jsou nyní všechny piny 0,1,2,4,5,6,7 povoleny jako vstupy a PIN 3 je povolen jako vstup.
while (1) // smyčka svítí navždy a LED bude navždy blikat
{
PORTD = 0xFF; // o všech pinech PORTD se říká, že poskytují 5V výstup, nebo je jim řečeno, aby táhly vysoko (LED svítí)
_delay_ms (220); // zpoždění o 200 ms
_delay_ms (220);); // zpoždění o 200 ms
PORTD = 0x00; // říká se, že všechny piny PORTD poskytují zem na výstupu nebo táhnou dolů
_delay_ms (220);); // zpoždění o 200 ms
_delay_ms (220);); // zpoždění o 200 ms
}
}