реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ЖКИ BG12864E на ATMEGA2561, Передвижение рисунка между полуэкранами
Slavast
сообщение Dec 9 2010, 09:32
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



Доброго всем!"
Использую BG12864E на ATMEGA2561 для вывода катящегося мячика. Прокатить плавно мячик с одной стороны полуэкрана в другой не составило труда - с задержкой выводим массив байтов на экран и сдвигаем по горизонтали. Но вот прокатить этот шарик между полуэкранами - задача, т.к. как только он заезжает за правый край полуэкрана, он тут же появляется в его начале. Переключая полуэкраны нельзя добиться плавного заезда, т.к. объект во всю свою длину перескакивает на второй полуэкран и получается резкий рывок. До сих пор не могу понять как это можно сделать. Конечная цель - чтоб бильярдный мячик бегал по экрану, отталкиваясь от его краев.
Поделитесь идеей как это можно сделать?
Заранее, спасибо!!!
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 9 2010, 10:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Сдвигайте не на экране, а внутри МК, в буферной памяти экрана. Если он (буфер экрана) у вас конечно имеется laughing.gif
Go to the top of the page
 
+Quote Post
011119xx
сообщение Dec 9 2010, 10:42
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Цитата(Slavast @ Dec 9 2010, 14:32) *
Переключая полуэкраны нельзя добиться плавного заезда, т.к. объект во всю свою длину перескакивает на второй полуэкран и получается резкий рывок.


Не совсем понятен этот момент. Может можно фото показать или видео?
Go to the top of the page
 
+Quote Post
Slavast
сообщение Dec 9 2010, 11:30
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



Цитата(rezident @ Dec 9 2010, 14:29) *
Сдвигайте не на экране, а внутри МК, в буферной памяти экрана. Если он (буфер экрана) у вас конечно имеется laughing.gif


Я сдвигаю следующим образом - вывожу массив байтов нашего рисунка начиная со след адреса строки, предварительно стерев предыдущую картинку.
Что вы имеете под понятием буфер?

Цитата(011119xx @ Dec 9 2010, 14:42) *
Не совсем понятен этот момент. Может можно фото показать или видео?


Т.к. фотика под рукой нет, изобразил схематический 2 расположенных друг возле друга полуэкрана и шарик, бегающий по ним. DOC1 - это то, что я хочу.
DOC2 и DOC3 - это то 2 варианта, которые сейчас получаются.
Прикрепленные файлы
Прикрепленный файл  Doc1.doc ( 338 килобайт ) Кол-во скачиваний: 50
Прикрепленный файл  Doc2.doc ( 337 килобайт ) Кол-во скачиваний: 39
Прикрепленный файл  Doc3.doc ( 388 килобайт ) Кол-во скачиваний: 34
 
Go to the top of the page
 
+Quote Post
011119xx
сообщение Dec 9 2010, 11:53
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Что-то не понятно по этим картинкам. Наверно придется выложить исходник и описание на дисплей. Или постучать ко мне в аську

Вообще то идея тут простая. картинка шара хранится наверно во флэше. выводим его в первую половину экрана. когда доходим до правого края первой половины, то потом уже в первую половину нужно выводить не весь шар, а уже на 1 пиксель. а этот самый 1 пиксель правой части картинки шара выводить во вторую половину экрана. и так далее. в первой половине экрана часть шара будет уменьшаться, а во второй увеличиваться, пока шар полностью не перейдет во вторую половину экрана.

Сообщение отредактировал 011119xx - Dec 9 2010, 12:10
Go to the top of the page
 
+Quote Post
ae_
сообщение Dec 9 2010, 13:03
Сообщение #6


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(Slavast @ Dec 9 2010, 19:30) *
DOC1 - это то, что я хочу.
DOC2 и DOC3 - это то 2 варианта, которые сейчас получаются.

Чтобы не отпугивать желающих Вам помочь, выкладывайте картинки скромнее по размеру и общедоступном формате:
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 9 2010, 17:19
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Slavast @ Dec 9 2010, 16:30) *
Я сдвигаю следующим образом - вывожу массив байтов нашего рисунка начиная со след адреса строки, предварительно стерев предыдущую картинку.
Что вы имеете под понятием буфер?
Под буфером я имею в виду буфер в ОЗУ размером такой же как полный экран дисплея. Изображение формируется в этом буфере. Потом содержимое буфера целиком или частично выводится на экран. Причем выводить весь буфер всегда целиком совсем не обязательно. Достаточно обновлять содержимое только в тех позициях, где изображение изменилось по сравнению с предыдущим циклом. Чтобы не было мельтешения и артефактов на изображении следует синхронизировать обновление изображения в буфере и вывод этого буфера на экран.
Go to the top of the page
 
