Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
29.05.2011, 21:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: Вывод текста на экран жк
Сообщение от Uragan90
|
Мне для другой функции потребуется!
|
А что для Вашей функции не подходит?
Сообщение от AJScorp
|
У Вас же в любом случае в качестве параметра передается указатель на стринг, так какая разница откуда его брать - из массива или константой?
|
Писал под Ваш пост #33, " lcd_putstring(x,y,*mass_pamtr[i],WHITE,BLACK,0,1);" должно работать. Если нет - пишите как именно!
Последний раз редактировалось AJScorp; 29.05.2011 в 21:51.
|
|
|
|
30.05.2011, 22:25
|
|
Временная регистрация
Регистрация: 30.03.2009
Сообщений: 71
Сказал спасибо: 23
Сказали Спасибо 26 раз(а) в 25 сообщении(ях)
|
Re: Вывод текста на экран жк
Я со шрифтами дел не имел. Вашу тему почитал и чтото захотелось заняться. Только вопросов парочка мучает. Без углублений в код. Вопросы могу задать глупые, прошу не бить.
Для 8х8 шрифта например получается размер таблицы символов 2 килобайта? Это если 2 цвета (символ - фон) и число символов 256. А 12х12 - уже 4,5 килобайт? Насколько рационально организовать алгоритм "растягивания" шрифта, или всё же разумнее несколько шрифтов сделать для разных размеров?
|
|
|
|
30.05.2011, 23:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Вывод текста на экран жк
Прямо на этом и рассмотрим. Сам шрифт "бесцветный" однобитовый. Цвет появляется при печати...
PHP код:
|
lcd_putstring(x,y,*mass_pamtr[i],WHITE,BLACK,0,1);
|
Здесь "WHITE" цвет текста, "BLACK" цвет "бумаги".
|
|
|
|
31.05.2011, 05:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.09.2009
Сообщений: 1,899
Сказал спасибо: 470
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
|
Re: Вывод текста на экран жк
Да это правильно подмечено! Текст потом окрашивается, при выводе- и делает это функция вывода текста...
В моей функции "0" это ротация (1-текст по вертикали пишется, 0-по горизонтали).
А последняя единичка это как раз "зум" текста.
__________________
Я бы изменил весь мир, но бог не дал исходников
|
|
|
|
31.05.2011, 17:47
|
|
Временная регистрация
Регистрация: 30.03.2009
Сообщений: 71
Сказал спасибо: 23
Сказали Спасибо 26 раз(а) в 25 сообщении(ях)
|
Re: Вывод текста на экран жк
Сообщение от Uragan90
|
А последняя единичка это как раз "зум" текста.
|
А как насчёт дробного "зума"?
|
|
|
|
31.05.2011, 22:23
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Вывод текста на экран жк
Сообщение от spinach83
|
Для 8х8 шрифта например получается размер таблицы символов 2 килобайта? Это если 2 цвета (символ - фон) и число символов 256. А 12х12 - уже 4,5 килобайт? Насколько рационально организовать алгоритм "растягивания" шрифта, или всё же разумнее несколько шрифтов сделать для разных размеров?
|
Обычно несколько ограничивают количество символов. Обычно коды от 0x20 и до 0xff. Хотя это и не принципиально меняет объём занимаемой памяти. Тут надо ещё отметить, что для быстрого пересчёта и удобства распаковки шрифт по горизонтали выравнивают на число точек кратных 8. Ну, то есть символ 6х8 будет реально храниться в памяти как 8х8 только значимых точек будет 6 из 8. Символ 14х14 реально будет занимать 16х14 или 2*14 байта. Таким образом таблица знакогенератора для такого шрифта будет равна 2*14*(256-32) = 6272 байта. Если у вас 10 шрифтов, то сами понимаете. ))
Здесь надо отметить ещё один момент. Реальная ширина символа "Ш" и символа "1" - разная. Появляется понятие моноширинных шрифтов и разноширинных. Если применять разноширинные шрифты, то можно сэкономить память путём прорисовки реального символа с указанием смещения этого символа от начала таблицы (что надо, так как символы в этом случае занимают разное количество байтов). При этом вы можете иметь даже неполную таблицу символов. Так, к примеру у меня есть шрифт 32, но в нём только цифры и некоторые спецсимволы.
Приведу пример.
Код:
|
//символ с кодом 0021
________,
________,
________,
________,
________,
___XX___,
__XXXX__,
__XXXX__,
___XX___,
___XX___,
___XX___,
___XX___,
________,
________,
________,
___XX___,
__XXXX__,
___XX___,
________,
________,
________,
________,
//символ с кодом 0024
________,________,
________,________,
________,________,
________,________,
______X_,________,
______X_,________,
____XXXX,X_______,
__X___X_,XX______,
__X___X_,XXX_____,
_XX___X_,_X______,
_XXXX_X_,________,
__XXXXXX,X_______,
____XXXX,XX______,
______X_,XXX_____,
__X___X_,_XX_____,
_XXX__X_,_X______,
__XX__X_,_X______,
____XXXX,________,
______X_,________,
______X_,________,
______X_,________,
________,________, |
|
|
|
Сказали "Спасибо" SasaVitebsk
|
|
|
01.06.2011, 09:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Вывод текста на экран жк
Конечно использование символов разной ширины экономит память и красиво смотрится на экране, но в условиях системы с ограниченными вычислительными ресурсами лучше нескольких таблиц фиксированного размер пока не придумали.
__________________
misterdi<@>i.ua
|
|
|
|
01.06.2011, 10:30
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Вывод текста на экран жк
Не факт. У меня 10 фонтов. 2 фиксированных 6х8 и 8х8. Остальные разноширинные. Приложение вместе с фонтами на AVR занимает 60к. Скажем фонт 16х16 наклонный занимает 8к прямой 7.
Если использовать TFT с разрешением от 320, то шрифт 8х8 вообще не разберёшь - очень мелкий будет. Так что - необходимость.
Хотя я сейчас работаю с индикатором 128х64 моно, и тоже сделал 3 шрифта 6х8, 8х8 и 13. Правда cortex.
|
|
|
|
01.06.2011, 11:29
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Вывод текста на экран жк
Сообщение от SasaVitebsk
|
Не факт. У меня 10 фонтов. 2 фиксированных 6х8 и 8х8. Остальные разноширинные. Приложение вместе с фонтами на AVR занимает 60к.
|
Что не факт???
Было написано...
Цитата:
|
в условиях системы с ограниченными вычислительными ресурсами лучше нескольких таблиц фиксированного размер пока не придумали.
|
Все телодвижения с извлечением, раскодировкой и транзакцией отнимают время, превосходящее время выталкивания на TFT... вот это факт... Если камень жирный настолько, что с него течёт сало, тогда конечно... Иначе... чем проще - тем быстрее...
Цитата:
|
Если использовать TFT с разрешением от 320, то шрифт 8х8 вообще не разберёшь - очень мелкий будет. Так что - необходимость.
|
Вот это да... есть такое...
|
|
|
|
01.06.2011, 12:50
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Вывод текста на экран жк
Сообщение от st_1
|
Что не факт???
Было написано...
Все телодвижения с извлечением, раскодировкой и транзакцией отнимают время, превосходящее время выталкивания на TFT... вот это факт... Если камень жирный настолько, что с него течёт сало, тогда конечно... Иначе... чем проще - тем быстрее...
|
Вот это и не факт. Понятно, что фонты до 8 точек по горизонтали включительно эффективнее обрабатывать прямой таблицей, а при большем - уже и не факт.
Простой пример. Возьмём фонт 11х13 Courier New. Прямая таблица на 224 символа займёт 224*2*13 = 5824 байта. Реально этот шрифт (с полной таблицей) занимает 3638 байт.
О каких телодвижениях с извлеченим и раскодировкой вы говорите - тоже непонятно. Есть указатель на начало таблицы по нему прямой пересчёт - указатель на нужный символ. Дальше абсолютно идентичный вывод.
То есть для прямого вывода для приведенного шрифта прога выглядит так:
ptr += ch*2*13;
Для разноширинного:
ptr1 = ptr + ch*3;
ptr = *ptr1++;
ptr |= (*ptr1++)‹‹8;
len_sym = *ptr1;
Совершенно очевидно, что это единицы % времени от вывода символа экран.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:49.
|
|