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

Функции в CVAVR.

В “большом” С существуют функции форматированного вывода строк например printf(); ……. Которыми можно классно работать со строками вывода на экран. В CVavr тоже есть такая функция, но как её “подцепить” к LCD я не сообразил. А задача у меня простая, организовать вывод несколько полей переменных с незначившими 0 в впереди на LCD.

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

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


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

В “большом” С существуют функции форматированного вывода строк например printf(); ……. Которыми можно классно работать со строками вывода на экран. В CVavr тоже есть такая функция, но как её “подцепить” к LCD я не сообразил. А задача у меня простая, организовать вывод несколько полей переменных с незначившими 0 в впереди на LCD.

 

Легко, для этого надо переопредилить функцию putchar. грубо говоря надо написать:

 

void putchar(char ch){

lcd_putchar(ch);

}

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


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

Ну либо:

 

static void (*rputchar)(unsigned char c);

void rprintfInit(void (*putchar_func)(unsigned char c))
{
    rputchar = putchar_func;
}

void rprintfChar(unsigned char c)
{
    rputchar(c);
}

 

Тогда при инициализации:

 

rprintfInit(lcd_putchar);

 

И печатаем, что хотим :)

 

rprintfChar('Y');
.
.
.

 

Так сделано например в AVRlib.

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


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

В ”большом” С существуют функции форматированного вывода строк например printf(); ……. Которыми можно классно работать со строками вывода на экран. В CVavr тоже есть такая функция, но как её ”подцепить” к LCD я не сообразил. А задача у меня простая, организовать вывод несколько полей переменных с незначившими 0 в впереди на LCD.

 

 

Можно в 2 этапа. Предполагается, что у Вас уже есть функции вывода строки на ЖКИ или используются встроенные в CV функции работы с индикатором.

 

1) Используете библиотечную функцию форматированного вывода в СТРОКУ:

// описание переменных    
unsigned char n;
char str[20];
...............
  n=sprintf(str,"Result=%04d",result);

 

2) Отправляете n символов строки str на ЖКИ с помощью своей функции. Или используете функцию void lcd_puts(char *str) из библиотеки lcd КодВижна:

lcd_puts(str);

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


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

В CV есть примеры программ, работающих с выводом на ЖКИ, они находятся в папке examples там уже все сделано, надо только изменить пример под собственные нужды.

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


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

Благодарю за помощь.

Пока работает в эмуляторе с функцией sprintf(). Попробую в “железе”.

Сколько раз говорил читайте HELPы и сам нарвался.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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