|
ЖКИ BG12864E на ATMEGA2561, Передвижение рисунка между полуэкранами |
|
|
|
Dec 9 2010, 11:30
|
Частый гость
 
Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395

|
Цитата(rezident @ Dec 9 2010, 14:29)  Сдвигайте не на экране, а внутри МК, в буферной памяти экрана. Если он (буфер экрана) у вас конечно имеется  Я сдвигаю следующим образом - вывожу массив байтов нашего рисунка начиная со след адреса строки, предварительно стерев предыдущую картинку. Что вы имеете под понятием буфер? Цитата(011119xx @ Dec 9 2010, 14:42)  Не совсем понятен этот момент. Может можно фото показать или видео? Т.к. фотика под рукой нет, изобразил схематический 2 расположенных друг возле друга полуэкрана и шарик, бегающий по ним. DOC1 - это то, что я хочу. DOC2 и DOC3 - это то 2 варианта, которые сейчас получаются.
Прикрепленные файлы
Doc1.doc ( 338 килобайт )
Кол-во скачиваний: 50
Doc2.doc ( 337 килобайт )
Кол-во скачиваний: 39
Doc3.doc ( 388 килобайт )
Кол-во скачиваний: 34
|
|
|
|
|
Dec 9 2010, 13:03
|
Участник
  
Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695

|
Цитата(Slavast @ Dec 9 2010, 19:30)  DOC1 - это то, что я хочу. DOC2 и DOC3 - это то 2 варианта, которые сейчас получаются. Чтобы не отпугивать желающих Вам помочь, выкладывайте картинки скромнее по размеру и общедоступном формате:
|
|
|
|
|
Dec 13 2010, 10:59
|
Частый гость
 
Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395

|
Цитата(rezident @ Dec 9 2010, 20:19)  Под буфером я имею в виду буфер в ОЗУ размером такой же как полный экран дисплея. Изображение формируется в этом буфере. Потом содержимое буфера целиком или частично выводится на экран. Причем выводить весь буфер всегда целиком совсем не обязательно. Достаточно обновлять содержимое только в тех позициях, где изображение изменилось по сравнению с предыдущим циклом. Чтобы не было мельтешения и артефактов на изображении следует синхронизировать обновление изображения в буфере и вывод этого буфера на экран. Вот боюсь как бы хватило памяти МК на то, чтоб прописать каждый адрес 128*64 дисплея. Или хватит? Т.е. в ОЗУ прописать каждую байтовую позицию вывода - и их получится 128*64= 8192? так? пробовал накладывать изображения - сильно мельтешит. Также делал процедуру стирания после вывода предыдущего изображения - мельтешит также. Цитата(Diusha @ Dec 11 2010, 18:21)  Буфер есть и в самом ЖКИ (то биш экранная память), у многих он доступен в обе стороны. Так что если в МК с памятью напряженка, можно и им воспользоваться. Правда тогда могут получиться упомянутые rezident`ом мельтешения В даташите вот вроде не указывают наличия экранной памяти((
|
|
|
|
|
Dec 14 2010, 05:40
|
Вечный студент
   
Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262

|
Цитата(Slavast @ Dec 13 2010, 13:59)  128*64= 8192? так? Не так. Забыли поделить на 8 --> =1024. На каждый пиксель вполне достаточно 1 бита Цитата(Slavast @ Dec 13 2010, 13:59)  В даташите вот вроде не указывают наличия экранной памяти(( Конечно, зачем же отдельно писать о том чего НЕ быть не может?  Любая отображаемая картинка хранится в памяти ЖКИ (точнее, в памяти встроенного контроллера). Вопрос только в том, есть ли возможность ее читать. Обычно у подобных ЖКИ есть возможность организовать либо последовательный интерфейс, либо параллельный. Обычно в случае последовательного читать нет возможности, а в случае параллельного - есть. Уточните по ДШ.
|
|
|
|
|
Dec 17 2010, 06:36
|
Частый гость
 
Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395

|
Цитата(011119xx @ Dec 14 2010, 13:23)  Выложите лучше исходник и даташит на дисплей (если он на Си). Так дело быстрее пойдет Спасибо. Вот исходники.
|
|
|
|
|
Dec 17 2010, 08:44
|
Частый гость
 
Группа: Участник
Сообщений: 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-хбайтов. Ит.д. Другого пока ничего и не придумаешь.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|