Il LED lampeggiante è il primo passo che vorresti fare per iniziare con l'elettronica. In questo tutorial collegheremo un LED con ATmega32, che è un microcontrollore della serie AVR. Faremo lampeggiare il LED a una velocità di mezzo secondo.
Componenti richiesti
Hardware:
Microcontrollore ATmega32A
Alimentazione (5v)
Programmatore AVR-ISP
Condensatore 100uF
GUIDATO
Resistenza da 220Ω
Software
Atmel studio 6.1
Progisp o magia flash
Circuito e spiegazione di funzionamento
Come mostrato nello schema circuitale sopra per l'interfacciamento del LED con il microcontrollore AVR, non è necessario collegare qui un cristallo esterno. Perché ATMEGA funziona su un oscillatore resistore-condensatore interno da 1 MHz per impostazione predefinita. Solo quando è necessaria la precisione dell'orologio, come applicazione di conteggio ad alta precisione, viene attaccato il cristallo esterno. Quando il controller viene acquistato per la prima volta, viene fuso per funzionare sul cristallo interno per impostazione predefinita.
La resistenza è collegata qui per limitare l'assorbimento di corrente dal LED. Ricordare, il controller non può fornire più di 30mA ai terminali.
Spiegazione della programmazione
Di seguito è mostrato il programma per il microcontrollore ATmega32 per far lampeggiare un LED. I commenti nel codice spiegano lo scopo della singola riga del codice.
#include // intestazione per abilitare il controllo del flusso di dati sui pin
#define F_CPU 1000000 // indica la frequenza di cristallo del controller
#includere
int main (void)
{
DDRD = 0xFF; // (o 0b1111 1111) In AVRSTUDIO per dire al controllo di usare un certo bit di una porta come input usiamo “ZERO”, per dirgli di usare un certo bit come output usiamo “ONE”. Dato che abbiamo messo otto "ONE", tutti i pin di PORTD sono abilitati come output. Se mettiamo uno zero come “0b1111 0111”, ora tutti i pin 0,1,2,4,5,6,7 sono abilitati come ingressi e il PIN 3 è abilitato come ingresso.
while (1) // il ciclo continua e il LED lampeggia per sempre
{
PORTD = 0xFF; // si dice che tutti i pin di PORTD forniscano un'uscita 5v o che si attivino (LED acceso)
_delay_ms (220); // ritardo di 200 ms
_delay_ms (220);); // ritardo di 200 ms
PORTD = 0x00; // si dice che tutti i pin di PORTD forniscano massa all'uscita o abbassino
_delay_ms (220);); // ritardo di 200 ms
_delay_ms (220);); // ritardo di 200 ms
}
}