Підключення дисплея від касового апарату Меркурій 130К до мікроконтролера
Після введення онлайн-касових апаратів, у багатьох в загашниках завалялися старі касові апарати. Ось і я став власником кількох апаратів Меркурій 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 Кб)