Каков эффективный способ разделить часы на 1000 или более?

Контекст: это самодельный проект, который не использует микроконтроллеры в качестве учебного упражнения. Мне нужно рассчитать время до 20 секунд, вплоть до ближайшей сотой секунды, и отобразить измеренный временной интервал. Я использую 4-разрядный 7-сегментный светодиод с общим катодом для дисплея.

У меня есть кристалл 100 кГц, и я хочу отображать десятки, единицы, десятые и сотые доли секунды (т.е. 23,36 секунды) на 4-разрядном 7-сегментном светодиодном дисплее. Я думал, что смогу использовать микросхему 4026, десятичный счетчик и драйвер светодиодов. Однако мне нужно соединить 3 из них, чтобы получить 100 Гц, а затем соединить еще 4 из них, чтобы получить 4 цифры дисплея. 7 микросхем (плюс логика мультиплексирования, потому что дисплей использует общие выводы abcdefg, плюс сброс и т. д.) кажутся МНОГО.

Мне не хватает гораздо более простого способа приблизиться к этому? «Правила» таковы: любые микросхемы или другие компоненты, но не программное обеспечение (без микроконтроллеров).

Спасибо.

Звучит как работа для CPLD.
Если точность не важна, можно использовать простой двоичный счетчик. Деление на 2^10 приблизительно равно делению на 1000 (точнее, на 1024). pdf1.alldatasheet.com/datasheet-pdf/view/66436/INTERSIL/…
По моим расчетам за 20 секунд это будет 2048 «пропущенных» циклов, равных 2 сотым секунды (0,02048 секунды). Неплохо! Я надеялся на миллисекундную точность - я подожду другого варианта, но я могу использовать этот, спасибо!
Или крошечный микроконтроллер. Я бы выбрал ATtiny13 просто потому, что они у меня валяются, но есть и более мелкие, которые отлично справляются со своей задачей.
@jippie За исключением того, что в ОП прямо сказано, что нет MCU .
Генри, двоичный делитель не пропускает циклы. С предложенным двоичным делителем вы получаете один выходной импульс на каждые 1024 входных импульса, а с тысячным делителем вы получаете один выходной импульс на каждые 1000 входных импульсов. Это будет означать, что через 20 секунд ваша максимальная ошибка подсчета будет всего 1024 в случае двоичного делителя или 1000 в случае тысячного десятичного делителя. Видите ли, разница составляет всего 24 импульса за 20 секунд в худшем случае. Если вы посчитаете 123 импульса за 1 секунду с помощью двоичного делителя, на вашем дисплее отобразится 125952 Гц (123 x 1024). Разделитель декад просто более удобочитаем.
Ах, да... и если вам нужна более высокая точность, чем 2 ^ 10, вы останавливаете счетчик и считываете все младшие биты с помощью вашего MCU. Это даст вам точность в один импульс. Эта функция является преимуществом счетчика перед выделенным делителем (преимущество которого обычно заключается в возможности более высоких частот).
@avra - он сказал никаких микроконтроллеров. Дважды.
@stevenh: Итак, «прочитать все младшие биты с помощью вашего MCU» становится «прочитать все младшие биты». Один раз. ;-)

Ответы (2)

Будь проще. Вы можете найти микросхемы, которые будут делить 100 кГц на 1000, например, программируемый счетчик деления на N 74HC4059 , но большинство из них будут стоить вам руки и ноги, тогда как пара дешевых счетчиков 74HC390 подойдет. HC390 — это двойной счетчик BCD, поэтому для второго вам потребуется только половина микросхемы, но это дешевле, чем один счетчик BCD.

Мне нравится идея сделать это простым, я не знал, что существуют такие счетчики с двумя декадами, спасибо!

Если вы хотите реализовать схему, подобную той, что вы описываете, используя готовые микросхемы, по моим оценкам, потребуется три микросхемы декадных счетчиков (две из которых будут использоваться для деления на пять, а одна — для деления на -четыре), две микросхемы 74HC595 (сдвиговый регистр с защелкой), одна микросхема 74HC374 (8-битная защелка), микросхема драйвера сегмента, несколько транзисторов и резисторов для управления пятью общими цифрами светодиодов и, вероятно, около 3-4 разных "клеевых логик" » микросхемы (четырехъядерные NAND, четырехъядерные XOR и т. д.)

Базовая схема выглядит примерно так ; как показано, он будет работать на частоте 20 кГц, а не 100 кГц, но десятичный счетчик, подключенный как деление на пять, легко это исправит.

Светодиоды мигают цифрами в порядке 1000-е 100-е 10-е единицы десятки. Хотя в этой схеме я использую 20-битную защелку с выходами, возвращаемыми на входы, было бы проще использовать микросхему сдвигового регистра для 16 бит. Микросхема сдвигового регистра (74HC595) также имеет преимущество, заключающееся в наличии свободной выходной защелки (эквивалентной защелке в правом нижнем углу).

Если бы кто-то опустил логические элементы «И» и «ИЛИ» в правом верхнем углу схемы, это было бы двоичным. Каждый бит является xor самого себя и предыдущего переноса, а новый перенос должен быть "и" предыдущего переноса и предыдущего бита, за исключением того, что в первом бите каждого "кадра" перенос должен быть принудительно включен. Очень простая логика, которая позволяет сдвиговому регистру выполнять любое приращение длины. Небольшая «изюминка» в этом варианте заключается в том, что схема будет фиксировать каждые четыре бита (поскольку каждые четыре бита должны отображаться в виде десятичной цифры), а также проверять, является ли зафиксированная цифра 9 и установлен ли перенос; в этом случае он будет «притворяться», что следующие четыре бита от переключателя все 1,

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

Спасибо за очень исчерпывающий ответ, который случайно познакомил меня с этим потрясающим апплетом симулятора схемы. Я еще не до конца понял ответ, но я дам ему +1 :)
@Генри: Рад быть полезным. Кстати, апплет допускает в качестве недокументированной возможности возможность установки размера «Защелки», «Счетчика декад», «АЦП», «ЦАП» и некоторых других вещей. Если вы выберете «Экспорт» в меню «Файл», вы получите одну строку для каждого провода или детали. Первая вещь в строке скажет, что это за вещь; у большинства фишек, ворот и прочего там есть номер. Оставшаяся часть строки будет описывать детали вещи. Во многих случаях будет параметр, указывающий размер (даже для частей, размер которых нельзя изменить иначе). Попробуй изменить...
... затем нажмите кнопку «ИМПОРТ» и посмотрите, что произойдет. Обратите внимание, что некоторые части, такие как счетчик «Decade», включают параметр для каждого выходного вывода, который, кажется, указывает начальное состояние; параметры должны присутствовать (по одному на выход), но значения игнорируются. Это важно при изменении счетчика декады, например, на деление на 16; для реимпорта устройства необходимо добавить еще шесть нулей (по одному на каждый добавляемый выход).