Эти необычные карманные часы могут стать оригинальным подарком. Индикатор времени в них построен всего на шести единичных светодиодах. Секрет в том, что число часов и число минут текущего времени отображаются ими в виде двоичных чисел и только при нажатиях на соответствующие кнопки, всё остальное время микроконтроллер часов "спит", а индикатор выключен, что резко снижает ток, потребляемый от литиевого элемента питания.
Чтобы понять, что такое двоичная система счисления, запустим в компьютере имеющуюся в операционной системе Windows программу "Калькулятор". Поскольку в различных версиях системы эти программы различаются, здесь будем рассматривать ту, которая входит в состав Windows XP Запустив программу, найдите в её окне и нажмите мышью экранную кнопку "Вид", затем в выпавшем списке выберите "Инженерный". После этого к прежним простейшим функциям калькулятора добавится множество других, позволяющих производить сложные вычисления. Слева под индикатором появится переключатель системы счисления: "Hex" (шестнадцатеричная), "Dec" (десятичная), "Oct" (восьмеричная) и "Bin" (двоичная). Сразу после запуска программы он находится в положении "Dec". Это означает, что все исходные данные для вычислений и их результаты будут представляться в привычной для нас десятичной системе счисления.

Наберите для примера число 58, нажав на соответствующие цифровые кнопки. Если теперь перевести переключатель в положение "Bin", щёлкнув мышью по соответствующей надписи, то в окне результата цифры 58 сменятся на 111010. Это то же самое число, представленное в двоичной системе счисления. Чтобы убедиться в этом, можно воспользоваться таблицей, поясняющей принцип формирования двоичных и десятичных чисел. Двоичные разряды, в отличие от десятичных, могут принимать только два значения — 0 и 1. Веса двоичных разрядов увеличиваются справа налево в два раза, а не в 10 раз, как в десятичной системе.
Двоичная система исчисления широко используется в цифровых устройствах, поскольку позволяет обойтись простыми логическими элементами, различающими только два значения — 0 и 1. Сегодня многие фирмы выпускают такие часы. Чтобы убедиться в этом, достаточно поискать в Интернете фразу "Часы двоичные".
Но для радиолюбителя гораздо интереснее не купить, а сделать двоичные часы своими руками. В предлагаемой конструкции всего три управляющие кнопки: включения индикации текущего часа, минут и коррекции времени — точной установки момента начала часа. Часы защищены от сбоев, вызванных случайными нажатиями на кнопку коррекции. Они построены на широко известных и часто применяемых радиолюбителями элементах.

Схема часов показана на рис. 1. Отсчёт времени ведёт и выводит его на светодиоды микроконтроллер DD1 PIC16F628A. Его тактовая частота 32768 Гц стабилизирована низкочастотным "часовым" кварцевым резонатором ZQ1. Питается устройство от литиевого элемента G1 CR2032 напряжением 3 В. Как известно, такие элементы отличаются минимальной саморазрядкой и способностью работать при пониженной температуре. Конденсатор С1 подавляет высокочастотные импульсы. Благодаря низкой тактовой частоте микроконтроллер потребляет небольшой ток, что делает возможной длительную эксплуатацию часов без замены элемента питания.
К выходам микроконтроллера RA0— RA4, RB5, RB6 через ограничительные резисторы R1—R7 подключены светодиоды HL1—HL7. Шесть из них (HL2— HL7) показывают время, на них можно отобразить числа от 0 (все выключены) до 63 (все включены). Это позволяет вывести по очереди число часов от 0 до 23 и минут от 0 до 59. Около светодиодов указаны веса двоичных разрядов, которым они соответствуют.
Включают индикацию часов или минут соответственно кнопками SB1 и SB2, соединёнными с входами RB0 и RB1 микроконтроллера. Так как индикация включается всего на несколько секунд, в течение которых кнопка удерживается нажатой, энергия элемента питания расходуется экономно, он служит длительное время. Кнопкой SB3, подключённой к входу RB7 микроконтроллера, производят корректировку времени. Это следует делать только в начале очередного часа, так как в процессе корректировки счётчики минут и секунд обнуляются.
Светодиод HL1 при нажатой кнопке SB1 или SB2 вспыхивает каждую секунду. Он служит индикатором активности устройства и позволяет убедиться в его работоспособности при нулевых значениях часов или минут. Если бы его не было, возникала бы неприятная ситуация, когда при нажатой кнопке ни один из светодиодов не подаёт "признаков жизни".

