Двоичные часики на atmega8

Двоичные часики на ATmega8

Двоичные часы – это часы показывающие время в двоичном (бинарном) виде.

В двоичной системе счисления используются лишь два числа (0 и 1), в отличии от десятичной, которой принято пользоваться людьми.

Так, например, время 11:33.06 в двоичной системе счисления будет выглядеть так: 1011 : 100001 : 000110

Индикация времени в данных часах осуществляется светодиодами,

при этом свечение светодиода означает 1, а отсутствие свечения — 0.

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

Вот и у меня идея изготовить подобные часы возникла тогда, когда у моего сына, в школе, появился такой предмет как информатика. Чтобы как-то не навязчиво заинтересовать его данным предметом, а не скучным переводом из одной формы счисления в другую и объяснения принципа представления двоичных чисел я решил изготовить сей девайс.

Так как у меня завалялось около десятка микросхем ATmega8 в DIP-корпусе, её было и решено использовать в этом устройстве.

Принципиальная схема представлена на следующем рисунке:

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

Для питания часов я решил использовать зарядное устройство с USB-разъемом, с напряжением на выходе 5 Вольт.

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

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

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

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

Ну и в заключении расскажу как установить правильное время, все очень просто,

после нажатия кнопки “mode”, светодиоды, отвечающие за показания часов, начнут мигать. Кнопкой “set” необходимо установить нужное время. Последующие нажатия на кнопку “mode” приведут к редактированию показаний минут и далее секунд.

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

Если микроконтроллер новый, то фьюзы можно оставить по умолчанию.

Он тактируется от встроенного RC-генератора на частоте 1МГц.

На всякий случай приведу скрин, как должны быть выставлены фьюзы.

В прилагаемом архиве содержится исходный код в WinAVR, файл прошивки и проект в программе Proteus.

Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

U1
МК AVR 8-битATmega8A-AU1
Q1-Q3
Биполярный транзисторS85503
X1
Кварцевый резонатор32768 Гц1
C1, C3
Конденсатор100 нФ2
C2
Электролитический конденсатор47 мкФ1
R1-R3
Резистор4.7 кОм3
R4
Резистор10 кОм1

Двухканальный термометр, часы на ATmega8, DS18B20, DS1307, LCD1602

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

Предлагаю вашему вниманию простую схему и конструкцию «Двухканальный термометр, часы на ATmega8, DS18B20, DS1307, LCD (ЖК) 1602«.
Конструкция позволяет выводить на двухстрочный символьный индикатор текущее время, дату, месяц, день недели и текущую температуру с двух цифровых датчиков температуры.

Схема двухканального термометра и часов

Конструкция собрана на микроконтроллере ATmega8-16PU, микросхеме часов реального времени DS1307 в DIP корпусе, цифровых датчиках температуры DS18B20, ЖК индикаторе LCD1602


Схема устройства создана в программе «Cadsoft Eagle»
Датчики температуры подключаются к разъемам DS1 и DS2:
— вывод 1 — к выводу GND датчика
— вывод 2 — к выводу DQ датчика
— вывод 3 — к выводу Vcc датчика

Подключение датчиков на схеме не соответствует печатной плате.
Программа подогнана под печатную плату, необходимо подключать:
— 1-й датчик к РВ1 (15-й вывод)
— 2-й датчик к РВ2 (16-й вывод)

Обращаю ваше внимание на подключение выводов порта D микроконтроллера к выводам индикатора:
— PD0 микроконтроллера — к выводу D7 индикатора
— PD1 микроконтроллера — к выводу D6 индикатора
— PD2 микроконтроллера — к выводу D5 индикатора
— PD3 микроконтроллера — к выводу D4 индикатора
Такое подключение выбрано с целью упрощения разводки дорожек на печатной плате

Детали, примененные в конструкции:

