ViKo 1 8 ноября, 2009 Опубликовано 8 ноября, 2009 · Жалоба Не нашел в Keil функции преобразования целого числа в строку, ну, как itoa в Hi-Tech C for PIC, например. Хочу вывести код с АЦП на ЖКИ. Неужто придется самому изобретать такую тривиальную вешь? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zksystem 0 8 ноября, 2009 Опубликовано 8 ноября, 2009 · Жалоба Не нашел в Keil функции преобразования целого числа в строку, ну, как itoa в Hi-Tech C for PIC, например. Хочу вывести код с АЦП на ЖКИ. Неужто придется самому изобретать такую тривиальную вешь? а printf("value=%u",uiNumber); не катит? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 8 ноября, 2009 Опубликовано 8 ноября, 2009 · Жалоба а printf("value=%u",uiNumber); не катит? А как указать, куда "катить"? Есть отладочная плата MCBSTM32, на ней ЖКИ двухстрочный. Запустил проект Blinky, там для ЖКИ есть несколько функций extern void lcd_init (void); extern void lcd_clear (void); extern void lcd_putchar (char c); extern void set_cursor (int column, int line); extern void lcd_print (char *string); extern void lcd_bargraph (int value, int size); extern void lcd_bargraphXY (int pos_x, int pos_y, int value); Как мне к ним прицепить printf? Я пробовал, не получилось. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
baralgin 0 8 ноября, 2009 Опубликовано 8 ноября, 2009 · Жалоба Простейшая функция: char* adc2str(uint_fast16_t d, char* out) { out[4] = '\0'; out[3] = '0' + ( d ) % 10; out[2] = '0' + ( d /= 10 ) % 10; out[1] = '0' + ( d /= 10 ) % 10; out[0] = '0' + ( d / 10 ) % 10; return out; } На арме должна работать быстро(у меня примерно такая выполняется за 1мкс на stm32-28Мц). Использовать примерно так: char str[5]; adc2str(adc_value, str); Эта функция только для 4-ёх значного числа, но легко модифицируется для любых чисел. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HarmEr 0 8 ноября, 2009 Опубликовано 8 ноября, 2009 · Жалоба а printf("value=%u",uiNumber); не катит? sptrinf (dst, "%u", n); { int i, j; /* convert number to string. */ for (i = 0;;) { dst[i++] = '0' + n % 10; n = n / 10; if (n == 0) break; } /* terminate string. */ dst[i] = '\0'; /* swap chars ordering. */ for (j = 0; i; ++j) { char c; c = dst[--i]; dst[i] = dst[j]; dst[j] = c; } } p.s. Если нужен более быстрый код, без повторного обращения к буферу, то стоит предварительно логарифмировать N через бинарное дерево и заполнить буфер с конца. Также рекомендую оперцию деления заменить на "деление на константу" через умножение и сдвиги. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 8 ноября, 2009 Опубликовано 8 ноября, 2009 · Жалоба За примеры преобразования числа в строку - Спасибо! Нашел, как перенаправить printf на ЖКИ. В файле Retarget.c подменил функцию fputc extern void lcd_putchar(char c); /// int fputc (int ch, FILE *f) { return (ser_putchar(ch)); } int fputc (int ch, FILE *f) { lcd_putchar((char)ch); return ch; } Теперь число выводится на индикатор printf("%d", AD_value); а за ним еще лезет текст "AD value =". Но это уже другой вопрос. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorMarx 0 8 ноября, 2009 Опубликовано 8 ноября, 2009 · Жалоба Батенька, вам учить язык C нужно :), а не на форумах такие вопросы спрашивать. Пардон за банальный совет ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 8 ноября, 2009 Опубликовано 8 ноября, 2009 · Жалоба "Творчески переработав" предложенное, сотворил следующую функцию void NumberToString (int Number, char * StrBuf) { StrBuf[5] = '\0'; for (signed char i=4; i>=0; i--) { StrBuf[i] = '0' + Number % 10; Number /= 10; } } Ну а в программе использую просто char AD_Buffer[7]; NumberToString(AD_value, AD_Buffer); printf("ADC = %s", AD_Buffer); Спасибо всем откликнувшимся (кроме...)! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 8 ноября, 2009 Опубликовано 8 ноября, 2009 · Жалоба Moderator: Тема избита до невозможности http://www.google.lv/search?client=opera&a...-8&oe=utf-8 Автору настоятельная рекомендация прежде чем мусорить - пользоваться поиском. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 8 ноября, 2009 Опубликовано 8 ноября, 2009 · Жалоба Да блин, спасибо за сокровенные знания! А то мы бы так в серости и остались пребывать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться