Перейти к содержанию
    

stm32 вывод результата на LCD без sprintf()

Если предположить, что результатом является некоторое десятичное число, то логично воспользоваться стандартной функцией для поразрядного извлечения данных:

#include <stdlib.h>

div_t div(int numerator, int denominator);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

sendcharlcd(tt/10+0x30);//Преобразуем число в код числа

  sendcharlcd(tt%10+0x30);

А меня интересует вот это произведение .Только одно но если число до 1000.Или если число после запятой сотые?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 hours ago, dimir said:

Как можно вывести результат на LCD без sprintf?

sprintf() выводит результат в строковый буфер. Безопасней пользоваться snprintf().

На любое устройство выводит fprintf() с указание файлового дескриптора. Например, у меня ПЛК выводит лог работы через локальную сеть на заданный терминал вызовом

fprintf( lanlog, "%d\n", loops );

Для LCD я создавал файл lcd  и просто писал в него как в обычную консоль. Ессно, с обработкой управляющих символов. Делал так для 1602. Очень удобно, когда отлаживаешься на обычном терминале, а потом путём замены stdin и stdout с conin и conout на lcdin и lcdout.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 hours ago, dimir said:
sendcharlcd(tt/10+0x30);//Преобразуем число в код числа

  sendcharlcd(tt%10+0x30);

А меня интересует вот это произведение .Только одно но если число до 1000.Или если число после запятой сотые?

tt = (tt - (int)tt) * 100;

sendcharlcd(tt/10+0x30); //Преобразуем число в код числа

sendcharlcd(tt%10+0x30);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, x893 сказал:

tt = (tt - (int)tt) * 100;

Оригинальный способ обнуления переменной. Лёгких путей не ищете.... :smile:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 minutes ago, jcxz said:

Оригинальный способ обнуления переменной. Лёгких путей не ищете.... :smile:

А если
float tt = 1.23f;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, x893 сказал:

А если
float tt = 1.23f;

А что - для float уже есть операция % ?  :shok:  видимо отстал от жизни.....

PS: Если float, то ваш код не скомпилится. По крайней мере в некоторых компиляторах си....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, jcxz said:

А что - для float уже есть операция % ?  :shok:  видимо отстал от жизни.....

PS: Если float, то ваш код не скомпилится. По крайней мере в некоторых компиляторах си....

Так гуру программирования подрихтуют. Моё дело общий вектор движения обозначить.
https://www.onlinegdb.com/online_c_compiler

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...