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

Admin 18.04.2014

Доброго дня уважаемые друзья!
Приветствую Вас на сайте «Мир микроконтроллеров»


Простые электронные часы на микроконтроллере ATtiny26,
с использование микросхемы часов реального времени DS1307


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

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

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

Схема часов:

Электронные часы на микроконтроллере

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

♦ микроконтроллер ATTiny26:
Микроконтроллер ATtiny26
♦ часы реального времени DS1307:
Часы реального времени DS1307
♦ 4-разрядный семисегментный светодиодный индикатор – FYQ-5641UB -21 с общим катодом (ультраяркий, голубого цвета свечения):
Четырехразрядный семисегментный индикатор
♦ кварц 32,768 кГц, с входной емкостью 12,5 пф (можно взять с материнской платы компьютера), от этого кварца зависит точность хода часов:
Кварц 32,768 кГц, 12,5 pF
♦ все транзисторы — NPN-структуры, можно применить любые (КТ3102, КТ315 и их зарубежные аналоги), я применил ВС547С
♦ микросхемный стабилизатор напряжения типа 7805
♦ все резисторы мощностью 0,125 ватт
♦ полярные конденсаторы на рабочее напряжение не ниже напряжения питания
♦ резервное питание DS1307 – 3 вольтовый литиевый элемент CR2032

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

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

Алгоритм работы часов (в Algorithm Builder):
Программа часов в Algorithm Builder
1. Установка указателя стека
2. Настройка таймера Т0:
— частота СК/8
— прерывания по переполнению (при такой предустановленной частоте вызов прерывания происходит каждые 2 миллисекунды)
3. Инициализация портов (выводы РА0-6 и РВ0-3 настраиваются на выход, РА7 и РВ6 на вход)
4. Инициализация шины I2C (выводы РВ4 и РВ5)
5. Проверка 7-го бита (СН) нулевого регистра DS1307
6. Глобальное разрешение прерывания
7. Вход в цикл с проверкой нажатия кнопки

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

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

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

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

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


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

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

  Программа часов в "Algorithm Builder" (6,3 KiB, 3 309 hits)

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

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


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

  Программа часов в АБ (11,4 KiB, 1 232 hits)

Скачать программу с ЯндексДиска


(9 голосов, оценка: 4,89 из 5)
Загрузка...

Другие конструкции на микроконтроллерах
1. Простой термометр на микроконтроллере ATmega8 и датчика температуры DS18B20
2. Двухканальный термометр на микроконтроллере ATmega8 и датчиках температуры DS18B20
3. Двухканальный термостат, терморегулятор на ATmega8 и датчиках DS18B20
4. Двухканальный термометр, термостат, терморегулятор с возможностью работы по времени, одноканальный таймер реального времени на ATmega8 и датчиках DS18B20
5. Двухканальный термометр, часы на ATmega8, датчиках температуры DS18B20, RTC DS1307, LCD 1602


Простые электронные часы на микроконтроллере ATTiny26, с использование микросхемы часов реального времени DS1307
Published by: Мир микроконтроллеров
Date Published: 04/18/2014

Комментарии

Часы на микроконтроллере AVR с DS1307 — 13 комментариев

  1. Добрый день
    кто может сделать на заказ 5 таких часов и сколько будет стоить?
    Цвет табло синий, размер 20х60мм примерно, кнопки для перевода выведены отдельно на гибких проводах.
    Заранее спасибо за ответ.

    • Здравствуйте Александр!
      Достоинство часов в том, что они просты.
      Но есть и недостаток (некритичный)- программа «сыроватая», писалась на скорую руку.
      Если найдете желающего их изготовить для Вас — напишите, я еще раз просмотрю и подправлю программу.
      С уважением, Admin.

  2. Файл _.7z не открывается:

    «Не удалось открыть файл как [7z] архив
    неожиданный конец данных»

    Что делать?

    • Здравствуйте zbv_AVR!
      Попробуйте второй вариант, он ниже:
      «Программа часов в АБ»
      С уважением, Admin.

  3. Сделал такие часы.Идут , но S1 и S2 не выставлют минуты и часы. Допишите пожалуйста программу в АБ. Пожалуйста, очень надо.

    • Доброго дня Snis!
      Программа работает в действующем экземпляре часов, кнопки работают, время выставляется.
      Может ошибка в монтаже кнопок?
      С уважением, Admin.

  4. Здравствуйте!
    Спасибо за программу на АБ для DS1307.
    Давно хотел такой пример. Но как ни старался, а запустить схему не смог.
    Здесь исходник не скачивается. Взял его не с этого сайта. И наверное с ошибкой.
    Помогите пожалуйста. Отправьте исходник на мою электронную почту.
    с Уважением Андрей

  5. Есть предложение , о более точном измерении реального времени.Нуждаюсь в вашей помощи,как программиста

    • Доброго дня Игорь!
      Давайте обсудим Ваше предложение и попробуем претворить в жизнь.
      С уважением, Admin.

  6. Подскажите как называется в АВ константа содержащая конец ОЗУ для инициализации стека. если такая существует?
    (у меня не задача инициализировать стек настройщиком, а немного другая)
    Работаю над диспетчером задержек/задач.

    • Доброго дня Mihail_nik!
      Такой константы (не только в АВ) — нет.
      Адрес ячейки памяти ОЗУ с которой будет определяться начало стека записывается в специальные регистры ввода-вывода (РВВ):
      — если объем ОЗУ менее 256 байт используется один восьмиразрядный регистр SPL (восьмиразрядный адрес стека)
      — если объем ОЗУ более 256 байт — используются два регистра: SPL и SPH (шестнадцатиразрядный адрес стека)
      По умолчанию АВ автоматически записывает в эти регистры конечный адрес ОЗУ, который вы самостоятельно можете изменить.
      С уважением, Admin.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *