Посмотреть можно было бы в даташите, но его покуда не видно в полном объёме. Сравнивая с другими даташитами подобных дисплеев, я пришел к выводу, что регистр EFh является неким переключателем банков, что подтверждается на практике. После команды lcd_wrcmd16($EF90) регистром 00h можно выключить дисплей как чёрным, так и белым цветом, причем в "выключенном" состоянии можно писать в память картинку любой сложности, после чего включить отображение и увидеть нарисованное. Используя переключение банков, можно не только во время инициализации, но и на ходу менять количество отображаемых цветов (65К или 8), разрядность интерфейса (16бит/8бит), включать/выключать негатив, менять местами синий и красный цвета, прокручивать изображение, определять активные области экрана (это для экономии питания, по аналогии с LPH88) и другие функции. Режим интерфейса 8бит позволяет использовать 256 цветов (формат RRGGGGBB, 1 байт на одну точку), что вполне достаточно, если не надо рисовать полутона, а время прорисовки примерно в 2 раза меньше, особенно полезно при заполнении экрана одним цветом. Что интересно, по разным банкам есть одинаковые функции, но по разным регистрам и с разным назначением битов в пределах регистра. Возможно, сделано для совместимости.
Привожу "расшифровку" блока инициализации экрана LS020/LQ020:
ls020_init_block_2:
.db 0xEF, 0x90 ;Bank Switch
.db 0x09, 0x83 ;Set X2 Corner, 131 - проверено
.db 0x08, 0x00 ;Set X1 Corner, 0 - проверено
.db 0x0B, 0xAF ;Set Y2 Corner, 175 - проверено
.db 0x0A, 0x00 ;Set Y1 Corner, 0 - проверено
.db 0x05, 0x00 ;Set Orientation - проверено
.db 0x06, 0x00 ;Set "cursor" position Y - проверено
.db 0x07, 0x00 ;Set "cursor" position X - проверено
.db 0xEF, 0x00 ;Bank Switch
.db 0xEE, 0x0C ;?
.db 0xEF, 0x90 ;Bank Switch
.db 0x00, 0x80 ;Display OFF (WHITE) - проверено
.db 0xEF, 0xB0 ;Bank Switch
.db 0x49, 0x02 ;Set Color Mode (positive) - проверено
.db 0xEF, 0x00 ;Bank Switch
.db 0x7F, 0x01 ;?
.db 0xE1, 0x81 ;?
.db 0xE2, 0x02 ;?
.db 0xE2, 0x76 ;?
.db 0xE1, 0x83 ;?
.db 0x80, 0x01 ; Display ON ?
.db 0xEF, 0x90 ;Bank Switch
.db 0x00, 0x00 ;Display ON - проверено
Часть этого блока можно выкинуть, сохранив работоспособность, например первую часть, если предполагается, что в функции стирания, что после инициализации, окно будет назначаться заново.
Или, например, нет смысла каждый раз при выводе символа или точки использовать команду lcd_wrcmd16($EF90), если не используются другие банки в ходе работы с экраном.
В присоединённом архиве есть демонстрационное видео с некоторыми проверенными функциями, правда качество не очень высокое.
LQ020_test_v.1.00.zip ( 292.62 килобайт )
Кол-во скачиваний: 390