Какие микросхемы регистров сдвига мне нужны?

Я разрабатываю проект, который требует гораздо большего количества операций ввода-вывода, чем предлагает типичный микроконтроллер. Нет проблем, просто используйте сдвиговые регистры и прочее. Подождите, нет, почему у меня проблемы?

Я планирую управлять 24 выходами с одной последовательной линией данных, часами и выбором микросхемы. 16 выходов подключены к светодиодам, а остальные 8 подключены к ЖК-дисплею HD44780. Итак, что я подумал сделать для 16 светодиодов, так это подключить их к двум 8-битным счетчикам, которые передают бит последовательных данных на конкретный светодиод, а затем переключаются на следующий последовательный выход при тактировании - как демультиплексор, но последовательный. Для ЖК-дисплея мне нужно фактически удерживать данные и отправлять их все сразу, поэтому мне нужен 8-битный последовательно-параллельный регистр и ждать, пока пройдет 8 часов, чтобы включить его.

Найти микросхему, которая делает последнее, легко — кажется, 74HC595 — но для светодиодов я не могу найти микросхему серии 7400, которая делает то, что я хочу. Все те, которые я могу найти, сохраняют предыдущие значения и просто сдвигают их, а декодеры, которые я нашел, 1) не имеют строки данных - они всегда верны при выборе и 2) требуют двоичного слова, а не Часы. Если это еще не ясно, я хочу что-то, что делает то, что слева:

Клянусь, я использовал чип, который делает то, о чем я думал раньше, когда управлял светодиодной матрицей, но я не могу вспомнить его номер. Любая помощь будет оценена по достоинству.

Ответы (3)

Я не понимаю, почему вы не можете использовать 74HC595 для светодиодов.

Сдвиньте свои данные, затем включите часы, чтобы регистр хранения содержал это 8-битное значение. Пока вы не пульсируете часы регистра хранения, вы можете сдвигать биты в течение всего дня, не влияя на окончательные выходные биты.

Вы можете использовать одну и ту же линию последовательных данных для всех ваших выходов и просто выборочно «затворить», какой регистр сдвига будет защелкиваться.

Пожалуйста, оставьте комментарий, если я неправильно понял, что вы делаете. Я уточню свой ответ дальше.

Я хотел бы сохранить прямое подключение к светодиоду. Если я подключу его к сдвиговому регистру, мне придется много раз тактировать и сбрасывать чип снова и снова для каждого последующего вывода. Если у меня есть прямое соединение, то все, что я хочу, чтобы светодиод показывал, это то, что я передал через последовательные данные, и я просто синхронизирую его, чтобы делать то, что я хочу, на следующем.

Элемент слева вовсе не сдвиговый регистр; это известно как «адресуемая защелка». 74xx259 — один из примеров.

Однако мне неизвестны какие-либо готовые компоненты с внутренним счетчиком; все они ожидают, что вы предоставите 3-битный двоичный адрес для защелки, которая должна быть обновлена.

Было бы легко создать такое устройство, используя PAL или CPLD.

Кроме того, если у вас есть шина SPI или I2C на вашем контроллере (или вы хотите использовать ее на GPIO), для этих шин доступно множество видов микросхем расширения ввода-вывода. Одним из примеров, который я использовал, является Microchip MCP23S17 (SPI)/MCP23017 (I2C). Каждый чип дает вам еще 16 линий GPIO.

Не понимаю, почему нельзя использовать 74HC595. Вот все варианты, которые я вижу.

74HC299, 8-битный универсальный регистр сдвига; 3-состояние, если вы можете перевести свои выходы в три состояния во время переключения.

74HC594 последовательный сдвиговый регистр с выходными регистрами

74HC595 регистр сдвига с последовательным входом и выходными защелками

Сдвиговый регистр 74HC596 с последовательным входом, выходными регистрами и выходами с открытым коллектором

74673 16-битный регистр сдвига с последовательным входом и выходом с выходными регистрами хранения, выходами с тремя состояниями, если вам нужно 16 бит.

Потребовалось два человека, чтобы сказать это, но я, наконец, понял, что на самом деле нет причин, по которым я просто не могу использовать 595, так как я работаю достаточно быстро, так что прямое соединение в любом случае не имеет большого значения.