Бінарний наручний годинник на PIC16F628 - Мікроконтролери та Технології

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

На даний момент я тільки вивчаю мікроконтролери, тому для цього проекту вибрав популярнийPIC16F628.

Для індикації часу в годиннику використовуються 4 світлодіоди для відображення годинника та 6 світлодіодів для відображення хвилин:

Також для індикації годинника можна використовувати зелені світлодіоди, а для хвилин - червоні:

pic16f628

Як підвищити точність відліку часу?

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

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

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

Як показати час?

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

Алгоритм роботи годинника:

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

Якщо відбулося переповнення TMR1 - Пробудження; - Час на оновлення; - Перехід у сплячий режим.

Якщо відбулося зовнішнє переривання - Пробудження; - Індикація часу за допомогою світлодіодів; - Чекаємо на переповнення TMR0; - Вимкнення світлодіодів; - Перехід у сплячий режим.

Як встановити час?

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

Схема годинника

pic16f628

Корпус виконаний із пластику, батарейний відсік для акумулятора типу CR2032 був вирізаний за допомогою верстата ЧПУ. Ремінець просто приклеєний до нижньої частини корпусу.

наручний

наручний

годинник

бінарний

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