|
Как вывести на LCD большое число, Не могу вывести число, большее 32767 |
|
|
|
Aug 20 2008, 11:53
|
Участник

Группа: Новичок
Сообщений: 23
Регистрация: 26-05-08
Пользователь №: 37 817

|
Подскажите чайнику, как переехать такую проблему. Микроконтроллер серии ATMega, нужно выводить на ЖКИ типа РС1602F (c контроллером) инкрементируемую переменную, которая может принимать значения, к примеру, от 0 до 1 000 000. Работу программы (см. вложение) симулирую на VMLAB3.12. Что получается? До значания переменной, равного 32767, всё идёт нормально. А вот следующее индицируемое число равняется -32768 (со знаком минус), и все последующие начинают декрементироваться, то есть -32767, -32766, -32765 и т.д. Почему?
Сообщение отредактировал Tomade - Aug 20 2008, 11:55
|
|
|
|
|
 |
Ответов
|
Aug 21 2008, 09:59
|
Участник

Группа: Новичок
Сообщений: 23
Регистрация: 26-05-08
Пользователь №: 37 817

|
АНТОХА: Надо не I, а L! (от long)В вашем предыдущем письме было I. Впрочем, ставил и I, и l, и L - не помогает. В этих случаях совсем ничего не высвечивается. bloodden: Как и в CVAVR впрочем тоже. В настройках проекта. По-умолчанию там стоит до инта.В предыдущем письме сообщал, что перепробовал разные настройки. Не помогло. zhevak: Вы неправильно используете модификаторы. Я попробовал и так sprintf(s1, "%li", x); и так sprintf(s1, "%ld", x); -- работает в обоих случаях.Проблема в том, что я не программист. Можно сказать, радиолюбитель, решивший самостоятельно изучить МК (и СИ) и что-то на них собирать. Потому то, что для программиста очевидно, для меня - далеко не так. А именно: sprintf(s1, "%li", x); // Библиотечная функция - где эта функция должна находиться? Как проверить, что она есть? И если нет, то где взять и куда вставить? LCD_StringXY(0, 1, s1); // -- это моя функция, у Вас должно быть что-то свое. Если бы знать, что своё должно быть... А просто поставить, к примеру, sprintf(s1, "%li", x); - ни к чему не приводит. Короче, пойду покупать пистолет.
|
|
|
|
|
Aug 21 2008, 10:15
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Цитата(Tomade @ Aug 21 2008, 15:59)  Короче, пойду покупать пистолет.  1. Сказку о двух лягушках расказать или знаете? 2. Решать задчи, которые уже знаешь как решать, -- не интересно. Намного интереснее решать те задачи, к которым даже не знаешь как подступится. Только такие задачи способствуют росту. 3. А судьи кто? Обычные люди (usual people) о конкретном человеке судят по тому, чего он достиг на данный момент. Продвинутые люди (advanced people) смотрят на то, какие задачи он себе ставит и как быстро он растет. Не обращайте внимание на то, что говорят первые. Идите своей дорогой. И будет Вам счастье! ЗЫ Здесь много грамотных людей, и они способны достаточно квалифицированно ответить на Ваши вопросы. Читайте книжки, посещайте форумы и уточняйте, что Вам не ясно.
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
Сообщений в этой теме
Tomade Как вывести на LCD большое число Aug 20 2008, 11:53 zhevak Для ответа на Ваш вопрос, Вы указали мало данных.
... Aug 20 2008, 12:04 Maik-vs Цитата(Tomade @ Aug 20 2008, 15:53) Подск... Aug 20 2008, 12:04 =GM= Цитата(Maik-vs @ Aug 20 2008, 11:04)... Aug 20 2008, 12:10  Tomade Цитата(=GM= @ Aug 20 2008, 16:10) Всё рав... Aug 20 2008, 12:18   AHTOXA "%i" - это int, надо - "%l" ил... Aug 20 2008, 12:22   zhevak Цитата(Tomade @ Aug 20 2008, 18:18) Так и... Aug 20 2008, 13:08 Genadi Zawidowski Странно... есть же на данном форуме тема с чужим г... Aug 20 2008, 12:36 GDI Цитатаsprintf(lcd_buffer,"%i",x);
Цитата... Aug 20 2008, 12:41 bloodden Цитата(GDI @ Aug 20 2008, 15:41) Еще от к... Aug 21 2008, 06:52 Tomade Спасибо всем откликнувшимся. Вот что получилось (к... Aug 21 2008, 05:49 AHTOXA Цитата(Tomade @ Aug 21 2008, 11:49) Если ... Aug 21 2008, 06:05 zhevak Цитата(Tomade @ Aug 21 2008, 11:49) Спаси... Aug 21 2008, 06:36 sergeeff А через функцию char *ltoa(long value, char *strin... Aug 21 2008, 06:27 AHTOXA Цитата(Tomade @ Aug 21 2008, 15:59) АНТОХ... Aug 21 2008, 10:47 Tomade Антоха: Клевета! Было маленькое L - l.
Прошу ... Aug 21 2008, 11:08 sss992 можно так сделать:
...
unsigned long int x = 1000... Aug 21 2008, 11:16 Tomade Ну вот, проблема решилась. Сделал следующее.
1.Сге... Aug 22 2008, 07:25 Goodefine Можно сделать несколько иначе - не используя громо... Aug 25 2008, 07:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|