В качестве ЖК дисплея применен 2- строчный, 16-символьный LCD дисплей китайского производства с маркировкой «1602А» — негативный, белые символы на темно-синем фоне с белой подсветкой. Также можно использовать любой аналогичный знакосинтезирующий (символьный) двухстрочный, 16-символьный индикатор, с поддержкой кириллицы или без поддержки, поддерживающий систему команд контроллера НD44780 типа:
— STN (FSTN) Negative (blue или black) с подсветкой (такой применен в конструкции) — такие индикаторы работают только с подсветкой
— FSTN Positive, TN Positive, HTN Positive — с подсветкой или без нее
Примененный китайский LCD индикатор не имеет встроенной кириллицы, поэтому, для наглядности вывода дня недели на индикатор в ОЗУ знакогенератора (CGRAM) записаны пользовательские символы — «П», «н», «т», «Ч», «б» и два символа в инверсном виде «Д» и «У».

Печатная плата двухканального термометра и часов

Конструкция собрана на односторонней печатной плате, все примененные детали — «выводные»
Печатная плата устройства создана в программе «SprintLayout».
На плате имеется три перемычки — П1, П2, П3
Кварцевый резонатор установлен на плате «лежа», корпус резонатора припаивается перемычкой к контактной площадке на плате под резонатором.

Описание работы двухканального термометра и часов

Основой конструкции «Двухканальный термометр, часы» является микроконтроллер ATmega8 в DIP корпусе с тактовой частотой 1 МГц от встроенного генератора с внутренней RC цепочкой. Установка FUSE-битов — по умолчанию, ничего менять не надо.
Для определения текущего времени применена микросхема часов реального времени DS1307, которая отсчитывает секунды, минуты, часы, дату месяца, месяц, день недели и год с компенсацией високосного года действительной до 2100 года.
На индикацию выводятся только:
— текущее время — часы и минуту
— дата месяца
— месяц
— день недели
В качестве датчиков температуры применены два цифровых датчика температуры DS18В20, которые позволяют измерить текущую температуру в пределах от -45 градуов до +125 градусов Цельсия с точностью 0,5 градуса.
На индикацию выводится текущая температура каждого датчика с разрядностью 0,1 °С
Перед значением каждой температуры выводятся символы «Д» и «У» в инверсном виде:
— «Д» — температура в доме
— «У» — температура на улице

Работа программы организована по прерываниям по переполнению от таймера Т1 возникающие каждые 4 секунды. Обновление текущего времени происходит каждые 4 секунды, обновление текущих температур с датчиков — поочередно, через каждые 4 секунды.

Питание устройства осуществляется от стабилизированного источника питания напряжением 5 Вольт, можно применить зарядное устройство от сотового телефона, или автономный источник питания — АКБ. Потребляемый ток зависит от яркости подсветки (номинала резистора R3) и в конкретном случае составляет 12 мА.

Управление устройством осуществляется двумя кнопками:
— S1 — «Выбор»
— S2 — «Установка»

Читайте также  Как завести проводку в деревянный дом?

При первом включение устройства (или при каждом включении при отсутствии резервного источника питания DS1307 — BAT1) устройство переходит в режим «Полной» установки. При этом необходимо выставить текущие год, месяц, дату, день недели и текущее время — часы-минуты. В этом режиме перевод пояснительной информации на русский не проводился (в отличии от индикации дня недели), все пояснения выводятся на английском (полная установка производится крайне редко, разобраться в ней не трудно):

Установка года «Year»:
Мигающий курсор в виде белого прямоугольника указывает где и что нужно вводить:
— кнопкой «Установка» — выставляем десятки лет
— кнопкой «Выбор» — переходим к установке единиц года
— кнопкой «Установка» — выставляем значение единиц года
— кнопкой «Выбор» — переходим к следующей установке

Установка месяца «Month»
— аналогично установке года

Установка дня месяца «Data»:
— аналогично установке года

