Як підключити сдвиговый регістр до Arduino

В одній з попередніх статей ми вже побіжно торкалися застосування сдвигового регістра, зокрема, 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. Навчилися підключати сдвиговый регістр, записувати в нього дані і зчитувати з нього дані.

Related posts