Mirksintis šviesos diodas yra pirmas žingsnis, kurį norite žengti pradėdami naudoti elektroniką. Šioje pamokoje mes sujungsime šviesos diodą su „ATmega32“, kuris yra AVR serijos mikrovaldiklis. Šviesos diodą mirksime puse sekundės.
Būtini komponentai
Techninė įranga:
Mikrovaldiklis „ATmega32A“
Maitinimo šaltinis (5v)
AVR-ISP programuotojas
100uF kondensatorius
LED
220Ω rezistorius
Programinė įranga
„Atmel“ studija 6.1
„Progisp“ arba „flash magic“
Grandinės ir darbo paaiškinimas
Kaip parodyta aukščiau pateiktoje schemoje, skirtoje LED susieti su AVR mikrovaldikliu, čia nereikia prijungti išorinio kristalo. Kadangi ATMEGA pagal numatytuosius nustatymus veikia vidiniame 1MHz rezistoriaus-kondensatoriaus osciliatoriuje. Tik tada, kai reikalingas laikrodžio tikslumas, taikant didelio tikslumo skaičiavimą, pritvirtinamas išorinis kristalas. Pirmą kartą nusipirkus valdiklį, jis pagal nutylėjimą yra sujungtas su vidiniu kristalu.
Rezistorius yra prijungtas čia, siekiant apriboti srovės ištraukimą iš šviesos diodo. Atminkite, kad valdiklis terminaluose negali suteikti daugiau kaip 30 mA.
Programavimo paaiškinimas
Programa, skirta „ATmega32“ mikrovaldikliui mirksėti, rodoma žemiau. Kodo komentarai paaiškina atskiros kodo eilutės paskirtį.
#include // antraštė, kad įgalintumėte duomenų srautų valdymą per kaiščius
#define F_CPU 1000000 // valdiklio krištolo dažnis
# įtraukti
int main (negaliojantis)
{
DDRD = 0xFF; // (arba 0b1111 1111) AVRSTUDIO programoje nurodydami valdančiajam naudoti tam tikrą prievado bitą kaip įvestį, mes naudojame „ZERO“, liepdami naudoti tam tikrą bitą kaip išvestį, mes naudojame „ONE“. Kadangi mes įdėjome aštuonis „ONE“, visi PORTD kaiščiai įgalinami kaip išvestis. Jei nulį įrašysime kaip „0b1111 0111“, dabar visi kaiščiai 0,1,2,4,5,6,7 įgalinami kaip įėjimai, o PIN 3 įjungtas kaip įvestis.
o (1) // ciklas tęsiasi amžinai, o šviesos diodas mirks amžinai
{
PORTD = 0xFF; sakoma, kad visi PORTD kaiščiai teikia 5v išėjimą arba liepia traukti aukštai (LED įjungta)
_delay_ms (220); // delsimas 200ms
_delay_ms (220);); // delsimas 200ms
PORTD = 0x00; sakoma, kad visi „PORTD“ kaiščiai teikia žemę išvestyje arba traukia žemyn
_delay_ms (220);); // delsimas 200ms
_delay_ms (220);); // delsimas 200ms
}
}