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

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

Для индикации времени в часах используются 4 светодиода для отображения часов и 6 светодиодов для отображения минут.

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

Как повысить точность отсчета времени?

Чтобы увеличить точность хода часов я использовал Таймер 1(TMR1), который работает в асинхронном режиме, идея заключается в следующем:
чтобы продлить работу от батареи микроконтроллер находится в спящем режиме, когда не отображается время, а светодиоды будут гореть только в течение нескольких секунд после нажатия одной из двух кнопок. В спящем режиме отключены почти все функции микроконтроллера, но таймер/счетчик TMR1 продолжает работать в асинхронном режиме, так что можно отсчитывать время, пока PIC16F628 спит.

Когда 16-разрядный регистр TMR1 зарегистрирует переполнение, сигнал от прерывания заставит проснуться микроконтроллер, в данном случае счетчик секунд обновится и микроконтроллер снова уйдет в режим сна.

Для использования в асинхронном режиме TMR1 нужно задать источник тактирования, это делается путем подключения 32.768 Гц кварцевого резонатора между контактами RB7 и RB6.

Как показать время?

Время отображается при нажатии на одну из двух кнопок. Теперь вопрос: как можно определить сосотояние кнопки, если микроконтроллер находится в спящем режиме? Ну конечно, я использовал прерывание по изменению уровня на выводах RB4 и RB5, когда состояние этих контактов изменится контроллер проснется. При нажатии кнопки в таймер TMR0 загрузится значение, которое используется для измерения времени индикации, и активируются прерывания, при переполнении TMR0, все светодиоды погаснут и микроконтроллер возвратится в спящий режим.

Алгоритм работы часов:

- Старт программы (инициализация);
- Переход в спящий режим.

Если произошло переполнение TMR1
- Пробуждение;
- Время на обновление;
- Переход в спящий режим.

Если произошло внешнее прерывание
- Пробуждение;
- Индикация времени с помощью светодиодов;
- Ждем переполнения TMR0;
- Выключение светодиодов;
- Переход в спящий режим.

Как установить время?

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

Схема часов

Бинарные наручные часы на PIC16F628 - схема

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

При программировании микроконтроллера выставить биты конфигурации, что показаны на рисунке ниже:

Биты конфигурации


Архив для статьи "Бинарные наручные часы на PIC16F628"
Описание: Исходный код программы(Ассемблер)
Размер файла: 33.9 KB Количество загрузок: 694 Скачать

Комментарии  

-1 #1 Volodiya 08.07.2016 15:48
А можна прошивку в формате HEX., а то хочу прошить.ю а там в архиве много файлов, какой из них прошивать незнаю..
Сообщить модератору
-1 #2 AntonChip 08.07.2016 16:13
Цитирую Volodiya:
А можна прошивку в формате HEX., а то хочу прошить.ю а там в архиве много файлов, какой из них прошивать незнаю..

Прошивать этим файлом binary_clock_pi c16f628.HEX
Сообщить модератору
-1 #3 Volodiya 08.07.2016 21:21
С прошивкой все понятно, а выставить биты конфигурации нужно??? Я использую proskit2 программу для прошивки,, как там выставить и нужно ли?
Сообщить модератору
-2 #4 AntonChip 10.07.2016 18:56
Цитирую Volodiya:
С прошивкой все понятно, а выставить биты конфигурации нужно??? Я использую proskit2 программу для прошивки,, как там выставить и нужно ли?

Не нашел такой программы, биты на скриншоте показаны
Сообщить модератору
-1 #5 Volodiya 11.07.2016 08:49
Извиняюсь программа PICkit 2 v2.61 (часы не работают может из за биты конфигурации ) ???
Сообщить модератору
-2 #6 Владимир Семионов 11.02.2017 15:51
Помогите пожалуста с прошивкой. Как выставить биты конфигурации в программе MiniPro v6.50
Сообщить модератору