Vilkkuva LED on ensimmäinen askel, jonka haluat tehdä elektroniikan käytön aloittamiseksi. Tässä opetusohjelmassa aiomme liittää LEDin ATmega32: een, joka on AVR-sarjan mikrokontrolleri. Vilkkaamme LEDiä puolen sekunnin nopeudella.
Tarvittavat komponentit
Laitteisto:
ATmega32A-mikrokontrolleri
Virtalähde (5v)
AVR-ISP-ohjelmoija
100uF kondensaattori
LED
220Ω vastus
Ohjelmisto
Atmel-studio 6.1
Progisp tai salamaagia
Piiri ja työskentely Selitys
Kuten yllä olevassa kytkentäkaaviossa on esitetty LED-liitännästä AVR-mikrokontrolleriin, ulkoista kidettä ei tarvitse liittää tähän. Koska ATMEGA toimii oletusarvoisesti sisäisellä 1 MHz: n vastus-kondensaattorioskillaattorilla. Vasta kun kellon tarkkuutta tarvitaan, tarkan laskennan avulla, kiinnittyy ulkoinen kide. Kun ohjain ostetaan ensimmäisen kerran, se on sulautettu toimimaan sisäisen kiteen kanssa oletuksena.
Vastus on kytketty tähän rajoittamaan virran ottamista LEDistä. Muista, että ohjain ei voi tuottaa enempää kuin 30mA päätelaitteissa.
Ohjelmoinnin selitys
Ohjelma, jolla ATmega32-mikrokontrolleri vilkkuu LED-valoa, on esitetty alla. Koodin kommentit selittävät koodin yksittäisen rivin tarkoituksen.
#include // header, jotta tiedonsiirron hallinta nastojen kautta
#define F_CPU 1000000 // kertoo ohjaimen kristallitaajuuden
#sisältää
int main (mitätön)
{
DDRD = 0xFF; // (tai 0b1111 1111) AVRSTUDIO-ohjelmassa ohjaimille käskemiseksi käyttää tiettyä portin bittiä syötteenä käytämme "ZERO", käskemiseksi sen käyttämään tiettyä bittiä lähtöön käytämme "ONE". Koska olemme asettaneet kahdeksan “ONE” -merkkiä, kaikki PORTDin nastat ovat käytössä ulostulona. Jos asetamme nollaksi arvon “0b1111 0111”, nyt kaikki nastat 0,1,2,4,5,6,7 ovat käytössä tuloina ja PIN 3 on käytössä tulona.
kun (1) // -silmukka jatkuu ikuisesti ja LED vilkkuu ikuisesti
{
PORTD = 0xFF; // kaikkien PORTD-nastojen sanotaan antavan 5v: n lähdön tai käsketty vetää korkealle (LED ON)
viive_ms (220); // viive 200 ms
viive_ms (220);); // viive 200 ms
PORTD = 0x00; // kaikkien PORTD-nastojen sanotaan antavan maadoitusta ulostulossa tai vetävän alas
viive_ms (220);); // viive 200 ms
viive_ms (220);); // viive 200 ms
}
}