Yanıp sönen LED, elektroniğe başlamak için atacağınız ilk adımdır. Bu eğitimde, bir AVR serisi mikrodenetleyici olan ATmega32 ile bir LED bağlayacağız. LED'i yarım saniye hızla yanıp söneceğiz.
Gerekli Bileşenler
Donanım:
ATmega32A Mikrodenetleyici
Güç kaynağı (5v)
AVR-ISP Programcısı
100 uF Kapasitör
LED
220Ω Direnç
Yazılım
Atmel stüdyo 6.1
Progisp veya flaş büyü
Devre ve Çalışma Açıklaması
LED ile AVR mikrodenetleyicisi arasında arayüz oluşturmak için yukarıdaki devre şemasında gösterildiği gibi, buraya harici bir kristal bağlamanıza gerek yoktur. ATMEGA varsayılan olarak dahili 1MHz Direnç-Kapasitör osilatöründe çalıştığı için. Sadece saatin doğruluğuna ihtiyaç duyulduğunda, yüksek hassasiyetli sayım uygulaması olarak harici kristal takılır. Denetleyici ilk satın alındığında, varsayılan olarak dahili kristal üzerinde çalışmak üzere sigortalanır.
Direnç, LED'den akım çizimini sınırlamak için buraya bağlanır. Unutmayın, kontrolör terminallerde 30mA'dan fazlasını sağlayamaz.
Programlama Açıklaması
ATmega32 mikro denetleyicisinin bir LED'i yanıp sönmesi için program aşağıda gösterilmiştir. Koddaki yorumlar, kodun münferit satırının amacını açıklar.
Pinler üzerinde veri akışı denetimini etkinleştirmek için #include // başlığı
#define F_CPU 1000000 // denetleyicinin kristal frekansını anlatıyor
#Dahil etmek
int main (void)
{
DDRD = 0xFF; // (veya 0b1111 1111) AVRSTUDIO'da denetleyiciye bir portun belirli bir bitini girdi olarak kullanmasını söylemek için "SIFIR", çıkış olarak belirli bir biti kullanmasını söylemek için "BİR" kullanıyoruz. Sekiz “BİR” koyduğumuz için, PORTD'nin tüm pinleri çıkış olarak etkinleştirildi. "0b1111 0111" olarak sıfır koyarsak, şimdi tüm pinler 0,1,2,4,5,6,7 giriş olarak etkinleştirilir ve PIN 3 giriş olarak Etkinleştirilir.
while (1) // döngü sonsuza kadar devam eder ve LED sonsuza kadar yanıp söner
{
PORTD = 0xFF; // PORTD'nin tüm pinlerinin 5v çıkış sağladığı veya yüksek çekmesi söylendiği söylenir (LED AÇIK)
_delay_ms (220); // 200 ms gecikme
_delay_ms (220);); // 200 ms gecikme
PORTD = 0x00; // PORTD'nin tüm pinlerinin çıkışta topraklama sağladığı veya aşağı çekildiği söylenir
_delay_ms (220);); // 200 ms gecikme
_delay_ms (220);); // 200 ms gecikme
}
}