roboforum.ru

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

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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

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

Сообщение rock » 17 фев 2009, 20:05

Прочитав краткий курс по AVR, огромное спасибо автору, захотел написать программку, но возник вопрос: как вывести на LCD(HD44780) перемену типа float? Из-за нехватки знаний не могу решить эту задачу. Кто может подскажите пожалуйста.
rock
 
Сообщения: 25
Зарегистрирован: 13 фев 2009, 14:51
Откуда: Minsk

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

Сообщение =DeaD= » 17 фев 2009, 20:37

В каком смысле "как"? По моему туда и обычные числа просто так не вывести...
Если уже умеешь выводить строки - напечатай число в строку sprintf'ом и выведи строку, которая получится.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение rock » 17 фев 2009, 20:55

В курсе сказано, что для преобразования числа в строку есть itoa() и ltoa(). Или я не правильно что то понимаю?
rock
 
Сообщения: 25
Зарегистрирован: 13 фев 2009, 14:51
Откуда: Minsk

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).
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение boez » 17 фев 2009, 21:55

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

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

А, а еще, если памяти жалко - можно написать свою putc, которая выводит один символ на LCD (ее все равно придется писать) и юзать после этого printf. В avr-libc такая возможность точно была.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

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

Сообщение nest » 17 фев 2009, 22:05

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

изучал бы курс не на Си, а на asm - подобных проблем бы не возникало.
Аватара пользователя
nest
 
Сообщения: 977
Зарегистрирован: 21 янв 2005, 12:16
Откуда: Germany
Предупреждения: -4
прог. языки: asm

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

Сообщение avr123.nm.ru » 17 фев 2009, 22:07

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

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

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

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

У него и нет проблем. У него вопрос - это нормально для человека познающего что-то новое задавать вопросы.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение nest » 17 фев 2009, 22:37

avr123.nm.ru, вместо того, что бы раскрашивать фломастером слова разным цветом в окошке, вы бы учебник в руки взяли и открыли для себя слово "пунктуация".
а то вас трудно понять, что же вы сказать своей писаниной хотите.
Аватара пользователя
nest
 
Сообщения: 977
Зарегистрирован: 21 янв 2005, 12:16
Откуда: Germany
Предупреждения: -4
прог. языки: asm

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

Сообщение Сергей » 18 фев 2009, 01:52

тут нада не МК изучать, а простое программирование.
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

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

Сообщение avr123.nm.ru » 18 фев 2009, 10:44

Сергей писал(а):тут нада не МК изучать, а простое программирование.
на АСМ-е обязательно ! потому что от Си моСк размягчается как у волка из красной пашечки - http://www.youtube.com/watch?v=TYy6H2qnPDo
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение Сергей » 18 фев 2009, 13:41

Почему размягчается? Объясните уж. Вот сколько уже пишу на Си, всегда встречаются сложные ситуации, потому как в Си основная работа заключаеца в использовании главного преимущества Си - указателей.
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

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

Сообщение avr123.nm.ru » 18 фев 2009, 13:44

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

Ответ выше уже был
nest писал(а):изучал бы курс не на Си, а на asm - подобных проблем бы не возникало.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение Сергей » 18 фев 2009, 13:47

Короче, автор, купи книжку Кернигана и Ритчи, прочитай, изучи и все станет понятно. Там всего то страниц 300 гдето. А то идет какоето бессмысленное обсуждение.
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

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

Сообщение avr123.nm.ru » 18 фев 2009, 13:50

Я бы советовал потратить время на программирование МК чтобы научится программировать МК.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение Сергей » 18 фев 2009, 14:00

Только пользы от этого не будет, потому как человек не сможет отлаживать программы и смотреть лог в консоли. Для этого ему понадобица либо глючный Протеус либо еще какойнить симулятор. А если программировать под ПК, то ничо не нада, только мозгов немного для начала
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4