Доброго времени суток коты! Появилась потребность соорудить сей девайс для целей развлекательных...
Итак, нужен таймер обратного отсчета на 4-х семисегментах и "сердцем" из МК. Желательно PIC (имею PICkit 2). Да и ATMEGA8 тоже подойдет.
Функции таймера.
При включении индикация говорит 00:00 (0 часов и 0 минут).
2 кнопки (+ и -) для часов, 2 кнопки (+ и -) для минут.
Кнопка Старт/Пауза и кнопка Сброс.
При остатке времени меньше минуты, каждую секунду до конца времени попикивает буззер (можно и не делать).
После того как таймер отсчитал время по нулям, на 2 секунды включается нагрузка и соответственно выключается.
Umkalab а в чем, собственно, проблема? В написании программы? Схема простая, используется динамическая индикация (в прерывании по таймеру по очереди открываете транзисторы, а на порт выставляете значение соответстующего открываемому транзистору индикатора). Только на данной схеме контроллеру не хватает портов.
Считать время можно тоже таймером, с использованием пределителя (что бы меньшее количество раз перезаряжать). Вообще тут много вариантов реализации можно придумать.
Коты, привет! Нет, не бомбу. Просто таймер обратного отсчета. К нему будет сирена привязана небольшая, которая будет оповещать о конце игрового времени.
Как понять что не хватает портов?!?!?! Там вроде всего в достаток.
"Считать время можно тоже таймером, с использованием пределителя (что бы меньшее количество раз перезаряжать). Вообще тут много вариантов реализации можно придумать."
Это Вам так все просто... Я ещё зеленый немного...
Пример динамической индикации наберите в поисковике, там много примеров.
По поводу подсчета времени.
Можно считать с помощью встроенного таймера. Более конкретно реализация зависит от выбранного МК, но в общих чертах выглядит следующим образом. В МК есть 16-битный(предпочтительнее) или 8-битный таймер. Он может тактироваться от системной частоты (той же, что тактирует МК). То есть, если абстрагироватся от реальности, допустим МК тактируется с частотой 1Гц, то регистр таймера будет без вашего участия инкрементироваться раз в секунду. Проблема в том, что наш МК тактируется куда большей частотой (к примеру 4МГц). Таймер будет заполнятся ооочень быстро, и мы замучаемся его перезаряжать. Для этого во многих МК сущеструет пределитель таймера, который делит системную тактовую частоту на x, и уже получившейся частотой тактирует таймер. С этим все просто. В тот момент когда таймер досчитает до максимума, МК попробует сгенерировать прерывание (если разрешено), это то нам и нужно. В прерывании мы уже знаем сколько времени прошло с момента пуска таймера (это подсчитывается), и решаем что делать дальше. Можно завести отдельную переменную, которая будет подсчитывать количество вызванных прерываний (переполнений таймера), тем самым можно считать куда большие промежутки времени. То есть, представим что таймер заполняется за 0.5 сек. А ждать нам надо 3 секунды. Заводим переменную, а так же условие: если переменная == 6, сделать действие. В прерывании каждый раз инкрементируем переменную и сбрасываем таймер.
Только возможна одна проблема - динамическая индикация работает по тому же принципу, но тут все зависит от типа МК. Некоторые обладают парой-тройкой таймеров, а так же могут отличать источники прерываний. С ними проблем возникнуть не должно. Как вариант - не париться и сделать статичискую индикацию с помощью регистров. Но тут на вкус и цвет.
Это Вам так все просто... Я ещё зеленый немного...
Дак я тоже, но у меня главная беда - электротехника. Вон с простейшей обзязкой на МК проблемы...
Про регистры думал тоже сидел уже... 74HC164 и в бой. Можно даже на PIC16F84 забубенить все это. Сейчас сижу рисую печатку для PIC16F873 в SOIC корпусе. Никогда не думал что простой таймер окажется таким лесом темным...
Насчет регистров и статики для таймера кухонного...
Энто "перебор" явно...
Схемка в принципе вполне работоспособна... желательно ток светиков мимо МК пустить и дополнительно с "высокой" стороны их подкормить - но на то всего лишь ULN2803 плюс 4 оптрона с транзюками добавить потребуется.
Насчет программы -
используется классика с внутренним генератором "опорной метки", генерируемой каким-либо из внутренних таймеров и серии регистров - счетчиков на окно позиции (с запросом статуса ЛВК), строку вывода (из 4-зх позиций) и масенькое окошко анализатора ЛВК и текущего статуса регистров таймера.
Все сие в бесконечном цикле. Анализ ЛВК раз за две строки даст необходимый антидребезг по кнопам.
Суммарная регенерация, включая анализатор примерно 62Гц.