Страница 1 из 1

вывод на LCD

Добавлено: Чт сен 24, 2015 14:08:11
divradio
CVavr . Нужно вывести число например 123456789 в форматированном виде например 12 345 6789 вместо пробелов можно точки .
Функция sprintf с большими числами не работает , ltoa в строку преобразует , но информации по форматированию никакой не нашёл , наверно не может , Пробовал как когдато для ПИКов делал из массива познаково , но вместо пустых знаков каракули лезут .Может что посоветуйте ?

Re: вывод на LCD

Добавлено: Чт сен 24, 2015 15:12:13
ARV

Код: Выделить всё

char str[] = "1234567890";
unsigned char i, pos;

i = strlen(str) % 3;
pos = 0;

while(str[pos] != 0){
   if((i == 0) && (pos != 0)){
      lcd_putc(' ');
      i = 3;
   }
   lcd_putc(str[pos++]);
   i--; 
}
кажется так как-то...

Re: вывод на LCD

Добавлено: Чт сен 24, 2015 15:51:22
pyzhman
Там формат не тысячный, а 2знака-3-4.

Re: вывод на LCD

Добавлено: Чт сен 24, 2015 16:06:21
divradio
компилятор не проглатил ...
В принципе устройство типа частотомера и уже работает с функцией ltoa , но захотелось красоты ,если б результат был в определённом кол-ве цифр вопроса не возникло , но он меняется в широком диапазоне и пустые места в массиве после преобразования заполняются каракулями ...Когда то для ПИКа в частотомере писал на асемблере ппреобразование 16в 10 ,там вставки легко делаются, но здесь асемблер немного другой да и лениво уже изучать его .
А формат не важен 2-3-4 или 4-5 или 3-6... главное как длинную строку поделить на части

Re: вывод на LCD

Добавлено: Чт сен 24, 2015 16:12:03
pyzhman
При непроглатывании (здесь именно "а") компилятор выдает причину.

Re: вывод на LCD

Добавлено: Пт сен 25, 2015 11:59:12
divradio
Благодарю всех, вопрос решил ! тему можно закрыть!