Часы - календарь - будильник - термометр ATMega8 / ATmega88Исходный текст на Си (не на Васике, не на Ассемблере, не на Паскале, не на ... только Си)Небольшие пояснения:
последовательность индикации: время/дата/температура,
время каждой индикации устанавливается самостоятельно (время 5-50 сек, дата 0-50 сек, температура 0-25 сек),
автоматический переход на летнее/зимнее время (последнее воскресенье марта/октября)
последовательность установки по нажатию кнопки set:
часы, минуты, год (d1), месяц (d2), день (d3), время индикации времени (t1), время индикации даты (t2), время индикации температуры (t3), возвращение в режим индикации времени
если часы спешат или отстают, то по нажатии кнопки "К" можно перейти в меню выбора суточной корректировки хода часов. Кнопками "+" и "-" выбирается нужное количество секунд (плюс/минус 60 сек/сутки).
если в режиме установок не нажимать кнопки более 1 мин часы перейдут в режим индикации времени.
если в режиме индикации секунд не нажимать кнопки более 5 мин часы перейдут в режим индикации времени.
при установке 0 сек. для индикации даты и 0 сек. для индикации температуры соответствующая индикация отключается т.е. можно сделать просто часы и/или с календарем и/или с термометром.
в режиме индикации времени кнопками "+" и "-" можно вызвать на 5 сек. индикацию температуры (первого и второго датчиков соответственно)
Будильники:
два светодиода - индикация активности будильника(ов) т.е. если будильник установлен и включен.
звук - один из двух вариантов.
Ряд настроек доступ к которым осуществляется удержанием одной из кнопок при включении питания:
Выбор типа индикатора делается удержанием одной из четырех кнопок ("+", "-", "сек", "уст").
Если быть более точным то не выбор индикатора, а выбор активного 0 или 1 для зажигания сегмента и выбор активного 0 или 1 для зажигания разряда.
"+" - сегмент "0", разряд "0"
"-" - сегмент "0", разряд "1"
"сек" - сегмент "1", разряд "0"
"уст" - сегмент "1", разряд "1"
----------
Изменение доп.настроек.Вход в настройки удержанием пятой кнопки (кнопки "К") при включении питания.
Выбор ячейки производится кнопками "+" и "-", изменение состояния ячейки кнопкой "Уст". При нажатии кнопки "Уст" сразу же производится запись в EEPROM.
Выход из меню либо сброс МК, либо кнопка "Сек".
номера ячеек EEPROM и их значение (на индикаторе номер ячейка Е2 - Е8 и ее значение):
2 - индикация незначащего нуля в десятках часов
3 - отбрасывание десятых долей при индикации температуры и добавление символа "С"
4 - включение плавной смены показаний
5 - регулятор яркости (фоторезистор)
6 - работа с двумя видами точек
7 - "пятый" разряд (знак температуры)
8 - режим индикации состояния ADC (0 - кнопки, 1 - фоторезистор, F - откл.)
9 - автоперевод стрелок лето/зима (0 - отключено, 1 - включено т.е. по умолчанию включено)
а - максимальный уровень яркости (от 40 до 200) индикация в десятках т.е. на индикаторе от 4 до 20
* точки-разделители часов и минут подключаются вместо точки первого разряда,
а точка как разделитель целой и дробной части темп. - на своем месте т.е. во втором разряде
* пятый разряд (знак температуры), расположенный слева от первого - это два сегмента
горизонтальный и вертикальный которые образуют знак "минус" и знак "плюс".
Вместо точки 3-го разряда подключается горизонтальный сегмент, а вместо точки 4-го - вертикальный.
для активизация записать 0.
Почему ноль? Спросите у Atmel почему установленный фуз - "0", а не установленный - "1".
----------
Функция очистки памяти DS1307 и установки "заводских" настроек:при первом включении часов.
время индикации 30 сек, 5 сек, 5 сек (время, дата, темп.),
будильники 1 и 2 - OFF
раннее было: Активизируется удержанием кнопки AL1 (буд1) при включении питания.
P.S.Fuse bit's (ДИНАМИКА)
Mega8 - (Int RC = 4 MHz) SKSEL3..0 = 0011, SUT1..0 = 10, все остальные = 1
Mega88 - (Int RC = 8 MHz) SKSEL3..0 = 0010, SUT1..0 = 10, все остальные = 1
Fuse bit's (СТАТИКА)
Mega8 - (Int RC = 8 MHz) SKSEL3..0 = 0100, SUT1..0 = 10, все остальные = 1
Mega88 - (Int RC = 8 MHz) SKSEL3..0 = 0010, SUT1..0 = 10, все остальные = 1
прошивка в папке
hexдоп.информация в папке
plus * CVAVR не ниже версии
2.0 * Proteus не ниже версии
7.7Еще несколько моих проектов:
часы на светодиодных 7-ми сегментниках (12 разрядов)
Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2)часы на LCD 2*16 и на Mega8/88
Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)и их улучшенная версия на Mega168
Часы термометр-будильник Mega168_DS1307(M41T56)_DS18x20_LCD16x2
- Вложения
-
- Clock-Term-Calendar-Alarm_LED_2011-08-11.zip
- ДИНАМИКА: Исходники (CVAVR) + прошивка (hex) + проект в Proteus 7.7SP2 (все для m8 и m88)
- (174.79 KiB) Скачиваний: 9189
-
- Clock-Term-Calendar-Alarm_LED_2011-03-01_static_595.zip
- СТАТИКА: Исходники (CVAVR) + прошивка (hex) + проект в Proteus 7.7SP2 (все для m8 и m88)
- (179.95 KiB) Скачиваний: 6294
-
- Shema_Clock-Term-Calendar-Alarm_4LED-Big.zip
- схема (GIF + sPlan 7.0) Динамика и Статика
- (169.65 KiB) Скачиваний: 10520
-
- Nimnul_and_Headshotbacs.zip
- печатная плата (авторы Nimnul и Headshotbacs)
- (33.96 KiB) Скачиваний: 6911
-
- YuraTV.zip
- печатная плата (автор YuraTV)
- (187.71 KiB) Скачиваний: 6860
Последний раз редактировалось
Danko Пн дек 19, 2011 18:28:51, всего редактировалось 57 раз(а).