Перейти к содержанию
    

Высветить число на ЛСД.

Мне нужно высветить на ЛСД число.

Я пользуюсь функцией

void LCD_DisplayNumber(uint32_t number)
{
uint8_t num, i, digit;
uint32_t div;
uint8_t val;
uint8_t bitval;

   div = 1;
   for (digit = 0; digit < 9; digit++)
   {
           //get a digit
     num = (number / div) % 10;
           //take the digit pattern from a lookup table
     val = lcd_digits_seg1_seg8[num];

     /* Get number layout of display */
     for (i = 0; i < 7; i++)
     {
    	  bitval = val & 0x01;
         LCD_SegmentHandle(i,digit,bitval);
         val = val >> 1;
     }
     div = div * 10;
   }
}

 

Но она переворачивает число, то есть вместо 1234567 я вижу на ЛСД 7654321.

Как мне эфективно перевернуть число. Или может есть более лучшая функция?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

измени вот так

LCD_SegmentHandle(i,9-digit,bitval);

возможно не именно 9, а в зависимости от дисплея - 7 или 8

Изменено пользователем Th0r

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, блин!

ЛСД = наркотик. А LCD = ЖКИ (жидкокристаллический индикатор). За что же вы так не уважаете родной язык?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

измени вот так

LCD_SegmentHandle(i,9-digit,bitval);

возможно не именно 9, а в зависимости от дисплея - 7 или 8

 

Спасибо. Так почти работает. Проблема в том что мне надо вычислять сколько цифр в числе.

То еть вместо

for (digit = 0; digit < 9; digit++)

Нужно писать

for (digit = 0; digit < real_number_of_digits; digit++)

И тут возникает вопрос как вычислить количество цифр в числе.

 

 

Нет, блин!

ЛСД = наркотик. А LCD = ЖКИ (жидкокристаллический индикатор). За что же вы так не уважаете родной язык?

Да просто все время работаю с английской тех документацией вот и врезалось в мозг ЛСД .

Скажем среди моих знакомых редко говорят массив, говорят аррэй потому что именно аррэй с утра до вечера мозолит глаза.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да просто все время работаю с английской тех документацией вот и врезалось в мозг ЛСД.
Ну уж букву "Цэ" от "Эс" можно отличить...

Скажем среди моих знакомых редко говорят массив, говорят аррэй
Сочувствую. Тошнит уже от креатива релаксующих.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну уж букву "Цэ" от "Эс" можно отличить...

Сочувствую. Тошнит уже от креатива релаксующих.

Не берите в голову. Глубоко вдыхайте и радуйтесь жизни, она коротка.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не берите в голову. Глубоко вдыхайте и радуйтесь жизни, она коротка.
Да не вопрос. Заведите аррай, сложите в него резулт дивизии, потом сделайте пасс по араю скипая первые зеры.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да не вопрос. Заведите аррай, сложите в него резулт дивизии, потом сделайте пасс по араю скипая первые зеры.

слишком долго

проще так:

когда num/div = 0, значит предыдущий разряд был последним

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да не вопрос. Заведите аррай, сложите в него резулт дивизии, потом сделайте пасс по араю скипая первые зеры.

А потом они еще по всей распиновке пины каррентом драйвят, форсят и релизят... Просто ужас, как за пины обидно!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...