Установка дня недели «Week»:
— аналогично установке года, при этом — 1- Пн, 2 — Вт, 3 — Ср, 4 — Чт, 5 — Пт, 6 — Сб, 7 — Вс

Установка текущего времени «Hour_Min»
Для примера, текущее время 17 часов 39 минут:
— кнопкой «Установка» — выставляем десятки часов — 1
— кнопкой «Выбор» — переходим к установке единиц часов
— кнопкой «Установка» — выставляем единицы часов — 7
— кнопкой «Выбор» — переходим к установке десятков минут — 4
— кнопкой «Установка» — выставляем единицы минут -0
— секунды уже обозначены на дисплеи как «00»
— ровно в 17 часов 40 минут нажимаем кнопку «Выбор» и текущее время 17 часов 40 минут 00 секунд запишется в DS1307

В рабочем режиме кнопки «Выбор» и «Установка» позволяют перейти в режимы:
кнопка «Выбор» — коррекция времени (при этом производится установка только текущего времени «Hour_Min» как описано выше)
кнопка «Установка» — «Полная» установка
Для входа в нужный режим необходимо нажать соответствующую кнопку и держать ее до тех пор пока экран дисплея не очистится. После очистки дисплея отпускаем кнопку и через секунду переходим в выбранный режим.

Конструкция была разработана и тестирована на макетной плате, в «железе» не собиралась.
Поступило много комментариев на неработоспособность устройства, несоответствие печатной платы схеме.
Решено было воссоздать устройство в «железе».
Ниже представлены фотографии собранного устройства по схеме, печатной плате и прошивке опубликованных на этой странице.
Устройство заработало сразу, проблем не наблюдается.
Печатная плата выполнена методом ЛУТ. Из-за ошибки установки микросхем на плате, их пришлось выпаивать и переставлять (и на старуху бывает проруха), что привело к повреждению печатных проводников и, как результат, — внешний вид не очень, перемычка П2 установлена со стороны печатных проводников (не просверлил отверстия), датчик DS1 подсоединен кабелем длиной около 1 метра (так, чтобы он был на высоте около 30 см от пола, датчик DS2 подсоединен кабелем длиной 5 метров и выведен за окно. Разъемы для подключения датчиков взяты от куллеров старых компьютеров.

Была одна проблема — не сразу запустилась RTC DS1307, причина — канифоль между выводами кварца. После промывки платы часы заработали.

Программа устройства в НЕХ файле (10,8 KiB, 2 786 hits)

Программа в Algorithm Builder (27,3 KiB, 2 185 hits)

Схема двухканального термометра, часов в «Cadsoft Eagle» (390,1 KiB, 1 690 hits)

Печатная плата двухканального термометра, часов в «Sprint Layout» (51,7 KiB, 3 379 hits)

Все необходимые детали для сборки «Двухканального термометра, часов на ATmega8, DS18B20, Ds1307», включая запрограммированный микроконтроллер, вы можете заказать в интернет- магазине сайта «МирМК-SHOP»

(47 голосов, оценка: 4,96 из 5)

Часы, будильник, термометр (ATmega8).

Автор: Soir. Опубликовано в Часы

1. Функции.

– часы, формат отображения времени 24-х часовый, часы:минуты.

– цифровая коррекция точности. Возможна ежесуточная коррекция ±25 сек. Установленное значение в 1 час 0 минут 30 сек будет прибавлено/вычтено из текущего времени.

– будильник. В заданное время в течении одной минуты раздаются короткие двойные сигналы. Отключить звук досрочно можно нажатием на любую из кнопок. Когда работа будильника разрешена, при отображении времени в младшем разряде индицируется точка.

– термометр. Диапазон измеряемой температуры -55,0 ÷ 125,0 о С. Если температура выше 99,9 или ниже -9,9 о С десятые доли градуса не отображаются.

– настраиваемая анимация смены показаний.

– использование энергонезависимой памяти микроконтроллера для сохранения настроек при отключении питания.

– если в основном режиме нажать на кнопку PLUS , то на индикаторы выводится время, если нажать на MINUS – температура. При отпускании кнопок возобновляется автоматическая смена показаний.

– автоматическая регулировка яркости индикатора в зависимости от освещенности.

2. Настройка.

2.1. При включении питания часы в основном режиме.

2.2. Нажатием на кнопку MENU производится вход в режим настроек и выбора группы параметров для установки. В пределах группы выбор параметра для установки производится кнопкой SET . По-очереди доступны для установки:

Группа CLOC :

– секунды (обнуляются при нажатии на кнопки PLUS или MINUS );

– величина коррекции. В старшем разряде символ «с«.

Группа ALAr :

– активация будильника. На индикаторе » On «, если работа будильника разрешена, » OFF «, если запрещена;

– минуты срабатывания будильника;

– часы срабатывания будильника.

Группа diSP :

– время индикации текущего времени. В старших разрядах символы » tc «. Диапазон установки 0÷99 сек. Если установлен 0, то время отображаться не будет;

– время индикации температуры. В старших разрядах символы » tt «. Диапазон установки 0÷99 сек. Если установлен 0, то температура отображаться не будет;

– выбор эффекта анимации. В старших разрядах символы » EF «. Если установлен 0, смена информации будет проводиться без эффектов , если выбран автоматический режим (символ «А«), то будет производиться поочередная смена эффектов. Если выбран режим r , то смена эффектов будет производиться случайным образом.

– выбор скорости анимации. В старшем разряде символ » P «. Диапазон установки 0÷99. Одна единица соответствует примерно 2 мсек, чем выше величина, тем медленнее идет анимация.

Группа LiGH :

– включение автоматического управления яркостью индикатора. В старшим разряде символ » A «, в младших » On «, если автоматическое регулирование разрешено, » OF «, если яркость устанавливается вручную;

– минимальный порог яркости для автоматического режима. В старших разрядах символы » L _ «.

– максимальный порог яркости для автоматического режима. В старших разрядах символы » L ¯ «.

– уровень яркости в ручном режиме. В старших разрядах символы » L «.

2.3. Устанавливаемый параметр мигает.

2.4. Удержанием кнопок PLUS / MINUS производится ускоренная установка параметра.

3. Примечания.

1. Для минимального и максимального порогов яркости диапазон установки 0 ÷ 99, но программой вводятся ограничения: минимальный не может быть больше либо равным максимальному и наоборот.

2. При установке параметров яркости информация на индикаторе отображается с выбранной величиной яркости.

3.Необходимо соизмерять скорость анимации и время отображения информации. Если выбрана медленная анимация и малое время отображения, то может оказаться, что информация не успевает полностью обновиться до очередной смены.

4. Особенности схемы.

1. Если предполагается использовать функцию автоматической регулировки яркости индикатора, то вместо RV 1 устанавливается фоторезистор. А значение резистора R 17 следует подобрать для получения нужной чувствительности системы.

2. Датчик температуры может работать и по 2-х проводной схеме подключения. Если планируется измерять температуру в помещении, где установлены часы, то датчик все равно следует выносить за корпус часов.

3. Пищалка BUZ 1 должна быть со встроенным генератором. В зависимости от тока потребления возможно придется установить усилитель (транзисторный ключ).

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

Читайте также  Замена проводки в частном доме своими руками

5. При прошивке МК следует установить FUSE для работы от внутреннего тактового генератора частотой 8 МГц. Пример установки FUSE для программы PONYPROG на скриншоте.

6. В проекте (это по сути уже схема) не показаны выводы питания микросхем.

7. Файл screen.png является скриншотом проекта на тот случай, если Proteus не установлен.

Для обсуждения материалов статьи создана тема.

Видео работы программы, о т пользователя wolf2000.

Сообщества › Электронные Поделки › Блог › Часы-термометр-будильник на Atmega8 ИВ-11 (разработка)

У давно хотел собрать что то оригинальное. И нашёл очень интересный проект Часы, будильник, термометр (ATmega8) на 4-х ИВ-12. И всё загорелся идеей собрать подобные часики в подарок любимой тёщи на Новый Год.
Нарисовал свою схему.

Все необходимые детали уже есть. Осталось только сделать трансформатор.

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

Решил немного доработать схему.
В качестве разделительной точки у меня будет индикатор ИВ-3А будет мигать верхнее колечко (сегменты ABFG). А если задействован будильник нам будет показывать нижний штрих (сегмент D). И в качестве нижних ключей думаю применить туже микросхему ULN2003.

Вот последний вариант схемы.

Плату уже начал разводить, под свои компоненты и свой корпус.

Конечный проект выложу как только соберу часики.

Метки: ив-11, atmega8, часы

Комментарии 51

Накал индикаторов нужно правильно организовать. Обмотку накала сделать с отводом от середины и подвесить этот отвод через стабилитрон 4,7…7,5 В к земле. Тогда засветок соседних сегментов не будет.

Правая схема (вариант II, с ключами нижнего уровня) — ваш вариант запитки:

спасибо. Трансформатор надо перемотать, хорошо что ещё не собрал.

Накал индикаторов нужно правильно организовать. Обмотку накала сделать с отводом от середины и подвесить этот отвод через стабилитрон 4,7…7,5 В к земле. Тогда засветок соседних сегментов не будет.

Правая схема (вариант II, с ключами нижнего уровня) — ваш вариант запитки:

а можно не перематовать, просто тот что на землю провод подключить через стабилитрон?

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

Можно поставить на выводы накала делитель напряжения из двух одинаковых резисторов (100…220 Ом) и их средний вывод посадить на стабилитрон, либо просто на шину +5 В, что равнозначно.

Кстати, изменяя напряжение на этой (средней точке), можно очень просто регулировать яркость свечения сегментов индикатора. При низком напряжении яркость будет максимальной. При увеличении напряжения яркость будет падать. Можно, например, среднюю точку подсоединять либо к +5 В шине (ярко), либо к шине +12 В (тускло).

А можно даже собрать на фоторезисторе автоматическую регулировку яркости, чтобы ночью яркость свечения снижалась, а при ярком внешнем виде — повышалась до максимума…

(В примере ниже «землёй» индикатора является напряжение -20,8 В, поэтому электролит запаян обратной полярностью.)

Спасибо за конструктивный ответ. Я понял нужно создать запирающее напряжение. Чтобы не переделывать плату и не перематывать трансформатор. Подключу стабилитрон через делитель на землю как в вашем прошлом примере. Я полагал что при нижнем запирающее напряжение не нужно.
Вот про это здесь есть radiokot.ru/circuit/digital/home/215/

Понял вашу идею по регулировке свечения индикаторов. Например как тут.

Да, всё верно понимаете. Теперь, думаю, и без меня прекрасно справитесь! Успехов!

вот нашёл ещё одну статью в ней несколько вариантов питания ламп. electro-tehnyk.narod.ru/docs/BISMC.html

Ага, всё собрано в одном месте! Но суть везде одинаковая — поднять напряжение на нити накала (катода), выше напряжения запирания сеток и анодов (превратить его в отрицательное). Это вы поняли сами.

Вот про эту схему управления яркостью я говорил выше electro-tehnyk.narod.ru/d…/BISMC.files/image015.jpg

Теперь мне сё понятно. спасибо.

Ага, всё собрано в одном месте! Но суть везде одинаковая — поднять напряжение на нити накала (катода), выше напряжения запирания сеток и анодов (превратить его в отрицательное). Это вы поняли сами.

Вот про эту схему управления яркостью я говорил выше electro-tehnyk.narod.ru/d…/BISMC.files/image015.jpg

Стабилитрон Д814 подойдёт?

С буквой А только:
Д814А — разброс напряжения стабилизации: 7… 8,5 В при Iст 5 мА

Я бы предусмотрел на ZQ1 корректировочные конденсаторы на массу от каждой пластины. Точность хода — важный параметр в часах. Вы сможете подобрать кварц с частотой в плюс — например 32770 Гц, и подбором пикофарадных конденсаторов скорректировать ход с +30-40 сек. до + 2-3 сек. в месяц. А подобрать кварц, точно генерирующий 32768 тактов — нереально) Подумайте, пока печатку не изготовили.

