Графический дисплей ks0108 12864

Обсуждаем контроллеры компании Atmel.
Ответить
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Ср дек 05, 2018 23:10:34

Сообщение CAT86 »

wg12864A ks0108 очень медленно обновляется (1-2 раза в секунду)
Atmega2560 16Mhz
CVAVR стандартная библиотека

Код: Выделить всё

   glcd_clear(); 
            glcd_outtextxyf(12,0,"M1") ;
            sprintf(lcd_buf,"dir=%u", direction1); 
            glcd_outtextxy(1,6,lcd_buf);
            sprintf(lcd_buf,"pau=%u", pau_1); 
            glcd_outtextxy(1,12,lcd_buf);
            sprintf(lcd_buf,"trn=%u", turns_1); 
            glcd_outtextxy(1,18,lcd_buf);
            sprintf(lcd_buf,"spd=%u", speed_1); 
            glcd_outtextxy(1,24,lcd_buf);
Скажите где копать? :dont_know:
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Очевидно же - в библиотеке :dont_know:
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

не знаю, где копать, но очищать экран целиком, чтобы всякий раз выводить на 80% прежние данные - плоховатая идея. все "константы" на дисплее (типа "dir=" и т.п.) можно вывести 1 раз, а затем только обновлять небольшие "прямоугольники" в нужных местах, выводя числа.
если строку с представлением числа сформировать с "лидирующими" или "завершающими" пробелами, чтобы количество позиций всегда было неизменно независимо от количества цифр в числе, то обновляемую прямоугольную область и очищать отдельно не придется - пробелы сами затрут предыдущее
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Ср дек 05, 2018 23:10:34

Сообщение CAT86 »

Скажите пожалуйста, дисплей ks0108 12864 по 8-ми битной шине очень медленно отрисовуется после команды "glcd_clear()"
если дисплей 20х4 по 4-х битной шине отрисовуется очень быстро, без промигиваний.
Кто может объяснить, в чем фишка? :dont_know:
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 57
Зарегистрирован: Ср янв 03, 2018 01:36:14

Сообщение VALNER »

[uquote="CAT86",url="/forum/viewtopic.php?p=3681728#p3681728"]Скажите пожалуйста, дисплей ks0108 12864 по 8-ми битной шине очень медленно отрисовуется после команды "glcd_clear()"
если дисплей 20х4 по 4-х битной шине отрисовуется очень быстро, без промигиваний.
Кто может объяснить, в чем фишка? :dont_know:[/uquote]
На сколько я понимаю, тот что 128х64 работает в графическом режиме. То есть для того что бы вывести на нем какой то символ (возьмем к примеру 7х5 аналогичный шрифту с 20х4 или 16х2 дисплеев) понадобится отправить полностью рисунок этого символа (5 байт и это в найлучшем случае). В 20х4 знакосинтезатор встроенный и там что бы отобразить символ нужно послать всего лишь его номер (1 байт). В результате этого, количество данных нужных для вивода символа на дисплее 20х4 меньше.

Хотя, проблема может быть и в програмной части. По крайней мере у меня дисплей 102х96 (вроде бы) заполняется достаточно быстро, а он на СПИ сидит.

Надеюсь понятно.
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

[uquote="CAT86",url="/forum/viewtopic.php?p=3681728#p3681728"]Кто может объяснить, в чем фишка? :dont_know:[/uquote]
Опять, как и в первом посте, - прибежал, пёрнул и убежал. А людям гадай откуда запашок идёт... Когда уже научимся вопросы нормально задавать ?
Фишка в недопонимании процессов в целом. Где код прорисовки ? Где объяснения того, что должно БЫСТРО прорисовываться ? И что значит "медленно", это сколько "в граммах" ?
:facepalm:
PS: И слова "отрисовуется" нет в Русском языке ! :kill:
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Ср дек 05, 2018 23:10:34

Сообщение CAT86 »

Ну вот на пример:

Код: Выделить всё

while
{
   glcd_clear(); 
            glcd_outtextxyf(12,0,"M1") ;
            sprintf(lcd_buf,"dir=%u", direction1); 
            glcd_outtextxy(1,6,lcd_buf);
};
на дисплее мигает: dir=%u
даже если вывести переменную часов или температуры, тоже будет мигать...
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Ответный вопрос - а почему оно НЕ должно мигать ?

Добавлено after 51 second:
[uquote="Аlex",url="/forum/viewtopic.php?p=3681758#p3681758"]Когда уже научимся вопросы нормально задавать ?
Где код прорисовки ? Где объяснения того, что должно БЫСТРО прорисовываться ? И что значит "медленно", это сколько "в граммах" ?[/uquote] ?
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

CAT86 писал(а):на дисплее мигает: dir=%u
говорил же:
ARV писал(а):очищать экран целиком, чтобы всякий раз выводить на 80% прежние данные - плоховатая идея. все "константы" на дисплее (типа "dir=" и т.п.) можно вывести 1 раз, а затем только обновлять небольшие "прямоугольники" в нужных местах, выводя числа.
рекомендую читать сообщения, прежде чем задавать повторно те же вопросы
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Ответить

Вернуться в «AVR»