Выводим информацию на VFD IBM 41K6814

Достался по случаю VFD дисплей от POS терминала IBM 41K6814.


Ну как достался, был куплен по объявлению за 334р.

2 строки по 20 символов.
top pcbbottom pcb

На плате надпись M202MD08A FUTABA

Поисковые запросы выдают очень мало информации.
В основном вопросы на разных форумах о том как с ним работать.
Больше всего информации у поляков, где они заменяли контроллер дисплея на свой.


Интерфейс подключения RS485.
1 — +12v
2 — A
3 — B
4 — GND

Протокол управления достаточно странный, в моем понимании и является эдакой смесью протоколов из обоих pdf файлов.

Хоть в документации и написано:
Twelve Bit Asynchronous

1. Bit 1 = Start Bit
2. Bits 2 to 9 = Data Bits 0 to 7
3. Bit 10 = Address Bit
4. Bits 11 and 12 = Stop Bits(minimum)

Bit Rate = 187.5 Kbits per second

У меня стабильный прием получился только при одном стоп бите.

Если просто подать питание, то на дисплей во второй строке выведется надпись «U001»
U001

Все ниже приведенные данные получены с рабочей системы, путем снятия дампа бегающей в RS485 информации.

В документации сказано что дисплей может иметь адрес 24 или 25 ( Похоже что у меня с 25 ).
При получении 0x1A5 дисплей может ответить двумя вариантами:
1. 0x15A — End of Poll ( название из документации, )
2. 0x125 xx cc cc 0x17E — пакет с данными.
xx — данные
cc cc — два байта crc16 x25 IBM-SDLC
Количество передаваемых данных заранее не известно.

вот дамп обмена при инициализации:
>> 0x1A5
>> 0x1A5
<< 0x125 0x0F 0x3B 0xAA 0x17E
>> 0x125 0x83 0x5F 0xE4 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0x63 0x51 0x03 0x17E
>> 0x125 0x00 0x00 0x00 0x01 0x3B 0x98 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0x20 0x10 0x20 0x06 0x00 0x02 0x12 0xF9 0xA8 0x17E
>> 0x125 0x21 0x47 0x62 0x17E
>> 0x1CA
>> 0x1CA
>> 0x125 0x22 0x40 0x00 0x00 0x00 0x00 0x04 0x00 0x00 0x00 0x00 0x8E 0xFE 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0x41 0x41 0x01 0x17E
>> 0x1CA
>> 0x1CA
>> 0x125 0x24 0x40 0x01 0x06 0x09 0x1C 0x08 0x1C 0x09 0x06 0x00 0xA3 0x82 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0x61 0x43 0x20 0x17E
>> 0x1CA
>> 0x1CA
>> 0x125 0x26 0x40 0x02 0x00 0x00 0x00 0x04 0x00 0x00 0x00 0x00 0x21 0x3B 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0x81 0x4D 0xC7 0x17E
>> 0x1CA
>> 0x1CA
>> 0x125 0x28 0x40 0x03 0x00 0x00 0x00 0x04 0x00 0x00 0x00 0x00 0x01 0x3F 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0xA1 0x4F 0xE6 0x17E
>> 0x1CA
>> 0x1CA
>> 0x125 0x2A 0x40 0x04 0x00 0x00 0x00 0x04 0x00 0x00 0x00 0x00 0xC1 0x7D 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0xC1 0x49 0x85 0x17E
>> 0x1CA
>> 0x1CA
>> 0x125 0x2C 0x40 0x05 0x00 0x00 0x00 0x04 0x00 0x00 0x00 0x00 0x4B 0xC5 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0xE1 0x4B 0xA4 0x17E
>> 0x1CA
>> 0x1CA
>> 0x125 0x2E 0x40 0x06 0x00 0x00 0x00 0x04 0x00 0x00 0x00 0x00 0x6E 0xB8 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0x01 0x45 0x43 0x17E
>> 0x1CA
>> 0x1CA
>> 0x125 0x20 0x40 0x07 0x00 0x00 0x00 0x04 0x00 0x00 0x00 0x00 0x55 0x48 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0x21 0x47 0x62 0x17E
>> 0x1CA
>> 0x1CA
>> 0x125 0x22 0x41 0x0A 0x00 0x4D 0x9E 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0x41 0x41 0x01 0x17E
>> 0x1CA
>> 0x1CA
>> 0x125 0x24 0x81 0x28 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x80 0x96 0x77 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0x61 0x43 0x20 0x17E
>> 0x1CA
>> 0x1CA
>> 0x125 0x26 0x82 0x28 0x55 0x30 0x30 0x37 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0xEC 0x86 0xFD 0x17E
>> 0x1A5
>> 0x1A5
<< 0x125 0x81 0x4D 0xC7 0x17E

После нее на дисплей выводится U007


Ну или то, что вы на него передадите…



Кодировка русского у него своеобразная.
С 0x80 по 0xAF идет «АБВГ… мноп», а продолжение с 0xE0 по 0xF1 «рсту… ьэюяЁё».

Есть возможность менять информацию как на конкретной строке, так и на всем дисплее одной командой.
0x17A
0x03 0x00 0x00 0x00 
LL - длина сообщения
XX - сообщение
СС СС - CRC 
0x17E

Например:
0x17A 0x03 0x00 0x00 0x00 0x28 0x55 0x30 0x30 0x35 0x2E 0x34 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0xF6 0x11 0x17E

Но даже если выведете этой командой только один символ, все не задействованные знакоместа очистятся.

Для изменения одной конкретной строки
0x125
0x24 - не однозначно, толи это последовательность 20, 22, 24, 26, 28, 2A, 2C, 2E, толи в младшем нибле предается старший нибл полученного статуса от дисплея ( работают оба варианта )
0x81 - "номер" строки 0x81 первая 0x82 вторая
0x28
XX - 20 байт данных
DD - сумма данных & 0xFF
СС СС - CRC 
0x17E

Например, очистит первую строку:
0x125 0x24 0x81 0x28 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x80 0x96 0x77 0x17E


Загрузка символа
0x125
0x24 - не однозначно, толи это последовательность 20, 22, 24, 26, 28, 2A, 2C, 2E, толи в младшем нибле предается старший нибл полученного статуса от дисплея ( работают оба варианта )
0x40 - 
0x01 - от 0x00 до 0x07 номер символа 
XX - 8 байт данных, используется только первые 7.
СС СС - CRC 
0x17E

Например, загрузка 1 символа «знак евро»
0x125 0x24 0x40 0x01 0x06 0x09 0x1C 0x08 0x1C 0x09 0x06 0x00 0xA3 0x82 0x17E


Для общения с дисплеем использовалась Arduino Mega 2560 и MAX13485.
Только почему-то пришлось соединять A-B, B-A, иначе не работало.


Mega2560 и 41k6814
Atmega328p и 41k6814
  • +3
  • 12 апреля 2017, 22:52
  • HOMEZ
  • 2
Файлы в топике: ibm futaba pdf.zip, futaba_rs485.zip

Комментарии (5)

RSS свернуть / развернуть
А какой там чип выполняет роль мозгов? На него даташита нет? Или это МК?
0
  • avatar
  • Vga
  • 13 апреля 2017, 15:49
мк nxp p87c58x2bbd масочный насколько я понял из его даташита.
0
Есть ещё такие работающие по RS232 они более распространённые. Насколько я помню они в кодировке 866 работают, но команды я уже не вспомню. Их также ставят к кассам. Насколько удалось вспомнить на них можно было просто как в терминал писать.
0
Видео фстудию))
0
Видео, что-то не понял как его вставить не ссылкой.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.