Я собрал на ds1307 четверо часов, кварцев перебрал штук двадцать. И новые из разных магазинов, и новые с китайских модулей и старые из всяких разных часов, и с разных (новых и старых) материнских плат снимал. И один хрен часы убегали на 5-40 секунд за сутки. Я пришел к выводу, что сами микрухи гуано редкое. И одни часы собрал на ds3231, уже почти год ходят секунда в секунду!

Я тоже не одну козу е.ал в этой жизни, но все же любые микрухи, будь то к176ие12, ие18 или еще древнее на базе гамна мамонтенка — тупо считают и делят такты, подаваемые внешним частотозадающим элементом, т.е. заданную частоту кварцевого резонатора. И если этих тактов у резонатора 32800 — часы спешат, а если 32700 — отстают. Вина кварца. Их добротность зависит от многих параметров, в т.ч и от температуры, есть резонаторы разных классов точности и диапазонов.Это легко проверить на примитивном стенде для кварцевых резонаторов, собирается такой на коленке за 20 минут, подключается к осциллографу или частотомеру. Это справедливо и для RTC на DS3231. Но частоту можно корректировать. Частота китайского кварца 32768 может иметь погрешность в +/- несколько Герц. Положительный уход можно откорректировать конденсаторами, отрицательный — нет.
Не зная этой простой истины, вы можете еще 150 часов собрать с тем же результатом, угадав случайно точный кварц из кучи в 10 случаев из 100, но не понимая почему так произошло. Это понятно хоть?
Вы имеете что то возразить или будете дальше впечатлять меня необыкновенным опытом сборки китайских часов?

