Migająca dioda LED to pierwszy krok, który chciałbyś zrobić, aby rozpocząć pracę z elektroniką. W tym poradniku połączymy diodę LED z ATmega32, czyli mikrokontrolerem z serii AVR. Zamrugamy diodą LED z szybkością pół sekundy.
Wymagane składniki
Sprzęt komputerowy:
Mikrokontroler ATmega32A
Zasilanie (5 V)
Programator AVR-ISP
Kondensator 100uF
DOPROWADZIŁO
Rezystor 220Ω
Oprogramowanie
Atmel Studio 6.1
Magia Progisp lub Flash
Objaśnienie obwodu i pracy
Jak pokazano na powyższym schemacie obwodu do połączenia diody LED z mikrokontrolerem AVR, nie ma tu potrzeby podłączania zewnętrznego kryształu. Ponieważ ATMEGA działa domyślnie na wewnętrznym oscylatorze rezystor-kondensator 1 MHz. Tylko wtedy, gdy potrzebna jest dokładność zegara, przy zastosowaniu liczenia o dużej precyzji, dołącza się kryształ zewnętrzny. Kiedy kontroler jest kupowany po raz pierwszy, jest domyślnie połączony do pracy na wewnętrznym krysztale.
Tutaj podłączany jest rezystor, aby ograniczyć pobór prądu z diody LED. Pamiętaj, że kontroler nie może dostarczyć więcej niż 30mA na zaciskach.
Objaśnienie programowania
Poniżej przedstawiono program mikrokontrolera ATmega32 do migania diody LED. Komentarze w kodzie wyjaśniają przeznaczenie poszczególnych linii kodu.
#include // nagłówek, aby włączyć kontrolę przepływu danych w pinach
# zdefiniować F_CPU 1000000 // informując o częstotliwości kryształu kontrolera
#zawierać
int main (nieważne)
{
DDRD = 0xFF; // (lub 0b1111 1111) W AVRSTUDIO, aby powiedzieć kontrolerowi, aby używał określonego bitu portu jako wejścia, używamy „ZERO”, aby nakazać mu użycie określonego bitu jako wyjścia, używamy „JEDEN”. Ponieważ umieściliśmy osiem „ONE”, wszystkie piny PORTD są włączone jako wyjście. Jeśli wstawimy zero jako „0b1111 0111”, teraz wszystkie piny 0, 1, 2, 4, 5, 6, 7 są włączone jako wejścia, a PIN 3 jest włączony jako wejście.
while (1) // pętla trwa wiecznie, a dioda LED będzie migać w nieskończoność
{
PORTD = 0xFF; // mówi się, że wszystkie piny PORTD zapewniają wyjście 5 V lub nakazuje ciągnięcie wysokiego (dioda LED włączona)
_delay_ms (220); // opóźnienie o 200 ms
_delay_ms (220);); // opóźnienie o 200 ms
PORTD = 0x00; // mówi się, że wszystkie piny PORTD zapewniają masę na wyjściu lub w dół
_delay_ms (220);); // opóźnienie o 200 ms
_delay_ms (220);); // opóźnienie o 200 ms
}
}