Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Математика с дробни числа в CodevisionAVR
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=3823
Страница 1 от 1

Автор:  Ugeen [ Вто Мар 06, 2007 10:54 am ]
Заглавие:  Математика с дробни числа в CodevisionAVR

Колеги,нямам достатъчно опит с математиката в С.Реших да си поиграя с една ATMEGA8.Свързал съм едно LCD и изпробвах доста от библиотеките и функциите на CodevisionAVR.Не мога да разбера тези контролери изобщо могат ли да смятат дробни числа.Пробвах функциите ftoa,sprintf в хиляда варианта ,задавах променливи от типа float и int ,но така и не мога да получа верен резултат.Функциите ми извеждат само цялото число ,а това което е след запетаята са нули.Примерно числото 123,456 се извежда като 123,000.Къде според вас е проблема.

Автор:  bobyk [ Вто Мар 06, 2007 1:01 pm ]
Заглавие: 

Ми няма проблем, ти си нещо в грешка, постни код да видим. А иначе аз печатам на LCDто така

lcd_puts(mystr);

Автор:  Ugeen [ Вто Мар 06, 2007 1:10 pm ]
Заглавие: 

Примерно:
float temp;
char lcd_buffer[33];
lcd_init(16);
temp=234,552;
sprintf(lcd_buffer ,"%3.3f",temp);
lcd_clear();
lcd_puts(lcd_buffer);


извежда ми 234.000,къде е 552

Автор:  VSU [ Вто Мар 06, 2007 1:19 pm ]
Заглавие: 

A слу4айно да си забравил да вкл опцията за scanf i printf в project configa да са за float temp=234,552; <<<-----СЛОЖИЛ СИ ЗАПЕТАЙКА ВМЕСТО ТОЧКА

Автор:  Ugeen [ Вто Мар 06, 2007 1:22 pm ]
Заглавие: 

включих само тази за sprintf

Автор:  Ugeen [ Вто Мар 06, 2007 1:26 pm ]
Заглавие: 

Опитвам се да разделя две числа ,но пак ми дава само цялото число ,а другото са нули.Примерно същия код само че temp=254/195; ми дава само 1.000

Автор:  Ugeen [ Вто Мар 06, 2007 1:28 pm ]
Заглавие: 

Да ,с точката стана изведе ми и другата част.Признавам го за грешка,но със сметките не иска ,пак извейда цялото число

Автор:  VSU [ Вто Мар 06, 2007 1:31 pm ]
Заглавие: 

а това го за пиши ТАКА temp=254.0/195.0; или temp=254. / 195. ;

Автор:  bobyk [ Вто Мар 06, 2007 1:31 pm ]
Заглавие: 

float temp;
char mystr[16];
temp=123.4567;
ftoa(temp, 6, mystr);
lcd_clear();
lcd_puts(mystr);

десетичната точка е точка а не запетайка;)

Прикачени файлове:
Clipboard05.gif
Clipboard05.gif [ 7.13 KiB | Прегледано 2220 пъти ]

Автор:  bobyk [ Вто Мар 06, 2007 1:33 pm ]
Заглавие: 

Брей колко сте бързи, докато напиша 2 реда и сте направили 10 пшоста
Няма лошо ;)

Автор:  Ugeen [ Вто Мар 06, 2007 1:36 pm ]
Заглавие: 

Ако може пиши нещо за сметките,защо пак се извежда цялото число,а другото са 000.Много е интересно това което ми изпрати,с коя програма го направи ,ако не е тайна.

Автор:  Ugeen [ Вто Мар 06, 2007 1:39 pm ]
Заглавие: 

Най-после ,заработи.Много съм ти благодарен.Два дена си бих главата

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/