У уграђеном дизајну постоје могућности када у вашем микроконтролеру немате довољно И / О пинова. То може бити из било ког разлога, можда је вашој апликацији потребно више ЛЕД диода или желите да користите више 7-сегментних екрана, али у микроконтролеру немате потребне И / О пинове. Овде долази савршена компонента, регистар смене. Схифт регистар прихвата серијске податке и даје паралелни излаз. Потребна су вам само 3 пина да бисте се повезали са микроконтролером и од њега ћете добити више од 8 излазних пинова. Један од популарних регистара смене је 74ХЦ595. Има 8-битни регистар за складиштење и 8-битни регистар за померање. Сазнајте више о регистрима смена овде.
Даћете серијске податке регистру смене и они ће бити закачени на регистру складишта, а затим ће регистар складишта контролисати 8 излаза. Ако желите више резултата, додајте још један регистар смене. Би каскадно два регистра смени, добићете додатних 8 излаза, укупна 16бит излаз.
Смена регистара 74ХЦ595:
Ево шеме пин 74ХЦ595 према табели података -
ХЦ595 има 16 пинова; ако видимо таблицу, разумећемо пин функције -
КК на КХ, од пин броја 1 до 7 и 15 се користи као 8-битни излаз из схифт регистра, где је као игла 14 се користи за пријем серијских података. Такође постоји табела истине о томе како користити друге пинове и користити друге функције регистра смене.
Када напишемо код за повезивање 74ХЦ595, применићемо ову табелу истине за добијање жељених резултата.
Сада ћемо повезати 74ХЦ595 са ПИЦ16Ф877А и контролисати 8 ЛЕД. Повезали смо регистар смене 74ХЦ595 са другим микроконтролерима:
- Повезивање регистра серијског померања 74ХЦ595 са Распберри Пи
- Како се користи смена регистра 74ХЦ595 са Ардуино Уно?
- Повезивање ЛЦД-а са НодеМЦУ помоћу регистра померања
Компоненте потребне:
- ПИЦ16Ф877А
- 2ком 33пФ керамички кондензатори
- Кристал од 20 МХз
- Отпорник 4.7к
- 8ком ЛЕД
- 1к отпорник -1 ком (8 ком 1к отпорника потребно ако су одвојени отпорници на сваком лед-у)
- 74ХЦ595 иц
- 5В зидни адаптер
- Програмско окружење ПИЦ
- Табла и жице
Кружни дијаграм:
У дијаграм кола смо повезали пин серијских података; игла за сат и засун (засун) на пину микроконтролера РБ0, РБ1 и РБ2. Овде смо користили један отпорник за 8 ЛЕД. Према табели истине, омогућили смо излаз спајањем пина 13 од 74ХЦ595 на масу. Брза помоћ игла је остављена отворена јер нећемо каскада још један 74ХЦ595 са њим. Ми смо онемогућили јасан улазни заставу спајањем пин 10 премештања регистра са ВЦЦ.
Кристални осцилатор је повезан на ОСЦ пинове микроконтролера. ПИЦ16Ф877А немају ниједан унутрашњи осцилатор. У овом пројекту осветлићемо један по један од К0 до К7 помоћу регистара смене.
Конструисали смо круг у плочи-
Објашњење кода:
Комплетни код за управљање ЛЕД-има са регистром померања дат је на крају чланка. Као и увек, морамо да поставимо конфигурационе битове у ПИЦ микроконтролеру.
#прагма цонфиг ФОСЦ = ХС // Битови за избор осцилатора (ХС осцилатор) #прагма цонфиг ВДТЕ = ОФФ // Бит Ватцхг Енабле бит (ВДТ дисаблед) #прагма цонфиг ПВРТЕ = ОФФ // Повер-уп Тимер Енабле бит (ПВРТ дисаблед) # прагма цонфиг БОРЕН = ОН // Бригхт-оут Ресет Енабле бит (БОР енаблед) #прагма цонфиг ЛВП = ОФФ // Нисконапонски (једносмерни) Серијско програмирање у кругу Омогућени бит (РБ3 / ПГМ пин има ПГМ функцију; низак -програмирање напона омогућено) #прагма цонфиг ЦПД = ОФФ // Бит заштите података ЕЕПРОМ меморијског кода (заштита података ЕЕПРОМ кода искључена) #прагма цонфиг ВРТ = ОФФ // Фласх програмирање меморијских битова Омогућавање битова (искључивање заштите; сва меморија програма може бити писано од стране ЕЕЦОН контроле) #прагма цонфиг ЦП = ОФФ // Бит програма за заштиту меморијског кода Фласх програма (заштита кода искључена)
Након тога смо прогласили кристалну фреквенцију потребну за кашњење и пин-оут изјаву за 74ХЦ595.
#инцлуде
Затим смо прогласили функцију систем_инит () за иницијализацију правца пина.
воид систем_инит (воид) { ТРИСБ = 0к00; }
Створили смо импулс такта и импулс резе помоћу две различите функције
/ * * Ова функција ће омогућити Сат. * / воид цлоцк (воид) { ЦЛК_595 = 1; __делаи_ус (500); ЦЛК_595 = 0; __делаи_ус (500); }
и
/ * * Ова функција ће стробовати и омогућити излазни окидач. * / воид Стробе (воид) { СТРОБЕ_595 = 1; __делаи_ус (500); СТРОБЕ_595 = 0; }
Након ове две функције прогласили смо функцију дата_субмит (непотписани инт подаци) за слање серијских података на 74ХЦ595.
воид дата_субмит (непотписани инт подаци) { фор (инт и = 0; и <8; и ++) { ДАТА_595 = (дата >> и) & 0к01; цлоцк (); } стробо (); // Подаци коначно послати }
У овој функцији прихватамо 8-битне податке и шаљемо сваки бит користећи два битна оператора лефт схифт и АНД оператор. Прво померамо податке један по један и сазнајемо тачан бит да ли је 0 или 1 помоћу оператора АНД са 0к01. Сваки податак се чува у импулсу такта и коначном излазу података који се врши помоћу импулса засуна или строба. У овом процесу излаз података ће прво бити МСБ (најзначајнији бит).
У главној функцији предали смо бинарни облик и излазна пинова подигли један по један.
систем_инит (); // Систем се припрема док (1) { дата_субмит (0б00000000); __делаи_мс (200); дата_субмит (0б10000000); __делаи_мс (200); дата_субмит (0б01000000); __делаи_мс (200); дата_субмит (0б00100000); __делаи_мс (200); дата_субмит (0б00010000); __делаи_мс (200); дата_субмит (0б00001000); __делаи_мс (200); дата_субмит (0б00000100); __делаи_мс (200); дата_субмит (0б00000010); __делаи_мс (200); дата_субмит (0б00000001); __делаи_мс (200); дата_субмит (0кФФ); __делаи_мс (200); } ретурн; }
Тако се регистар померања може користити за добијање више слободних И / О пинова у било ком микроконтролеру за повезивање више сензора.