При разработке электронных устройств иногда бывает ситуация, когда выводов микроконтроллера не хватает, а использовать другой чип нет возможности. В таких случаях обычно прибегают к схемотехническим трюкам или используют дополнительные внешние микросхемы, например, расширители портов, сдвиговые регистры или мультиплексоры.
   Расширители портов позволяют добавить микроконтроллеру “полноценные”  выводы, работающие как на выход, так и на вход, и, как правило, управляются с помощью стандартных интерфейсов - SPI  или I2C. Это очень удобно, но подобные микросхемы не из дешевых. 
   Бюджетный вариант – использование сдвиговых регистров и мультиплексоров, однако в этом случае полученные дополнительные выводы будут работать только на выход или на вход (исключение составляют универсальные сдвиговые регистры). Впрочем, в большинстве приложений этого вполне достаточно.  
   В этой статье мы рассмотрим расширение портов микроконтроллера с помощью сдвигового регистра 74HC595.  Им можно управлять как стандартными выводами  микроконтроллера, так и с помощью SPI модуля. Также его можно каскадировать, соединяя несколько микросхем в один большой регистр. 
   Чтобы пример был наглядным, с помощью регистров 74HC595 к микроконтроллеру будет подключен семисегментный индикатор.