74hc595 IC регистъра за смяна

pin up bet

Чипът 74HC595, както може да се заключи от името му, е печатна схема, която реализира CMOS схема вътре. По-конкретно, това е регистър за смяна. За тези, които все още не са запознати с тези регистри, това е основно последователна цифрова схема, тоест нейните изходни стойности просто зависят от входните стойности и предишните съхранени стойности.

Това ги отличава от комбинационните, че изходите зависят само от стойността на входа. Този регистър е съставен от поредица от D-тип тригери, управлявани от тактов сигнал. 

Esos biestables son memorias que mantienen un valor anterior. Cada uno almacena un bit y, de su nombre también puedes deducir que, los puede desplazar. Al correr los bits de un lado a otro podemos hacer operaciones digitales bastante interesantes.

В зависимост от вида на изместването, което правят на битовете, които съхраняват, регистрите могат да бъдат различни видове. Те могат да се движат наляво или надясно, някои двупосочни, но редът е този, който определя типа, дори в други случаи те също са каталогизирани в зависимост от това как са входовете и изходите:

  • Serial-Serial: тези, при които само първият тригер получава данни и те влизат последователно, докато се попълни целият регистър. Последният тригер е този, който е директно свързан към изхода и през който регистърът ще бъде изведен.
  • Паралелно-сериен: Битовете вървят паралелно, за да се съхраняват във всички джапанки наведнъж, но след това излизат последователно. Те могат да се използват за преобразуване от последователен към паралелен и обратно.
  • Сериен паралел: Подобно на по-горе, всички изходи са достъпни от всички джапанки наведнъж. Но данните ще бъдат въведени само от първия поред.
  • Паралелно-паралелно: данните идват успоредно и излизат паралелно.

Сред най-известните вериги имаме 74HC595, 74HC164, 74HC165, 74HC194 и т.н. 194 е универсален, може да бъде конфигуриран както пожелаем. От друга страна, имаме други двупосочни като 165 и 164, следователно той се движи наляво или надясно, както е посочено със сигнала за управление на посоката, но те имат само една конфигурация: паралелни входове и сериен изход и сериен вход и паралелен изход.съответно.

За какво е смяна регистър?

Защо да сменяте битовете? Преместването на битове от данни може да бъде много удобно. Една от причините е, че стойностите трябва да бъдат преместени от определена цел. Но преместването също включва извършване на някои операции върху съхранените битове. Например, преместването на набор от битове наляво е като умножаването им по 2. Преместването им вдясно е като деление на 2. Следователно, правенето на двоично умножение и деление може да бъде много удобно…

Те също се използват за генериране на псевдослучайни стойности, за последователни приближения, широко използвани в аналогови/цифрови преобразуватели, за забавяне и т.н. Използването в цифровите логически схеми е доста често, така че не е необичайно да се налага да ги използвате в проект.

74HC595 Характеристики

74HC595 е доста проста ИС(интегрална схема). Това е 8-битов регистър за смяна, тоест има 8 тригера за съхранение на 8 бита. Изводът или щифтовете на този чип могат да се видят на изображението по-горе, с Vcc и GND за захранване, а след това тези, маркирани като Q, които са данни. Останалите съответстват на часовникови/контролни сигнали.

Входът е последователен, а изходът е паралелен. Следователно, с един вход тези 8 изхода могат да се управляват едновременно. Ще ви трябват само три щифта от използвания микроконтролер (например: Arduino), за да го управлявате. Това са Latch, Clock и Data. Резето е щифт 13 в този случай, въпреки че може да варира, така че трябва да се консултирате с листа с данни на вашия производител. Часовникът може да бъде 11 или нещо друго, а битът на данните е 14.

Сигналът на часовника ще захранва веригата, за да определи ритъма или ритъма, с който ще работи. Изходът на данни ще промени поведението на чипа. Например, при промяна от LOW на HIGH и генериране на новия тактов импулс чрез преминаване на часовника от HIGH на LOW, това, което се постига е да се запише текущата позиция, където се намира изместването на стойността, въведена от този щифт за данни. Ако повторите това 8 пъти, тогава ще сте записали всичките 8 позиции и ще имате съхранен един байт (Q0-Q7).

Използвайте с Arduino

За да ви стане по-ясно, може би пример с Arduino ви го обяснява по по-интуитивен и графичен начин, отколкото да започнете да стартирате теоретични данни. Например, можете да създадете проста схема с Arduino и регистър за смяна 74HC595, за да играете с някои светлини или светодиоди. Друг малко по-добър и по-прост вариант е да използвате 7-сегментен дисплей за четене на стойностите на регистъра.

Диаграмата е тази, която можете да видите на предишното изображение, след като Arduino е свързан по този начин с 74HC595 и дисплея, остава само да го програмирате с Arduino IDE и ще видим възможностите на регистъра за смяна. Кодът ще бъде следният, с поредица от двоични кодове 0bxxxxxxxx, които са x бита:

const int latchPin = 8;  // Pin conectado al Pin 12 del 74HC595 (Latch)

const int dataPin  = 9;  // Pin conectado al Pin 14 del 74HC595 (Data)

const int clockPin = 10; // Pin conectado al Pin 11 del 74HC595 (Clock)

int i =0;

                      

const byte numeros[16] = {

                0b11111100,

                0b01100000,

                0b11011010,

                0b11110010,

                0b01100110,

                0b10110110,

                0b10111110,

                0b11100000,

                0b11111110,

                0b11100110,

                0b11101110,

                0b00111110,

                0b10011100,

                0b01111010,

                0b10011110,

                0b10001110

};

                      

void setup() {

  Serial.begin(9600);

  pinMode(latchPin, OUTPUT);

  pinMode(clockPin, OUTPUT);

  pinMode(dataPin, OUTPUT);

}

void loop() {

                for (i=0;i<16;i++) {

                               delay(1000);

                               digitalWrite(latchPin, LOW);

                               shiftOut(dataPin, clockPin, LSBFIRST, numeros[i]);

                               digitalWrite(latchPin, HIGH);

                }

}

Leave a Comment

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

Shopping Cart
Нямате продукти в количката!
0