Я разрабатываю проект, который требует гораздо большего количества операций ввода-вывода, чем предлагает типичный микроконтроллер. Нет проблем, просто используйте сдвиговые регистры и прочее. Подождите, нет, почему у меня проблемы?
Я планирую управлять 24 выходами с одной последовательной линией данных, часами и выбором микросхемы. 16 выходов подключены к светодиодам, а остальные 8 подключены к ЖК-дисплею HD44780. Итак, что я подумал сделать для 16 светодиодов, так это подключить их к двум 8-битным счетчикам, которые передают бит последовательных данных на конкретный светодиод, а затем переключаются на следующий последовательный выход при тактировании - как демультиплексор, но последовательный. Для ЖК-дисплея мне нужно фактически удерживать данные и отправлять их все сразу, поэтому мне нужен 8-битный последовательно-параллельный регистр и ждать, пока пройдет 8 часов, чтобы включить его.
Найти микросхему, которая делает последнее, легко — кажется, 74HC595 — но для светодиодов я не могу найти микросхему серии 7400, которая делает то, что я хочу. Все те, которые я могу найти, сохраняют предыдущие значения и просто сдвигают их, а декодеры, которые я нашел, 1) не имеют строки данных - они всегда верны при выборе и 2) требуют двоичного слова, а не Часы. Если это еще не ясно, я хочу что-то, что делает то, что слева:
Клянусь, я использовал чип, который делает то, о чем я думал раньше, когда управлял светодиодной матрицей, но я не могу вспомнить его номер. Любая помощь будет оценена по достоинству.
Я не понимаю, почему вы не можете использовать 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 бит.
ВВ ВКЛ.