+Quote Post
Diusha
сообщение Dec 11 2010, 15:21
Сообщение #8


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Буфер есть и в самом ЖКИ (то биш экранная память), у многих он доступен в обе стороны. Так что если в МК с памятью напряженка, можно и им воспользоваться. Правда тогда могут получиться упомянутые rezident`ом мельтешения
Go to the top of the page
 
+Quote Post
Slavast
сообщение Dec 13 2010, 10:59
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



Цитата(rezident @ Dec 9 2010, 20:19) *
Под буфером я имею в виду буфер в ОЗУ размером такой же как полный экран дисплея. Изображение формируется в этом буфере. Потом содержимое буфера целиком или частично выводится на экран. Причем выводить весь буфер всегда целиком совсем не обязательно. Достаточно обновлять содержимое только в тех позициях, где изображение изменилось по сравнению с предыдущим циклом. Чтобы не было мельтешения и артефактов на изображении следует синхронизировать обновление изображения в буфере и вывод этого буфера на экран.



Вот боюсь как бы хватило памяти МК на то, чтоб прописать каждый адрес 128*64 дисплея.
Или хватит? Т.е. в ОЗУ прописать каждую байтовую позицию вывода - и их получится 128*64= 8192? так?
пробовал накладывать изображения - сильно мельтешит.
Также делал процедуру стирания после вывода предыдущего изображения - мельтешит также.

Цитата(Diusha @ Dec 11 2010, 18:21) *
Буфер есть и в самом ЖКИ (то биш экранная память), у многих он доступен в обе стороны. Так что если в МК с памятью напряженка, можно и им воспользоваться. Правда тогда могут получиться упомянутые rezident`ом мельтешения


В даташите вот вроде не указывают наличия экранной памяти((
Go to the top of the page
 
+Quote Post
Diusha
сообщение Dec 14 2010, 05:40
Сообщение #10


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Цитата(Slavast @ Dec 13 2010, 13:59) *
128*64= 8192? так?

Не так. Забыли поделить на 8 --> =1024. На каждый пиксель вполне достаточно 1 бита

Цитата(Slavast @ Dec 13 2010, 13:59) *
В даташите вот вроде не указывают наличия экранной памяти((

Конечно, зачем же отдельно писать о том чего НЕ быть не может? wink.gif
Любая отображаемая картинка хранится в памяти ЖКИ (точнее, в памяти встроенного контроллера). Вопрос только в том, есть ли возможность ее читать.
Обычно у подобных ЖКИ есть возможность организовать либо последовательный интерфейс, либо параллельный. Обычно в случае последовательного читать нет возможности, а в случае параллельного - есть. Уточните по ДШ.
Go to the top of the page
 
+Quote Post
011119xx
сообщение Dec 14 2010, 07:23
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Выложите лучше исходник и даташит на дисплей (если он на Си). Так дело быстрее пойдет

Сообщение отредактировал 011119xx - Dec 14 2010, 07:26
Go to the top of the page
 
+Quote Post
shrek
сообщение Dec 16 2010, 07:29
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 125
Регистрация: 1-12-08
Из: г. Орел
Пользователь №: 42 126



я думаю это некий аналог МТ18264А. Так вот как я эту проблему решил. Там тоже полуэкраны. Я их "обьеденил" пишу в обе половины страницу и колонку, а далее начинаю из 128 байтного буфера писать в память дисплея "точки" причем при переходе между 63 колонкой и 64 (на этой границе меняются половины экрана 64 это 0 колонка второго экрана) выбирается второй чип или полуэкран и он пишет во вторую половину. Признак второй половины это 1 в 7 бите 00FFFFFF 01000000. Когда счетчик байтов доходит до этого момента логика автоматом выбирает другой чип. Рисунок на весь экран выводится корректно!
Go to the top of the page
 
+Quote Post
Slavast
сообщение Dec 17 2010, 06:36
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



Цитата(011119xx @ Dec 14 2010, 13:23) *
Выложите лучше исходник и даташит на дисплей (если он на Си). Так дело быстрее пойдет


Спасибо.
Вот исходники.

Прикрепленные файлы
Прикрепленный файл  BG12864EGPLH1.pdf ( 210.48 килобайт ) Кол-во скачиваний: 247
 
Go to the top of the page
 
+Quote Post
Slavast
сообщение Dec 17 2010, 08:44
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



код прграммы - здесь шарик перепрыгивает через границу экрана, но не переезжает через нее.

Цитата(shrek @ Dec 16 2010, 14:29) *
я думаю это некий аналог МТ18264А. Так вот как я эту проблему решил. Там тоже полуэкраны. Я их "обьеденил" пишу в обе половины страницу и колонку, а далее начинаю из 128 байтного буфера писать в память дисплея "точки" причем при переходе между 63 колонкой и 64 (на этой границе меняются половины экрана 64 это 0 колонка второго экрана) выбирается второй чип или полуэкран и он пишет во вторую половину. Признак второй половины это 1 в 7 бите 00FFFFFF 01000000. Когда счетчик байтов доходит до этого момента логика автоматом выбирает другой чип. Рисунок на весь экран выводится корректно!



Когда дохожу до 64 колонки конец картинки начинает заезжать на текущий полуэкран в его начало. Тут единственный способ это наверное на 63 колонке побайтово читать хвостик шарика во второй экран, а потом обрезанную основную часть в первый. Затем во втором экране читать массив байтов шарика на 2-й байт раньше с конца, и в 1-м выводить без последних 2-хбайтов. Ит.д. Другого пока ничего и не придумаешь.
Прикрепленные файлы
Прикрепленный файл  Kvadrat_zerkalo.rar ( 67.28 килобайт ) Кол-во скачиваний: 24
 
Go to the top of the page
 
+Quote Post
bodja74
сообщение Dec 18 2010, 13:58
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Что мешает отрисовать строку на первой половине ,а потом переключиться на вторую?
также со следующими строками.
У меня допустим курсор прекрасно ездит по всему экрану ,без каких либо извращений с переносом.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 02:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01546 секунд с 7
ELECTRONIX ©2004-2016