КАК ПОДКЛЮЧИТЬ LCD-ЭКРАН ОТ КАССОВОГО АППАРАТА ЭКР-2102 К АРДУИНО

- Mar 09, 2018 -

КАК-ТО ПРОСМАТРИВАЯ ОБЪЯВЛЕНИЯ НА OLX, Я НАТКНУЛСЯ НА РАСПРОДАЖУ СТАРОЙ ЭЛЕКТРОНИКИ ПО ОЧЕНЬ НИЗКИМ ЦЕНАМ, В ИТОГЕ БЫЛО КУПЛЕНО ТРИ КАССОВЫХ АППАРАТА И ОДИН МОДЕМ (НА РАЗБОР С ЦЕЛЬЮ ПОПОЛНЕНИЯ ЗАПАСОВ). ЦЕНА ВОПРОСА 1500 ТЕНГЕ — ПРИМЕРНО 250 000РУБЛЕЙ.

Разобрав это добро я стал обладателем трех ЖК дисплеев и трех чековых принтеров.
КАК ПОДКЛЮЧИТЬ ДИСПЛЕЙ К АРДУИНО? НА ПЛАТЕ ЖК ДИСПЛЕЯ БЫЛО ОБНАРУЖЕНО НЕСКОЛЬКО НАДПИСЕЙ. 5104219-01, 251 12, 251-Т2. Использована микросхема Holtek HT1621B, Datenblatt был скачан и изучен. К СОЖАЛЕНИЮ, ТИП ИСПОЛЬЗУЕМОГО ЖКИ ТАК И НЕ БЫЛ ОПОЗНАН.
Прозвонив тестером выводы (6 выводов) я определил их назначение:
(1) Daten
(2) WR
(3) CS
4) неизвестно*
(5) Gnd
(6) Vdd (+ 5 V)
* — подключены резисторы, конденсаторы, поскольку мне нужно было, я и не разбирался глубоко.
Я ИСПОЛЬЗОВАЛ ГОТОВЫЕ ПРОЦЕДУРЫ ДЛЯ РАБОТЫ С ПОРТАМИ HT1621 ИЗ АРДУИНО.
Микросхема HT1621 128 ячеек для ЖКИ, которые организованы следующим образом 32 x 4 Bit, в памяти это 16 байт. В моем ЖКИ были подключены выводы Com0, Com1, Com2 и все сегменты 0-31.
Для определения какой адрес и какой бит отвечает за какой сегмент была написана простая программа, которая перебирает все адреса и все биты. Результаты были записаны в электронную таблицу для последующего анализа. Вот так выглядит заполненная таблица.
ТЕПЕРЬ СТАЛО ЯСНО, КАК УПРАВЛЯТЬ ДИСПЛЕЕМ. ТАК, НАПРИМЕР, ЧТОБЫ ВКЛЮЧИТЬ СЕГМЕНТЫ B UND C В ПЕРВОЙ ПОЗИЦИИ (САМАЯ ЛЕВАЯ) НУЖНО ИЗМЕНИТЬ БИТЫ D5 UND D6 НА 1 ПО АДРЕСУ 0 X 05, ОСТАЛЬНЫЕ БИТЫ ДОЛЖНЫ БЫТЬ ОСТАВЛЕНЫ БЕЗ ИЗМЕНЕНИЙ, ПОСКОЛЬКУ ОНИ ПОВЛИЯЮТ НА ДРУГИЕ ПОЗИЦИИ.
Если обратить внимание на таблицу, можно увидеть, что для отображения какой — либо цифры нужно поменять несколько битов в нескольких байтах. Эту задачу я решил следующим образом. Были подготовлены несколько таблиц:

(1) HT1681_Address(72 байта), HT_1681_Value(72 байта)

(2) b7SegDsp(10 байт)

HT1681_Address(72 байта), HT_1681_Value (72 байта) эти две таблицы связаны между собой следующим образом — вторая таблица представляет собой маску (для oder) для установки соответствующего бита в 1, причем первые девять байтов отвечают за сегменты A, B, C, D, E, F, G + ДЕСЯТИЧНУЮ ТОЧКУ + ВЕРНЕЕ «ПОДЧЕРКИВАНИЕ» ПЕРВОГО ЗНАКОМЕСТА, СЛЕДУЮЩИЕ ДЕВЯТЬ — ЗА СЕГМЕНТЫ ВТОРОГО ЗНАКОМЕСТА И ТАК ДАЛЕЕ. ПЕРВАЯ ТАБЛИЦА — ПРЕДСТАВЛЯЕТ СОБОЙ АДРЕСА КОТОРЫЕ СООТВЕТСТВУЮТ ВТОРОЙ ТАБЛИЦЕ. ДЛЯ ПОНИМАНИЯ ВНИЗУ ПРИВЕДЕНА ИЛЛЮСТРАЦИЯ.

Код для Ардуино

b7SegDsp (10 байт) Эта таблица кодирует какие сегменты должны включаться для отображения числа.Первый байт — это кодирование числа 0, последний байт кодирует 9. СТАРШИЕ СЕМЬ БИТ D7-D1 КОДИРУЮТ СЕГМЕНТЫ A-G, МЛАДШИЙ D0 – НЕ ИСПОЛЬЗУЕТСЯ Я ЕГО УСТАНОВИЛ В 0, КРОМЕ ТОГО, ЭТО ЭКОНОМИТ ОДНУ ОПЕРАЦИЮ БИТОВОГО СДВИГА ВЛЕВО — Я ИСПОЛЬЗУЮ МАСКУ 0 X 80 ДЛЯ ПРОВЕРКИ БИТА.
HT1681_Screen (16 байт) просто видеопамять, все 16 байтов. ВНАЧАЛЕ РЕНДЕРИТСЯ ВСЕ В ПАМЯТЬ, А ЗАТЕМ ВСЕ КОПИРУЕТСЯ В HT1621.

Ниже код, который выполняет рендеринг в HT1681_Screen, который потом просто выводится в память микросхемы для отображения.


Ein paar:Neue LCD-Tech könnte virtual-Reality Displays drei Mal schärfer machen. Der nächste streifen:¿Qué hay de la pantalla de un Smart TV?