Вывод 4 микроконтроллера, обычно служащий входом его установки в исходное состояние MCLR, в данном случае сконфигурирован как обычный дискретный вход RA5. Начальная установка при включении питания производится внутренними средствами микроконтроллера. Для исключения случайных помех вход RA5 соединён с общим проводом. Остальные линии порта A программа конфигурирует как выходы.
Линии RB0, RB1, RB7 порта B она конфигурирует как входы и подключает к ним внутренние резисторы, поддерживающие на этих входах высокий логический уровень (при отпущенных кнопках). Остальные линии порта B конфигурируются как выходы. В завершение процедуры инициализации программа по очереди включает на секунду каждый светодиод. Это позволяет оценить правильность монтажа и убедиться в работоспособности программы.
Счёт времени в микроконтроллере DD1 ведёт встроенный таймер T1. Программа настраивает его так, что он каждую секунду генерирует запрос прерывания. Подпрограмма-обработчик прерывания формирует в оперативной памяти микроконтроллера значение текущего времени — секунды, минуты и часы.
Обработчик прерывания при каждом вызове проверяет также логические уровни на входах RB0, RB1 и RB7, зависящие от состояния кнопок SB1—SB3. При низких уровнях на входах RB0 или RB1 включается соответственно индикация часов или минут. При низком уровне на входе RB7, свидетельствующем о нажатой кнопке SB3, и одновременно низком уровне на одном из входов RB0 или RB1 производится корректировка времени. Так сделано для уменьшения вероятности сбоя хода часов в результате случайного нажатия на кнопку SB3.
Программа микроконтроллера небольшая по размеру и несложная. Без всяких изменений она может работать как в микроконтроллерах PIC16F628A, так и в PIC16F628. Исходный текст программы, приложенный к статье, снабжён подробными комментариями, позволяющими разобраться в алгоритме работы и даже усовершенствовать программу. Например, ввести индикацию секунд или режим секундомера. Для этого нет необходимости менять схему часов, так как можно организовать включение этих функций одновременным нажатием на кнопки SB1 и SB2.
Корректировка времени производится с помощью кнопки SB3. При её выполнении значения минут и секунд обнуляются. Если минут было меньше 30, число часов не изменяется, в противном случае оно увеличивается на единицу. Если кнопку SB3 удерживать нажатой, то каждую секунду к числу часов будет добавляться единица. Это бывает необходимо при первоначальной установке текущего времени после включения питания, а также при переходах с летнего на зимнее время и обратно.
Для индикации секунд в программе необходимо найти место, где обрабатывается состояние кнопок, и добавить там выдачу на индикацию значения, хранящегося в регистре-счётчике секунд. Чтобы ввести режим секундомера, потребуется использовать дополнительный регистр. При двух нажатых кнопках его содержимое следует каждую секунду увеличивать на единицу и выводить на индикацию. Изменённый текст программы следует оттранслировать в среде MPLAB, а полученный HEX-файл загрузить в память микроконтроллера.
Часы собраны на фрагменте макетной платы, как показано на рис. 2. Резисторы (для поверхностного монтажа) смонтированы на обратной стороне платы. Светодиоды FYL-3014SRC можно заменить другими. Чтобы убедиться в пригодности светодиода, подключите его к источнику напряжения 3 В через резистор 390 Ом и оцените яркость свечения.

Конденсаторы, резисторы, кнопки — любые малогабаритные. Желательно, чтобы кнопка SB3 была с укороченным толкателем. Его конец не должен возвышаться над поверхностью корпуса часов и даже быть утоплен, чтобы нажать на него было можно только каким-либо заострённым предметом. Такое конструктивное решение служит дополнительной к программной защитой от случайного нажатия на кнопку.
Автор сделал часы карманными (рис. 3), поместив их в подходящий пластмассовый футляр. Но оформление может быть и иным. Исходный код программы и прошивка микроконтроллера PIC16F628A доступны по этой ссылке. Автор: Э. Щенов, г. Ульяновск
Источник: Журнал Радио 2014 №8
C этой схемой также часто просматривают: |
ГОВОРЯЩИЕ ЧАСЫ
Часы-будильник с ЖК-индикатором
Электронные часы с будильником на микроконтроллере AT90S2313-10PI
Автомобильные часы-термометр-вольтметр
Часы на базе индикатора HT1610
Регулируемый блок питания с защитой
Ёмкостный измеритель уровня жидкости
Термометр с четырьмя датчиками DS18B20
Два вывода микроконтроллера PIC управляют шестью светодиодами
|