Страница 2 из 2

Re: пересчет изображения на графическом ЖК индикаторе

Добавлено: Ср июл 10, 2013 15:05:42
КРАМ
Фактически так.
Нарисуйте фрагмент экрана из моего рисунка в начале темы.
И впишите в него любую букву по точкам вертикально.
Вы увидите, что буква займет не полные байты а их части.
Но одну букву положим можно и так вывести, но как выводить регулярный текст с произвольным расположением вертикальных строк по ширине экрана?
Покажите расчет адресов.

Re: пересчет изображения на графическом ЖК индикаторе

Добавлено: Ср июл 10, 2013 15:11:07
Gudd-Head
Ну вот я накропал в экселе:
Изображение
Если места символов (по вертикали) постоянны, то я предлагаю каждый символ "железно" разбивать на 2 группы байт (верхняя и нижняя), и потом делать их лог. ИЛИ с содержанием буфера.

Re: пересчет изображения на графическом ЖК индикаторе

Добавлено: Ср июл 10, 2013 15:29:03
КРАМ
А следующий символ будет сдвинут относительно границы байтных строк дисплея на 2 пиксела, поскольку размер символа 6, а не 8.
Получается, что границы плывут....

Re: пересчет изображения на графическом ЖК индикаторе

Добавлено: Ср июл 10, 2013 15:33:37
Gudd-Head
КРАМ писал(а):Получается, что границы плывут....
Это я и имел в виду под "выводить железно", т.е. отдельно процедура для первого байта (сдвиг и разбиение на условно 3+5), отдельно для второго (5+1), третьего (6+0) и т.д. Там ведь их меньше 10 помещается.

Re: пересчет изображения на графическом ЖК индикаторе

Добавлено: Ср июл 10, 2013 16:04:44
КРАМ
Лучше, если место по вертикали не фиксировано. Текст может иметь разные пробелы или вставки пиктограмм, что ведет к подвижности границ знакоместа внутри занимаемых 16 байт. Именно 16-ти, поскольку 8 из верхней байтной строки и 8 из нижней.

Re: пересчет изображения на графическом ЖК индикаторе

Добавлено: Ср июл 10, 2013 16:56:40
КРАМ
Получилось, господа!!!
Любой текст, включая пиктограммы, поперек... :)

Изображение

Re: пересчет изображения на графическом ЖК индикаторе

Добавлено: Ср июл 10, 2013 17:00:28
КРАМ
Довольно компактный код пересчета буферной строки 8*64 в любую вертикальную колонку тех же габаритов в общем буфере:

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

; вывод из буфера строки в общий буфер (W0 = номер выводимого канала; W2 = номер строки вывода)
out_row:
		mul.uu		W0, # 26, W0			; шаг между каналами
		mul.uu		W2, # 11, W2			; шаг между строками канала
		add		W0, W2, W0
		add		# 6, W0				; смещение от края экрана
		mov		# buf_displ, W1
		add		W0, W1, W1			; абсолютный адрес нижней первой точки строки
		mov		# buf_row, W2
		mov		# 8, W4				; счетчик строк общего буфера
looprow:	mov		# 8, W3				; счетчик колонок общего буфера
loopbyteout:	do		# 7, eobytein
			bclr		SR, # C
			rlc.b		[W2], [W2]
			rrc.b		[W1], [W1]
eobytein:		inc		W2, W2
		inc		W1, W1
		sub		# 8, W2
		dec		W3, W3
		bra		NZ, loopbyteout
		add		# 124, W1
		add		# 8, W2
		dec		W4, W4
		bra		NZ, looprow
		return

Re: пересчет изображения на графическом ЖК индикаторе

Добавлено: Ср июл 10, 2013 17:17:49
pyzhman
таки пересчет. :beer:

Re: пересчет изображения на графическом ЖК индикаторе

Добавлено: Ср июл 10, 2013 18:08:56
КРАМ
Только это не пересчет указателей.
Сами данные переписываются в основной буфер с поворотом.
Отражение точек происходит в бите переноса.