Максим, отличный девайс будет! Только если прошивку будете писать сами то лучше возьмите DS3231 вместо DS1307, она в разы стабильнее(сам с этим сталкивался) и из нее можно данные температуры считывать. И термо датчик лучше выбрать какой нибудь другой, лучше с i2c шиной. Просто 1-ware очень медленный, с его обработкой могут выйти накладки в основной программе. Но это все актуально, только при условии, что прошивку будете писать с нуля сами.

Простые бинарные часы на микроконтроллере. Схема

Возможно, кто-то еще помнит, как выглядели панели управления первых электронно-вычислительных машин (ЭВМ). Сегодня их можно увидеть только на архивных фотографиях. Длинные ряды лампочек, которые мелькали на первый взгляд хаотично – завораживали энтузиастов электроники тех лет.

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

Принципиальная схема простых бинарных часов показана на рисунке 1. Схема построена на базе микроконтроллера ATmega48. В схеме часов нет внешнего модуля реального времени (RTC), что в свою очередь несколько снижает стоимость устройства.

При возможном сбое питания от внешнего источника, отсчет времени поддерживается встроенной батарей типа CR2032, при этом светодиоды отключаются. Для обнаружения питающего напряжения от внешнего блока питания используется схема с транзистором VT1 (BC847).

Если на клеммах разъема питания есть напряжение, то оно проходит через диод D1 в результате чего транзистор входит в состояние насыщения, а на вход PC0 микроконтроллера подается логический ноль, который запускает работу светодиодов.

