Целью этого проекта является создание простого таймера обратного отсчета на 0-9999 секунд с звуковым сигналом и дисплеем. Необходимое время устанавливается при помощи 2-х кнопок без фиксации, а отсчет секунд отображается на 4 разрядном семи сегментом дисплее. В проекте используется микроконтроллер PIC12F683 для отсчета времени и микросхема MAX7219 для управления семи-сегментным дисплеем. Конец отсчета обозначается звуковым сигналом зуммера.
Принципиальная схема
Полная схема этого проекта приведена ниже. Две кнопки без фиксации (называются INC и TSET) используются для установки времени и запуска таймера. Они соединены параллельно и подключены к контакту AN3 АЦП микроконтроллера PIC12F683. На схеме видно, что при нажатии на кнопки на выходе получаются разные аналоговые напряжения. Когда кнопка INC нажата, напряжение на контакте на AN3 равно 0. Но если нажата кнопка TSET, напряжение на контакте AN3 около 2.5 В (делитель напряжения из 2-х резисторов 4,7 кОм). Если ни одна кнопка не нажата, то напряжение на контакте AN3 около 5В. Потому, опираясь на значение на выходе 10 битного АЦП, можно идентифицировать, какая кнопка нажата. Звуковой сигнал реализован при помощи ШИМ-сигнала на контакте GP2. В качестве дисплея используется 4 разрядный семи сегментный индикатор управляемый микросхемой MAX7219. Если вы не знакомы с микросхемой MAX7219, прочитайте мою статью Последовательный 4 разрядный семи сегментный индикатор для получения более подробной информации.
На фотографии показан полностью собранный проект. Я использую свою плату разработчика PIC12F и дисплейный модуль, состоящий их 4 разрядного семи сегментного индикатора и микросхемы MAX7219. Зуммер и кнопки установлены на макетной плате, но они могут легко поместиться на моей плате PIC12F.
Программа
Прошивка написана на C и скомпилирована в mikroC Pro для PIC микроконтроллеров. Часть программы для работы с MAX7219 взята из моего предыдущего проекта «Последовательный 4 разрядный семи сегментный дисплейный модуль». ШИМ сигнал 5 кГц появляется на контакте CCP1 при окончании времени таймера. Исходный код и HEX файл можно скачать ниже.
На рисунке выше показаны параметры фьюзов (внутренний генератор 4.0 МГц, MCLR, Power-Up timer, Brown out detection включены) для микроконтроллера PIC12F683.
Принцип работы
Таймер работает следующим образом. При подаче питания, дисплей инициализируется, и на всех 4 разрядах отображаются 0. Чтобы установить время, вам необходимо ввести значение одной цифры за один раз путем кратковременного нажатия TSET. При первом нажатии устанавливаются Единицы, по умолчанию 0. В это время другие разряды не горят. Чтобы установить цифровое значение от 0 до 9 используйте кнопку INC. При каждом нажатии INC, значение увеличивается на 1, и сбрасывается на 0 после 9. После установки значения Единиц, нажатием TSET выбираются Десятки, значение которых устанавливается аналогичным образом. Когда все 4 цифры заданы, вы можете запустить таймер путем удержания кнопки TSET примерно 2 секунды. Таймер запускается с коротким звуковым сигналом, а оставшееся время отображается на дисплее. Когда время истекает, дисплей мигает пять раз и звучит сигнал. На видео показана работа таймера.
Обратите внимание, что во время отсчета времени таймер не реагирует на нажатия кнопок INC и TSET. Если вы хотите сбросить или перезапустить таймер, нажмите кнопку Reset.
Вы можете купить 4 разрядный семи сегментный светодиодный индикатор SPI примерно за $12. Он позволяет вам работать с 4 разрядным 7-сегментным светодиодным индикатором, используя всего три порта ввода/вывода микроконтроллера, и позволяет управлять всеми сегментами, включая точки.
Прикрепленные файлы:
- 9999Timer.zip (38 Кб)