Чем заменить дисплей 1602

Обновлено: 03.07.2024

LCD дисплеи от компании Winstar уже на протяжении нескольких лет являются неотъемлемой частью современной электронной продукции, и не только на российском рынке. Они дешевы, очень распространены (не видел магазинов, где их не было бы), их разнообразие предоставляет разработчику выбирать подходящий в зависимости от эксплуатационных условий. Их различие заключается в диапазонах рабочих температур, количеством строк для отображения информации, количеством знакомест в строке, стандартными из которых являются значения 8, 12, 16, 20, 24 и 40 символов на одну строку, так же различаются размерами символа, его разрешением, размерами самого дисплея и т.д. Winstar выпускает не только буквенно-цифровые знакосинтезирующие LCD-модули, но и графические. Те, в свою очередь, тоже имеют различные параметры, что предоставляет пользователю возможность выбирать подходящий исходя из поставленной задачи.

Многие начинающие радиолюбители, только-только начавшие осваивать цифровую технику, микроконтроллеры, рано или поздно столкнутся с проблемой, связанной с подключением и управлением данного дисплея. Немного упростив ситуацию с даташитом на дисплей WH1602B, я старался описать процесс подключения и управления модулем максимально просто для понимания.

Стандартно дисплей WH1602B выглядит так:

LCD дисплей 1602

16 выводных линий, из которых 11 – линии управления, расположены в ряд с шагом 2,54мм, что позволяет разработчику напрямую подпаять шлейф или поставить разъем, и отвести шлейф к плате управления, в зависимости от конструкции конечного устройства.

Далеко не редким является дисплей с боковым расположением контактов.

В зависимости от конструктива радиоэлектронного устройства разработчик может использовать любой тип расположения выводов – различия между программными обеспечениями совершенно нет.
Модули могут комплектоваться задней подсветкой экрана, причем тип источника подсветки у разных модулей различен. В некоторых дисплеях используется электролюминесцентная подсветка, обеспечивающая равномерное распределение свечения по всей отображаемой поверхности экрана. Главным недостатком дисплея с таким типом подсветки является, пожалуй, одно: для питания такого дисплея нужен переменный ток высокого напряжения. У светодиодных подсветок недостатков практически нет, модули с применением светодиодной подсветки могут использоваться в приложениях, работающих при широких диапазонах температур. Производитель дает широкий выбор в плане цвета подсветки – поскольку светодиодные матрицы можно установить практически любого цвета.

Существенным недостатком дисплеев WH1602B является ток потребления, поэтому применять данный тип дисплеев в устройствах с автономным питанием совершенно невыгодно.

Дисплеи линейки WH построены на базе специализированного контроллера LCD-модулей HD44780, который как раз и разрабатывался для управления знакосинтезирующими ЖК-панелями.

С небольшим описанием, пожалуй, стоит закончить, и приступить к практической части. Нумерация выводов дисплея, если смотреть на него сверху (т.е. как мы смотрим на него при чтении информации), идет начиная с самого крайнего левого вывода. Это вывод 1.

Подключение LCD 1602

Итак распиновка 1602:
1) GND – общий провод
2) Vcc – напряжение питания +5В
3) V0 – контрастность
4) RS – линия выбора регистра
5) RW – линия выбора направления передачи данных (чтение или запись)
6) E – линия синхронизации
7) DB0 – 14) DB7 – линии шины данных
15) A – анод подсветки (подключаем сюда +5В через резистор 100Ом)
16) К – катод подсветки (подключаем к общему проводу)

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

Итак, какие действия необходимо выполнить для надежного процесса инициализации:
1) Включить питание дисплея
2) Выдержать паузу 20мс
3) Выдать команду 00110000 при RS=0 RW=0
4) Выдержать паузу не менее 40мкс
5) Выдать команду 00110000 при RS=0 RW=0
6) Выдержать паузу не менее 40мкс
7) Выдать команду 00110000 при RS=0 RW=0
8) Выдержать паузу не менее 40мкс
9) Выдать команду 00111000 при RS=0 RW=0
10) Выдержать паузу не менее 40мкс
11) Выдать команду 00001000 при RS=0 RW=0
12) Выдержать паузу не менее 40мкс
13) Выдать команду 00000001 при RS=0 RW=0
14) Выдержать паузу не менее 1,5мс
15) Выдать команду 00000110 при RS=0 RW=0.

Поясню: RS – как отмечалось выше – линия выбора регистра (0 – адресуется регистр команд, в который мы записываем команды отключения дисплея, сдвига строки, установление курсора и т.д.; 1 – адресуется внутренняя память, куда будет записываться байт и отображаться на дисплее).

