После введения онлайн касс, у многих в загашниках завалялись старые кассовые аппараты. Вот и я стал обладателем нескольких аппаратов Меркурий 130К.
Внутри аппарата нет практически ничего ценного - древний микроконтроллер, никому ненужный термопринтер, свинцовый аккумулятор, итд. Но кое-что в нём меня всё же заинтересовало - это ЖК дисплей. Вернее их два: один дисплей является основным, а второй служит в роли дисплея покупателя.
Основной дисплей меня не очень интересовал, так как он впаян в основную плату кассового аппарата. А вот дисплей покупателя очень заинтересовал, так как он установлен на отдельной плате небольшого размера, по сути является готовым дисплейным модулем для радиолюбительских самоделок.
После демонтажа дисплея выяснилось, что он сделан на базе микросхемы контроллера ЖК дисплея Holtek HT1621B. Это широко известный контроллер дисплея, в интернете про него есть много информации.
Даташит на микросхему был найден на сайте производителя. Далее при помощи даташита и прозвонки мультиметром, была определена распиновка дисплея. Напряжение питания дисплея составляет 5В, это я выяснил включив кассовый аппарат.
Дисплей работает по последовательной шине. О принципах работы микросхемы HT1621 рассказывать не буду, так как про этот чип есть много информации в интернете. Я подключил дисплей к макетной плате с микроконтроллером ATmega48PA по следующей схеме.
Вот так это выглядит "в железе".
В даташите на микросхему HT1621 описан протокол обмена, но мне не удалось найти схему коммутации сегментов внутри стекла дисплея. Чтобы не прозванивать каждый сегмент мультиметром, с целью определить комбинацию адреса и бита для каждого сегмента, я написал простенькую программу для перебора всех адресов и всех битов каждого адреса. Всего у микросхемы 32 адреса по 4 бита в каждом, то есть микросхема поддерживает управление до 128 сегментами. В итоге получилась вот такая раскладка сегментов.
Первая цифра обозначает адрес данного сегмента, вторая цифра - значение, или битовая маска для включения сегмента. Для удобной работы микроконтроллера с дисплеем, я объединил каждую пару адресов, получив при этом 16 адресов по 8 бит. Раскладка сегментов получилась следующая:
Далее была написана библиотека для работы с дисплеем. В библиотеке используется программная реализация последовательного интерфейса. При помощи библиотеки можно отображать на дисплее: цифры, знаковые и беззнаковые числа, символы, верхние и нижние точки. В общем реализована полная поддержка всех сегментов данного дисплея. На фотографиях ниже можно ознакомиться с примерами отображения.
Напоследок - выкладываю исходный код, который был написан в AVR Studio 5 версии.
Ну и конечно желаю всем успешных самоделок!
Прикрепленные файлы:
- HT1621_rev3_21_Holtek.pdf (513 Кб)
- LCD_Mercury_130K_Zlodey_v20200503.zip (155 Кб)
Комментарии (12) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
Делал несколько приборов:
https://cxem.net/master/98.php
И еще делал двухканальный градусник на термисторах и Arduino.
[Автор]
[Автор]
[Автор]
[Автор]