Читайте также  Знакомство с платой micropython

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

Просмотр осуществляется только в формате 24 часа. Для отображения количества минут и секунд необходимо 6 светодиодов, а для часов 5 светодиодов.

Микроконтроллер ATmega48V-10AU способен работать при пониженном питании вплоть до 1,8В, что является большим преимуществом. Кроме того, ATmega48V-10AU потребляет меньший ток. Частота тактового сигнала стабилизируется кварцевым резонатором на 4 МГц, который одновременно является эталоном для отсчета времени.

Установка текущего времени (часы и минуты) осуществляется с помощью кнопок SW2 и SW1 соответственно. Счетчик секунд обнуляется при нажатии на любую из кнопок.

Стоит отметить, что эти кнопки неактивны при работе от резервной батареи, чтобы предотвратить возможность непреднамеренного изменения времени. Часы собраны на односторонней печатной плате размером 103мм×67мм.

При программировании микроконтроллера, необходимо установить работу микроконтроллера от внешнего кварцевого резонатора 4 МГц и отключить деление тактовой частоты на 8 (этот бит называется CKDIV8).

После правильной сборки часы начинают работать сразу и должны показать 00:00:00.

Питание схемы осуществляется от источника питания с напряжением +5 В. Резервное питание – батарея типа CR2032 не является обязательной, она только поддерживает отсчет времени после пропадания питания от сети.

