В одній з попередніх статей ми вже побіжно торкалися застосування сдвигового регістра, зокрема, 74HC595. Давайте більш детально розглянемо можливості і порядок роботи з даної мікросхемою.

Статті по темі:

Питання «який купити планшет?» – 3 відповіді

Вам знадобиться

  • – Arduino;
  • – сдвиговый регістр 74HC595;
  • – з’єднувальні дроти.

Інструкція

1. Сдвиговый регістр 74HC595 і йому подібні використовуються в якості пристроїв перетворення послідовних даних в паралельні, а також може використовуватися як “клямка” для даних, утримуючи передане на нього стан.
Схема висновків (“призначення”) наведена на малюнку зліва. Їх призначення таке.
Q0…Q7 – виходи паралельних даних;
GND – земля (0);
Q7′ – вихід послідовних даних;
^MR – скидання провідного пристрою (активний низький);
SHcp – вхід тактових імпульсів сдвигового регістра;
STcp – вхід тактових імпульсів “засувки”;
^OE – дозвіл виводу (активний низький);
Ds – вхід послідовних даних;
Vcc – живлення +5 Ст.
Конструктивно мікросхема виконується в декількох типах корпусів; я буду використовувати той, що наведений на малюнку праворуч – вивідний – т. к. його простіше використовувати з макетної платою (бредбордом).

Внешний вид сдвигового регистра и схема выводов

2. Коротко нагадаю про послідовному інтерфейсу SPI, який ми будемо використовувати для передачі даних в сдвиговый регістр.
SPI – це чотирипровідний двонаправлений послідовний інтерфейс, в якому приймають участь провідний і ведений пристрою. Провідним у нашому випадку буде Arduino, веденим – регістр 74HC595.
Середовище розробки для Arduino має вбудовану бібліотеку роботи по інтерфейсу SPI. При її застосуванні використовуються висновки, які зазначені на рисунку:
SCLK – висновок тактових імпульсів SPI;
MOSI – дані з ведучого – до веденого;
MISO – дані від веденого до ведучого;
SS – вибір веденого.

Стандартные выводы SPI платы Arduino

3. Давайте зберемо схему, як на малюнку.
Я також підключу до всіх ніжок мікросхеми регістра зсуву логічний аналізатор. З допомогою нього ми побачимо, що ж відбувається на фізичному рівні, які сигнали куди йдуть, і розберемося, що вони означають. Повинно вийти приблизно як на фотографії.

Схема подключения сдвигового регистра 74HC595 к Arduino

4. Напишемо ось такий скетч і завантажимо в пам’ять Arduino.
Змінна PIN_SPI_SS – це внутрішня стандартна константа, яка відповідає висновку “10” Ардуїнов при використанні його в якості ведучого пристрою інтерфейсу SPI, який ми тут використовуємо. В принципі, ми могли б з таким же успіхом використовувати будь-який інший цифровий висновок Arduino; тоді нам довелося б оголосити його і поставити його режим роботи.
Подаючи на цей висновок LOW, ми активізуємо наш сдвиговый регістр на прийом/передачу. Після передачі ми знову піднімаємо напруга в HIGH, і обмін закінчується.

Скетч для демонстрации работы сдвигового регистра

5. Включимо нашу схему в роботу і подивимося, що покаже нам логічний аналізатор. Загальний вид тимчасової діаграми на малюнку.
Блакитний пунктирною лінією показано 4 лінії SPI, червоною пунктирною – 8 каналів паралельних даних регістра зсуву.
Точка A на шкалі часу – це момент передачі в регістр зсуву числа “210”, B – момент запису числа “0”, C – повторення циклу з початку.
Як видно, від А до B – 10,03 мілісекунд, а від B до С – 90,12 мілісекунд, майже як ми і задали в скетчі. Невелика добавка в 0,03 і 0,12 мс – це час передачі послідовних даних від Arduino, тому ми тут маємо не рівно 10 і 90 мс.

Временная диаграмма обмена Arduino и сдвигового регистра 74HC595

6. Розглянемо докладніше ділянку A.
У самому верху – довгий імпульс, яким Arduino ініціалізує передачу по лінії SPI-ENABLE – вибір веденого. У цей час починають генеруватися тактові імпульси SPI-CLOCK (другий рядок зверху), 8 штук (для передачі 1 байта).
Наступна рядок зверху – SPI-MOSI – дані, які ми передаємо від Arduino до сдвиговому регістру. Це наше число “210” у двійковому вигляді – “11010010”.
Після завершення передачі, в момент завершення імпульсу SPI-ENABLE, ми бачимо, що сдвиговый регістр виставив на своїх 8-ми ніжках таке ж значення. Я виділив це в блакитний пунктирною лінією і підписав значення для наочності.

Выставление числа 210 на параллельной шине по SPI

7. Тепер звернемо увагу на ділянку B.
Знову все починається з вибору веденого і генерування 8-ми тактових імпульсів.
Дані на лінії SPI-MOSI тепер – “0”. Тобто ми записуємо в цей момент в регістр число “0”.
Але поки передача не закінчена, в регістрі зберігається значення “11010010”. Воно виводиться на паралельні висновки Q0..Q7, і видається при наявності тактових імпульсів в лінії c паралельного виходу Q7′ в лінію SPI-MISO, що ми тут і бачимо.

Выставление числа 0 на параллельной шине по SPI

8. Таким чином, ми детально вивчили питання інформаційного обміну між провідним пристроєм, в ролі якого виступив Arduino, і зсувними регістром 74HC595. Навчилися підключати сдвиговый регістр, записувати в нього дані і зчитувати з нього дані.

НАПИСАТИ ВІДПОВІДЬ

Please enter your comment!
Please enter your name here