RW – линия выбора направления передачи данных (0 – запись в дисплей, 1 – чтение данных из дисплея).
После выдачи данных на линию данных DB0-DB7 и установки значений на линиях RS, RW, необходимо эти данные защелкнуть – для этого нужно установить линию E в 1, и, затем, снова сбросить в исходное положение – в 0.

Подключаем PD0 микроконтроллера к линии RS LCD, вывод PD1 микроконтроллера к RW дисплея, ну а PD2 – соответственно к линии Е дисплея, а линии шины данных DB0-DB7 к соответствующим линиям порта B микроконтроллера. Сам дисплей подключаем согласно схеме вверху.

Теперь дело за программной частью:

Как пользоваться данным кодом. Для занесения символа на экран необходимо записать байт, соответствующий коду этого символа, в регистр R17. В регистр 17 заносим 0х1 – если хотим записать символ на экран, или сбрасываем в 0х0, если хотим записать какую-то команду в регистр команд LCD дисплея.

Мной были предусмотрены подпрограммы, которые вызывает пользователь:
user_write_IR – запись команды в регистр команды LCD;
user_write_DR – запись данных для отображения на LCD;
lcd_clear – подпрограмма/команда, вызов которой осуществляет очистку дисплея.

Как работать с вызовом подпрограмм:

Отмечу, что при использовании подпрограммы lcd_clear предварительная запись в R17 не требуется.
Где писать свой код? Вот здесь:

mc89-3.jpg

Отображение текста на LCD дисплее 1602

Добавлю, что в последнее время появились данные модули с платой последовательного преобразователя, позволяющие подключать LCD дисплеи 1602 по 4-х проводной схеме и работающими по I 2 C-интерфейсу. Т.о. немного упрощается подключение и экономятся выводы контроллера. Модуль можно приобрести отдельно и подключить к уже имеющемуся LCD 1602.


Добрый день! Столкнулся с проблемой, решил собрать замок. В нем используется жк дисплей. В схеме это WH1602A. В магазинах города есть только WH1602D либо QC1602A. В чем у них различие и можно ли заменить? Фото схемы прикладываю.

СПАСИБО ВСЕМ КТО ОТКЛИКНУЛСЯ! Будем пробовать!

Комментарии 16


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


Наверное, для того чтобы использовать 3 порта мк, вместо 6и.


ну если только, хотя есть свободные порты!


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

Не могу сказать, не понял сам


В управлении различий нет. Различия могут быть в подсветке и оттенке дисплея(серый или зеленоватый).


различие в прошитых доп.кодировках (есть кириллица, нет), в подсветке — буквы светятся или фон, в цвете букв/подсветки.

контроллер дисплея один и тот же везде, управление им тоже.



у них один контроллер очень популярный — скачай даташеты на них и сразу поймешь — можно только обжечься с подсветкой, кириллицей и напряжением питания, остальное практически одинаковое. Говорят инициализация немного отличается но я не "сталкивался" что бы оживали по разному.
QC1602A кажись получше будет… хотя хз, китайцы ведь )))


То есть можно просто заменить?



Отличие только в размерах платы и крепежных отверситях. Главное это с подсветной нужен или нет. И 3V или 5V ( есть с кирилицей и англ)


Как я понял, у них почти нет различий. Просто некоторые не поддерживают русские буквы.

Совместимые аналоги.
Различие бывает в наличии прошитой кириллицы.


На какой лучше заменить?

Если твой будильник/таймер не пишет по русски — на любой, что есть в продаже.


Долгое время пытался привыкнуть к белым буквам на раздражающем синем(фиолетовом) фоне подсветки экрана iMax B6 mini.
Думал, что только я страдаю «нелюбовью» к такого рода комбинациям цвета подсветки и символов, но на деле оказалось, что различные форумы кишат людьми, которые предлагают избавится от раздражения путём приклеивания сверху некоей плёнки различных цветов и пропускной способности.
Идея вроде хороша, но найти такую пленку не так легко!
Своими силами подумывал даже заменить подложку-светодиод подсветки на другой цвет, но это оказалось сложно из-за нестандартных размеров самого экранчика iMax.
И тогда я решил полностью поменять ЖК модуль на тот, который мне бы понравился.

О самом экранчике говорить смысла нет — стандартный дисплей 1602(16 символов на каждые из двух строк), со стандартными 16-тю пинами(горизонтальная однорядная гребёнка), который прекрасно знают «ардуинщики» к коим я себя только-только причисляю)


Первым делом я отпаял родной дисплей, который выглядел вот так:


И убрал лишнего припоя с ножек:


Установил в свои посадочные пины новый дисплей, смазал флюсом:


При включении, оказалось, что контраст, настроенный для родного экрана iMax не подходит новому;

Не сфотографировал, но скажу на словах, для решения этой проблемки, подстроечным резистором определил нужное сопротивления, и заменил резисторы на плате iMax, которые отвечают за контраст(их видно на фото, где убирал излишки припоя — два резистора около винта)


Вот так, теперь, выглядит в выключенном состоянии:


А вот так во включенном:

В целом — я очень рад, что это случилось) Теперь мне стало более комфортно.


Дабы не плодить темы помогите плз с восстановлением тестера у мня побился дисплей и я было подумал что тестеру хана , нашел через время на али нужный дисплей но детали с тестера некоторые были выпаяны а назад какие запаивать не помню . Те что подписаны запаял осталось допаять некоторые . У кого такой тестер подскажите номиналы буду благодарен за помощь ) Интересует нижний ряд резисторов и еще непонятно какой смд кондер припаивать под названием 100фарад.

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


О благодарочка ) Я уже нашел что надо но все равно спс ) Не призаметил или не придал значения ссылке а она важная ) Еще схему прилагаю , вот что за кондер 100 фарад ума не приложу ) ладно будем читать другой форум тогда.

Скорее всего дефект маркировки (или "очепятка") на плате, конденсатор скорее всего 1uF (или 0,1мкф), но не больше, судя по размеру. Посмотрите что должно быть по схеме.

По схеме 10 нан , но по схеме и 10ком в цепи к gnd от 10го вывода атмеги, а на плате цифра 100ком. Короче впаял 10 нан и 100 ком посмотрим что будет. Я вообще думал выкидывать ))) Чисто случайно нарвался на экран для этого тестера. Осталось только лишь заказать дисплей.

Дык у этого тестера схема-то самая обычная, даже преобразователей уровня для дисплея нет.
Вместо стабилизатора напряжения на 3,3в для дисплея стоят просто 3 диода (проверьте что на самом деле стоит, кстати).
В мануале на ТТестер у автора прибора по нему тоже есть заметки. Рекомендую почитать мануал.
Если нет родного дисплея, то можно поставить любой другой совместимый (все что для этого надо, это переписать прошивку соответствующей дисплею), хоть 2х16, хоть от Нокии 5110. По ссылке выше люди уже так делали.
Прошивку в любом случае желательно обновлять, т.к. родная китайская наверняка уже морально устарела (даже те что сейчас в данный момент продаются), они постоянно обновляются. Я только вчера обновил прошивку для своего M328+TFT, приедут эти желтоплатники (жду посылку), обновлю и их тоже.


по дисплеям тестер полупроводников самый "богатый"
у меня на дисплее от сименса а62, возможно еще один соберу когда нибудь на st7735s

Мне не нравится мой ST7735s что шел вместе с набором, очень маленький (зрение уже не то что в молодости, приходится пользоваться всякими линзами, чтобы на нем что-то можно было рассмотреть).
И в добавок еще и яркость подсветки недостаточна. Даже на 5110 дисплее и то информация более "читаема". Ищу что-то побольше. есть несколько дисплеев неизвестного происхождения, надо экспериментировать. (Пока карантин не закончился. )

Строчные (или текстовые) дисплеи предназначены для выдачи текстовой информации в виде строк. Они бывают нескольких типов (прежде всего, ЖК или самосветящиеся OLED), и обычно в их маркировке присутствуют цифры 1202, 1602, 1204 или похожие, указывающие на количество строк (в примерах 2 или 4) и знаков в каждой строке (12 и 16). Есть и однострочные дисплеи такого типа, но мы в дальнейшем изложении ориентируемся на более употребляемые двухстрочные.

Определяющая часть таких дисплеев совместима по управлению с контроллером HD44780 (фирма Hitachi). Самые популярные (по крайней мере, в нашей стране) дисплеи этой разновидности выпускает фирма Winstar. Причем ЖК-разновидности (название начинается с букв WH, например, WH1602) один в один совместимы с системой команд HD44780, а OLED-типы (название начинается с WEH, например, WEH001602) имеют усовершенствованный контроллер WS0010. К сожалению, или к счастью — сейчас будем разбираться.