Потребление тока от батареи составляет около 1,5 мА. При емкости аккумулятора порядка 200 мАч, ее должно хватить на 5 и более дней работы микроконтроллера, что является достаточным в типичных ситуациях.

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

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

Пример чтения времени показан на рисунке ниже.

Верхний ряд — это часы, средний минуты и нижний секунды.

Текущее время 21:14:59

Часы = 16 + 4 + 1 = 21

Минуты = 8 + 4 + 2 = 14

Секунды = 32 + 16 + 8 + 2 + 1 = 59

Скачать рисунок печатной платы и прошивку (65,7 KiB, скачано: 568)

Многофункциональные цифровые часы на микроконтроллере Attmega8. Схема и описание

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

Дисплей построен на шести 7-сегментных светодиодных индикаторов с регулировкой яркости. Часы также оснащены резервным питанием от батарей.

Описание конструкции микроконтроллерных часов

Как уже было сказано выше, часы имеют шестизначный дисплей, состоящий из двух трехзначных дисплеев T-5631BUY-11, работающий в мультиплексном режиме. Аноды индикаторов сгруппированы по разрядам и переключаются с помощью транзисторов Т1…Т6.

Катоды сгруппированы в сегменты и питаются непосредственно от микроконтроллера IO1 Attmega8. Частота мультиплексирования составляет 100Гц.

Часы контролируется низкочастотным кварцевым резонатором X1 с частотой 32768 Гц. В результате активации бита CKOPT, разрешающего использование внутренних конденсаторов 36пф для кварца, отпадает необходимость в использовании внешних конденсаторов.

В случае возникновении проблем с запуском генератора, можно попробовать подключить 2 конденсатора по 22пф. Для еще большей точности часов можно вообще отключить внутренние конденсаторы (сбросить бит СKOPT) и оставить только внешние.

Пъезоизлучатель REP1 издает звуковой сигнал будильника и сигнализирует о завершении работы таймера. Во время звукового сигнала на выводе 16 (порт PB2) появляется лог.1. Этот сигнал можно использовать для управления какой-либо нагрузкой.

Управление часами производится тремя кнопками — минуты, часы и режим. Кнопки подключены через резисторы, которые защищают порты микроконтроллер Attmega8. Схема питается от источника 5 вольт (7805). Потребление тока в основном зависит от числа активных индикаторов, а так же от степени настройки яркости.

При максимальной яркости ток потребления доходит до 60 мА. Часы снабжены резервной батареей питания. Во время работы от батареи, часы переходят в экономичный режим, при котором дисплей выключен. Так же в этом режиме не активны и кнопки за исключением случая, когда необходимо отключить звуковой сигнал.

