Das Blinken der LED ist der erste Schritt, den Sie unternehmen möchten, um mit der Elektronik zu beginnen. In diesem Tutorial verbinden wir eine LED mit ATmega32, einem Mikrocontroller der AVR-Serie. Wir werden die LED mit einer halben Sekunde blinken lassen.
Erforderliche Komponenten
Hardware:
ATmega32A Mikrocontroller
Stromversorgung (5V)
AVR-ISP-Programmierer
100uF Kondensator
LED
220Ω Widerstand
Software
Atmel Studio 6.1
Progisp oder Flash Magic
Schaltungs- und Arbeitserklärung
Wie im obigen Schaltplan für die Verbindung von LED mit AVR-Mikrocontroller gezeigt, muss hier kein externer Kristall angeschlossen werden. Weil das ATMEGA standardmäßig mit einem internen 1-MHz-Widerstands-Kondensator-Oszillator arbeitet. Nur wenn die Genauigkeit der Uhr benötigt wird, wird bei Anwendung einer hochpräzisen Zählung ein externer Kristall angebracht. Wenn der Controller zum ersten Mal gekauft wird, ist er standardmäßig mit internen Kristallen verbunden.
Der Widerstand ist hier angeschlossen, um die Stromaufnahme von der LED zu begrenzen. Denken Sie daran, dass der Controller an den Klemmen nicht mehr als 30 mA liefern kann.
Programmiererklärung
Das Programm für den ATmega32-Mikrocontroller zum Blinken einer LED ist unten dargestellt. Die Kommentare im Code erläutern den Zweck der einzelnen Codezeile.
#include // Header, um die Datenflusssteuerung über Pins zu aktivieren
#define F_CPU 1000000 // Angabe der Kristallfrequenz des Controllers
#einschließen
int main (nichtig)
{
DDRD = 0xFF; // (oder 0b1111 1111) In AVRSTUDIO verwenden wir "ZERO", um das Steuerelement anzuweisen, ein bestimmtes Bit eines Ports als Eingabe zu verwenden, und um ein bestimmtes Bit als Ausgabe zu verwenden, verwenden wir "ONE". Da wir acht "ONE" setzen, sind alle Pins von PORTD als Ausgang aktiviert. Wenn wir eine Null als "0b1111 0111" setzen, werden jetzt alle Pins 0,1,2,4,5,6,7 als Eingänge aktiviert und PIN 3 wird als Eingang aktiviert.
while (1) // Schleife bleibt für immer bestehen und die LED blinkt für immer
{
PORTD = 0xFF; // Alle PINS von PORTD sollen einen 5-V-Ausgang liefern oder hoch ziehen (LED leuchtet)
Verzögerung (220); // Verzögerung um 200ms
Verzögerung (220);); // Verzögerung um 200ms
PORTD = 0x00; // Alle PINS von PORTD sollen am Ausgang Masse liefern oder nach unten ziehen
Verzögerung (220);); // Verzögerung um 200ms
Verzögerung (220);); // Verzögerung um 200ms
}}
}}