ЛЕД повезивање је прва ствар коју бисте покушали да урадите док започињете са било којим микроконтролером. Дакле, у овом упутству ћемо повезати ЛЕД са 8051 микроконтролером и написаћемо Ц програм који ће трептати ЛЕД. Користили смо веома популарни микроконтролер АТ89С52, из породице 8051 компаније АТМЕЛ.
Пре него што улазимо у детаље, требали бисмо добити кратку идеју о микроконтролеру АТ89С52. То је 40-пински микроконтролер и има 4 порта (П0, П1, П2, П3), сваки порт има 8 пинова. Са софтверске тачке гледишта, сваки порт можемо сматрати 8-битним регистром. Сваки пин који има једну улазно / излазну линију, значи да се сваки пин може користити како за улаз, тако и за излаз, тј. За читање података са неког уређаја попут сензора или за пружање резултата на неком излазном уређају. Неки пинови имају двоструку функционалност, која је поменута у заградама у доњем дијаграму. Двоструко функционално попут прекида, бројача, тајмера итд.
АТ89С52 има две врсте меморије, прва је РАМ која има 256 бајтова меморије, а друга је ЕЕПРОМ (електронски избрисљива и програмабилна меморија само за читање) која има 8 к бајта меморије. РАМ се користи за чување података током извршавања програма, а ЕЕПРОМ за складиштење самог програма. ЕЕПРОМ је флеш меморија у коју смо користили за нарезивање програма.
Шема и објашњење
За повезивање ЛЕД-а користимо пин један на прикључку 1. У уграђеном Ц програмирању можемо приступити ПИН-у 1 порта 1 помоћу П1_0. На ПИН 19 и 18, односно КСТАЛ1 и КСТАЛ2, повезали смо кристални осцилатор фреквенције 11.0592МХз. Кристални осцилатор се користи за генерисање импулса такта, а импулс такта даје средину за прорачун времена, која је обавезна за синхронизацију свих догађаја. Ова врста кристала користи се у скоро свакој модерној дигиталној опреми, као што су рачунари, сатови итд. Кристал који се најчешће користи је кварц. То је резонантно коло осцилатора и кондензатори се користе за осциловање кристала, па смо овде повезали 22пф кондензаторе. Можете прочитати о „резонантним круговима“ да бисте сазнали више.
Дијаграм склоп за ЛЕД взаимодејствие с 8051 микроконтролер 89С52 је приказано на горњој слици. Пин 31 (ЕА) је повезан са Вцц, који је активни ниски пин. Ово би требало повезати са Вцц када не користимо никакву спољну меморију. Пин 30 (АЛЕ) и пин 29 (ПСЕН) користе се за повезивање микроконтролера са спољном меморијом, а пин 31 микроконтролеру говори да користи спољну меморију када је повезан са земљом. Не користимо никакву спољну меморију, па смо Пин31 повезали на Вцц.
Пин 9 (РСТ) је ПИН за ресетовање, који се користи за ресетовање микроконтролера и програм поново започиње од почетка. Ресетује микроконтролер када је повезан на ХИГХ. За повезивање РСТ пина користили смо стандардни склоп за ресетовање, отпорник од 10 к охма и кондензатор од 1 уФ.
Сада је овде занимљив део да ЛЕД повезујемо обрнуто, значи негативну ногу са ПИН-ом микроконтролера, јер микроконтролер не даје довољно снаге да светли ЛЕД, тако да овде ЛЕД ради на негативној логици као када је пин П1_0 1 тада ће ЛЕД бити искључен, а када је излаз пина 0, ЛЕД ће бити укључен. Када је ПИН излаз 0, понаша се као уземљено и ЛЕД светли.
Објашњење кода
Укључено је заглавље РЕГКС52.х које укључује основне дефиниције регистра. Постоји много врста променљивих и константи у уграђеном Ц попут инт, цхар, унсигнед инт, флоат итд., Можете их лако научити. Овде користимо непотписани инт чији је опсег од 0 до 65535. Користимо „фор лооп“ за стварање кашњења, тако да ће ЛЕД бити укључен неко време (П1_0 = 0, негативна ЛЕД логика) и и ОФФ (П1_0 = 1, негативна ЛЕД логика) за одложено време. Генерално када „фор лооп“ ради 1275 пута, даје кашњење од 1 мс, па смо креирали функцију „делаи“ за стварање ДЕЛАИ и позвали је из главног програма (маин ()). Можемо проћи време ОДГОДЕ (у мс) док позивамо функцију „кашњење“ из главне функције. У програму, „Док (1)“ значи да ће се програм извршавати бесконачно.
Укратко објашњавам како 1275 пута покретање петље „фор“ даје кашњење од 1 мс:
У 8051, за један машински циклус потребно је 12 кристалних импулса, а ми користимо кристал од 11,0592 МХз.
Дакле, потребно време за 1 машински циклус: 12 / 11.0592 = 1.085ус
Дакле, 1275 * 1,085 = 1,3 мс, 1275 пута петље „фор“ даје скоро 1 мс кашњења.
Тачно продужење временског кашњења помоћу програма „Ц“ веома је тешко израчунати, мерењем из осцилоскопа (ЦРО), јер (ј = 0; ј <1275; ј ++) даје кашњење од скоро 1 мс.
Тако можемо разумети једноставним повезивањем ЛЕД-а са 8051 микроконтролером, да једноставним кодирањем можемо да комуницирамо и контролишемо хардвер путем софтвера (програмирања) помоћу микроконтролера. Такође, програмирањем можемо манипулисати сваким портом и пином микроконтролера.