Перейти к содержанию
    

OLED дисплей 20x2 UC-2002ASYAS10 от Inteltronic - брак?

Принесли дисплей, из тех. данных есть название, красивая картинка и распиновка:) Ну, думаю, раз ничего не пишут, значит стандартный, HD44780-совместимый. Подключаю, запускаю, и вижу вот что:

post-29684-1321466669_thumb.jpg

Это строка "H E L L O!" (Букву "H" я укрупнил). Столбцы в буквах переставлены - четвёртый столбец встал на первое место. При этом пятый, последний столбец находится уже на следующем знакоместе (этого не видно на фото).

Вторая строка не отображается, вместо неё пробегают и тут же исчезают какие-то точки.

Судя по всему, инициализация более-менее проходит (я могу включить/выключить курсор, поменять шрифт, и пр.), обмен идёт нормально (выводятся именно те буквы, которые я передаю. Это не проблема отдельного экземпляра, я попробовал два дисплея.

Вот такая ерунда.

Вопросы у меня такие: кто-нибудь встречался с такими дисплеями? Что это может быть? Брак?

 

Вот на всякий случай код:

enum
{
LCD_CLEAR       = 0x01,
LCD_HOME        = 0x02,

ENTRY_MODE_SET  = 0x04,
ENTRY_MODE_INCREMENT = 0x02,
ENTRY_MODE_DECREMENT = 0x00,
ENTRY_MODE_SHIFT_RIGHT = 0x01,
ENTRY_MODE_SHIFT_LEFT = 0x03,

DISPLAY_CTL     = 0x08,
DISPLAY_CTL_BLINK_ON = 0x01,
DISPLAY_CTL_CURSOR_ON = 0x02,
DISPLAY_CTL_DISPLAY_ON = 0x04,

FUNCTION_SET = 0x20,
DATA_LENGTH_8_BIT = 0x10,
DATA_LENGTH_4_BIT = 0,
ONE_LINE = 0,
TWO_LINES = 0x08,
FONT_5x10 = 0x04,
FONT_5x8 = 0,

LCDLINE1		= 0x80,
LCDLINE2		= 0xC0
};

#define  LCD_RS		B, 0, H
#define  LCD_RW		B, 1, H
#define  LCD_E		B, 2, H

static void set_command_mode() { off(LCD_RS); }
static void set_data_mode() { on(LCD_RS); }
static void set_write_direction() { off(LCD_RW); }

static void write_bus(uint8_t value)
{
PORTA = value;
}

static void strobe()
{
on(LCD_E);
__asm__ __volatile__ ("nop");
off(LCD_E);
}

static void write_data(uint8_t value)
{
set_data_mode();
write_bus(value);
strobe();
delay_ms(4);
}

static void write_command(uint8_t value)
{
set_command_mode();
write_bus(value);
strobe();
delay_ms(4);
}

void Hd44780_init()
{
off(LCD_E);
set_write_direction();

direct(LCD_RS, O);
direct(LCD_RW, O);
direct(LCD_E, O);
DDRA = 0xFF;

delay_ms(41);            // wait more than 40ms after VCC rises to 2.7 V

write_command(FUNCTION_SET | DATA_LENGTH_8_BIT);
delay_ms(5);             // wait more than 4.1ms
write_command(FUNCTION_SET | DATA_LENGTH_8_BIT);
delay_ms(1);             // wait more than 0.1ms
write_command(FUNCTION_SET | DATA_LENGTH_8_BIT);
write_command(FUNCTION_SET | DATA_LENGTH_8_BIT | TWO_LINES | FONT_5x8);
write_command(LCD_CLEAR);
write_command(ENTRY_MODE_SET | ENTRY_MODE_INCREMENT);
write_command(DISPLAY_CTL | DISPLAY_CTL_DISPLAY_ON);
}

void Hd44780_putchar(char ch)
{
write_data(ch);
}

void Hd44780_puts(char const* s)
{
while (*s)
	Hd44780_putchar(*s++);
}

void Hd44780_cls()
{
write_command(LCD_CLEAR);
}

void Hd44780_gotoXY(int line, int pos)
{
uint8_t cmd = (line == 1) ? LCDLINE1 : LCDLINE2;
cmd += (pos - 1);
write_command(cmd);
}

int main (void)
{
for (;;)
{
	Hd44780_init();
	Hd44780_cls();
	Hd44780_gotoXY(1, 1);
	Hd44780_puts("H E L L O!");
	Hd44780_gotoXY(2, 1);
	Hd44780_puts("1234567890");
	delay_ms(1000);
}
return 0;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дополнительная информация. Контроллер - точно HD44780-совместимый, я проверил все команды - всё отрабатывает. И курсор, и мигание курсора, и сдвиг вправо/влево, и переключение шрифта - всё работает.

Вторую строку тоже нашёл, она оказалась не по адресу 0xC0, как обычно, а сразу вслед за первой, по адресу 0x80+20.

Но вот глюк никуда не делся... Похоже, брак :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот такая ерунда.

Один NOP на строб может быть маловато, в похожем четырехстрочном дисплее минимальная длительность сигнала 'E' была 500нс. И команды он отрабатывал за 400-700мкс, а не за 40, как обычный 44780.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотри внимательно , нет следов , что его разбирали

Не, это COG-дисплей, его не разобрать никак. Стекляшка с напылённым кристаллом.

Один NOP на строб может быть маловато, в похожем четырехстрочном дисплее минимальная длительность сигнала 'E' была 500нс. И команды он отрабатывал за 400-700мкс, а не за 40, как обычный 44780.

Я пробовал удлинять, без результата. Аж до двух миллисекунд:) Да и проходят команды-то. Он же всё понимает, только отображает криво.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дополнительная информация. Контроллер - точно HD44780-совместимый, я проверил все команды - всё отрабатывает.

На сайте нет полного описания. Пишите производителю, спросите тип контроллера и описание на контроллер. Если известен тип контроллера, ищите производителя и смотрите у него.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Он же всё понимает, только отображает криво.

Так оно так и было, при укороченном E все отображалось, но лез мусор и курсор позиционировался куда попало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я пробовал удлинять, без результата. Аж до двух миллисекунд:) Да и проходят команды-то. Он же всё понимает, только отображает криво.

