Blikajúca LED je prvý krok, ktorý by ste chceli urobiť, aby ste mohli začať s elektronikou. V tomto výučbe sa chystáme pripojiť LED k ATmega32, čo je mikrokontrolér série AVR. Budeme blikať LED diódou rýchlosťou pol sekundy.
Súčasti sú povinné
Hardvér:
Mikrokontrolér ATmega32A
Napájanie (5v)
Programátor AVR-ISP
100uF kondenzátor
LED
220Ω rezistor
Softvér
Štúdio Atmel 6.1
Progisp alebo flash mágia
Vysvetlenie obvodu a práce
Ako ukazuje vyššie uvedená schéma zapojenia pre prepojenie LED s mikrokontrolérom AVR, nie je potrebné sem pripájať externý kryštál. Pretože ATMEGA štandardne pracuje na vnútornom 1MHz rezistor-kondenzátorovom oscilátore. Vonkajší kryštál sa pripája iba vtedy, keď je potrebná presnosť hodín, pretože sa vyžaduje vysoko presné počítanie. Keď je radič prvýkrát zakúpený, je štandardne zlúčený tak, aby pracoval na vnútornom kryštáli.
Tu je pripojený rezistor, aby sa obmedzil odber prúdu z LED. Pamätajte, že regulátor nemôže na svorkách poskytnúť viac ako 30 mA.
Vysvetlenie programovania
Program pre blikanie LED mikrokontroléra ATmega32 je uvedený nižšie. Komentáre v kóde vysvetľujú účel jednotlivých riadkov kódu.
#include // header to allow data flow control over pins
#define F_CPU 10 000 000 // oznamovanie kryštalickej frekvencie radiča
#include
int main (void)
{
DDRD = 0xFF; // (alebo 0b1111 1111) V programe AVRSTUDIO na to, že ovládačom povieme, aby ako vstup použili určitý bit portu, použijeme „ZERO“, na to, aby sme mu povedali, že použije určitý bit ako výstup, použijeme „ONE“. Pretože sme vložili osem „ONE“, všetky piny PORTD sú povolené ako výstup. Ak dáme nulu ako „0b1111 0111“, všetky vstupy 0,1,2,4,5,6,7 sú povolené ako vstupy a PIN 3 je povolený ako vstup.
while (1) // slučka pokračuje navždy a LED bude blikať navždy
{
PORTD = 0xFF; // o všetkých pinoch PORTD sa hovorí, že poskytujú výstup 5 V alebo že sa hovorí, že majú ťahať vysoko (LED ZAPNUTÉ)
_delay_ms (220); // oneskorenie o 200ms
_delay_ms (220);); // oneskorenie o 200ms
PORTD = 0x00; // o všetkých pinoch PORTD sa hovorí, že poskytujú zem na výstupe alebo sa znižujú
_delay_ms (220);); // oneskorenie o 200ms
_delay_ms (220);); // oneskorenie o 200ms
}
}