реклама на сайте
подробности

 
 
> Преобразование Int в строку на LCD (ICCAVR7), Помогите примером...
Vovan007
сообщение Dec 16 2006, 23:57
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 16-12-06
Пользователь №: 23 591



При выводе текста на LCD от Nokia3210 использую стандартную функцию

//----------------------------
void LcdStr ( LcdFontSize size, byte *dataPtr )
{
while ( *dataPtr !=0x00)
{
LcdChr( size, *dataPtr++ );
}
}

!!! вопрос как отобразить на LCD числовые значения заданной переменной
например
int X;
X=4123;
пример взят с www.microsyl.com
буду признателен всем! santa2.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
klop
сообщение Dec 17 2006, 00:00
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 433
Регистрация: 28-02-06
Пользователь №: 14 788



Есть такая функция sprintf.
Go to the top of the page
 
+Quote Post
Vovan007
сообщение Dec 17 2006, 00:38
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 16-12-06
Пользователь №: 23 591



Цитата(klop @ Dec 16 2006, 23:00) *
Есть такая функция sprintf.


Пробовал -- не хватает памяти контроллера...
Нужно что то полегче...

Цитата(prottoss @ Dec 16 2006, 23:08) *
Цитата(Vovan007 @ Dec 17 2006, 03:57) *
!!! вопрос как отобразить на LCD числовые значения заданной переменной
например
int X;
X=4123;
пример взят с www.microsyl.com
буду признателен всем! santa2.gif


Код
/*****************************************************************************
Преобразовывает переменную UINT в неупакованное BCD
Если параметр ch == TRUE, то, дополнительно, преобразует полученное число в
строку
******************************************************************************/
void uint2bcd(UINT16 src, UCHAR *trg, BOOL ch)
{
   UINT16 d = 10000;
   for(UCHAR i = 0; i < 5; i++) /* цикл по пяти знакам */
    {
       trg[i] = 0; /* формируем сумму искомого числа */
       while(src > d) /* пока порядок не отрицательный */
        { src-= d; /* вычитаем из знака порядок */
         trg[i]++; /* и увеличиваем искомое число */
        }

        if(TRUE == ch) /* преобразуем в ASCII символ */
        { trg[i] += 0x30;
        }
        d /= 10; /* получаем следующий (младший) порядок */
    }
    trg[5] = 0;
}

/*****************************************************************************
Преобразовывает переменную ULONG в неупакованное BCD
Если параметр ch == TRUE, то, дополнительно, преобразует полученное число в
строку
******************************************************************************/
void ulong2bcd(UINT32 src, UCHAR *trg, BOOL ch)
{
   UINT32 d = 1000000000;
   for(UCHAR i = 0; i < 10; i++) /* цикл по десяти знакам */
    {
       trg[i] = 0; /* формируем сумму искомого числа */
       while(src > d) /* пока порядок не отрицательный */
        { src-= d; /* вычитаем из знака порядок */
         trg[i]++; /* и увеличиваем искомое число */
        }

        if(TRUE == ch) /* преобразуем в ASCII символ */
        { trg[i] += 0x30;
        }
        d /= 10; /* получаем следующий (младший) порядок */
    }
    trg[10] = 0;
}





Спасибо счас попробую обкатать...
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016