roboforum.ru

Технический форум по робототехнике.

Как вывести на LCD(HD44780) перемену типа float?

Как вывести на LCD(HD44780) перемену типа float?

rock » 17 фев 2009, 20:05

Прочитав краткий курс по AVR, огромное спасибо автору, захотел написать программку, но возник вопрос: как вывести на LCD(HD44780) перемену типа float? Из-за нехватки знаний не могу решить эту задачу. Кто может подскажите пожалуйста.

Re: Как вывести на LCD(HD44780) перемену типа float?

=DeaD= » 17 фев 2009, 20:37

В каком смысле "как"? По моему туда и обычные числа просто так не вывести...
Если уже умеешь выводить строки - напечатай число в строку sprintf'ом и выведи строку, которая получится.

Re: Как вывести на LCD(HD44780) перемену типа float?

rock » 17 фев 2009, 20:55

В курсе сказано, что для преобразования числа в строку есть itoa() и ltoa(). Или я не правильно что то понимаю?

Re: Как вывести на LCD(HD44780) перемену типа float?

avr123.nm.ru » 17 фев 2009, 21:29

rock писал(а):Прочитав краткий курс по AVR, огромное спасибо автору, захотел написать программку, но возник вопрос: как вывести на LCD(HD44780) перемену типа float? Из-за нехватки знаний не могу решить эту задачу. Кто может подскажите пожалуйста.


В курсе - http://avr123.nm.ru/z5.htm - тоже выводится число с точкой но оно не float такая же имитация в примерах в папке CVAVR

В хелпе CVAVR надо посмотреть раздел "LCD Functions" и наверно преобразовать float в строку и уже строку вывести на LCD.

=======

void ftoa(float n, unsigned char decimals, char *str)

converts the floating point number n to characters in string str.
The number is represented with a specified number of decimals.

void ftoe(float n, unsigned char decimals, char *str)

converts the floating point number n to characters in string str.
The number is represented as a mantissa with a specified number of decimals and an integer power of 10 exponent (e.g. 12.35e-5).

Re: Как вывести на LCD(HD44780) перемену типа float?

boez » 17 фев 2009, 21:55

Если надо выводить только плавающее число - можно поискать специализированную ф-ю типа ftoa. А если планируется выводить разные вещи на lcd - float,int, строки с разнообразными выравниваниями влево-вправо, может еще что-то - то есть прямой смысл использовать ф-ю sprintf. Да, она отжирает на авр пару килобайт памяти кода, если использована в программе. От количества использований ессно размер отжираемый не зависит.

Так что советую почитать что умеет sprintf и что умеет ftoa и выбрать соответственно своим задачам. В любом случает происходит преобразование числа в строку, а затем уже эту строку (массив char) выводим на LCD.

А, а еще, если памяти жалко - можно написать свою putc, которая выводит один символ на LCD (ее все равно придется писать) и юзать после этого printf. В avr-libc такая возможность точно была.

Re: Как вывести на LCD(HD44780) перемену типа float?

nest » 17 фев 2009, 22:05

rock писал(а):Прочитав краткий курс по AVR, захотел написать программку, но возник вопрос: как вывести на LCD(HD44780) перемену типа float?

изучал бы курс не на Си, а на asm - подобных проблем бы не возникало.

Re: Как вывести на LCD(HD44780) перемену типа float?

avr123.nm.ru » 17 фев 2009, 22:07

nest писал(а):
rock писал(а):Прочитав краткий курс по AVR, захотел написать программку, но возник вопрос: как вывести на LCD(HD44780) перемену типа float?

изучал бы курс не на Си, а на asm

На АСМ-е числа с плавающей точкой в легкую выводятся - раз и готово ! АСМ - это сила !

nest писал(а):подобных проблем бы не возникало.

У него и нет проблем. У него вопрос - это нормально для человека познающего что-то новое задавать вопросы.

Re: Как вывести на LCD(HD44780) перемену типа float?

nest » 17 фев 2009, 22:37

avr123.nm.ru, вместо того, что бы раскрашивать фломастером слова разным цветом в окошке, вы бы учебник в руки взяли и открыли для себя слово "пунктуация".
а то вас трудно понять, что же вы сказать своей писаниной хотите.

Re: Как вывести на LCD(HD44780) перемену типа float?

Сергей » 18 фев 2009, 01:52

тут нада не МК изучать, а простое программирование.

Re: Как вывести на LCD(HD44780) перемену типа float?

avr123.nm.ru » 18 фев 2009, 10:44

Сергей писал(а):тут нада не МК изучать, а простое программирование.
на АСМ-е обязательно ! потому что от Си моСк размягчается как у волка из красной пашечки - http://www.youtube.com/watch?v=TYy6H2qnPDo

Re: Как вывести на LCD(HD44780) перемену типа float?

Сергей » 18 фев 2009, 13:41

Почему размягчается? Объясните уж. Вот сколько уже пишу на Си, всегда встречаются сложные ситуации, потому как в Си основная работа заключаеца в использовании главного преимущества Си - указателей.

Re: Как вывести на LCD(HD44780) перемену типа float?

avr123.nm.ru » 18 фев 2009, 13:44

Сергей писал(а):Вот сколько уже пишу на Си, всегда встречаются сложные ситуации

Ответ выше уже был
nest писал(а):изучал бы курс не на Си, а на asm - подобных проблем бы не возникало.

Re: Как вывести на LCD(HD44780) перемену типа float?

Сергей » 18 фев 2009, 13:47

Короче, автор, купи книжку Кернигана и Ритчи, прочитай, изучи и все станет понятно. Там всего то страниц 300 гдето. А то идет какоето бессмысленное обсуждение.

Re: Как вывести на LCD(HD44780) перемену типа float?

avr123.nm.ru » 18 фев 2009, 13:50

Я бы советовал потратить время на программирование МК чтобы научится программировать МК.

Re: Как вывести на LCD(HD44780) перемену типа float?

Сергей » 18 фев 2009, 14:00

Только пользы от этого не будет, потому как человек не сможет отлаживать программы и смотреть лог в консоли. Для этого ему понадобица либо глючный Протеус либо еще какойнить симулятор. А если программировать под ПК, то ничо не нада, только мозгов немного для начала


Rambler\'s Top100 Mail.ru counter