Mirgojošs LED ir pirmais solis, kuru vēlaties veikt, lai sāktu darbu ar elektroniku. Šajā apmācībā mēs savienosim LED ar ATmega32, kas ir AVR sērijas mikrokontrolleris. Mēs mirgosim LED ar pusi sekundes ātrumu.
Nepieciešamās sastāvdaļas
Aparatūra:
ATmega32A mikrokontrolleris
Barošanas avots (5v)
AVR-ISP programmētājs
100uF kondensators
LED
220Ω rezistors
Programmatūra
Atmel studija 6.1
Progisp vai zibspuldzes maģija
Ķēdes un darba skaidrojums
Kā parādīts iepriekš minētajā shēmā par LED saskarni ar AVR mikrokontrolleru, šeit nav nepieciešams savienot ārēju kristālu. Tā kā ATMEGA pēc noklusējuma darbojas uz iekšējā 1MHz rezistora-kondensatora oscilatora. Tikai tad, kad ir nepieciešama pulksteņa precizitāte, izmantojot augstas precizitātes skaitīšanu, tiek piestiprināts ārējais kristāls. Pirmo reizi iegādājoties kontrolieri, tas pēc noklusējuma ir savienots, lai darbotos ar iekšējo kristālu.
Rezistors ir pievienots šeit, lai ierobežotu pašreizējo zīmējumu no LED. Atcerieties, ka kontrolieris termināļos nevar nodrošināt vairāk par 30 mA.
Programmēšanas skaidrojums
Programma ATmega32 mikrokontrollerim, kas mirgo gaismas diode, ir parādīta zemāk. Koda komentāri izskaidro koda atsevišķās rindas mērķi.
#include // header, lai iespējotu datu plūsmas kontroli pār tapām
#define F_CPU 1000000 // kontroliera kristāla frekvences norādīšana
# iekļaut
int main (anulēts)
{
DDRD = 0xFF; // (vai 0b1111 1111) Programmā AVRSTUDIO, lai norādītu kontrolierim izmantot noteiktu porta bitu kā ievadi, mēs izmantojam “ZERO”, lai teiktu, ka jāizmanto noteikts bits kā izvads, mēs izmantojam “ONE”. Tā kā mēs ievietojām astoņus “ONE”, visi PORTD tapas ir iespējotas kā izvade. Ja nulli ieliksim kā “0b1111 0111”, tagad visas 0,1,2,4,5,6,7 tapas ir iespējotas kā ievades un PIN 3 ir iespējota kā ievade.
kamēr (1) // cilpa turpinās uz visiem laikiem, un gaismas diode mirgos mūžīgi
{
PORTD = 0xFF; // tiek teikts, ka visi PORTD tapas nodrošina 5v izeju vai tiek lika vilkt augstu (LED ieslēgts)
_delay_ms (220); // kavēšanās 200ms
_delay_ms (220);); // kavēšanās 200ms
PORTD = 0x00; // tiek teikts, ka visi PORTD tapas nodrošina zemi izvadē vai velk uz leju
_delay_ms (220);); // kavēšanās 200ms
_delay_ms (220);); // kavēšanās 200ms
}
}