А в каком порядке идёт закрашивание области символа? Я так и не дождался ответа.
P.S. Иконки закрашиваются правильно, потому что они отрисовываются ОЧЕНЬ неоптимально. Каждая точка иконки отрисовывается как отдельный прямоугольник размером 1x1, со всеми сопутствующими инициализациями. Переделать бы, но опять же - дисплеев в железе нет.
А в каком порядке идёт закрашивание области символа? Я так и не дождался ответа.
P.S. Иконки закрашиваются правильно, потому что они отрисовываются ОЧЕНЬ неоптимально. Каждая точка иконки отрисовывается как отдельный прямоугольник размером 1x1, со всеми сопутствующими инициализациями. Переделать бы, но опять же - дисплеев в железе нет.
Только что переписал вывод иконок на LS020 - сейчас они тоже не попиксельно выводятся, а всем массивом целиком. Заодно освежил в памяти, как это работает. А вообще, для начала, я бы попробовал поменять вложенность циклов:
Код:
for(i = 0; i < 8; i++) { for (my = 0; my < fp[FONT_MULT]; my++) { for (j = 0; j < swd; j++) {
на
Код:
for (my = 0; my < fp[FONT_MULT]; my++) { for (j = 0; j < swd; j++) { for(i = 0; i < 8; i++) {
А потом играть вариантами:
(128>>i) <=> (1<<i)
(fp[FONT_HEIGHT] - k - 1) <=> k
Это будет тем или иным образом разворачивать выводимые байты.
надо что бы начинало с последнего байта 8 бита потом предпоследнего байта 8 бита и так до самого первого и опять с последнего байта 7 бита до 1 байта и тд
Последний раз редактировалось mixa232323 Пн сен 25, 2017 10:22:47, всего редактировалось 1 раз.
надо что бы начинало с последнего байта 8 бита потом предпоследнего байта 8 бита и так до самого первого и опять с последнего байта 7 бита до 1 байта и тд
Я уже написал - нужно пробовать: - менять биты в байте: (1<<i) против (128>>i) - менять направление лево-право: j против swd - 1 - j - менять горизонтальные блоки в символе: k против fp[FONT_HEIGHT] - 1 - k Какая-то из этих восьми комбинаций даст правильный символ.
P.S. Сделал картинки, чтобы было понятнее:
Оригинальный вывод:Спойлер Меняем биты в байте:Спойлер Меняем направление лево-право:Спойлер Меняем горизонтальные блоки в символе:Спойлер
Как я уже говорил, во-первых, нужно поменять порядок вложенности циклов. Тогда шрифты развернутся на 90 градусов. А уже потом играть указанными параметрами.
В нём я перешёл для LS020 на то же (0x0504) направление обхода региона вывода, как, по идее, происходит в LPH9157.
Да, после этого получились "крякозябры" везде. Но, после небольших изменений, и в этом направлении обхода я получил что хотел. Можете проверить оба варианта кода в Proteus и увидите, что всё выглядит одинаково.
Может, теперь станет понятнее, что куда переносить для Вашего дисплея. В идеале, конечно, если Вы просто свою инициализацию дисплея прикрутите ко второму варианту кода.
P.S. Честно говоря, мне новый вариант даже больше нравится с 0x5000, чем с 0x5004. По коду более понятно, и плюс можно ещё немножко оптимизировать скорость.
Ну наконец-то. Заодно проверьте и вариант с поворотом на 180 градусов, работает ли. Потом сбросите мне рабочий итоговый файл, а я добавлю его уже не как LS020, а с другим именем. За Вами тестирование.
Из возможных оптимизаций - вынесите в отрисовке шрифта и иконок pgmData = pgm_read_byte() чуть выше (из цикла for) - нет смысла читать 8 раз подряд одно и то же.
LS020_ROTATE_180 при отключении не работал я переделал добавил отключение питания дисплея
Добавлено after 4 minutes 7 seconds: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864 по поводу оптимизации сделал что знал дальше смотрите сами если что не так отпишите
Добавлено after 4 minutes 31 second: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864 можно еще регулировку контрастности добавить
Приветствую. Коллеги, кто пробовал в версии tda7439 программно реализовать тонкомпенсацию? На малой громкости НЧ неправильно звучат. Вариант-добавлять усиление НЧ фильтра на 3... 4 дб при знач. громкости менее - 40 дб? Цифры навскидку взяты.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения