реклама на сайте
подробности

 
 
> DS1621+ и CVAVR, индикация
Scanner
сообщение Oct 30 2009, 18:34
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 355
Регистрация: 23-07-08
Из: Пензенская область
Пользователь №: 39 157



Собрал простой термометр - DS1621+ и LCD . Использовал стандартные модули CVAVR вот кусок основного кода :

Код
while (1)
      {  
      
    
    
        temper_ds=ds1621_temperature_10(0)/10;
       sprintf(lcd_buff,"t=%c%i.%u\xdfC","+",temper_ds,temper_ds%10);
        
                 lcd_clear();
           lcd_puts(lcd_buff);
          delay_ms(200);
          
      // Place your code here

      };


Проблема в следующем на индикатор выходят всё время значения типа - 23,3 24,4 25,5 ....30,0 и т.п.
Т.е. два последних разряда одинаковы. также значения меняются приблизительно через 1 сек. В чём может быть проблема?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Scanner
сообщение Oct 31 2009, 03:55
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 355
Регистрация: 23-07-08
Из: Пензенская область
Пользователь №: 39 157



Цитата(SysRq @ Oct 30 2009, 23:12) *
При использовании целочисленного типа (int), чтобы выделить целое, надо делить (/), чтобы выделить дробную часть - взять остаток от деления (%)

Тогда получается что я зделал не корректно разделив на 10 вот в этой строке
Код
temper_ds=ds1621_temperature_10(0)/10;

и переменная temper_ds после этого содержит всего два разряда

А в строке преобразования типа

Код
sprintf(lcd_buff,"t=%c%i.%u\xdfC","+",temper_ds,temper_ds%10);

происходит выделение дробной части только из первых двух разрядов (36 ) в итоге и получается моя проблема что всегда 23,3 или 24,4 Тогда скорее всего надо написать так:

Код
temper_ds=ds1621_temperature_10(0);
       sprintf(lcd_buff,"t=%c%i.%u\xdfC","+",[color="#FF0000"]temper_ds/10[/color],temper_ds%10);


Т.е. передавать на преобразование три старших разряда не деля их предварительно.

Сообщение отредактировал Scanner - Oct 31 2009, 03:56
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 13:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016