Часы на микроконтроллере PIC16F887 с будильником, днем недели и резервным питанием

Крушневич С.П..

ВВЕДЕНИЕ.

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

Паять или программировать?

 Так как это конструкция выходного дня, я решил сделать всю схему на макетной плате. Дабы минимизировать количество внешних компонентов, я установил недорогой МК PIC16F887 (усовершенствованный аналог PIC16F877A) и распаял все вокруг него.

Макетная плата. Часы на микроконтроллере PIC16F887 с семиссегментным светодиодным индикатором, будильником, энергонезависимым питанием и днем недели. Clock PIC PICMicro

Схема электрическая принципиальная

Схема получилась достаточно простая, так как вся логика работы спряталась в прошивке.

Схема электрическая прнинципиальная. Часы с семиссегментным светодиодным индикатором, будильником, энергонезависимым питанием и днем недели. PIC16F887
Нажмите для увеличения

 

Энергонезависимость обеспечивает ионистор 1 Ф 5,5 В. Во время испытаний ионистор успешно питал часы в течении суток. Так как вариант питания от ионистора разрабатывался позже, я не учел возможного упрощения схемы подачи питания и пришлось городить схему контроля напряжения питания на оптопаре для того, чтобы вовремя погасить индикаторы. Анализ наличия напряжения питания я провожу в функции динамической индикации, перед выводом очередного символа. Как только я замечаю, что сигнал на ножке пропал, я сразу гашу все сегменты и вспомогательные светодиоды. Далее в основной функции (когда приходит время) я отправляю МК в режим спячки. Будет МК прерывание от таймера TMR1 с интервалом в 2 сек. После увеличения значения числа секунд, в основной функции снова проверяется наличие напряжения питания и МК снова засыпает на 2 секунды.

Ионистор 1F 5.5V. Ionistor. Часы на микроконтроллере

Корпус

После долгих раздумий я решился на металлический корпус и прозрачную переднюю панель.

Часы в корпусе. Часы на микроконтроллере с семиссегментным светодиодным индикатором, будильником, энергонезависимым питанием и днем недели Часы в корпусе. Часы PIC16F887 с семиссегментным светодиодным индикатором, будильником, энергонезависимым питанием и днем недели
Корпус оклеен самоклейкой
Часы в корпусе. Часы PIC16F887 с семиссегментным светодиодным индикатором, будильником, энергонезависимым питанием и днем недели. PIC16F877A Часы в корпусе. Часы PIC16F887 с семиссегментным светодиодным индикатором, будильником, энергонезависимым питанием и днем недели. PIC16F877A

 

Описание

В нормальном режиме на часах отображается текущее время и день недели (светодиодным столбиком).
Нажатие на кнопку "Часы" переводит часы в режим установки часов, минут и дня недели. Выбор осуществляется кнопкой "часы", изменение - кнопками "+" и "-".
Нажатие на кнопку "Будильник" переводит часы в режим установки будильника. Вначале отображается состояние будильника "включенно-On" или "выключенно-OF", далее указывается часы и минуты срабатывания.

Прошивка для микроконтроллера PIC16F887


Прошивка от 17.10.2009, скачать .hex


Прошивка от 15.01.2011, Бетта версия. скачать .hex
1. Добавлена поддержка датчика температуры DS18B20. Сигнальный выход датчика следует подключить к ножке №2 микроконтроллера и соеденить через резистор на 4,7 кОм с питанием МК. Температура отображается по нажатию кнопки "+".

Часы успешно эксплуатируются с 05.05.2009.

07.03.2011