Бинарные часы на atmega32

Бинарные часы на atmega32

Опубликовано 22 Июль 2015. Размещено в Устройства на AVR

Рейтинг:

 

 / 1

Не хорошо Превосходно 

Началось все с того что захотелось сделать какое-нибудь всецело законченное устройство на микроконтроллере AVR. Выбор пал на двоичные часы, т.к. они несложны в изготовлении и достаточно эффектно смотрятся. И вдобавок по причине того, что мне постоянно нравился плазмоид двоичных часов из KDE что выглядит вот так:

Что такое двоичные часы?

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

Двоичные часы бывают разнообразные (как в неспециализированном-то и простые часы) — с расположением индикаторов и разным количеством, с секундами либо без, с 24-х либо 12-и часовым форматом времени и т.д. Я решил остановиться на варианте максимально похожем на упомянутый выше плазмоид из KDE:

Часы складываются из шести вертикальных колонок — две колонки на часы, две на 60 секунд, и две на секунды (слева на право). Любая колонка по сути является одну цифру (т.е. по две цифры на часы, секунды и минуты).

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

Несложнее всего осознать какое время показывают часы разбирая циферблат слева на право, снизу вверх. Запишем значение бинарного числа представленного самым левым столбцом часов изображенных на картине выше (условившись что горящий индикатор обозначает единицу, а потухший — ноль): 0010 в бинарной совокупности счисления это 2 — в десятичной. Подобным образом запишем значение второго столбца: 0001 в бинарной совокупности счисления (как и в десятичной), либо легко единица. Другими словами на часах 21 час.

Совершенно верно так же возможно прочесть что часы показывают 35 секунд и 28 минут. Мало практики и просматривать время с двоичных часов будет получаться практически так же скоро как и с простых.

Итак, с идеей ясно, приступим к реализации.

Начнем с индикатора (циферблата) — что является решёткой из светодиодов.

Потому, что в часах 4 горизонтальных и 6 вертикальных последовательностей, общее число нужных светодиодов — 6 * 4 = 24. В действительности, возможно обойтись меньшим числом светодиодов, т.к. не все разряды будут задействованы — к примеру старшая цифра часов (самый левый столбец), может показывать число не больше двух (при двадцати часовом формате времени), соответственно возможно сэкономить целых два светодиода. Но я этого делать не стал и поставил все 24 светодиода, т.к. желал (в будущем) применять эти часы для показа несложных текстовых сообщений.

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

в текущий момент настраивается время. И наконец третья увеличивает время в выбранном столбце на единицу.

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

Схема и печатная плата

Схема достаточно стандартная: микроконтроллер, питание, сброс, разъем для подключения программатора. К TOSC1 и TOSC2 подключен часовой кварц от которого будут тикать часы. Кнопки настройки времени подтянуты к напряжению питания.

Десять выходов на светодиоды (6 столбцов+ 4 строчка). На каждую горизонтальную строчок подключен резистор для ограничения тока через светодиод.

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

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

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

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

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

Программная часть

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

Целый код обрисовывать не буду, т.к. он достаточно детально откомментирован. Обрисую лишь главные моменты.

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

Переключение столбцов осуществляется по таймеру Timer0.

Смена времени происходит раз в секунду по прерыванию переполнения таймера Timer/Counter2. Потому, что частота кварца равна 32768Гц, а предделитель таймера установлен на 128, то переполнение однобайтового таймера будет происходить раз в секунду (32768 / (128 * 256) = 1). что весьма комфортно.

Обработка нажатий на кнопки происходит в процедурах button_stop_pressed для кнопки перевода часов в режим настройки и обратно, button_set_pressed для кнопки установки времени и button_switch_pressed для кнопки переключения столбца. Обратите внимание, что в процедуре button_stop_pressed текущее время сохраняется в EEPROM. Это сделано для того что бы время не сбрасывалось в случае если необходимо, к примеру, перевести часы в другую розетку (при включении часов время считывается из EEPROM).

Вся главная работа, такая как — опрос состояние кнопок, переключения активного столбца развертки и вывод времени происходит в main. Начальная инициализация выполняется в reset.

То что оказалось в следствии возможно взглянуть на видео ниже. В том месте же запечатлены и кое-какие стадии процесса изготовления.

Источник: radioparty.ru

Бинарные часы AtMega8

Важное на сайте:

Самые интересные результаты статей, подобранные именно по Вашим интересам:

  • Бинарные часы как определить время

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

  • Бинарные часы на сони как понять время

    Меню сайта Статьи Наименование фильма ежедневник баскетболиста на британском the basketball diaries жанр драма, криминал. Что может блютус большое…

  • Бинарные часы как ими пользоваться

    Двоичные часы Я намерено написал эту статью для тех, кто не знает, как пользоваться двоичными часами. А все вследствие того что я приобрел эти часы и…

  • Бинарные опционы: отзывы реальные от новичков

    Приветствую каждого, кто просматривает эту статью! Каждого персонально, по причине того, что если вы тут, значит – вы на верном пути. Я не буду тут вам…

  • Как определять по бинарным часам время

    Занимательные с комплектом броских светодиодов, по которым необходимо ) бывают с красными, светло синий или зелеными. Современный и занимательный…

  • Что такое бинарное дерево

    7.11. Двоичные деревья. Не считая линейных структур существуют и нелинейные, при помощи которых задаются иерархические связи данных. Для этого…