Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сообщение Danko »

Часы - календарь - будильник - термометр
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 КБ) 9760 скачиваний
Clock-Term-Calendar-Alarm_LED_2011-03-01_static_595.zip
СТАТИКА: Исходники (CVAVR) + прошивка (hex) + проект в Proteus 7.7SP2 (все для m8 и m88)
(179.95 КБ) 6710 скачиваний
Shema_Clock-Term-Calendar-Alarm_4LED-Big.zip
схема (GIF + sPlan 7.0) Динамика и Статика
(169.65 КБ) 11061 скачивание
Nimnul_and_Headshotbacs.zip
печатная плата (авторы Nimnul и Headshotbacs)
(33.96 КБ) 7296 скачиваний
YuraTV.zip
печатная плата (автор YuraTV)
(187.71 КБ) 7267 скачиваний
Последний раз редактировалось Danko Пн дек 19, 2011 18:28:51, всего редактировалось 57 раз.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Аватара пользователя
Pavel_1978
Опытный кот
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

Сообщение Pavel_1978 »

проект в шпротеусе не запускается, у меня 7.4 SP3

выложи схему просто в .jpg
Ilnur
Встал на лапы
Сообщения: 128
Зарегистрирован: Вс мар 22, 2009 15:10:13

Сообщение Ilnur »

Danko,если тебе не сложно давай вместо индикатора и пользуй диплей 16х2.
Ilnur
Встал на лапы
Сообщения: 128
Зарегистрирован: Вс мар 22, 2009 15:10:13

Сообщение Ilnur »

Мне кажется на дисплее 16х2 смотется будет красивее
Аватара пользователя
Pavel_1978
Опытный кот
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

Сообщение Pavel_1978 »

Ilnur писал(а):Мне кажется на дисплее 16х2 смотется будет красивее


зачем????? конструкция самодостаточная!!!
Аватара пользователя
larik
Мучитель микросхем
Сообщения: 403
Зарегистрирован: Вс окт 12, 2008 00:19:25
Откуда: Подольск, Мос. Область

Сообщение larik »

дисплей 16*2 будет маленький по сравнению с большими светодиодными индикаторами,висящими на стене
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Сообщение Danko »

Моя печатка под smd.

Размеры 93*32 мм. На плате не разведены будильник и фоторезистор.

ПЕЧАТКА:
Изображение

ФОТО в сборе:
Изображение
Вложения
photo_m8_smd_1.jpg
(133.81 КБ) 102070 скачиваний
photo_m8_smd.jpg
(36.32 КБ) 100805 скачиваний
ПП_m8_smd.zip
печатка без будильника и без фоторезистора
(19.75 КБ) 3075 скачиваний
Последний раз редактировалось Danko Ср дек 22, 2010 16:16:36, всего редактировалось 3 раза.
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Сообщение Danko »

Печатные платы и фото часов от Gordon Shumway
Gordon_Shumway_28-12-2010.zip
(255.6 КБ) 3138 скачиваний


Изображение
Изображение
Вложения
photo_2.jpg
(97.46 КБ) 100238 скачиваний
photo_1.jpg
(58.66 КБ) 100793 скачивания
Последний раз редактировалось Danko Вт дек 28, 2010 17:49:07, всего редактировалось 2 раза.
Аватара пользователя
krolaka
Нашел транзистор. Понюхал.
Сообщения: 169
Зарегистрирован: Пн мар 02, 2009 12:23:37
Контактная информация:

Сообщение krolaka »

хмм хотя я давно уже не стардаю фигней но часы понравились оригинально зделано :) насколько они точно ходят? :)

если посчитать что детали брать у нас на рынке то выходить очень дорого atmega8 20 грн, DS1307 22 грн, DS18B20 27 грн индикаторы светодеодные 40 грн итого 109 грн не считаю мелочевки.
Изображение
Аватара пользователя
headshotbacs
Вымогатель припоя
Сообщения: 641
Зарегистрирован: Пт ноя 28, 2008 20:34:39
Откуда: Краматорск

Сообщение headshotbacs »

Не знаю, у нас в городе так же точно спекулянты навернули по цене. Вот иногда выбает езжу на радиорынок "Маяк" (тот что в Донецке) так там Мега стоит около 10-11 грн, датчик ДС18Б20 около 7 грн, индикаторы около 10-15 грн (смотря какие). Но с нашими ценами так и получается что дешевле было-бы купить готовые. Но это хобби и на него денег жалеть нельзя.
Freiwind
Прорезались зубы
Сообщения: 208
Зарегистрирован: Вт авг 14, 2007 14:46:45
Откуда: Москва
Контактная информация:

Сообщение Freiwind »

krolaka писал(а):если посчитать что детали брать у нас на рынке то выходить очень дорого atmega8 20 грн, DS1307 22 грн, DS18B20 27 грн индикаторы светодеодные 40 грн итого 109 грн не считаю мелочевки.

Мне то же самое обошлось примерно в 12$ с индикаторами 2,3" (56мм)
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

Понравилась конструкция наверное буду повторять.
Но у мняу возникло подозрение в правомерности подключения индикатора к +12В (я думаю их в машину забульбенить) ведь при неактивном уровне (1) все 12В будут прикладываться к выходу мк через резистивный делитель, я думаю надо добавить еще по транзистору. Если интересно решал аналогичную задачу, для своего прибамбаса, здесь
http://radiokot.ru/forum/viewtopic.php?p=318446#318446
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Сообщение Danko »

