Контакты

AVR. Учебный Курс

Предлагаю для самостоятельной сборки две очень простые схемы, а именно часы на микроконтроллере PIC и AVR. Основа одной схемы микроконтроллер AVR Attiny2313, а другой PIC16F628A

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

Рассмотрим подробней эту простую схему: Питание можно подавать как от трех пальчиковых батареек, так и от


Микроконтроллер Attiny2313 тактируется кварцем на 16 МГц. В качестве счетчика времени, в внутренней схеме микроконтроллера используется 16 битный таймер с делителем на 256. Как только внутренний счетчик досчитает до 625, осуществится прерывание. Поэтому у нас будут происходить прерывания 100 раз в секунду.

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

В соответствии с этим принципом, создаем значение текущего времени записанное в глобальных переменных. Теперь нам необходимо визуально отобразить эти данные. Так как микроконтроллер имеет ограниченное число портов, то воспользуемся такой особенностью как инерционность цифрового сегментного индикатора sa15-11gwa. Катоды его индикаторов соединены параллельно, а аноды имеют раздельное управление, что позволяет в любой момент времени вывести цифру на любой из четырех индикаторов.

Быстро переключая порт микроконтроллера, к которому подсоединены все катоды и быстро коммутируя аноды, создается иллюзия отображения всех четырех цифр в сегментном индикаторе, хотя фактически работает только один из сегментов. Если текущее время 11:57, то сначала выводим цифру один на первый индикатор часов, через 1 мс выводим цифру 1 на второй индикатор еще через 1 мс отображаем 5 на 3 индикатор, спустя 1 мс отображаем 7 на 4 индикаторе и так далее циклически, обновляя каждый индикатор через 1 мс.

Состояние кнопок управления часами опрашиваются по завершению каждого цикла отображения около 40 раз в секунду.

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

Эта конструкция хоть и на другом типе микроконтроллера, но не менее сложная чем предыдущая схема.


Алгоритм работы прошивки также простой в архиве имеются очень подробные комментарии по коду программы. Два тумблера кн1 и кн2 предназначены для коррекции времени - часов и минут. Точность часов зависит от частоты используемого кварца.

Конструктивно часы выполнены на двух печатных платах, располагающихся рядом под углом 90 градусов. На первой плате расположен индикатор, а вся остальная электроника на второй. Резервное питание в роли которых используется три батарейки размещенные в держателе из старой китайской зажигалки со светодиодом. Для питания от сети переменного тока подойдет любой на 5В и током 150мА.


В архиве который вы можете скачать по зеленой ссылке находится разводка обоих печатных плат в программе Sprint Layout и прошивка на микроконтроллер PIC с исходным кодом программы под MP_LAB IDE, с подробными комментариями.

И саму программу, можно также найти и у нас

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


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

При первом включении на дисплее возникает рекламная заставка в течении одной секунды. Потом осуществляется отображение времени. Нажатие на кнопку SET_TIME переключает индикатор по кругу из основного режима часов:

Абсолютно, во всех ячейках удержанием кнопок PLUS/MINUS осуществляется ускоренная установка. Если настройки изменялись пользователем, то через 10 секунд новые значения сохраняться в энергонезависимой память микроконтроллера и будут считываться. при прошивки МК выставляем следующим образом:


Внешнее исполнение устройства, вы можете оценить по фотографиям ниже, прощивка и дополнительные файлы к конструкции можно скачать по сылке чуть выше.


В прошивки будильника реализованы графики смен: 4/5 (четыре на пятый) – 4 дня по 1 сменам, 1 выходной, 4 дня по 2 сменам, 1 выходной, 4 дня по ночным, 1 выходной; – день, ночь, 2 выходных; По будням – Пн-Пт - рабочие дни, Сб-Вс - Выходной; (Праздничные дни не учитываются); Ежедневно.

Пользователь сам выбирает тип граффика будильника и задает любое время срабатывания. В вариантах 4/5 и день, ночь, 2 выходных – необходимо дополнительно выбрать текущую смену.

Кроме того в прошивке МК реализованы следующие функции: Переход на летний-зимний период; Корректировка времени; Ускоряющийся сигнал будильника; Отображение нуля в разряде часов и в разряде даты

Схема часов построена на базе часовой микросхемы DS1307 и микроконтроллера MEGA8. Схема (помещена в архив с прошивкой МК и чертежами печатных плат) рассчитана на применение семисегментных цифровых индикаторов с общим анодом на напряжение 5В. (ВНИМАНИЕ! На схеме для упрощения не нарисованы балластные резисторы. Их требуется устанавить на каждый сегмент индикаторов. Всего 112 шт. Номинал рассчитывается согласно документации. В я использовал сегментные индикаторы типа fys15011 и fyd-5622. Если примените более мощные, то скорей всего без дополнительных транзисторных ключей не обойтись.

Чертеж печатной платы разрабатывалась под уже имеющуюся коробку от старых сломанных часов. На разъём Alarm (будильник) можно подсоединить маломощную нагрузку, допустим музыкальную открытку, а джампером JP1 – отсоединяем внутренний биппер. Микроконтроллер можно прошиватьь сразу на плате, что существенно облегчает настройку в случае модификации конструкции.

Настройка часов
Для этого необходимо войти в режим задания параметров:
Параметр-Значение- Сохранять в памяти
P.01 - ЧАСЫ [-]
P.02 - МИНУТЫ [-]
P.03 - ДЕНЬ [-]
P.04 - МЕСЯЦ [-]
P.05 - ГОД [-]
Р.06 - Тип будильника [+] (1-4/5; 2-5/8; 3-ЖД график; 4-ежедневно)
P.07 - СМЕНА [+]
P.08 - Буд.1.ЧЧ [+]
P.09 - Буд.1.ММ [+]
P.10 - Буд.2.ЧЧ [+]
P.11 - Буд.2.ММ [+]
P.12 - Буд.3.ЧЧ [+]
P.13 - Буд.3.ММ [+]
P.14 - Корректировка (Д.Ч) [+]
P.15 - Летний/зимний период [+]
P.16 - Ускоряющийся бипер [+]
P.17 - Отображать незначащий ноль в разряде часов [+]
P.18 - Отображать незначащий ноль в разряде даты [+]

Настройка Будильника: Кнопкой Вкл/Вкл Буд. - осуществляется Вкл/Вкл, при этом:При типе будильника 1: Буд.1 - 1 смена; Буд.2 - смена; Буд.3 - 3 смена;
График смен:1,2,3,4 - первая смена; 5 - выходной; 6,7,8,9 - вторая смена; 10 - выходной; 11,12,13,14 - 3 смена; 15,16 - выходной; Затем дни повторяются.
При первом типе будильника 2: Буд.1 - задает время сигнала; Буд.2, Буд.3 - не срабатывает; График смен: По будням.
При третьем типе будильника: Буд.1 - устанавливается время день; Буд.2 - задает время ночь; Буд.3 - не срабатывает;
График смен: – день, ночь, 2 выходных;. При типе будильника 4 Буд.1, Буд.2, Буд.3- задается время; Если планируете использовать только один будильник - задайте время трех одинаковым.
При графике смен: Ежедневно. Если нажать кнопки Выкл.Буд. в режиме задания параметров - произойдет выход из настроек без сохранения.
Корректировка: При корректировки применяется следующий способ: +/- Ч.Д, где: Ч - количество секунд корректируемое в час (max 9). Д - секунды корректируемое в день. ВНИМАНИЕ! При выключенном питании корректировка не осуществляется. При включении - проверьте правильность времени.

Эта схема была опубликована еще в 2008 году, на сайте http://radiokot.ru/circuit/digital/home/33/ , и не смотря на явные схемотехнические ошибки - схема работает, многие за это время ее повторили, там же на сайте есть большая тема форума, где обсуждается это устройство. Кроме авторскйо прошивки, на форуме есть еще наборы прошивок. В том числе и для вариантов схемы при использовании различных индикаторов, как с собщим катодом, так и с общим анодом. Архив с проверенными прошивками и их исходными текстами в конце страницы.

Я вспомнил об этой схеме, когда мне потребовались простые "первичные часы". Схема была повторена в точности, с единственным изменением - вместо индикатора установлен разъем, к которому будет подключаться силовая часть "больших часов". Для того, чтобы убедиться в том, что часы работают - подключен первый, попавшийся под руку индикатор: XYLNH 420401B-0 - понятия не имею что эта надпись на корпусе означает, но индикатор по распиновке полностью совпадает с рекомендуемым авторм индикатором CC56-12SRWA, только синего свечения.

Управление часами очень простое: Кнопкой S2 устанавливают минуты, а кнопкой S3 - часы. Кнопка сброс (S1), позволяет установить время на полночь, иногда бывает полезно, хотя ее можно не устанавливать. Точка, разделяющая часы и минуты, моргает с частотой 1,25 Гц, то есть 0,4 секунды горит, 0,4 сек. нет.

В целом - схема работает. Но, если предполагается использовать ее так как она есть, то я бы все-таки посоветовал увеличил сопротивление резисторов R4-R11 до, хотя бы 330 Ом, и поставил бы транзисторы в цепь управления катодами. ATtini2313 процессор конечно живучий, но думаю не следует его мучать в таком режиме.

И пару слов о программировании МК. Я использовал программатор Программатор AVR ISP mkII с программой AVRDUDE_PROG 3.2

Данная статья описывает конструкцию цифровых часов на микроконтроллере 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». Кнопка Минуты устанавливает минуту будильника, кнопку Часы устанавливает час будильника.

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

(скачено: 812)

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

Для создания данных часов нам понадобятся:

  • Кварцевый резонатор на 16 МГц – 1 шт;
  • Микроконтроллер Attiny2313 -1 шт;
  • Конденсатор от 22 пф до 27 пф — 2 шт;
  • Конденсатор 220 н — 1 шт;
  • Стабилизатор 7805 – 1 шт;
  • Транзистор – 4 шт;
  • Индикатор SA15-11GWA — 4 шт (можно любой другой с общим анодом);
  • Кнопка – 2 шт;
  • Резистор 100 Ом – 8 шт;
  • Резистор 200 Ом – 4шт;
  • Резистор 10 кОм – 1 шт.
  • Питание осуществляется от простого .

Описание работы простых часов на Attiny2313

Тактируется кварцевым резонатором с рабочей частотой 16 МГц. В качестве счетчика времени, в схеме микроконтроллера Attiny2313 запущен 16 битный таймер с предделителем 256, сконфигурированный на создание прерывания по достижении счетчиком значения 625. Следовательно, получилось прерывания 100 раз в секунду.

Временной интервал находится в глобальных переменных, и при каждом прерывании необходимо увеличить значение миллисекунд на 1. В том случае если число миллисекунд доходит до 100, то необходимо увеличить на 1 величину секунд, а величину миллисекунд сбросить. И далее в той же последовательности до десятков часов, которые сбрасываются по достижении 24 без прибавления следующего разряда. Часы на микроконтроллере Attiny2313 максимально простые, поэтому они не отображают ни дату, ни переход на зимнее/летнее время и т.д.

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

Быстро переключая порт B микроконтроллера, к которому подключены катоды и быстро переключая аноды, можем организовать видимость, что отображаются все 4 цифры, несмотря на то, что единовременно работает всего лишь одна. Другими словами, если текущее время 10:43, то выводим цифру 1 на первый индикатор часов, через небольшой интервал времени (порядка 1 мс) выводим цифру 0 на второй индикатор, через 1 мс отображаем 4 на 3 индикатор, спустя 1 мс отображаем 3 на 4 индикатор и снова по кругу.

Недавно спаял схему электронных часов с будильником, выполненных на популярном среди радиолюбителей . В них используется светодиодный индикатор для отображения времени. Мне надоели всевозможные ЖКИ и хочется иметь возможность видеть время из любой точки комнаты в том числе в темноте, а не только прямо с хорошим освещением. Схема содержит минимум деталей и имеет отличную повторяемость.

Схема электронных часов на микроконтроллере

Микроконтроллер является единственной микросхемой, используемой в данном устройстве. Для задания тактовой частоты используется кварцевый резонатор на 4 МГц. Для отображения времени использованы индикаторы красного цвета с общим анодом, каждый индикатор состоит из двух цифр с десятичными точками. Можно применить любые индикаторы с общим анодом, лишь бы каждая цифра имела собственный анод. Чтоб электронные часы были хорошо видны в темноте и с большой дистанции - старайтесь выбрать АЛС-ки чем покрупнее.

Индикация в часах осуществляется динамически. В данный конкретный момент времени отображается лишь одна цифра, что позволяет значительно снизить потребление тока. Аноды каждой цифры управляются микроконтроллером PIC16F628. Сегменты всех четырех цифр соединены вместе и через токоограничивающие резисторы R1 … R8 подключены к выводам порта МК. Поскольку засвечивание индикатора происходит очень быстро, мерцание цифр становится незаметным.

Для настройки минут, часов и будильника - используются кнопки без фиксации. В качестве выхода для сигнала будильника используется вывод 10, а в качестве усилителя - каскад на транзисторах VT1,2. Звукоизлучателем является пьезоэлемент типа ЗП. Для улучшения громкости вместо него можно поставить небольшой динамик. Питаются часы от стабилизированного источника напряжением 5 вольт. В часах реализовано 9 режимов индикации. Переход по режимам осуществляется кнопками "+" и "-". Перед выводом на индикацию самих показаний, на индикаторы выводится короткая подсказка названия режима. Длительность вывода подсказки примерно секунда.

Кнопкой "Коррекция " часы переводятся в режим настроек. При этом кратковременная подсказка выводится на пол секунды, после чего корректируемое значение начинает мигать. Коррекция показаний осуществляется кнопками "+" и "-". При длительном нажатии на кнопку, включается режим автоповтора, с заданной частотой. Все значения, кроме часов, минут и секунд, записываются в память и восстанавливаются после выключения питания. Если в течение нескольких секунд ни одна из кнопок не нажата, то электронные часы переходят в режим отображения времени. Нажатием на кнопку "Вкл/Выкл " включается или выключается будильник, это действие подтверждается коротким звуком. При включенном будильнике светится точка в младшем разряде индикатора. Вот прошивка и рисунок платы часов.

Понравилась статья? Поделитесь ей