Ха. Чето у меня родилась вот такая идея со всеми этими спидометрами-тахометрами-указателями температуры:
разумеется, это просто демо-версия, для ознакомления со способами и возможностями. Эту схему не возбраняется переделывать под конкретную реализацию.
Потому что сейчас сделано из того, что было под руками. МК, как и в идее топикстартера, STM32F030F4P6 в корпусе SSOP20 (напаян на переходную плату SSOP/SOIC-DIP), внизу фотки.
В роли тахометра - готовые лайтбары DD-12GWB плюс 4 отдельных светодиода. Получилась шкала из 28 светодиодов, по 200 об/мин на каждый светодиод. Однако, использование этих лайтбаров при питании 3,3 В накладывает ограничение на их яркость. Они включены напрямую без резисторов.
Спидометр - обычные цифры на трехразрядном семисегментнике с ОК. По обе стороны от цифр спидометра - лайтбары указателя температуры и указателя уровня топлива. Лайтбары тахометра управляются от двух регистров 74HC595 (на фотке они ниже лайтбаров, слева и справа). Поскольку лайтбары DD-12 имеют определенную внутреннюю схему коммутации св.диодов, то иного выхода в подключении не было.
Третий регистр 74HC595 (на фотке в самом верху, правый) совместно со светодиодным 8-канальным драйвером MBI5170 (вверху, левый) управляет остальными индикаторами. Лайтбары DC-10 уже можно подключать матрично.
Попутно выяснилось, что при питании 3,3 В регистры 74HC595 не способны выдавать большие токи одновременно на несколько выходов, поэтому у сегментов индикаторов начинает проявляться разнояркость в зависимости от числа одновременно включенных с одного 595-го регистра сегментов индикатора.
Все эти регистры получают инфу по последовательному интерфейсу SPI1 с микроконтроллера (порты PA5, PA7), пакетами по 4 байта. Регистры соединены последовательно один за другим - инфа пришла на вход первого, вышла из него на вход второго, и так далее.
Частота следования пакетов = частоте динамической индикации. Запускается передача пакетов по SPI с помощью "пинка" таймером TIM17, работающим с частотой около 59 Гц.
Каждый пакет содержит полные данные для загрузки всех регистров (4 штуки по 8 бит, то есть 4 байта), передача идет на скорости интерфейса 62,5 кГц, аппататно по DMA, Ch3. После передачи пакетов и загрузки всех регистров формируется сигнал защелкивания. Что-то типа CS, только формируется софтово.
Так же, для регулировки общей яркости используется у регистров входы OE, на них подается ШИМ-сигнал с МК, формируемый аппаратно выходом таймера TIM14 (порт PB1) с частотой около 1,6 кГц. Регулировка яркости - с помощью потенциометра, преобразуя церез АЦП (еще не сделал).
Для получения данных тахометра используется захват по каналу 1 таймера TIM3, а для получения данных спидометра - канал 3 таймера TIM1 (это еще не сделал).
Микроконтроллер работает на стандартной его частоте 8 МГц, этого хватает более чем. И задирать частоту до феерических 52 МГц, загоняя в оверклок - абсолютнейше не нужно. Это не тот случай.
Этот проект был состряпан за один вечер из подручных деталей и носит чисто демонстрационный характер.