LED berkedip adalah langkah pertama yang ingin anda lakukan untuk memulakan elektronik. Dalam tutorial ini kita akan menyambungkan LED dengan ATmega32, yang merupakan mikrokontroler siri AVR. Kami akan berkelip LED pada kadar setengah saat.
Komponen Diperlukan
Perkakasan:
Mikrokontroler ATmega32A
Bekalan kuasa (5v)
Pengaturcara AVR-ISP
Kapasitor 100uF
LED
220Ω Perintang
Perisian
Studio atmel 6.1
Progisp atau sihir kilat
Litar dan Penjelasan Kerja
Seperti yang ditunjukkan dalam rajah litar di atas untuk menghubungkan LED dengan mikrokontroler AVR, tidak perlu menyambungkan kristal luaran di sini. Kerana ATMEGA berfungsi pada osilator Resistor-Capacitor 1MHz dalaman secara lalai. Hanya apabila ketepatan jam diperlukan, sebagai aplikasi pengiraan ketepatan tinggi, kristal luaran terpasang. Semasa alat kawalan mula-mula dibeli, ia menyatu untuk bekerja pada kristal dalaman secara lalai.
Perintang disambungkan di sini untuk menghadkan lukisan semasa dari LED. Ingat, pengawal tidak dapat menyediakan lebih dari 30mA di terminal.
Penjelasan Pengaturcaraan
Program untuk mikrokontroler ATmega32 berkelip LED ditunjukkan di bawah. Komen dalam kod menerangkan tujuan setiap baris kod tersebut.
#include // header untuk membolehkan kawalan aliran data ke atas pin
#tentukan F_CPU 1000000 // memberitahu frekuensi kristal pengawal
#sertakan
int utama (tidak sah)
{
DDRD = 0xFF; // (atau 0b1111 1111) Dalam AVRSTUDIO untuk memberitahu pengendali untuk menggunakan bit port tertentu sebagai input, kami menggunakan "ZERO", untuk menyuruhnya menggunakan bit tertentu sebagai output yang kami gunakan "ONE". Oleh kerana kami meletakkan lapan "ONE", semua pin PORTD diaktifkan sebagai output. Sekiranya kita meletakkan nol sebagai "0b1111 0111", sekarang semua pin 0,1,2,4,5,6,7 diaktifkan sebagai input dan PIN 3 diaktifkan sebagai input.
sementara (1) // gelung menyala selama-lamanya dan LED akan berkelip selama-lamanya
{
PORTD = 0xFF; // semua pin PORTD dikatakan memberikan output 5v atau disuruh menarik tinggi (LED ON)
_delay_ms (220); // kelewatan selama 200ms
_delay_ms (220);); // kelewatan selama 200ms
PORTD = 0x00; // semua pin PORTD dikatakan menyediakan ground pada output atau pull down
_delay_ms (220);); // kelewatan selama 200ms
_delay_ms (220);); // kelewatan selama 200ms
}
}