В отличие от разобранных нами ранее графических дисплеев на основе контроллера ks0108, знакогенератор в строчных дисплеях встроенный. При этом для нас главным отличием WS0010 от стандартного HD44780 является наличие нескольких (четырех) кодовых таблиц для вывода разноязычного текста. У HD44780 такая таблица всего одна, отчего фирмам приходится в каждый регион продавать отдельную разновидность дисплея. OLED-дисплеи на основе WS0010 разбивки по регионам не требуют, что гораздо удобнее. Но только не пользователю: по умолчанию в WEH-дисплеях включена таблица ENGLISH_JAPANESE, и для включения русских символов нужно ее переключить на ENGLISH_RUSSIAN.

Заметим заодно, что OLED-дисплеи Winstar обладают аппаратными возможностями, которые не отражены в официальной документации (или отражены, но не слишком внятно). Перепайкой перемычек, имеющихся на дисплеях, можно сделать довольно много интересного. Например, о том, как работать с дисплеями WEH через интерфейс SPI (точнее, «типа SPI»), вы можете прочесть здесь, а о том, как включить поддержку регулировки яркости (через вывод 3) — здесь. Но не кидайтесь сломя голову на возможность подключения через последовательный интерфейс: количество соединений уменьшается незначительно в сравнении с четырехпроводным включением, а готовую библиотеку на эту тему еще поискать надо. Если уж очень надо сократить число проводов, то отличный вариант предоставляет подключение через I2C с промежуточным контроллером (см. например, в конце этой статьи).

Почему-то на дисплеи Winstar большой дефицит в плане внятной документации (как вы могли заметить, это вообще характерная черта китайских продуктов). Стоит указать, где можно скачать более-менее полную документацию без особых ошибок: здесь на ЖК-дисплей (WH1602) с контролером HD44780, здесь на дисплеи OLED-типа (WEH1602), здесь отдельно на контроллер WS0010 (на нее мы будем ссылаться далее). А вот здесь, если кому интересно, лежит подробное описание контроллера HD44780 на русском.

Рихтовка библиотеки LiquidCrystal

1. Так как русско-английская таблица в WS0010 (см. стр. 9 даташита на WS0010 по ссылке выше) имеет номер 2, то для переключения на нее нужно два младших бита FT1 и FT0 в команде FUNCTION SET установить в состояние 10 (0x02). (В ЖК-дисплеях с одной кодовой таблицей эти биты, кстати, никак не используются). Для этого в файле LiquidCrystalRus_OLED.cpp разыщите место (строка 96 файла), где устанавливается значение переменной _displayfunction. В обоих строках ее инициализации (строки 97 и 99) добавьте довесок «|= 0x02».


3. Кроме этого (см. также эту последнюю страницу даташита) после этой задержки при четырехпроводном включении нужно пять раз подряд подать пустую команду (0х00). Так как Arduino существенно быстрее контроллера дисплея, команды следует подавать с промежуточной задержкой. Их необходимо вставить чуть дальше по тексту функции begin, там, где идет речь именно о 4-битном включении (строка 147 файла LiquidCrystalRus_OLED.cpp).

4. Но и это еще не конец. В оригинальной таблице ENGLISH_RUSSIAN имеется значок градуса (код 0xEF). Вариант крайне неудачно выполнен графически (слишком велик), потому вместо него я предпочитаю использовать жирную верхнюю точку (код 0xDF) — она куда больше напоминает градус в привычном начертании. Ее можно было бы вводить в виде кода (лучше восьмеричного «\337»), но вот беда — стремясь упростить функцию замены кодов русских букв на коды в таблице знакогенератора, автор библиотеки, исходя из кодировки UTF-8 (см. предыдущую статью), ввел условие замены любого кода, большего 0x80 (функция LiquidCrystalRus::write). Так как наше 0xDF явно больше 0x80, то при указании в строке кода символа «\337» вместо него выведется пустое место, ибо никакой русской букве он не соответствует.


5. Наконец, перечеркнутый ноль на этом дисплее не так бросается в глаза, как на графических ЖК-экранах. Тем не менее, в эту же функцию write мной введена замена кода нуля (0x30) на код буквы «O» (0x4f). Желающие могут вернуть перечеркнутый ноль обратно, просто удалив или закомментировав строку замены (строка 308 измененного файла LiquidCrystalRus_OLED.cpp).
Подправленную библиотеку можно скачать по ссылке в конце статьи.

Подключение

Вот теперь вроде бы все подправили, можно подключать. Подключение дисплея WEH001602BG (16 символов, длина экрана 100 мм) к Arduino показано на следующем рисунке:

image

Выводы Arduino, к которым подключены контакты дисплея RS, E, DB4-DB7 должны указываться при инициализации дисплея:


