LED-ul intermitent este primul pas pe care ați dori să îl faceți pentru a începe să folosiți electronice. În acest tutorial vom conecta un LED cu ATmega32, care este un microcontroler din seria AVR. Vom clipi LED-ul la o rată de jumătate de secundă.
Componente necesare
Hardware:
Microcontroler ATmega32A
Alimentare (5v)
Programator AVR-ISP
Condensator 100uF
LED
Rezistor 220Ω
Software
Atmel studio 6.1
Progisp sau magie flash
Circuit și explicație de lucru
Așa cum se arată în schema de circuite de mai sus pentru interfața LED-ului cu microcontrolerul AVR, nu este nevoie să conectați un cristal extern aici. Deoarece ATMEGA funcționează pe oscilator intern de rezistență-condensator de 1 MHz, implicit. Doar atunci când este necesară precizia ceasului, ca aplicație de numărare de înaltă precizie, cristalul extern este atașat. Când controlerul este cumpărat pentru prima dată, acesta este fuzionat pentru a lucra pe cristal intern în mod implicit.
Rezistorul este conectat aici pentru a limita desenul curent de la LED. Amintiți-vă, controlerul nu poate furniza mai mult de 30mA la terminale.
Explicație de programare
Programul pentru microcontrolerul ATmega32 pentru a clipi un LED este prezentat mai jos. Comentariile din cod explică scopul liniei individuale a codului.
#include // header pentru a permite controlul fluxului de date peste pini
#define F_CPU 1000000 // indicând frecvența cristalului controlerului
#include
int main (nul)
{
DDRD = 0xFF; // (sau 0b1111 1111) În AVRSTUDIO, pentru a spune controlerului să folosească un anumit bit de port ca intrare, folosim „ZERO”, pentru a-i spune să folosească un anumit bit ca ieșire, folosim „ONE”. Din moment ce punem opt „ONE”, toți pinii PORTD sunt activați ca ieșire. Dacă punem un zero ca „0b1111 0111”, acum toți pinii 0,1,2,4,5,6,7 sunt activate ca intrări și PIN 3 este Activat ca intrare.
în timp ce (1) // bucla se aprinde pentru totdeauna și LED-ul va clipi pentru totdeauna
{
PORTD = 0xFF; // se spune că toți pinii PORTD oferă o ieșire de 5V sau li se spune să trageți în sus (LED aprins)
_delay_ms (220); // întârziere pentru 200ms
_delay_ms (220);); // întârziere pentru 200ms
PORTD = 0x00; // se spune că toți pinii PORTD oferă sol la ieșire sau se trag în jos
_delay_ms (220);); // întârziere pentru 200ms
_delay_ms (220);); // întârziere pentru 200ms
}
}