
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 / VCC | 5V Uno R3 | 100 нФ между 16 и 8 непосредственно у корпуса. |
| 8 / GND | GND Uno R3 | Земля кнопок соединена с той же шиной. |
| 1 / SH/LD | D10 Uno R3 и 10 кОм к 5V | LOW загружает входы; HIGH разрешает сдвиг. |
| 2 / CLK | D13 Uno R3 и 10 кОм к GND | В покое LOW; пример читает QH перед каждым нарастающим фронтом. |
| 15 / CLK INH | GND | HIGH запрещает сдвиг; не оставлять плавающим. |
| 10 / SER | GND для единственной микросхемы | В каскаде сюда подключают QH предыдущего регистра. |
| 9 / QH | D12 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 и кнопка на GND | E=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=D12CLK 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 не реализован, аппаратного теста не было.
Проверка порядка битов
text1. При отпущенных кнопках ожидается 11111111 благодаря восьми внешним подтяжкам.
2. Замкните только A на GND: последняя цифра должна стать 0.
3. Замкните только H: первой цифрой должен стать 0.
4. Если последовательность сдвинута, проверьте момент первого чтения и выбор QH, а не инверсного выхода.
5. Если данные хаотичны, проверьте SH/LD, CLK INH, все подтяжки, развязку и общий GND.
План проверки соответствия входов. Для счётчика нажатий добавьте устойчивое состояние и подавление дребезга.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.


