74HC165

Texas Instruments — выбранный референс · SN74HC165N, PDIP-16, CMOS HC

Одновременное считывание восьми цифровых входов с последующей последовательной передачей контроллеру.

Автор: SLDV LAB

Опубликовано · Обновлено

СложностьСредне
Проекты с компонентом

О МОДУЛЕ

Что делает SN74HC165N, PDIP-16, CMOS HC

74HC165 выполняет параллельную загрузку восьми сигналов, затем выдаёт их по одному через QH. Это удобный способ подключить группу кнопок несколькими проводами. Здесь выбран TI SN74HC165N в PDIP-16, а не HCT-исполнение с другими входными порогами. Аналоговые значения и напряжения вне диапазона питания так не измеряются.

При LOW на SH/LD параллельные входы загружаются асинхронно; после перехода в HIGH данные сдвигаются на нарастающих фронтах CLK, если CLK INH удерживается LOW. Сразу после загрузки на QH уже находится H. Поэтому пример читает первый бит до первого тактового фронта; стандартный shiftIn с неподходящим начальным уровнем может потерять этот бит.

Плавающих входов быть не должно. Каждая кнопка в примере имеет свою внешнюю подтяжку, поскольку INPUT_PULLUP контроллера относится только к его собственному GPIO. Снимок входов не устраняет механический дребезг. Для интерфейса с событиями понадобится отдельная фильтрация и повторное чтение; сам регистр не умеет проверять достоверность кабеля или подтверждать обмен.

Фотография

Texas Instruments SN74HC165N, корпус DIP-16. Исходное фото небольшое: 536×259 пикселей. Фото: Epof345456. Оригинал: https://commons.wikimedia.org/wiki/File:TI_3CA1JYM_E4_SN74HC165N.jpeg . Лицензия: CC BY-SA 4.0, https://creativecommons.org/licenses/by-sa/4.0 . Изменения: Удалён только исходный фон вокруг компонента; края маски сглажены. Внутренние блики, маркировка и все видимые детали сохранены. Компонент размещён на предоставленном фоне без увеличения и изменения пропорций. Исходное изображение не содержит ICC; RGB интерпретировано как sRGB без изменения цвета; применено JPEG-сжатие. Исходные RGB-значения и отсутствие ICC сохранены в прозрачном PNG. Детали и надписи не дорисовывались; резкость и разрешение не повышались. Адаптация фотографии распространяется по CC BY-SA 4.0.

Схема распиновки

Texas Instruments SN74HC165N, PDIP-16: вид сверху, выемка слева. Оригинальная справочная схема SLDV LAB по TI SCLS116H; не фотография и не рисунок производителя. Оригинальная схема SLDV LAB по Texas Instruments SNx4HC165, SCLS116H, стр. 3, 4, 13, 15: https://www.ti.com/lit/ds/symlink/sn74hc165.pdf . Фон предоставлен пользователем.

Вид сверху: выемка слева, вывод 1 снизу слева. Схема предназначена для указанного PDIP-16, не для корпуса с другой нумерацией.

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

Параллельных входов
8
Корпус референса
PDIP-16
Рекомендуемое питание
2–6 В
Параллельная загрузка
SH/LD = LOW, асинхронно
Сдвиг
Нарастающий фронт CLK при CLK INH = LOW
Питание модуля
Для SN74HC165 рекомендовано 2–6 В; пример 5 В с Uno R3. Выход QH при питании 5 В нельзя напрямую подключать к GPIO ESP32; для 3,3 В выбирают согласованное питание и уровни всей цепи.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
16 / VCC5V Uno R3100 нФ между 16 и 8 непосредственно у корпуса.
8 / GNDGND Uno R3Земля кнопок соединена с той же шиной.
1 / SH/LDD10 Uno R3 и 10 кОм к 5VLOW загружает входы; HIGH разрешает сдвиг.
2 / CLKD13 Uno R3 и 10 кОм к GNDВ покое LOW; пример читает QH перед каждым нарастающим фронтом.
15 / CLK INHGNDHIGH запрещает сдвиг; не оставлять плавающим.
10 / SERGND для единственной микросхемыВ каскаде сюда подключают QH предыдущего регистра.
9 / QHD12 Uno R3Прямой последовательный выход; H доступен сразу после загрузки.
7 / инверсный QHНе подключатьДополнительный инверсный выход, не земля.
11 / A; 12 / B; 13 / C; 14 / DКаждый вход: собственные 10 кОм к 5V и кнопка на GNDВ возвращаемом байте A=bit0, B=bit1, C=bit2, D=bit3; отпущено=1, нажато=0.
3 / E; 4 / F; 5 / G; 6 / HКаждый вход: собственные 10 кОм к 5V и кнопка на GNDE=bit4, F=bit5, G=bit6, H=bit7. Неиспользуемые входы тоже держать на определённом уровне.