Как вариант, контроллер не полностью совместим с 44780, точнее является его модификацией, требующей специальных команд инициализации. Дергайте в первую очередь продавца. Пока нет четких данных о типе контроллера- ничего сказать нельзя, только домыслы строить.

 

Еще может быть у вас неправильно выбрана матрица символов (возможны 5x10 и 5x8), или брак(китайская отбраковка, партия в пару тысяч штук).

 

Если на место этого индикатора подключаете обычный 5-вольтовый LCD, все нормально? (только подсветку отключите, иначе в LCD подсветка навернется)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так оно так и было, при укороченном E все отображалось, но лез мусор и курсор позиционировался куда попало.

А у меня не мусор, а именно те символы, которые я передаю. И позиционируется правильно. Чуете разницу? :)

 

Как вариант, контроллер не полностью совместим с 44780, точнее является его модификацией, требующей специальных команд инициализации.
Не представляю, как в протокол 44780 впихнуть дополнительные команды. Там есть четыре битика, все их возможные комбинации я проверил.
Дергайте в первую очередь продавца. Пока нет четких данных о типе контроллера- ничего сказать нельзя, только домыслы строить.
Продавец смог найти только тот же листочек, что есть по ссылке в первом сообщении темы:) Наверное дёргать недостаточно, надо попинать:)
Еще может быть у вас неправильно выбрана матрица символов (возможны 5x10 и 5x8), или брак(китайская отбраковка, партия в пару тысяч штук).
Матрицы символов я переключал, работает, но не спасает. Боюсь, что вариант с отбраковкой - самый вероятный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут даже если специально хотел бы сделать такое специфично кривое отображение, то не понятно как...

А попробуйте вывести что-нибудь из пользовательских символов, которых 8 штук.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Знакомый рассказыл что несколько лет назад они поставили в прибор Винстаровский OLED 20x2, глюков небыло, но в течении года вышли из стоя все, причем имено сам дисплей (колба).

Может с тех пор технология и улучшилась, но тогда им пришлось менять на LCD.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А попробуйте вывести что-нибудь из пользовательских символов, которых 8 штук.

Вот, символы - одна полная строка точек, две строки, три... восемь строк. Вверху с разбивкой пробелами, внизу - подряд.

На второй строке заметно "взаимное проникновение" символов:)

post-29684-1321520526_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Будто внутренняя разводка на столбцы неправильная...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...