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

 
 
> Преобразовать float в двоично-десятичное (WinAVR C), Как это сделать собственно
Batman
сообщение Apr 3 2007, 14:58
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 142
Регистрация: 3-04-07
Пользователь №: 26 732



Подскажите, как программно перевести переменную с плавающей точкой FLOAT в BCD или что нибудь похожее для вывода на семисегментный светодиодный индикатор.
Я делаю калибровку измерительного прибора, по формуле:

TEMP = (((float)ADC-OFFSET)*T1) / ((ADCT1-OFFSET));

TEMP - искомое значение флоат формата

ADC - текущее значение АЦП 16-бит

OFFSET - показания АЦП при 0 на входе

T1 - эталонная температура,значением которой и производится калибровка

ADCT1 - значение АЦП при температуре Т1

Измерения нужно проводить точно, поэтому решил использовать арифметику с плавающей точкой,
а вот как перевести в BCD, чтоб наблюдать воочию на семисегментнике...сижу думаю...и думаю... и smile3046.gif .
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Freeze Anti
сообщение Oct 31 2007, 08:51
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 153
Регистрация: 29-03-07
Из: Саратов
Пользователь №: 26 613



Я нечто наподобие делал, только с фиксированной запятой (Мы же все равно имеем фиксированное число разрядов)
Значит организуем цикл. Далее объявляем переменную (например Base) и приравниваем ее круглому числу, заведомо большему нашего float, например 10000.
Потом поехали:
делим float на это число; округляем; приводим к char; прибавляем 30; если это не ведущий ноль - делаем первым символом строки; счетчик символов строки инкерементируем; Base делим на 10; Если Base = 0.1 - рисуем десятичную точку.
Цикл окончен.
В итоге, по идее, должна получиться строковая переменная с нашим числом.


--------------------
!!! All you need is LOVE !!!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 01:48
Рейтинг@Mail.ru


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