Подходит для Arduino. Выберите контакты по документации своей платы.

ВАШ ПРОЕКТ · ВАШ ДАТЧИК

Интегрируйте модуль с ChatGPT

Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.

Помоги интегрировать 74HC165 (SN74HC165N, PDIP-16, CMOS HC) в мой проект. Сначала уточни точный компонент и изготовителя, корпус и маркировку, плату контроллера, среду разработки, питание, нагрузку и задачу.

Согласуй уровни контроллера и регистра. Объясни параллельную загрузку LOW, активный фронт CLK и уже доступный первый бит H. Укажи внешнюю подтяжку каждого входа, порядок битов и способ debounce. Не подключай 5-вольтовый QH к ESP32.

Подготовь согласованную схему с номерами выводов, расчёт ограничивающих элементов и безопасный план первичной проверки. Если нужен контроллер, дай полный минимальный пример для названной платы и версии API, зависимости и обработку возможных ошибок; для пассивного узла объясни проверку без программы. Отделяй типовые значения от гарантированных и предельные режимы от рабочих. Не заявляй о выполненных аппаратных испытаниях без измерений.

Библиотеки

Ссылки на библиотеки для этой модели ещё не добавлены.

Установите библиотеку для своей среды и откройте пример из её документации.

Что именно прописать

Плата и API
Arduino Uno R3 / Arduino AVR Boards 1.8.6

Дополнительная библиотека не нужна.

GPIO
SH/LD=D10; CLK=D13; QH=D12

CLK INH и SER в примере соединены с GND.

Отображение байта
bit7=H … bit0=A; LOW means pressed

Первый бит читается до первого фронта CLK.

Uno R3 · снимок восьми кнопок

cpp
#include <Arduino.h>
constexpr uint8_t LOAD_PIN=10, CLOCK_PIN=13, DATA_PIN=12;
uint8_t readInputs() {
  digitalWrite(CLOCK_PIN, LOW);
  digitalWrite(LOAD_PIN, LOW);
  delayMicroseconds(5);
  digitalWrite(LOAD_PIN, HIGH);
  delayMicroseconds(5);
  uint8_t value=0;
  for (uint8_t i=0; i<8; ++i) {
    value=static_cast<uint8_t>((value << 1) | (digitalRead(DATA_PIN) == HIGH));
    digitalWrite(CLOCK_PIN, HIGH);
    delayMicroseconds(5);
    digitalWrite(CLOCK_PIN, LOW);
    delayMicroseconds(5);
  }
  return value;
}
void setup() {
  Serial.begin(115200);
  digitalWrite(LOAD_PIN, HIGH);
  digitalWrite(CLOCK_PIN, LOW);
  pinMode(LOAD_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(DATA_PIN, INPUT);
}
void loop() {
  const uint8_t raw=readInputs();
  Serial.print("H..A (0=pressed): ");
  for (int8_t i=7; i>=0; --i) Serial.print((raw >> i) & 1);
  Serial.println();
  delay(100);
}

Полный скетч, Arduino AVR Boards 1.8.6. Чтение QH перед импульсом сохраняет H в первом бите; debounce не реализован, аппаратного теста не было.

Проверка порядка битов

text
1. При отпущенных кнопках ожидается 11111111 благодаря восьми внешним подтяжкам.
2. Замкните только A на GND: последняя цифра должна стать 0.
3. Замкните только H: первой цифрой должен стать 0.
4. Если последовательность сдвинута, проверьте момент первого чтения и выбор QH, а не инверсного выхода.
5. Если данные хаотичны, проверьте SH/LD, CLK INH, все подтяжки, развязку и общий GND.

План проверки соответствия входов. Для счётчика нажатий добавьте устойчивое состояние и подавление дребезга.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты