Страница 1 из 2
пересчет изображения на графическом ЖК индикаторе
Добавлено: Вт июл 09, 2013 15:08:01
КРАМ
Коллеги.
Имеется графический ЖК индикатор TIC154A с разрешением 132х64 пиксела.
В памяти МК сделан буфер экрана этого ЖК, на котором и разворачивается изображение.
Адресация в индикаторе побайтная как показано на рисунке:
При написании текста горизонтально - все легко и гармонично.
Требуется придумать изящный алгоритм (просто идею) для ВЕРТИКАЛЬНОГО вывода текста.
Символы текста в знакогенераторе (программно адресуемом участке программного флеша).
В буфере экрана в МК адресация сплошная, как у телевизионной развертки. Слева направо - сверху вниз.
Спасибо за содействие.
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Вт июл 09, 2013 17:01:16
petrenko
Знакогенератор скольки-битные символы "воспринимает" ? И сколько*сколько пиксел "выдаёт" ?
Можно сделать вторую таблицу для знакогенератора ( если есть куда её разместить ).
То есть 1-й набор символов для вывода "вдоль", а второй - для вывода "поперёк".
Если идея пригодится - не забудьте о том сообщить, ибо любопытно - получится / не получится .. Ok ?
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Вт июл 09, 2013 17:05:03
КРАМ
Текущее положение моей мысли аналогичное.
Пока сделал буфер для одной выводимой поперечной строки и пытаюсь ее элегантно переписать в общий буфер.
Символ 8*6.
Строка длиной в 64 пиксела.
Сегодня мозги уже кипят.
Завтра с утреца продолжу.
Спасибо.

Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 09:55:59
kalobyte
тебе текст вертикально что ли выводить?
везьми матрицу символа и поверни ее на 90 градусов
http://coderlife.ru/progr/povorot-matri ... .html#CCPP
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 09:58:36
Gudd-Head
Во, интересная задачка

подумаем
КРАМ писал(а):Символ 8*6.
А расстояние между символами? Я к тому, что выводиться будет как на рисунке (один символ в двух "строках"), или по символу на "строку"?
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 13:28:23
КРАМ
Между символами зазоров нет, но это не важно.
В общем случае текст выводится построчно вертикально. Т.е. число строк может быть произвольным. Как и место расположения этих строк по ширине дисплея (вправо-влево).
Смысл всего этого геморроя состоит в том, что нужно показывать по три параметра на канал, а каналов 5 и они ориентированы по ширине дисплея. Т.е. получаются колонки по 25 пикселей. Иначе как по длине колонки вывести 5 разрядные три числа никак не получается.
ЗЫ. Вообще то я уже кое что наваял за утро сегодня. Но пока не дебажил.

Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 13:38:04
Gudd-Head
КРАМ писал(а):текст выводится построчно вертикально
Эээ... Ну да ладно. Ясно, что надо транспонировать матрицу пикселей символов и поменять процедуру вывода в буфер МК.
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 13:44:09
pyzhman
Может проще не крутить, а разработать хитрую формулу перерасчета адресов? По идее, если пользоваться 16-ричной системой, то наверняка проследится некая зависимость. Подобная бяка использовалась еще на старом добром Спектруме.
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 13:46:36
КРАМ
Дима тут дал ссылку на переворот матрицы.
Но проблема в том, что матрицы никакой нет... Это монохромный дисплей и у него пиксель - это БИТ. А битные операции не имеют адресации бит...
Если писать на Си не обращая на это внимания, то код становится ужасным...
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 13:53:37
Gudd-Head
КРАМ писал(а):А битные операции не имеют адресации бит...
Вот-вот. Битовая операция не может принять номер бита в качестве аргумента, я правильно понял?
Может, тогда самому наклепать такую?

И ещё хотелось бы определиться с платформой (МК). У 8051 вроде был богатый набор битовых команд.
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 13:57:26
КРАМ
Платформа...
dsPIC33FJ128MC802

Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 14:05:19
Gudd-Head
А что в итоге надо получить?
Подпрограмму, которая будет поворачивать на 90° символ и помещать его (к примеру) левый верхний угол в указанные координаты (пиксель) [X;Y], не затирая другое содержимое?
Или что-то более общее?
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 14:13:43
КРАМ
Программу не обязательно. Достаточно описания идеи. Глобальный алгоритм без детализации до команды. Только не просто "переворот матрицы". Это даже не идея для данного случая.
Я могу описать собственную идею к которой пришел, но хотелось бы не сбивать чужую мысль.
Поворачивать ничего не нужно. Нужно выводить в БУФЕР (в ОЗУ МК) уже повернутый текст. Можно конечно предварительно делать что угодно, если нужно. Но окончательно нужно выводить некое число (у меня - частоту) с поворотом на 90 градусов.
Буфер я потом сбрасываю в индикатор as is.
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 14:22:52
Gudd-Head
КРАМ писал(а):Нужно выводить в БУФЕР (в ОЗУ МК) уже повернутый текст.
Я всё равно не понимаю в чём затык. В том, что экран — это не матрица байт, а одномерный массив? Или в том, что в одном байте могут быть части двух символов?
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 14:34:43
Psych
Почему бы свой знакогенератор не наклепать....уже повернутый??? Место мало в мк?
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 14:43:17
КРАМ
Это не одномерный массив, а массив байт. Т.е. по 8 пикселов. И каждый байт может содержать одновременно части разных символов. И не просто может, а обязательно содержит, поскольку ориентация символов поперечная.
Обратите внимание на рисунок вверху. Там все понятно.
Сейчас я делаю буфер на строку символов в которую пишу как обычно: побайтно. И символ занимает ровно 6 байт (колонок).
А потом стягиваю эту строку в общий буфер сдвигами в перенос и одновременными сдвигами из переноса в байт. А затем этот байт уже переношу в общий буфер.
Получается три вложенных цикла. На одну колонку (байт), на одну строку (байтную) в общем буфере и на 8 байтных строк в общем буфере.
Так двигаюсь по буферной строке я переворачиваю ее на 90 градусов поэлементно (побайтно).
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 14:53:02
Gudd-Head
КРАМ писал(а):И каждый байт может содержать одновременно части разных символов. И не просто может, а обязательно содержит, поскольку ориентация символов поперечная.
Ну так берём байт из буфера где уже есть один символ, и делаем лог. ИЛИ (если пиксель поджигается от "1") его с другим символом.
Или я тупой и что-то не понимаю.
Или надо самому начать что-то выводить под 90° чтобы понять суть подводных камней.
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 14:53:54
КРАМ
Psych писал(а):Почему бы свой знакогенератор не наклепать....уже повернутый??? Место мало в мк?
Он у меня и так свой. Только вот это ничего не меняет. Из-за байтной, а не битной организации памяти в ЖК и буфере экрана в МК.
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 14:57:41
КРАМ
Gudd-Head писал(а):
Или надо самому начать что-то выводить под 90° чтобы понять суть подводных камней.
Думаю, да.
Сам вывод поперек байтных строк требует сложной и запутанной адресации частей символа в пересекаемых им байтах.
Лично у меня соображения на такой способ не хватило.
Re: пересчет изображения на графическом ЖК индикаторе
Добавлено: Ср июл 10, 2013 14:59:28
Gudd-Head
КРАМ писал(а):Из-за байтной, а не битной организации памяти в ЖК и буфере экрана в МК.
1. Изначально 1 символ (6×8) занимает 6 байт. Так?
2. Предположим, что мы повернули (у нас есть) повёрнутый символ (8×6) который занимает 8 байт. Так?
3. Задача в том, как его вывести в произвольном (фиксированном) месте?