AVL писал(а):Вот правильный ответ:
Код: Выделить всё
while (1)
{
// Place your code here
unsigned long int res = 123456;
printf("res = %lu\n", res);
}AVL писал(а):Вот правильный ответ:
Код: Выделить всё
while (1)
{
// Place your code here
unsigned long int res = 123456;
printf("res = %lu\n", res);
}Код: Выделить всё
sprintf(lcd_buffer,"t=%i.%u\xdfC",temp,temp%1);Возможно ли сделать чтобы температура отображалась с двумя знаками после запятой?
Код: Выделить всё
temp=12.345;
sprint (buffer, "T = %.2f", temp)Аlex писал(а):Возможно ли сделать чтобы температура отображалась с двумя знаками после запятой?Выведет в буфер: "T = 12.34".Код: Выделить всё
temp=12.345;
sprint (buffer, "T = %.2f", temp)
Код: Выделить всё
temp=ds18b20_temperature(&rom_code[i][0]); //читаем температуру с выбранного датчика
if (temp>1000){ //если датчик выдаёт больше 1000
temp=4096-temp; //отнимаем от данных 4096
temp=-temp; //и ставим знак "минус"
}
sprintf(lcd_buffer,"T = %.2f",temp); //записуемв масив для экрана температуру и всё такое
//k=1;
//ftoa(temp,k,tem);
lcd_clear(); //чистим дисплей перед выводом
lcd_puts(lcd_buffer); //выводим масив на LCD
delay_ms(500); urry писал(а):Непонятно, что есть темп...
Он хочет чего-то такого, возможно...
sprintf(lcd_buffer,"t=%d.%02d",temp/100,temp%100);
Если темп целое...
Значит компилятор не поддерживает вывод с плавающей точнкой, либо отключена эта возможность для экономии ресурсов (что вероятнее всего).Не получается. Выводит T=2f.
Aid1992 писал(а):Температура отображается с одним знаком после запятой
Что Вам нужно то ? Определитесь....Aid1992 писал(а):надо вывести тоже с одним знаком после запятой
Код: Выделить всё
while(1) //бесконечный цикл, если датчик подключен
{
temp=ds18b20_temperature(&rom_code[i][0]); //читаем температуру с выбранного датчика
if (temp>1000){ //если датчик выдаёт больше 1000
temp=4096-temp; //отнимаем от данных 4096
temp=-temp; //и ставим знак "минус"
}
sprintf(lcd_buffer,"t=%e %.1e %2.2e\n",temp); //записываем в массив для экрана температуру и всё такое
//k=1;
//ftoa(temp,k,tem);
lcd_clear(); //чистим дисплей перед выводом
lcd_puts(lcd_buffer); //выводим масив на LCD
delay_ms(500); //ждём 500мсЧто значит "неправильный" ? Выводит не ту температуру или не так как Вам хочется ?Вывод не правильный.
Ну и как тогда Вы хотите вывести с точкой ?Aid1992 писал(а):ds18b20_temperature unsigned char.
Код: Выделить всё
if (temp>1000){ //если датчик выдаёт больше 1000
temp=4096-temp; //отнимаем от данных 4096
temp=-temp; //и ставим знак "минус"
}
Аlex писал(а):Ну и как тогда Вы хотите вывести с точкой ?
Переделывайте функцию, чтобы выводила либо с точкой (float или double), либо int, в котором значение умножено на 10.
Аlex писал(а):И вот это:Что за волшебные манипуляции ?Код: Выделить всё
if (temp>1000){ //если датчик выдаёт больше 1000
temp=4096-temp; //отнимаем от данных 4096
temp=-temp; //и ставим знак "минус"
}Сижу, въезжаю, никак не могу въехать, что Вы тут пытаетесь сделать...