roboforum.ru

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

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

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

avr123.nm.ru » 18 фев 2009, 14:02

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

А в самом МК нельзя отлаживать чтоль ?

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

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

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

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

rock » 18 фев 2009, 17:35

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

void ftoa(float n, unsigned char decimals, char *str)
avr123.nm.ru не могли бы вы подробно рассказать как правильно использовать эту функцию, если можно на примере. Спасибо.

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

boez » 18 фев 2009, 18:19

А в avr-libc (которая для программирования аврок на gcc, к примеру в составе пакета WinAVR идет) вообще функции ftoa нету. atof есть. А вместо ftoa/itoa/ltoa говорят юзайте sprintf :)

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

blindman » 18 фев 2009, 18:36

Насчет itoa/ltoa - неправда. А для float point есть dtostrf/dtostre.

Код: Выделить всёРазвернуть
andrey@underground:/usr/avr/lib/avr4$ avr-nm  libc.a | grep 'utoa\|ltoa\|itoa\|dtostrf\|dtostre'
itoa.o:
00000000 T itoa
ltoa.o:
00000000 T ltoa
ultoa.o:
00000000 T ultoa
utoa.o:
00000000 T utoa
dtostre.o:
00000000 T dtostre
dtostrf.o:
00000000 T dtostrf
andrey@underground:/usr/avr/lib/avr4$

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

rock » 18 фев 2009, 18:43

Спасибо, я обязательно поюзаю sprintf, но я хотел бы разобраться и с ftoa, чтоб знать в какой ситуации, что лучше использовать.

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

realsystem » 18 фев 2009, 18:44

Никакой с..ка разницы (с) :friends: Что комп что МК

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

blindman » 18 фев 2009, 18:48

realsystem писал(а):Никакой с..ка разницы (с)

Между чем?

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

boez » 18 фев 2009, 18:55

blindman писал(а):Насчет itoa/ltoa - неправда. А для float point есть dtostrf/dtostre.


Точно. Вот так и верь мануалу :) Причем в мануале эти функции есть! Токо в оглавлении нету, а искать некогда было :)

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

realsystem » 18 фев 2009, 19:55

blindman писал(а):Между чем?

В контексте
Сергей писал(а):человек не сможет отлаживать программы и смотреть лог в консоли
Отлаживать можно и при программировании компа, и при программировании МК.

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

rock » 19 фев 2009, 17:17

Я вижу помощи ждать неоткуда?

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

Сергей » 19 фев 2009, 17:22

Можно перенаправить вывод на дисплей и printf будет слать данные в дисплей. Как это сделать написано, если не изменяет память,в stdio.h или stdlib.h, там даж пример есть

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

Vooon » 19 фев 2009, 18:18

Для этого нужно стоздать файловое устройство (поток)
И присвоить его адрес стандартным потокам.

Для lcd будет что-то вроде:

Код: Выделить всёРазвернуть
#include <stdio.h>

int lcd_putchar(char c, FILE *stream);
{
// lcd_putchar
}

FILE lcd_fdev = FDEV_SETUP_STREAM(lcd_putchar, NULL, _FDEV_SETUP_WRITE);

int main()
{
    stdout = &lcd_fdev;

    printf("Output to lcd %d", 123);


    return 0;
}


Rambler\'s Top100 Mail.ru counter