Свежие обсуждения
Электроника в быту

Часы-Термометр на AT89C4051, DS18B20 и DS1307

1 2 5

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

 

Сергей К: Я в том смысле, что я не задаю день недели вручную и поэтому он начинает считать от дня подачи питания, а не согласно установленной дате.
Понятно(теперь наверное я понял) - т.е. нужна "автоматическая" коррекция, т.е. меняем день недели - должна меняться дата(день месяца), месяц и год также само и соответсвенно и автоматически внутри м/с. Но это нужно же иметь внутри отдельный небольшой процессор для такой корректировки или иметь какое-то масочное ПЗУ внутри через которое как бы "фильтруются" все показания в м/с и соответственно меняются. Но этого нет и видимо это по причине чрезмерного усложнения конструкции и вероятного увеличения потребления м/с. Тут надо уже самому об этом "заботиться"(т.е. внешний процессор это и должен делать). Кстати неплохая идея - может доработать так свои часы-будильник-термометр? У меня своя "разработка" на PIC16F876A? DS1307, D18S20 и ЖКИ. Кстати будильники на каждый день недели разные у меня. Код для DS1820 у меня сооптимизирован как считаю, в отличие от того, что вижу в нете и могу привести. Показания с DS1820 считываю тоже раз в 10 секунд!(как-то сам "допер", что чаще и не надо особо). В общем вот так. Файл тот кстати, у меня так и не прикрепился почему-то.

 

Только заметил тему.
Сергей К: 1. День недели нужно вручную устанавливать? Микросхема не умеет его сама посчитать?
День недели, пон. вт. ср. ..., задается в ручную, автоматического расчета в DS1307 нет. В прочем как и автоматического перехода зима/лето.

PS: А в природе существуют мс. RTC на подобие DS1307 в которых реализован полноценный календарь + переход зима/лето и т.п.?

 

AlexAlcoa: А в природе существуют мс. RTC на подобие DS1307 в которых реализован полноценный календарь + переход зима/лето и т.п.?
Знаю, что с "automatic leap year compensation" есть(специально оставил так фразу на англ. и можно использовать для поиска). Может среди них искать? Но ИМХО не будет таких. Впрочем не знаю.

 

AleksBak: PIC16F876A? DS1307, D18S20 и ЖКИ
у меня PIC16F887, а остальное такое же

AlexAlcoa: задается в ручную, автоматического расчета в DS1307 нет
Спасибо. Это меня и интересовало. Буду думать над автоматическим расчетом.

 

Сергей К: Буду думать над автоматическим расчетом Спасибо за наводку на алгоритм.

------
А кто нибудь уже обсчитал формулу для дня недели? У меня получаются результаты намного больше 0-7, считал в exel-e.
Что означает выражение "ЗАЛИШОК 7"

 

Залишок (укр) - остаток.

 

петр1: Залишок (укр) - остаток. Спс.
Странно откуда там возьмется остаток, если все вычисления целочисленные "Всі ділення цілочисельні" или я ошибаюсь?

Для примера файл exel для обсчета дня недели, но результат не понятный.

171082.xls

 

Не знаю пока.
Может больше 7и?
Надо внедряться в проект.

 

На русской вике больше информации есть, вот оттуда:

Реализация на C:

/*
** taviscaron (c)
*/
struct struct_date
{
char day;
char month;
short year;
};
char what_day(const struct struct_date * const date)
{
int a = (14 - date->month) / 12;
int y = date->year - a;
int m = date->month + 12 * a - 2;
return (7000 + (date->day + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12)) % 7;