krolaka писал(а):хмм хотя я давно уже не стардаю фигней но часы понравились оригинально зделано :) насколько они точно ходят? :) ....
Точность, как известно понятие относительное :idea:
Есть рекомендации от производителя по подключению кварца.
В моих часах есть корректировка суточного хода часов т.е. в 00:00 либо добавляется либо вычитается установленное кол-во секунд (от 0 до 60), как в старых наручных часах Электроника-5, только точность установки +- 1 сек.
В моих домашних часах индикаторы небольшие и никаких транзисторных ключей нет. По сему на вопрос про 12В ответить не могу. :(
Аватара пользователя
headshotbacs
Вымогатель припоя
Сообщения: 641
Зарегистрирован: Пт ноя 28, 2008 20:34:39
Откуда: Краматорск

Сообщение headshotbacs »

Только что скачал протэус, и появился мгновенно вопрос:
Danko! а почему мигает точка когда часы показывают дату???
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Сообщение Danko »

headshotbacs писал(а):Только что скачал протэус, и появился мгновенно вопрос:
Danko! а почему мигает точка когда часы показывают дату???

В часах точка 1 Гц
в дате точка 4 Гц.
Можно точку в дате совсем убрать. Пока окончательно не решил, что лучше, и как лучше сделать.
Есть идеи? буду рад!
Аватара пользователя
Pavel_1978
Опытный кот
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

Сообщение Pavel_1978 »

Danko писал(а):В часах точка 1 Гц
в дате точка 4 Гц.
Можно точку в дате совсем убрать. Пока окончательно не решил, что лучше, и как лучше сделать.
Есть идеи? буду рад!


а может между парами индикаторов установить два светодиода - чтобы они мигали в режиме отображения часов - 18:23, а для даты использовать точку индикатора 12.11
правда прийдется использовать свободную ногу контроллера....
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Сообщение Danko »

Есть шесть свободных ног, а с програмной стороны проблем не будет.
Аватара пользователя
amirus
Открыл глаза
Сообщения: 63
Зарегистрирован: Пт авг 07, 2009 06:55:32
Откуда: Asia.

Сообщение amirus »

Уважаемый Dankо, не могли бы вы выложить еще версию прошивки с общим катодом?
Заранее Вам благодарен.
Аватара пользователя
headshotbacs
Вымогатель припоя
Сообщения: 641
Зарегистрирован: Пт ноя 28, 2008 20:34:39
Откуда: Краматорск

Сообщение headshotbacs »

amirus писал(а):Уважаемый Dankо, не могли бы вы выложить еще версию прошивки с общим катодом?
Заранее Вам благодарен.


Прошивка и так с общим катодом. Использованная в схеме ULN2803 аппаратно делает "Общий анод". Просто убери ее из схемы и все.
И да прибудет с тобой великий и могучий общий катод 8)

Поехали дальше:

Danko писал(а):Можно точку в дате совсем убрать. Пока окончательно не решил, что лучше, и как лучше сделать.
Есть идеи? буду рад!


Вот такое предложение:
1. При показе температуры убрать десятые и добавить букву С (например чтоб они показывали "20°С" или "-5°С").
2. Убрать мигание точки разделителя в режиме показа даты.
3. Частоту точки разделителя в режиме показа времени увеличить примерно до 3 Гц.

Думаю тогда будет более понятней что именно показывают часы.

И еще чтоб убить двух зайцев прицепить на свободную ногу (только без изменения исходной схемы) контроллера еще один светодиод.
Pavel_1978 писал(а):а может между парами индикаторов установить два светодиода - чтобы они мигали в режиме отображения часов - 18:23, а для даты использовать точку индикатора 12.11
правда прийдется использовать свободную ногу контроллера....


Т.е. те люди кто повторял конструкцию которая описывалась в ветке Attiny2313+DS1307+DS18B20 и у которых изначально точка была одна (потому что многие использовали точку от семисегментного индикатора а не добавляли отдельный светодиод) просто перепрошили МК. А те кто желает чтоб точек было две, просто добавили бы еще одну (прицепив на свободную ногу) по желанию и при этом прошивка бы осталась таже.
Danko что скажете?

P.S. Выкладываю печатки часов (чтоб были и в этой ветке)
Вложения
.rar
Печатная плата для часов на ATmega8
(41.41 КБ) 5858 скачиваний
.rar
Схема
(187.75 КБ) 5347 скачиваний
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Сообщение Danko »

headshotbacs, спасибо за участие в проекте. :beer:
Про индикацию точки:
1. все выполнимо (ресурсов достаточно)
2. варианты выбора подключения точки сделать програмно (несколько разных прошивок), джампер (перемычка между свободными ножками).
3. выбор индикации точности градусов аналогично пункту 2.

Последнее: переход на летнее/зимнее время будет переписан т.к. работает он только в идеальных условиях т.е. питание подано часы идут. Если в день перехода (перевода стрелок) питание будет отключено, то условия перевода стрелок не настанут и часы не переведутся.
Ответить

Вернуться в «AVR»