Страница 1 из 1
Ищу прошивку attiny 2313 термометра
Добавлено: Пт окт 30, 2015 03:54:52
Batters_ghw
Приветствую форумчане, решил собрать термометр
http://radiokot.ru/circuit/digital/home/61/. Но вот незадача, так как термометр будет устанавливаться в машину, а десятые доли градуса мне не нужны, хотел бы попросить вас переписать прошивку.
http://www.radiokot.ru/forum/download/file.php?id=33869 Так же хочу поинтересоваться, можно ли подключить 2 датчика ds18b20 и если да то с какой частотой будут чередоваться показания с них, в каком файле исходников и какой строке это можно поменять?
Заранее благодарен!

Re: Ищу прошивку attiny 2313 термометра
Добавлено: Пт окт 30, 2015 06:58:08
АлександрЛ
Batters_ghw писал(а):Приветствую форумчане, решил собрать термометр
http://radiokot.ru/circuit/digital/home/61/. Но вот незадача, так как термометр будет устанавливаться в машину, а десятые доли градуса мне не нужны, хотел бы попросить вас переписать прошивку.
Ну, специально для вас прошивку переписывать никто не будет, тем более, что, для того, чтобы не было "десятых", достаточно этот разряд индикатора просто не использовать (не ставить, или не подключать.
По "почти этой" схеме у меня термометр собран

- как раз для индикатора с ОА,но четырёхразрядном, с индикацией знака температуры в левом разряде. Резисторы в цепях сегментов лучше всё- таки, поставить- иначе порты МК будут перегружены по току.
платы- "вид снизу"
и "сверху"
Прошивка
только измените txt на hex
фьюзы:
Это всё считано программой Uniprof
Два термодатчика поддерживает, на сколько я помню (или как мне показалось), переключается индикация секунд через пять, может чуть больше. Правда, второй датчик мне пришлось подбирать- при каком- то сочетании датчиков они не переключались..

Re: Ищу прошивку attiny 2313 термометра
Добавлено: Сб окт 31, 2015 01:03:19
Batters_ghw
Это всё очень хорошо, но танцы с бубном в виде покупки ещё 2-х индикаторов меня не устраивают, к тому же их не вставить в место заглушки в моё авто. Вот строки которые непосредственно отвечают за вывод информации, тут всё понятно, но так как я не программист, то изменить данные строки не могу ибо понятия не имею что нужно вычеркнуть, а что дописать.
Код: Выделить всё
void view_term(void) {
unsigned char celie, drob, tmp;
unsigned int temp, celie_tmp, drob_tmp;
temp = (unsigned int) temperature;
if (temperature>=0) {
digit_out[0]=PROBEL; // первый символ (сотни) пустой
} else {
temp = ( ~temp ) + 0x0001; // если число отрицательное перевести его в норм.вид
digit_out[0]=MINUS; // и высветить знак минус (в дальнейшем атрибут отр.темп.)
};
zpt_ON=1;
celie_tmp = temp >> 4; // целая часть числа
drob_tmp = temp & 0x000F; // дробная часть числа с точностью 1/16 градуса
drob = (unsigned char) ((drob_tmp * 10) / 16); // преобразование дробной части в формате "1/16 градуса" в десятичный формат с точностью 0,1 градуса
celie = (unsigned char) celie_tmp; // я люблю явное преведение типов
if (celie >= 100) {tmp=bin2bcd(celie-100); digit_out[0] = 1; } else { tmp=bin2bcd(celie); } // вычислить целую часть
if ((celie >= 100) || ((digit_out[0] == MINUS) && (celie >= 10))) { // если больше 100,0 гр. или если темп. меньше -10 точность 1 гр.
zpt_ON=0;
digit_out[1] = tmp >> 4; // десятки
digit_out[2] = tmp & 0x0F; // единицы
}
if ((digit_out[0] == MINUS) && (celie < 10)) { // если темп.меньше 0 и больше -10 точность 0,1 гр.
digit_out[1] = celie; // единицы
digit_out[2] = drob; // дробная часть
}
if ((digit_out[0] == PROBEL) && (celie < 100)) { // если темп. меньше 100,0 гр и больше 0 гр точность 0,1 гр.
if (tmp >> 4) digit_out[0] = tmp >> 4; // десятки - если десятков нет то и не показывать
digit_out[1] = tmp & 0x0F; // единицы
digit_out[2] = drob; // дробная часть
}
} // -------------------------------------------------------------------------
Re: Ищу прошивку attiny 2313 термометра
Добавлено: Сб окт 31, 2015 01:35:04
АлександрЛ
Batters_ghw писал(а):Это всё очень хорошо, но танцы с бубном в виде покупки ещё 2-х индикаторов меня не устраивают, к тому же их не вставить в место заглушки в моё авто.

Все "танцы с бубнами" будут заключаться в том, что к выводам 2 и 7 микроконтроллера просто НИЧЕГО НЕ ПОДКЛЮЧАЕТСЯ....
То же самое будет и с исходной схемой-
http://radiokot.ru/circuit/digital/home/61/
к выводам 8 и 9 вы ничего не подключаете....
Re: Ищу прошивку attiny 2313 термометра
Добавлено: Ср ноя 04, 2015 04:13:20
Batters_ghw
Разобрался я, но теперь в другом косяк. Как сделать чтоб было не "-0" ,а просто "0"
Код: Выделить всё
void view_term(void) {
unsigned char celie, tmp;
unsigned int temp, celie_tmp;
temp = (unsigned int) temperature;
if (temperature>=0) {
digit_out[0]=PROBEL; // первый символ (сотни) пустой
} else {
temp = ( ~temp ) + 0x0001; // если число отрицательное перевести его в норм.вид
digit_out[0]=MINUS; // и высветить знак минус (в дальнейшем атрибут отр.темп.)
};
zpt_ON=0;
celie_tmp = temp >> 4; // целая часть числа
celie = (unsigned char) celie_tmp; // я люблю явное преведение типов
if (celie >= 100) {tmp=bin2bcd(celie-100); digit_out[0] = 1; } else { tmp=bin2bcd(celie); } // вычислить целую часть
if ((celie >= 100) || ((digit_out[0] == MINUS) && (celie >= 10))) { // если больше 100,0 гр. или если темп. меньше -10 точность 1 гр.
digit_out[1] = tmp >> 4; // десятки
digit_out[2] = tmp & 0x0F; // единицы
}
if ((digit_out[0] == MINUS) && (celie < 10)) { // если темп.меньше 0 и больше -10 точность 1 гр.
digit_out[1] = PROBEL; // десятки
digit_out[2] = celie; // единицы
}
if ((digit_out[0] == PROBEL) && (celie < 100)) { // если темп. меньше 100,0 гр и больше 0 гр точность 1 гр.
digit_out[1] = PROBEL; // десятки
if (tmp >> 4) digit_out[1] = tmp >> 4; // десятки - если десятков нет то и не показывать
digit_out[2] = tmp & 0x0F; // единицы