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

 
 
> 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
Ответов
SysRq
сообщение Oct 31 2009, 11:12
Сообщение #2


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Да smile.gif

Теперь осталось разобраться со sprintf(): http://ru.wikipedia.org/wiki/Printf (раздел "Синтаксис строки форматирования", обязательно подраздел "Спецификатор типа").
Обратите внимание на то, что в Си "+" - это стока, а '+' - символ.
Также следует помнить, что остаток от деления отрицательного числа тоже будет отрицательным числом. И еще что если приказать программе трактовать знаковое число как беззнаковое, то отрицательное знаковое станет очень большим беззнаковым.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 4th August 2025 - 04:10
Рейтинг@Mail.ru


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