При желании можно подключить два и даже более дисплеев в любом варианте интерфейса (восьми- или четырехпроводном). Линии данных и RS при этом можно сделать общими. Выбор между дисплеями в этом случае производится через вывод E, который для разных дисплеев подключается к разным выводам Arduino (линии подключения второго дисплея показаны на схеме серым цветом, вывод E второго дисплея здесь подключается к контакту 6 Arduino). Разумеется, в программе при этом надо создавать два экземпляра библиотеки (например, OLED1 и OLED2), у которых все выводы одинаковые, за исключением E. При этом дисплеи могут быть разных конфигураций и размеров (8х2, 16х2, 12х2, 12х4 и т.п.). Это относится и к случаю обычных ЖК-дисплеев на HD44780.

А зачем там реле на питание? Самый главный недостаток WS0010 — отсутствие аппаратного «резета». В HD44780 встроенный резет, возможно, оправдан — автор не имеет достаточно опыта работы с ЖК-экранами, чтобы утверждать это наверняка. Но Winstar, пытаясь в своей разработке следовать стандарту, с этой задачей явно не справилась. Перезагрузка контроллера без отключения питания приводит к тому, что на дисплее появляется всякая муть, и избавиться от нее можно только передергиванием питания всей схемы и инициализацией дисплея «с нуля».

Реле и поставлено для искусственной перезагрузки дисплея при перезагрузке Arduino без выключения питания. Это надежно избавляет от мусора на экране. Включение питания дисплея (или дисплеев) производится отдельно через это реле, включающееся от свободного вывода Arduino (в данном случае вывода 4) в начале процедуры setup, когда контроллер уже работает устойчиво. Причем перед включением реле неплохо еще дать дополнительную задержку 1000 мс (см. скетч далее). Указанное реле EDR202A05 герконовое, ток обмотки 10 мА, потому спокойно управляется от вывода Arduino.

Что же касается путаницы между строками при включении, то, кроме указанных выше изменений в процедуре инициализации, от этого эффекта отлично избавляет питание всей схемы от достаточно мощного (не менее 1-2 А) внешнего источника со стабильным напряжением под нагрузкой не менее 7,5 вольт. Эта зависимость от питания и служит, очевидно, источником разночтений во многих публикациях, где многие авторы уверяют, что у них все отлично работает. Дисплей (или дисплеи) при этом могут подключаться через внутренний стабилизатор Arduino (вывод 5V платы), а могут и через отдельный стабилизатор, но главное, чтобы входное напряжение стабилизатора было достаточно стабильным независимо от бросков потребления в момент включения.

Проверка

Для проверки я накидал демонстрационный скетч Proba_Rus_Liquid_Crystal_OLED, имитирующий дисплей часов-календаря с датчиком внешней температуры:

Здесь применены все характерные изменения в библиотеке, указанные выше. В программе также показано, как осуществить мигание двоеточия в значении часов: минут с помощью функции blink(). Учтите, что новый вывод в ту же позицию уничтожает мигание знакоместа, и при обновлении его приходится возобновлять заново, предварительно установив невидимый курсор на ту же позицию 13 в нулевой строке. При реальном обновлении часов может быть проще обновлять только цифры в позициях 11-12 и 14-15, оставляя мигающее двоеточие в неприкосновенности.

Результаты вывода примера показаны на фото:

image

Следует отметить, что фотография не передает оттенок свечения зеленого OLED-дисплея (в данном случае). На самом деле он глубокого зеленого цвета, с длиной волны короче, чем обычные 568 нм у LED-дисплеев (семисегментных или матричных). Отчего последние на фоне OLED кажутся «выцветшими», и их совместное применение затруднено.

WS0010 имеет графический режим, и в графических OLED-дисплеях Winstar (типа WEG010016) также установлен этот контроллер. Кто-то обратил внимание, что у них даже одинаковые матрицы. На мой взгляд, пытаться применять на текстовом строчном дисплее графический режим довольно бессмысленно: у строчного дисплея наличествуют аппаратно установленные темные промежутки между символами и строками, которые делают картинку крайне неэстетичной (см. многочисленные примеры таких попыток).

И последнее замечание: о долговечности OLED-дисплеев Winstar. В даташитах указано время 100 000 часов, то есть 11 лет. И тем не менее, один из дисплеев 13-го года выпуска (желтого свечения) к настоящему моменту (зима 16-го) у меня резко потерял в яркости. Забавно, что остальные из той же (зеленый) и более поздней (желтый и зеленый 14 года) партии не подают никаких признаков умирания. Поэтому с определенностью я ничего утверждать не берусь, но на всякий случай советую не впаивать дисплеи в плату, а устанавливать на разъемах, чтобы в случае чего можно было бы заменить без проблем.

Читайте также: