Blinkande LED är det första steget du vill ta för att komma igång med elektronik. I den här handledningen ska vi ansluta en LED med ATmega32, som är en AVR-serie mikrokontroller. Vi kommer att blinka lysdioden med en halv sekund.
Komponenter krävs
Hårdvara:
ATmega32A mikrokontroller
Strömförsörjning (5v)
AVR-ISP Programmerare
100uF kondensator
LED
220Ω motstånd
programvara
Atmel studio 6.1
Progisp eller flash magi
Krets- och arbetsförklaring
Som visas i ovanstående kretsschema för gränssnitt mellan LED och AVR-mikrokontroller, finns det inget behov av att ansluta en extern kristall här. Eftersom ATMEGA fungerar på intern 1MHz Resistor-Capacitor oscillator som standard. Endast när klockans noggrannhet behövs, vid applicering av högprecisionsräkning, fästs extern kristall. När handkontrollen köps först smälter den som standard på intern kristall.
Motståndet är anslutet här för att begränsa den aktuella ritningen från lysdioden. Kom ihåg att styrenheten inte kan tillhandahålla mer än 30 mA vid terminalerna.
Programmeringsförklaring
Programmet för ATmega32 mikrokontroller för att blinka en LED visas nedan. Kommentarerna i koden förklarar syftet med den enskilda raden i koden.
#include // header för att aktivera dataflödeskontroll över stift
#define F_CPU 1000000 // anger styrenhetens kristallfrekvens
#omfatta
int main (void)
{
DDRD = 0xFF; // (eller 0b1111 1111) I AVRSTUDIO för att berätta för styrningen att använda en viss bit av en port som ingång använder vi "ZERO", för att säga att den ska använda en viss bit som utgång använder vi "ONE". Eftersom vi har åtta “ONE”, är alla PORTD-stift aktiverade som utdata. Om vi sätter en noll som “0b1111 0111” är nu alla stiften 0,1,2,4,5,6,7 aktiverade som ingångar och PIN 3 är aktiverad som ingång.
medan (1) // loop fortsätter för evigt och LED kommer att blinka för alltid
{
PORTD = 0xFF; // alla PORTD-stift sägs ge 5v-utgång eller uppmanas att dra högt (LED ON)
_fördröja_ms (220); // fördröjning för 200 ms
_fördröja_ms (220);); // fördröjning för 200 ms
PORTD = 0x00; // alla PORTD-stift sägs ge mark vid utgång eller dra ner
_fördröja_ms (220);); // fördröjning för 200 ms
_fördröja_ms (220);); // fördröjning för 200 ms
}
}