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

Перекодировка для ЖКИ

а вот интересно ...

:cranky: Вам трудно ответить на конкретные вопросы? Зачем тему создавали?

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


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

мне нужно преобразовать в строку то-есть в char :)
Если бы вы потрудились почитать по ссылкам, то могли бы понять, что для перевода бинарного представления числа в символьное для начала нужно его (число) преобразовать в двоично-десятичное представление, где каждая тетрада (полубайт) имеет значение от 0 до 9. Дальнейшее преобразование в символы ASCII не представляет трудности, поскольку для этого достаточно к каждой тетраде прибавить код символа '0' - 0x30. В языке Си имеются и готовые функции для преобразования чисел в строку символов. Почитайте какой-нибудь "букварь" по языку Си наконец.

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


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

извините, temperaturefin-long

все типы переменных-long

buf должен быть не лонг, а указатель на char[]

Попробуйте char buf[10] (ну или 20, 30 - сколько надо символов)

 

В языке Си имеются и готовые функции для преобразования чисел в строку символов. Почитайте какой-нибудь "букварь" по языку Си наконец.

Дык эта... sprintf вроде как раз это и делает. Только ему указатель на правильный буфер надо подсунуть

sprintf(buf,"%d",temperaturefin);

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


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

buf должен быть не лонг, а указатель на char[]

Попробуйте char buf[10] (ну или 20, 30 - сколько надо символов)

 

 

Дык эта... sprintf вроде как раз это и делает. Только ему указатель на правильный буфер надо подсунуть

нет, buf у меня как раз обьявлен char buf[10]; но все -равно на выходе какая-то ерунда выходит, 0x10 "0l"

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


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

нет, buf у меня как раз обьявлен char buf[10]; но все -равно на выходе какая-то ерунда выходит, 0x10 "0l"

а "HelloWorld" выводит?

если константой забить, причём прямо в буфер

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


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

Не ленитесь пользоваться поиском! Тема двоично-десятичного преобразования (BCD - Binary-Coded Decimal) мусолится на форуме постоянно.
А причём тут BCD, простите? Ему надо просто коды АЦП пересчитать в температуру, а её отобразить в виде строки на дисплее.

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


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

Все, разобрался, всем большое спасибо! :biggrin:

Изменено пользователем goodking

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


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

А причём тут BCD, простите?
А что по-вашему делает sprintf при указании формата %d, как не BCD + конвертация в ASCII?

Ему надо просто коды АЦП пересчитать в температуру, а её отобразить в виде строки на дисплее.
Ну да. Загвоздка была как раз в отображении.

Все, разобрался, всем большое спасибо! :biggrin:
Разобрались - хорошо. Только нужно огласить причину, чтобы у отвечающих не пропало желание в следующий раз вновь помогать вам.

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


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

А что по-вашему делает sprintf при указании формата %d, как не BCD + конвертация в ASCII?

Ну да. Загвоздка была как раз в отображении.

Разобрались - хорошо. Только нужно огласить причину, чтобы у отвечающих не пропало желание в следующий раз вновь помогать вам.

причина была в неверном присвоении типов используемых переменных!

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


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

А что по-вашему делает sprintf при указании формата %d, как не BCD + конвертация в ASCII?
Это да.
для начала нужно его (число) преобразовать в двоично-десятичное представление, где каждая тетрада (полубайт) имеет значение от 0 до 9.
Вы просо усложняете немного. Зачем ему тут вообще знать про упакованный BCD? ИМХО это немного лишне для совсем начинающего:)

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


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

Это да.Вы просо усложняете немного. Зачем ему тут вообще знать про упакованный BCD? ИМХО это немного лишне для совсем начинающего:)
Как раз начинать нужно с основ языка, типовых алгоритмов и примитивов. В следующий раз ему понадобиться float на дисплей выводить и sprintf начнет требовать такой размер ОЗУ для стека, которого просто нет в кристалле. Что вы предложите: взять кристалл "пожирнее" или самостоятельно написать простой алгоритм вывода float на индикацию?

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


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

Как раз начинать нужно с основ языка, типовых алгоритмов и примитивов. В следующий раз ему понадобиться float на дисплей выводить и sprintf начнет требовать такой размер ОЗУ для стека, которого просто нет в кристалле. Что вы предложите: взять кристалл "пожирнее" или самостоятельно написать простой алгоритм вывода float на индикацию?

А что в таком случае надо сделать??

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


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

А что в таком случае надо сделать??
Застрелиться.
Как раз начинать нужно с основ языка, типовых алгоритмов и примитивов. В следующий раз ему понадобиться float на дисплей выводить и sprintf начнет требовать такой размер ОЗУ для стека, которого просто нет в кристалле. Что вы предложите: взять кристалл "пожирнее" или самостоятельно написать простой алгоритм вывода float на индикацию?
Вариантов достаточно. Ну если так пойти то начинать надо было с архитектуры MCU, понятиях стек, способы адресации, способы передачи аргументов. Изучить ассемблер хотя бы одного самого примитивного семейства. А уже потом браться за Си:) Ну а ещё раньше системы исчисления, форматы чисел, булеву алгебру и т.д. и т.п. Спорить дпльше не вижу смысла. Главное не загубить в человеке желания учиться и саморазвиваться! Остальное приложится!

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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