Большие светодиодные часы-календарь на микроконтроллере ATMega8

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

В основе  часов находится микроконтроллер ATMega8 и  микросхема - DS1307.  Таким образом принципиальная схема получилась достаточно простой (Рис.1).

Схема часовРис.1. Принципиальная схема часов на микроконтроллере ATMega8

Микросхема DS1307 – представляет собой экономичные часы реального времени с последовательным интерфейсом. DS1307 содержит часы-календарь с представлением информации в двоично-десятичном коде и 56 байт энергонезависимого статического ОЗУ. Адрес и данные передаются по двунаправленной двухпроводной последовательной шине. Информация о реальном времени и календаре представляется в секундах минутах, часах, дне, дате, месяце и годе. Если текущий месяц содержит менее 31 дня, то микросхема автоматически определит количество дней в месяце с учетом высокосности текущего года. Часы работают или в 24-часовом или 12-часовом формате с индикатором AM/PM (до полудня/ после полудня). DS1307 содержит встроенную схему контроля уровня основного источника питания и при его недопустимом значении автоматически переключается к резервной батареи Bat1.
Написание программы для микроконтроллера ATmega8 и его сопряжение с DS1307 не составило особого труда.

Больше всего пришлось повозится над созданием светодиодного табло с большими цифрами и его коммутацией с источником питания, напряжением больше чем питание микроконтроллера. Как известно микроконтроллер ATmega8 питается от 5В, а для моего светодиодного табло необходимое напряжение около 14В.

Светодиоды соединены по такой схеме:

ИндикаторРис.2. Светодиодный индикатор

В одном сегменте индикатора 6 светодиодов, рассчитанных на 3В каждый. Как видим из Рис.2 все сегменты соединены между собой катодами (индикатор с общим катодом).

Каждый сегмент индикатора коммутируется с "+" источника питания через транзисторные драйвера выполненные на транзисторах BC547 (см.Рис.1, VT1,VT2). Таких драйверов 7 (на каждый сегмент). С другой стороны, для коммутации индикаторов (подключения общих катодов индикаторов к "-" источника питания) используется микросхема ULN2003A. Это 7-канальный коммутатор мощных нагрузок на основе транзисторов Дарлингтона (составных) с открытым коллектором.

Светодиоды вставлены в трехслойную фанеру, окрашенную в черный цвет. Корпус, как видим из ДСП. Поскольку красного светофильтра не нашел, то табло закрыл обычным стеклом.

Вот так получилось:

1Рис.3. Часы с большим светодиодным дисплеем на микроконтроллере ATmega8

Рабочий режим:

2Рис.4. Часы с большим светодиодным дисплеем на микроконтроллере ATmega8

3 Рис.5. Часы с большим светодиодным дисплеем на микроконтроллере ATmega84Рис.6. Часы с большим светодиодным дисплеем на микроконтроллере ATmega8

Часы и календарь отображаются на табло поочередно.

Видео работы и настройки часов-календаря:

Да, чуть не забыл, в начале каждого часа подается короткий сигнал через buzer со встроенным генератором (см. Рис.1).

Файлы к проекту:

Чтобы увидеть ссылку войдите или зарегистрируйтесь

Fuse-биты при программировании выставляем так:

Fuses1

Постоянная ссылка на это сообщение: http://meandr.org/archives/17006

25 комментариев

Перейти полю для комментария

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

  2. Пока что не корректируется, еще в планах в прошивку добавить коррекцию хода и показ температуры, но это уже позднее.
    uln2003 и ключи на транзисторах необходимы для того, чтобы подавать на сегменты 15В (6 светодиодов включенных последовательно, то есть 2,5В*6=15 В). Если не будешь ставить драйверы, то у тебя получатся индикаторы с общим анодом на напряжение 5В

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

      1. Интересное расположение LEDов в сегментах.
        Я использовал MAX7219. Никаких транзисторов и резисторов не понадобилось.
        Ну и в прошивке есть коррекция времени, автоматический переход на зимнее / летнее время и температура.
        видео
        http://youtu.be/JdW0MNqweac
        тут схемы , коды
        http://fritzing.org/projects/led-wall-clock

  3. Мне например не нужен термометр,а очень нужен календарь и коррекция мне кажется использование atmega328 не стоит того уж очень не выгодно

  4. скажите пожалуйста, а есть проект печатной платы и код для данной схемы?
    Если есть могли бы  скинуть их?

    1. Исходник прикрепил в конце статьи

  5. Проект замечательный. Хорошо что есть микросхема реального времени. Попробую собрать такие. Есть такие детали DS1307N dip8 и ATmega8A-PU(PI)(8-16PU) dip28. Скажите пожалуйста, подойдут такие к данному проекту? Проект печатной платы посмотреть не удается.

  6. Добрый вечер всем! Вопрос к автору: Если не жалко конечно, можно ли увидеть исходник программы?

  7. собрал не фурычит. присоединюсь к остальным... ИСХОДНИК дайте полностью.все файлы архивом.

  8. с кнопками не понятно.реакции-0.у меня просто просаживаются на полвольта напряжения на выводах 23,25,26. будто они запрограммированы на вывод и подана 1.поможите автор!

  9. Здраствуйте aandrey12345.
    Я тоже кнопки не работали пока не заменил резистор R14(100-220) на 10 Ом .
    поставил 10Ом и кнопки заработали, но часы не запускались, причина: при включении показание секунд 80,
    установил 59 и меньше, часы сразу заработали вот Видео https://www.youtube.com/watch?v=QSDwVlAEqKM
    только подсветку сегментов(на видео хохошо видно), незнаю как убрать.
    отпишите заработали у Вас или нет, и есть ли у Вас подсветка. Отпишите буду ждать.

  10. ленту с ледоми использовал зеленую поверх табло покрыл двумя слоями тонкой белой тканью и все заламенировал. результатом все довольны хотелась бы добавить несколько будильников но в исходнике ничего про базер нет . конечно большое спасибо автору но хотелась бы посмотреть реальный код .
    может кто поможет с кодом ! спасибо! можно похожее под описание.

  11. Зд. Уважаемые. Программатором MiniPro TL866 как установит биты с инверсией,так как на этом программаторе отсуствует инверсной кнопки. спасибо

  12. Здраствуйте товарищи. Собрал схему, работает отлично. но есть несколько нюансы: при первом включении секунды показывает 80, 2) дата при работе даже с основным питанием самопроизвольно меняеться , 3) не учитивает дату высокосности, 31 март тоже можно настроить. Может у кого-то встречался такие дефекты, где я ощибся, помогите. спасибо

  13. Горят все сегменты га всех цифрах(8).на кнопки не реагирует. В чем причина,подскажите.

    1. Ищите ошибки на печатной плате.

  14. В архиве с исходником только файл проекта - cufr.prj
    Остальные файлы, такие как
    cufr.с , cufr.asm , cufr.lst , cufr.map
    отсутствуют 🙁

    1. Архив обновлен. Там весь проект

      1. Благодарю!

      2. Есть ли печатная плата к данному проекту?

  15. здравствуйте, собрал часы но там показания на табло 01 01 10 и ни на что не реагирует,, обмен по шине данных с микросхемой 1307 есть 5-6 ноги 1307 на 28-27 как по схеме, на 7 ноге мс 1307 плюс 5 в она идет на 4 ногу атмеги,без микросхемы 1307 показывает 65 65 65 на табло.

  16. разобрался все заработало спасибо, дело было как и выше написанного в резисторе на кнопки управления от минуса питания

  17. получилось как то так

  18. Привет ребята!поделитесь печаткой,и какие фьюзы выставить в Codevision AVR?Спасибо

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