Заранее благодарен!
Ищу прошивку attiny 2313 термометра
-
Batters_ghw
- Первый раз сказал Мяу!
- Сообщения: 22
- Зарегистрирован: Сб фев 14, 2015 01:21:10
Ищу прошивку attiny 2313 термометра
Приветствую форумчане, решил собрать термометр http://radiokot.ru/circuit/digital/home/61/. Но вот незадача, так как термометр будет устанавливаться в машину, а десятые доли градуса мне не нужны, хотел бы попросить вас переписать прошивку. http://www.radiokot.ru/forum/download/file.php?id=33869 Так же хочу поинтересоваться, можно ли подключить 2 датчика ds18b20 и если да то с какой частотой будут чередоваться показания с них, в каком файле исходников и какой строке это можно поменять?
Заранее благодарен!
Заранее благодарен!
- Реклама
- АлександрЛ
- Друг Кота
- Сообщения: 43912
- Зарегистрирован: Пн ноя 30, 2009 03:00:01
- Откуда: Нерезиновая
Re: Ищу прошивку attiny 2313 термометра
Ну, специально для вас прошивку переписывать никто не будет, тем более, что, для того, чтобы не было "десятых", достаточно этот разряд индикатора просто не использовать (не ставить, или не подключать.Batters_ghw писал(а):Приветствую форумчане, решил собрать термометр http://radiokot.ru/circuit/digital/home/61/. Но вот незадача, так как термометр будет устанавливаться в машину, а десятые доли градуса мне не нужны, хотел бы попросить вас переписать прошивку.
По "почти этой" схеме у меня термометр собран
- как раз для индикатора с ОА,но четырёхразрядном, с индикацией знака температуры в левом разряде. Резисторы в цепях сегментов лучше всё- таки, поставить- иначе порты МК будут перегружены по току. платы- "вид снизу" и "сверху" Прошивка только измените txt на hex
фьюзы: Это всё считано программой Uniprof
Два термодатчика поддерживает, на сколько я помню (или как мне показалось), переключается индикация секунд через пять, может чуть больше. Правда, второй датчик мне пришлось подбирать- при каком- то сочетании датчиков они не переключались..
-
Batters_ghw
- Первый раз сказал Мяу!
- Сообщения: 22
- Зарегистрирован: Сб фев 14, 2015 01:21:10
Re: Ищу прошивку attiny 2313 термометра
Это всё очень хорошо, но танцы с бубном в виде покупки ещё 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; // дробная часть
}
} // -------------------------------------------------------------------------- АлександрЛ
- Друг Кота
- Сообщения: 43912
- Зарегистрирован: Пн ноя 30, 2009 03:00:01
- Откуда: Нерезиновая
Re: Ищу прошивку attiny 2313 термометра
Batters_ghw писал(а):Это всё очень хорошо, но танцы с бубном в виде покупки ещё 2-х индикаторов меня не устраивают, к тому же их не вставить в место заглушки в моё авто.
То же самое будет и с исходной схемой-
http://radiokot.ru/circuit/digital/home/61/
к выводам 8 и 9 вы ничего не подключаете....
-
Batters_ghw
- Первый раз сказал Мяу!
- Сообщения: 22
- Зарегистрирован: Сб фев 14, 2015 01:21:10
Re: Ищу прошивку attiny 2313 термометра
Разобрался я, но теперь в другом косяк. Как сделать чтоб было не "-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; // единицы
- Реклама

