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

датчики DS18B20

1 18 21

Хотел бы переписать данный код под датчик DS18B20 , но сам я не программист;(

 

Готовое решение (целиком) для вашей задачи лежит здесь:
тыц

пробовал - работает.

 

и еще тут:
Сам не пробовал, но в описании автор дал фото экрана прибора.

 

Код по ссылке имеет функцию авто отключения термометра, но написан под датчик DS18S20 , т.е. нужна помощь в коректировке кода под DS18B20. Наверно за снятие показаний отвечает етот кусочек. Для работы с 1wire использованы библиотеки из CodeVision. Спасибо!

// читаем значение температуры
w1_init();
DisplayData20();
w1_write(0xCC);
w1_write(0xBE);
DisplayData20();

cLSB=w1_read();
cMSB=w1_read();
cLSB=cLSB>>1;
if (cMSB & 0xF0)
cLSB=cLSB | 0b10000000;
T=cLSB;

 

Andrejka: Для работы с 1wire использованы библиотеки из CodeVision. Спасибо!
в CV 2.05 есть встроенные функции работы с ds18b20. Например запрос температуры для одного термодатчика выглядит так:

temperature=ds18b20_temperature(0);

На выходе получаем значение температуры во float. Т.е. не нужно читать старшую и младшую часть и т.д.
Остается дописать отображение с простейшим обработчиком сбоя термодатчика, например так:

lcd_gotoxy(0,1);
if (temperature!=-9999){
sprintf(lcdbuf,"%+3.0f ",temperature);
}
else sprintf(lcdbuf,"X3.. ");
lcd_puts(lcdbuf);

и все будет работать. Этот фрагмент взял уже из своей программы и он точно работает .

 

Спасибо за ответ, а сложно ли подогнать мой код под датчик DS18B20? У меня вывод на 7SEG LED.

 

еще один проектик - термореле на STM8S,DS18B20 (Cosmic-C): http://qlwlp.livejournal.com/5448.html

 

еще один проектик - термореле на STM8S,DS18B20 (Cosmic-C): http://qlwlp.livejournal.com/5448.html

кто проект сохранил ?
странички нету,вот говно всех этих новоявленых блогов-сегодня есть,завтра нет.

 

Добавил измерение температуры в часы на 2313. Измерение происходит по нажатию кнопки и индицируется 3 секунды.(для простоты и меряется три раза)
Проблема в том, что первые 2сек на индикатор выводится старое значение, и только в 3ю новое.
Если отключить датчик и подключить снова, то показание будет 85, что свидетельствует о том ,что считывание из датчика происходит, а измерение нет.
Что за хрень. Возможно ли, что датчику мало одного сброса?

 

Даете датчику команду на начало преобразования. Делаете паузу на время преобразования. Считываете значение.
Может мало времени оставляете датчику на преобразование?