Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2)
- Aaantonnn15
- Встал на лапы
- Сообщения: 101
- Зарегистрирован: Пт авг 20, 2010 18:31:05
- Контактная информация:
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
Вопрос автору. Интересно можно ли обойтись без ds1307 в конструкции? На борту у меги ведь есть встроенные таймеры!
- Danko
- Сверлит текстолит когтями
- Сообщения: 1287
- Зарегистрирован: Пн окт 13, 2008 11:45:54
- Откуда: РФ, Крым, г.Бахчисарай
- Контактная информация:
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
ivanov6 писал(а):Вопрос к автору
Собрал часы, но вопрос по температуре остался. При "потере" датчика "замерзают" показания индикаторов температуры. За сутки реально так случилось. Выключил - включил -Fnd0. Перестыковал датчики - нормально. Кстати в Протеусе, если при работе отключить термометры(установить кнопку), то ситуация аналогичная. Срочно нужен совет по программе - все уже в корпусе.
Программа производит поиск датчика при включении часов. Хотите верте хотите нет, но у меня ни разу не отваливаль датчики.
Я использую новый провод хорошего качества. Если включать в программу переоческий поиск датчика значит нужно жестко пивязывать датчики с воответствующим индикаторам.
А зачем? Это радиолюбительская котструкция и ее работа не планировалась в жестких условиях эксплуотации.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
- Danko
- Сверлит текстолит когтями
- Сообщения: 1287
- Зарегистрирован: Пн окт 13, 2008 11:45:54
- Откуда: РФ, Крым, г.Бахчисарай
- Контактная информация:
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
Aaantonnn15 писал(а):Вопрос автору. Интересно можно ли обойтись без ds1307 в конструкции? На борту у меги ведь есть встроенные таймеры!
Конечно можно.
И в этих часах и во всех других.
А еще вместо DS1820 можно использовать кремневый диод (при измерении положительных температур), только вот вопрос, а зачем? ради чего?
DS1307 + батарейка = два бакса
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
- Aaantonnn15
- Встал на лапы
- Сообщения: 101
- Зарегистрирован: Пт авг 20, 2010 18:31:05
- Контактная информация:
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
Danko писал(а):Aaantonnn15 писал(а):Вопрос автору. Интересно можно ли обойтись без ds1307 в конструкции? На борту у меги ведь есть встроенные таймеры!
Конечно можно.
И в этих часах и во всех других.
А еще вместо DS1820 можно использовать кремневый диод (при измерении положительных температур), только вот вопрос, а зачем? ради чего?
DS1307 + батарейка = два бакса
Забыли еще кварц часовой! В моей практике ds не очень точно идет. Постоянно убегает. А точность зависит от часового кварца, правильной разводки платы и еще некоторых параметров. Да и зачем тратить лишних два бакса если ds Вы используете всего как часы? А она ведь гараздо больше может!
- Danko
- Сверлит текстолит когтями
- Сообщения: 1287
- Зарегистрирован: Пн окт 13, 2008 11:45:54
- Откуда: РФ, Крым, г.Бахчисарай
- Контактная информация:
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
Здесь идет обсуждение данных часов, а по теоретическим вопросам лучше в ЛС, аську, скайп, маил.ру агент и пр.
Да Мега может многое, да DS1307 врет, но применение её освобождает програмиста от многих проблем. Например резервное питание, а если в схеме используется DS1820, то ...
Кроме DS1307 есть более дешевые и лучшие микросхемы. Например M41T56.
Да Мега может многое, да DS1307 врет, но применение её освобождает програмиста от многих проблем. Например резервное питание, а если в схеме используется DS1820, то ...
Кроме DS1307 есть более дешевые и лучшие микросхемы. Например M41T56.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
Подскажите, прошивку залил в HEX с сайта, ничего не добавлял, подключаю два индикатора (минуты) сначало показавает нули потом восмёрки. я так понимаю программу дополнять надо? Сильно не ругайте, пока пытаюсь разобраться с компиляцией и всем остальным, пока готово только железо.
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
Вроде разобрался, но не до конца, у меня индикаторы ОА, часы идут нормально, а температурные горят те индикаторы которые не должны гореть - показывают инверсно, в схеме я к ним добавил по ULN2803, почему так может происходить? да и индикаторы на девять вольт и использовал два транзистора в общем аноде.
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
m169 писал(а):Доброго времени суток. Плата под данный проект. Пользуйтесь на здоровье. (2стр. 7 пост, от 7 октября 2011 г.)
Неужили кто то собирал по этой плате и у него работало!!! или никто по ней за год так и не собирал??? я тут начал было собирать, но что то там нестыковочка какая-то, прикрепляю рисунок со схемой и платой, смотрите как стыкуются две микрухи ULN2803A и 74HC595...
- Вложения
-
- схема.JPG
- (234.33 КБ) 1118 скачиваний
- Danko
- Сверлит текстолит когтями
- Сообщения: 1287
- Зарегистрирован: Пн окт 13, 2008 11:45:54
- Откуда: РФ, Крым, г.Бахчисарай
- Контактная информация:
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
А в чем вопрос именно?
какие соединения вас смущают?
какие соединения вас смущают?
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
santy писал(а):m169 писал(а):Доброго времени суток. Плата под данный проект. Пользуйтесь на здоровье. (2стр. 7 пост, от 7 октября 2011 г.)
Неужили кто то собирал по этой плате и у него работало!!! или никто по ней за год так и не собирал??? я тут начал было собирать, но что то там нестыковочка какая-то, прикрепляю рисунок со схемой и платой, смотрите как стыкуются две микрухи ULN2803A и 74HC595...
И в чём проблема?
Можешь сделать лучше? Сделай!
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
по схеме 1 нога 74й идет на 2 ULN, а по печатке уже 1 нога 74й идет на 7 ULN, и так далее...
- Danko
- Сверлит текстолит когтями
- Сообщения: 1287
- Зарегистрирован: Пн окт 13, 2008 11:45:54
- Откуда: РФ, Крым, г.Бахчисарай
- Контактная информация:
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
Тю, а я то думал ...
Все будет работать, но только в программе нужно несколько строк подправить.
m169, я не не ошибаюсь?
Все будет работать, но только в программе нужно несколько строк подправить.
m169, я не не ошибаюсь?
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
ну так Ваша прошивка то работать не будет?...
- Danko
- Сверлит текстолит когтями
- Сообщения: 1287
- Зарегистрирован: Пн окт 13, 2008 11:45:54
- Откуда: РФ, Крым, г.Бахчисарай
- Контактная информация:
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
В целом будет, но только вместо цифр на экране будут крякозябры 
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
вот именно, опять к Вам обращаться придется, что бы прошивку переделали!
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
Danko писал(а):Тю, а я то думал ...
Все будет работать, но только в программе нужно несколько строк подправить.
m169, я не не ошибаюсь?
ошибаетесь, пусть изучает документацию на эти микросхемы.
Можешь сделать лучше? Сделай!
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
Danko писал(а):Кроме DS1307 есть более дешевые и лучшие микросхемы. Например M41T56.
Что дешевле, это верно. В чем она лучше?
- Danko
- Сверлит текстолит когтями
- Сообщения: 1287
- Зарегистрирован: Пн окт 13, 2008 11:45:54
- Откуда: РФ, Крым, г.Бахчисарай
- Контактная информация:
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
Аппаратная коррекция хода.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
Здравствуйте Danko, помогите пожалуйста по вашей формуле вычисления дня недели по дате, сделать код, без дополнительных функций, только время дата, месяц, год и день недели.
Ранее я тут писал в другом форуме
У меня компилятор ругается на undefined symbol 'bcd2bin' , как нужно его правильно прописать?
Мой код
[spoiler]
Архив с проектом и протеусом приложил к сообщению...;
Ранее я тут писал в другом форуме
Спойлер
TovsCat писал(а):Здравствуйте подскажите как всетаки вычисляется этот день недели...
[spoiler]Danko писал(а):Нет это обычный счетчик от 1 до 7. То что выставишь то и будет считать.
Я в своих часах его вообще не использую, а вычисляю.
Формула есть на Википедии.
Кусок кода из моих часов (Си CVAVR):Код: Выделить всё
// в данной версии данные хранятся не в двоичной, а в двоично-десятичной системе
unsigned char
myhour, mymin, mysec, // текушее время
mydate, mymonth, myyear, // текущий календарь
myday; // день недели
// ---------- вычислить день недели по дате ----------
void date2day(void) {
unsigned int y, m;
y = bcd2bin(myyear);
m = bcd2bin(mymonth);
if (m > 2) { m -= 2; }
else { m += 10; y--; }
myday = (unsigned char)((bcd2bin(mydate) + y + (y>>2) + ((31 * m) / 12)) % 7);
if (myday == 0) myday = 7;
}//----------
У меня компилятор ругается на undefined symbol 'bcd2bin' , как нужно его правильно прописать?
Мой код
[spoiler]
Код: Выделить всё
/*****************************************************
CodeWizardAVR V2.04.4a Advanced
Chip type : ATmega8
AVR Core Clock frequency: 4,000000 MHz
*****************************************************/
#include <mega8.h>
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#asm
.equ __ds1302_port=0x15 ;PORTC
.equ __ds1302_io=5
.equ __ds1302_sclk=4
.equ __ds1302_rst=3
#endasm
#include <ds1302.h>
unsigned char hour,min,sek; //часы, минуты, секунды
unsigned char day,month,year; //часы, минуты, секунды
unsigned char myday; // день недели
// ---------- вычислить день недели по дате ----------
void date2day(void) {
unsigned int y, m;
y = bcd2bin(year);
m = bcd2bin(month);
if (m > 2) { m -= 2; }
else { m += 10; y--; }
myday = (unsigned char)((bcd2bin(day) + y + (y>>2) + ((31 * m) / 12)) % 7);
if (myday == 0) myday = 7;
}//-
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
// DS1302 Real Time Clock initialization
// Trickle charger: Off
rtc_init(0,0,0);
lcd_init(16);
while (1)
{
rtc_get_time(&hour,&min,&sek); //считать время
rtc_get_date(&day,&month,&year); //считать дату
lcd_gotoxy(0,0);
lcd_putchar(hour/10+0x30);
lcd_putchar(hour%10+0x30);
lcd_putchar(':');
lcd_putchar(min/10+0x30);
lcd_putchar(min%10+0x30);
lcd_putchar('.');
lcd_putchar(sek/10+0x30);
lcd_putchar(sek%10+0x30);
lcd_gotoxy(0,1);
lcd_putchar(day/10+0x30);
lcd_putchar(day%10+0x30);
lcd_putchar('.');
lcd_putchar(month/10+0x30);
lcd_putchar(month%10+0x30);
lcd_putchar('.');
lcd_putsf("20");
lcd_putchar((year/10)%10+0x30);
lcd_putchar(year%10+0x30);
lcd_putchar(' ');
lcd_putchar(myday%10+0x30);
};
}
Архив с проектом и протеусом приложил к сообщению...;
- Danko
- Сверлит текстолит когтями
- Сообщения: 1287
- Зарегистрирован: Пн окт 13, 2008 11:45:54
- Откуда: РФ, Крым, г.Бахчисарай
- Контактная информация:
Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2
Без каких?без дополнительных функций,
Без этих: bcd2bin() или bin2bcd() ?
У меня в программе (коде) есть четыре глобальных переменных. У Вас они обозначены как:
Код: Выделить всё
unsigned char day,month,year; //часы, минуты, секунды
unsigned char myday; // день неделиПеред вызовом функции date2day() в первые три нужно занести соответствующие значения дня, месяца и года и по результату выполнения функции в четверной будет искомый результат.
т.к. в моем коде значения в переменных day,month,year хранятся в двоично-десятичном формате то и применяются функции преобразования bcd2bin() и bin2bcd().
Если у Вас значения в переменных хранятся в двоичном коде то функции преобразования из кода можно удалить.
Danko (в миру Даниил).
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"