Простий годинник на мікроконтролері AVR
- Alex на КВ приймач спостерігача
- Volfff на Підсилювач низької частоти на мікросхемі TDA7384
- Lightman на Квітомузика: світлодіодна світломузика своїми руками
- ІГОР на П'ятиканальна світлодіодна музика
- Павло на Фоторелі автоматичного увімкнення освітлення

Радіодеталі – поштою
Схема та програма дуже простого годинника на мікроконтролері AVR з використанням мікросхеми реального часу DS1307
Доброго дня, шановні радіоаматори! Вітаю вас на сайті "Радіоаматор"
Сьогодні, шановні радіоаматори, до вашої уваги пропонується дуже простасхема годинника на мікроконтролері AVR ігодин реального часу з послідовним інтерфейсом I2C DS1307.
Конструкція зібрана на мікроконтролері ATyni26 (просто саме цей МК був під рукою). Але ви можете застосувати будь-який інший МК, головне, щоб у нього було 13 вільних входів – 11 для виведення поточного часу на чотирирозрядний семисегментний світлодіодний індикатор та 2 виведення – на кнопки встановлення та корекції часу.

Робота програми. Тактова частота роботи мікроконтролера – 1 мГц (заводська установка, FUSE-біти чіпати і встановлювати не треба). Розмір програми – 1 кілобайт. Під час запуску програми відбувається: - запуск таймера Т0 з попередньо встановленою частотою СК/8 та викликом переривання по переповненню (при такій передвстановленій частоті виклик переривання відбувається кожні 2 мілісекунди) – ініціалізація портів (порти РА0-6 та РВ0-3 налаштовуються на висновок, РА7 та РВ6 на введення) – ініціалізація шини I2C (висновки РВ4 та РВ5) – при першому запуску, або повторному запуску за відсутності резервного живлення DS307, перевіряється 7 біт (СН) нульовогорегістру DS1307 і відбувається перехід у початкову установку поточного часу. При цьому кнопка S1 – для встановлення часу, кнопка S2 – перехід до наступного розряду. Встановлений час – години та хвилини записуються в DS1307 (секунди встановлюються в нуль), а також виведення SQW/OUT (7-й висновок) налаштовується на генерацію прямокутних імпульсів із частотою 1 Гц – дозволяється глобальне переривання – програма переходить в цикл з опитуванням копії S2 При переповненні лічильника таймера Т0 програма переходить до обслуговування переривання (кожні 2 мс): – зчитується поточний час з DS1307 який записується в чотири змінні SRAM (десятки годин, одиниці годин, десятки хвилин, одиниці хвилин) – підпрограмою виведення поточного часу проводиться динамічна індикація поточного часу на світлодіодному індикаторі – при натисканні кнопки S2 програма забороняє глобальне переривання та переходить у підпрограму корекції часу (кнопками S1 та S2 встановлюються десятки та одиниці хвилин, з 0 секунд, натисканням кнопки S2 відбувається запис уточненого часу в DS1307, дозвіл глобального переривання та повернення до основної програми).
Застосований у схемі годинник DS1307 дозволяє виводити на індикацію секунди, хвилини, години, день тижня, дату і рік. Якщо у схемі замість світлодіодних індикаторів застосувати LCD дисплей, наприклад WH0802 (дворядковий, з виведенням восьми символів у рядку) або аналогічний, то можна організувати повноцінний годинник з повним виведенням поточного часу, а живлення пристрою організувати від гальванічних елементів або аку .
Розташування висновків мікроконтролера ATyni26:

Розташування висновків DS1307:

Типова схема підключення D1307:

Рекомендована схемапідключення кварцу до DS1307:

Спілкування мікроконтролера з годинником реального часу DS1307 організовано програмним шляхом, тому в схемі можна застосувати мікроконтролер, у якого немає апаратного модуля I2C.

Даташит DS1307 українською (312.1 KiB, 1,762 hits)
Годинник на ATyni26 в Algorithm Builder (8.2 KiB, 1,682 hits)
Програма годинника на ATyni26 в HEX коді (3.1 KiB, 1,530 hits)
Схема годинника у форматі sPlan7 (119.3 KiB, 3,477 hits)
Коментарі
Зробив такий годинник на ATtiny26.Йде, але виставити хвилини і годинник перемикачами S1 і S2 не можна. S1 обнуляє, а S2 скидає. Напевно треба доробити та дописати програму годинника 1111.alp. Допишіть будь ласка. Дуже треба.
Питання: нуль незначний, у десятках годинника, відображається?