Напряжение резервного питания от 3 до 4,5 В. Это может быть одна батарея на 3В, три NiMH или NiCd по 1,2 В или один аккумулятор Li-Pol или Li-Ion (от 3,6 до 3,7 В). Ток потребления от 3В батареи составляет всего лишь 5…12мA. Время автономной работы часов в экономичном режиме от батареи 3В типа CR2032 со стандартной емкостью 200mAh теоретически должно хватить примерно на 2,5 — 3 лет.

Программное обеспечения для микроконтроллера находится в конце статьи. Биты конфигурации необходимо выставить следующим образом:

Управление часами

Часы управляются с помощью TL1-минута, час-TL2 и TL3-режим. Кнопки часы и минуты используются в режиме часов для назначения часов и минут. В других режимах они имеют различные функции. Кнопка режима переключает между различными режимами, которых в общей сложности 8:

Режим 1-й — Часы

В этом режиме на дисплее отображается текущее время в формате «ЧЧ.ММ.СС». Кнопка часов используется для установки часов. Кнопка минут для установки минут. При ее нажатии происходит сброс секунд.

Режим 2-й — Включение перехода на летнее время и установки года

Здесь Вы можете включать и выключать автоматический переход между летним и зимним временем и установить год. Данные следующего формата «AC ‘RR» (АС – автоматическое время, пробел, последние две цифры года).

Режим 3-й — Таймер обратного отсчета

Это режим позволяет организовать обратный отсчет от заданного значения до нуля. По истечении этого времени раздастся звуковой сигнал и светится светодиод LED1. Звуковой сигнал может быть остановлен нажатием кнопки Режим. Данные следующего формата «ЧЧ.ММ.СС». Максимально возможное значение составляет 99.59.59 (почти 100 часов).

Режим 4-й – Комбинированный вывод информации

В этом режиме, попеременно показывается:

  1. текущее время в формате «ЧЧ.ММ.СС»
  2. дата в формате «AA.DD.MM.»

Каждый формат отображается в течение 1 секунды. В этом режиме используются кнопки Часов и Минут, для регулировки яркости дисплея (Часы-, Минуты+). Яркость изменяется логарифмически в 6 этапов: 1/1, 1/2, 1/4, 1/8, 1/16 и 1/32-й. По умолчанию установлено 1/2

Режим 5-й — Установка дня недели и режим работы будильника

В этом режиме можно установить день недели — с понедельника по воскресенье (отображается как пн, вт, ср, чт, пт, сб, вс), включать будильник и выбирать его режим работы. Данные следующего формата «AA AL._» (день недели, пробел, AL., Настройка будильника).

Кнопка часов устанавливает день недели. Кнопка минут используется для включения/выключения звукового сигнала будильника и выбора режима его работы: «AL._» = будильник не активный, «AL.1″ = будильник сигналит 1 раз (затем автоматически переходит в положение»AL._»), «AL.5» = сигнал будильника только в будние дни (пн-пт, кроме сб-вс), «AL.7» = будильник звонит каждый день

Режим 6-й – Установка дня недели и даты

Кнопка часов позволяет установить день месяца. Кнопка минут позволяет установить месяц.

Режим 7-й — Секундомер

Секундомер позволяет измерять время с точностью 0,1 сек. Максимальное время измерения составляет 9.59.59.9 (почти 10 часов). Данные следующего формата «H.MM.SS.X». Кнопка минут используется для запуска и остановки секундомера. Кнопка часов используется для сброса.

Режим 8-й — Будильник

Этот режим используется для отображения и установить время будильника (ALARM). Данные следующего формата «HH.MM.AL». Кнопка Минуты устанавливает минуту будильника, кнопку Часы устанавливает час будильника.

Ниже приведена схема аналогичных часов, имеющие индикатор с общим катодом

Скачать прошивку с общим анодом (37,7 KiB, скачано: 1 333)

Скачать прошивку с общим катодом (29,9 KiB, скачано: 737)