Таймер обратного отсчета на 4-х семисегментах и МК

Обсуждаем цифровые устройства...
Ответить
Родился
Аватара пользователя
Сообщения: 17
Зарегистрирован: Сб янв 30, 2010 16:02:00
Откуда: Казахстан, Павлодар

Сообщение Umkalab »

Доброго времени суток коты! Появилась потребность соорудить сей девайс для целей развлекательных...

Итак, нужен таймер обратного отсчета на 4-х семисегментах и "сердцем" из МК. Желательно PIC (имею PICkit 2). Да и ATMEGA8 тоже подойдет.


Функции таймера.

При включении индикация говорит 00:00 (0 часов и 0 минут).
2 кнопки (+ и -) для часов, 2 кнопки (+ и -) для минут.
Кнопка Старт/Пауза и кнопка Сброс.
При остатке времени меньше минуты, каждую секунду до конца времени попикивает буззер (можно и не делать).
После того как таймер отсчитал время по нулям, на 2 секунды включается нагрузка и соответственно выключается.

http://radiokot.ru/forum/viewtopic.php?f=2&t=61757 эту тему смотрел, подходящего немного не нашел...

Схему подключения семисегментов можно взять такую
Вложения
7_seg_indikatori.jpg
(178.16 КБ) 660 скачиваний
Это Я! Медведь!!!
Реклама
Друг Кота
Аватара пользователя
Сообщения: 73964
Зарегистрирован: Вт дек 20, 2011 12:46:51
Откуда: Петроград

Сообщение Maykill »

а на обычной КМОП логике уже не модно?
максимум 6 корпусов надо....по идее
https://www.int-s.spb.ru
" Можно я лягу?"(C)
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Вс дек 08, 2013 14:57:33
Откуда: Россия, Иваново

Сообщение 4elovek37 »

Umkalab а в чем, собственно, проблема? В написании программы? Схема простая, используется динамическая индикация (в прерывании по таймеру по очереди открываете транзисторы, а на порт выставляете значение соответстующего открываемому транзистору индикатора). Только на данной схеме контроллеру не хватает портов.
Считать время можно тоже таймером, с использованием пределителя (что бы меньшее количество раз перезаряжать). Вообще тут много вариантов реализации можно придумать.

Бомбу делаете? :)))
Родился
Аватара пользователя
Сообщения: 17
Зарегистрирован: Сб янв 30, 2010 16:02:00
Откуда: Казахстан, Павлодар

Сообщение Umkalab »

Коты, привет! Нет, не бомбу. Просто таймер обратного отсчета. К нему будет сирена привязана небольшая, которая будет оповещать о конце игрового времени.

Как понять что не хватает портов?!?!?! Там вроде всего в достаток.

"Считать время можно тоже таймером, с использованием пределителя (что бы меньшее количество раз перезаряжать). Вообще тут много вариантов реализации можно придумать."

Это Вам так все просто... Я ещё зеленый немного...
Это Я! Медведь!!!
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Вс дек 08, 2013 14:57:33
Откуда: Россия, Иваново

Сообщение 4elovek37 »

Пример динамической индикации наберите в поисковике, там много примеров.
По поводу подсчета времени.
Можно считать с помощью встроенного таймера. Более конкретно реализация зависит от выбранного МК, но в общих чертах выглядит следующим образом. В МК есть 16-битный(предпочтительнее) или 8-битный таймер. Он может тактироваться от системной частоты (той же, что тактирует МК). То есть, если абстрагироватся от реальности, допустим МК тактируется с частотой 1Гц, то регистр таймера будет без вашего участия инкрементироваться раз в секунду. Проблема в том, что наш МК тактируется куда большей частотой (к примеру 4МГц). Таймер будет заполнятся ооочень быстро, и мы замучаемся его перезаряжать. Для этого во многих МК сущеструет пределитель таймера, который делит системную тактовую частоту на x, и уже получившейся частотой тактирует таймер. С этим все просто. В тот момент когда таймер досчитает до максимума, МК попробует сгенерировать прерывание (если разрешено), это то нам и нужно. В прерывании мы уже знаем сколько времени прошло с момента пуска таймера (это подсчитывается), и решаем что делать дальше. Можно завести отдельную переменную, которая будет подсчитывать количество вызванных прерываний (переполнений таймера), тем самым можно считать куда большие промежутки времени. То есть, представим что таймер заполняется за 0.5 сек. А ждать нам надо 3 секунды. Заводим переменную, а так же условие: если переменная == 6, сделать действие. В прерывании каждый раз инкрементируем переменную и сбрасываем таймер.
Только возможна одна проблема - динамическая индикация работает по тому же принципу, но тут все зависит от типа МК. Некоторые обладают парой-тройкой таймеров, а так же могут отличать источники прерываний. С ними проблем возникнуть не должно. Как вариант - не париться и сделать статичискую индикацию с помощью регистров. Но тут на вкус и цвет.
Это Вам так все просто... Я ещё зеленый немного...
Дак я тоже, но у меня главная беда - электротехника. Вон с простейшей обзязкой на МК проблемы... :(
Реклама
Родился
Аватара пользователя
Сообщения: 17
Зарегистрирован: Сб янв 30, 2010 16:02:00
Откуда: Казахстан, Павлодар

Сообщение Umkalab »

Про регистры думал тоже сидел уже... 74HC164 и в бой. Можно даже на PIC16F84 забубенить все это. Сейчас сижу рисую печатку для PIC16F873 в SOIC корпусе. Никогда не думал что простой таймер окажется таким лесом темным...
Это Я! Медведь!!!
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Вс дек 08, 2013 14:57:33
Откуда: Россия, Иваново

Сообщение 4elovek37 »

Никогда не думал что простой таймер окажется таким лесом темным...
Это я написал плохо, на самом деле все не очень сложно. Про тот же таймер смотрите в ДШ выбранного контроллера, там все кратко изложено
Друг Кота
Аватара пользователя
Сообщения: 15749
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Насчет регистров и статики для таймера кухонного...
Энто "перебор" явно...
Схемка в принципе вполне работоспособна... желательно ток светиков мимо МК пустить и дополнительно с "высокой" стороны их подкормить - но на то всего лишь ULN2803 плюс 4 оптрона с транзюками добавить потребуется.
Насчет программы -
используется классика с внутренним генератором "опорной метки", генерируемой каким-либо из внутренних таймеров и серии регистров - счетчиков на окно позиции (с запросом статуса ЛВК), строку вывода (из 4-зх позиций) и масенькое окошко анализатора ЛВК и текущего статуса регистров таймера.
Все сие в бесконечном цикле. Анализ ЛВК раз за две строки даст необходимый антидребезг по кнопам.
Суммарная регенерация, включая анализатор примерно 62Гц.
:beer:
Друг Кота
Аватара пользователя
Сообщения: 73964
Зарегистрирован: Вт дек 20, 2011 12:46:51
Откуда: Петроград

Сообщение Maykill »

BOB51
как говорят- РЕСПЕКТ! в такой обстановке и не съехать до химерыча :))
удачи!
https://www.int-s.spb.ru
" Можно я лягу?"(C)
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Вс июн 17, 2012 16:32:42

Сообщение eduardo »

Ещё вот такой вот есть,если надо кому....
Вложения
таймер.rar
(396.54 КБ) 246 скачиваний
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Не, никому уже не надо.
Docendo discimus
Контактная информация:
Ответить

Вернуться в «Цифровая техника»