AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
22.07.2013, 16:00
|
|
Временная регистрация
Регистрация: 04.02.2013
Сообщений: 78
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
txt1:= 'VOLTAGE=';
buff:= ADC_Read (0);
U:= buff*5/1023;
FloatToStr(U, txt4);
LCD_Out(1,1,txt1+txt4+'V');
на экране (VOLTAGE=0.15151V)
|
|
|
|
22.07.2013, 18:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
Так я и думал, что с числом ничего не происходит. Используйте sprintf для форматирования вывода.
__________________
There's always more than one way to skin a cat.
|
|
|
|
22.07.2013, 21:56
|
|
Временная регистрация
Регистрация: 04.02.2013
Сообщений: 78
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
в микропаскале нет такой функции
|
|
|
|
22.07.2013, 22:03
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,951
Сказал спасибо: 2,547
Сказали Спасибо 11,840 раз(а) в 5,933 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
Значит, искусственно. Умножить на 1000, присвоить значение целой переменной, округлить. Разделить 1000 с присвоением "плавающей" переменной. Незначащие нули рисовать не будет.
А что делать, если нету? Наслаждаться извращениями.
ПС. Я бы сделал так.
INTU:= buff*500/1023;
FloatToStr(INTU/100.0, txt4);
Пардоньте, ежели чего не так, с Паскалем стараюсь дела не иметь, только по большой нужде.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
Последний раз редактировалось akegor; 22.07.2013 в 22:36.
|
|
|
|
22.07.2013, 22:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
Сообщение от ua3rad
|
в микропаскале нет такой функции
|
Значит, нужно было иначе формулировать этот вопрос:
Сообщение от ua3rad
|
Есть ли какая нибудь функция или процедура в mikroPascale или в mikroC для ...
|
Паскалем для АВР не пользуюсь, так как его обсудить не с кем.
__________________
There's always more than one way to skin a cat.
|
|
|
|
23.07.2013, 08:54
|
|
Временная регистрация
Регистрация: 04.02.2013
Сообщений: 78
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
Спасибо за совет!!!
|
|
|
|
23.07.2013, 09:39
|
|
Временная регистрация
Регистрация: 04.02.2013
Сообщений: 78
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
Все получилось.
var
txt4 : array[9] of char;
U_txt : array[9] of char;
i,h: byte;
buff: word;
U: real;
buff:= ADC_Read (0);
U:= buff*5/1023;
// Округляем до сотых----------------------------
U:= Ceil(U*100)/100;
FloatToStr(U, txt4);
h:= length (txt4);
for i:=0 to h-4 do U_txt[i]:= txt4[i];
//---------------------------------------------------------------------
|
|
|
|
23.07.2013, 13:16
|
|
Временная регистрация
Регистрация: 04.02.2013
Сообщений: 78
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
Осваиваю LCD. Столкнулся с такой проблемой?
var
txt3 : array[5] of char;
ADC_txt : array[4] of char;
i,j: byte;
buff: word;
txt2:= 'Kod ADC=';
buff:= ADC_Read (0);
WordToStr(buff, txt3); (например '','','3','1','2','' )
if buff ‹ 10 then k:= 4 else
if buff ‹ 100 then k:= 3 else
if buff ‹ 1000 then k:= 2 else k:= 1;
j:= k;
for i:= 0 to 4 do
begin
if i‹= 4-k then
begin
ADC_txt[i]:= txt3[j];
inc(j);
end
else ADC_txt[i]:= '';
end;
теперь ('3','1','2','','','')
LCD_Out(2,1,txt2+ADC_txt);
Если код ацп увеличивается, то результат (Kod ADC=1 увеличиваем Kod ADC=12 увеличиваем Kod ADC=123 увеличиваем Kod ADC=1023 увеличиваем)-все хорошо
Когда я начинаю уменьшать код, то (Kod ADC=1023 уменьшаем Kod ADC=8903 уменьшаем Kod ADC=0023 уменьшаем), т.е. было число 4-х значное, потом стало 3-х значное, а последний знак от 4-х значного числа остался и т.д.
как это исправить
|
|
|
|
23.07.2013, 13:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
ua3rad, я, признаться, не писал про " умножить на сто / отбросить др.часть / разделить на сто" чтобы не обидеть, и вдруг - " спасибо за совет"... программу из топора пишете?
__________________
There's always more than one way to skin a cat.
|
|
|
|
23.07.2013, 13:55
|
|
Временная регистрация
Регистрация: 04.02.2013
Сообщений: 78
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Программирование AVR, FUSE и все что с этим связано.
Спасибо за то, что откликнулись. как придумал, так и написал код. Я просто осваиваю LCD. Вывожу на индикатор напряжение с АЦП. Может вопросы и тупые, так форум для вопросов и ответов создан.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:25.
|
|