Дисплей от Motorola C201

forfrends
Offline
Зарегистрирован: 24.02.2015

Всем привет! имеется дисплей от Motorola C201. Разрешение 96*64. Подключается по I2C. Схему подсмотрел здесь: http://vrtp.ru/index.php?showtopic=9846#
Подошла инициализация от Motorola T190(T191). Привожу код, но написан он не для Ардуино IDE, если не ошибаюсь, для CodeVisionAVR, я использую такой же код, только для Ардуино, и он разбит на несколько файлов, по этому привожу код для CodeVisionAVR:

В общем дисплей работает, все отображает. Но есть один огромный минус: он показывает верхногами. То есть начало координат находится не слева вверху, а справа внизу. Текст выводится справа на лево и снизу вверх...
Надо как-то перевернуть дисплей. Но что-то не могу найти регистр, который за это отвечает. Может кто-то может подсказать? Физически перевернуть дисплей нельзя, просто не станет на свое место. Вот команды инициализации:

0x00
0x31
0x14
0x06
0x30
0x11
0x05
0x31
0x9A - contrast 0x9A*/,
0x0C
0x30
0x0C - D - inverse, C - normal,
0x40
0x80
 
Я попробовал изменять биты в командах 0x0C, 0x30 и 0x0C (D - inverse, C - normal), единственное что удалось добиться - отражение букв по горизонтали или вертикали, именно каждого символа по отдельности, а не строк целиком.
alex_kotl
Offline
Зарегистрирован: 21.03.2018

Если контроллер ST7558, ковыряй регистр Ext. display control MX, MY (см.даташит, попробуй добавить в инициализацию 0x2E)

forfrends
Offline
Зарегистрирован: 24.02.2015

Очень похоже. Но инициализация от ST7558 не подходит. Вот пример инициализации:

{
0x2E,           // MXMY
0x21,           // Extend Set H=1
0x12,           // Bias
0xC0,           // VOP
0x0B,           // Boost
0x20,           // Normal Set H=0
0x11,           // PRS
0x00,           // nop
0x40,           // Y addr
 0x80,           // X addr
},
cmd_invert[]= {CONTROL_RS_CMD, 0x20, 0x0D},
cmd_on[]= {CONTROL_RS_CMD, 0x20, 0x0C},
cmd_off[]= {CONTROL_RS_CMD, 0x20, 0x08};
 
А вот инициализация, которая подходит к моему дисплею:
 
{
0x00,
0x31,
0x14,
0x06,
0x30,
0x11,
0x05,
0x31,
0x9A /*contrast 0x9A*/,
0x0C,
0x30,
0x0C /*D - inverse, C - normal*/,
0x40,
0x80
};
byte gotoxylcd [5] = {0x00, 0x30, 0x40, 0x80};
byte contrast [3] = {0x00, 0x31, 0x9A};
byte erase_ylcd[9] = {0x40, 0x00 };

Есть несколько одинаковых моментов, но в остальном инициализации разные. Только что попробовал инициализацию из даташита на ST7558, страница 48. Но дисплей молчит. Скорее всего используется другой контроллер.

alex_kotl
Offline
Зарегистрирован: 21.03.2018

Есть инфа, что возможно контроллер PCF8548, посмотри даташит