Как сделать программируемые часы

Обновлено: 06.07.2024

Корпус, платы, софт — всё это он спроектировал и сделал сам. А потом ещё и опубликовал материалы для создания в открытом доступе.

Итогом работы стало устройство, которое держит заряд больше недели и показывает время и уведомления. На подробное описание создания часов обратил внимание журналист Андрей Бродецкий.

Форма корпуса зависела от выбранной формы экрана, в нижней части инженер оставил место для батареи и других необходимых деталей. Параметры экрана — TFT LCD с разрешением 240x240.

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

Часы на микроконтроллере с DS1307

Конструкция собрана на микроконтроллере ATTiny26 и часов реального времени DS1307. В качестве индикатора текущего времени использован четырехразрядный семисегментный светодиодный индикатор (ультраяркий, голубого цвета свечения, что неплохо смотрится в темное время, и, заодно, часы играют роль ночника). Управление часами происходит двумя кнопками. Благодаря использованию микросхемы часов реального времени DS1307, алгоритм программы получился довольно простым. Общение микроконтроллера с часами реального времени происходит по шине I2C, и организованно программным путем.

К сожалению, в схеме есть ошибка:
- выводы МК к базам транзисторов нужно подключать:
РВ0 к Т4, РВ1 к Т3, РВ2 к Т2, РВ3 к Т1
или поменять подключение коллекторов транзисторов к разрядам индикатора:
Т1 к DP1 . Т4 к DP4

Схема часов на микроконтроллере AVR ATtiny26 и микросхеме DS1307

Детали, используемые в схеме часов:

♦ микроконтроллер ATTiny26:

♦ часы реального времени DS1307:

♦ 4-разрядный семисегментный светодиодный индикатор – FYQ-5641UB -21 с общим катодом (ультраяркий, голубого цвета свечения):

♦ кварц 32,768 кГц, с входной емкостью 12,5 пф (можно взять с материнской платы компьютера), от этого кварца зависит точность хода часов:

♦ все транзисторы - NPN-структуры, можно применить любые (КТ3102, КТ315 и их зарубежные аналоги), я применил ВС547С
♦ микросхемный стабилизатор напряжения типа 7805
♦ все резисторы мощностью 0,125 ватт
♦ полярные конденсаторы на рабочее напряжение не ниже напряжения питания
♦ резервное питание DS1307 – 3 вольтовый литиевый элемент CR2032

Для питания часов можно использовать любое ненужное зарядное устройство сотового телефона (в этом случае, если напряжение на выходе зарядного устройства в пределах 5 вольт ± 0,5 вольта, часть схемы - стабилизатор напряжения на микросхеме типа 7805, можно исключить)
Ток потребления устройством составляет - 30 мА.
Батарейку резервного питания часов DS1307 можно и не ставить, но тогда, при пропадании напряжения в сети, текущее время придется устанавливать заново.
Печатная плата устройства не приводится, конструкция была собрана в корпусе от неисправных механических часов. Светодиод (с частотой мигания 1 Гц, от вывода SQW DS1307) служит для разделения часов и минут на индикаторе.

Установки микроконтроллера заводские: тактовая частота - 1МГц, FUSE-биты трогать не надо.

При первом включении, или повторном включении при отсутствии резервного питания DS307, происходит переход в первоначальную установку текущего времени. При этом: кнопка S1 – для установки времени, кнопка S2 – переход к следующему разряду. Установленное время – часы и минуты записываются в DS1307 (секунды устанавливаются в ноль), а также вывод SQW/OUT (7-й вывод) настраивается на генерацию прямоугольных импульсов с частотой 1 Гц.

При нажатии кнопки S2 (S4 - в программе) происходит глобальный запрет прерываний, программа переходит в подпрограмму коррекции времени. При этом, кнопками S1 и S2 устанавливаются десятки и единицы минут, затем, с 0 секунд, нажатием кнопки S2 происходит запись уточненного времени в DS1307, разрешение глобального прерывания и возвращение в основную программу.

Часы показали хорошую точность хода, уход времени за месяц - 3 секунды.
Для улучшения точности хода, кварц рекомендуется подключать к DS1307, как указано в даташите:

Схема подключения кварца

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

Работа часов на макетной плате

Фотография собранного устройства и печатная плата в формате .lay от читателя сайта Анатолия Пильгук, за что ему огромное спасибо!

Внешний вид собранных часов

Печатная плата часов

В устройстве применены: Транзисторы - СМД ВС847 и ЧИП резисторы

Аналогичные часы можно собрать и на основе платы Arduino.

Приложения к статье:

Схема часов в SPL7 (42,9 KiB, 3 811 hits)

Программа часов в HEX коде (3,1 KiB, 3 110 hits)

Даташит DS1307 на русском языке (312,1 KiB, 6 513 hits)


Второй вариант программы часов в АБ (для тех у кого нескачивается верхний)

Программа учебная, а значит, все должно быть по минимуму. Отображение часов и минут, двоеточие, моргающее раз в секунду, и возможность это самое время выставить.

Из аппаратных средств нужен микроконтроллер AVR – atmega8535, символьный lcd и кнопки - для навигации по одноуровнему меню часов и установки времени. Трех штук - Enter, Up, Down вполне хватит. Кнопкой Cancel пренебрежем.

Кнопки будут опрашиваться в прерывании таймера Т0, а с помощью таймера Т1 будут формироваться секундные интервалы. Можно, конечно, использовать таймер Т2 с внешним часовым кварцем, но не суть.. точность сейчас не главное.

В прерываниях таймеров в очередь будут помещаться события. Событий будет четыре — по одному на каждую кнопку + секундный тик.

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

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

Как написать программу часы

  • Как написать программу часы
  • Как сделать программу-секундомер на Паскале
  • Как на сайте сделать часы
  • - компилятор;
  • - пакеты разработчика;
  • - опционально: интегрированная среда разработки (IDE).

Сформируйте заготовку или проект приложения, которое будет реализовывать часы. В случае если используется IDE, запустите мастер создания проектов, выберите тип приложения, каталог хранения файлов и другие опции. Сгенерируйте проект.

При отсутствии IDE добавьте нужные файлы вручную. Используйте подходящий текстовый редактор. Создайте сценарии для используемой системы сборки (make, cmake, nmake, и т.д.) или файл проекта, если применяются средства вроде qmake.

Как написать программу часы

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

Как написать программу часы

Добавьте в приложение функционал для обеспечения срабатывания определенного фрагмента кода через заданные промежутки времени. Как правило, это делается при помощи запуска таймера, обработчиком событий которого является функция или метод класса. Напишите код, реализующий подобный обработчик, а также код запуска таймера при инициализации приложения и остановки при завершении его работы. Период срабатывания таймера установите в районе 100-300 миллисекунд.

Как написать программу часы

Реализуйте код обработчика событий таймера. Осуществляйте в нем получение текущего системного времени и его отображение в окне приложения. Получайте текущее время при помощи функций библиотеки C (localtime, localtime_r, gmtime, gmtime_r), платформ-специфических функций (таких как GetSystemTime в Windows) или соответствующих методов классов-оберток используемого фреймворка. Форматируйте полученное значение в строку и устанавливайте ее в качестве текста элемента управления, используемого для отображения времени или сохраняйте и выводите при обновлении окна с помощью соответствующих графических функций.

Как написать программу часы

Проверьте работу созданной программы, реализующей часы. Соберите проект. Запустите полученный исполняемый модуль.

Читайте также: