Проверка жидкокристаллического дисплея 1602 (HD44780)
По ходу обсуждения в одной из тем форума возникла необходимость проверки исправности жидкокристаллического дисплея 1602, вследствие чего была написана программа для микроконтроллера. Неожиданно решение оказалось востребованным не только в рамках конкретного обсуждения. Кроме, собственно, дисплея, для создания "проверочного стенда" необходим минимум деталей:
- микроконтроллер ATMega8P или ATMega8A в корпусе DIP-28 или PQFT-32;
- резистор 10 килоом;
- подстроечный резистор 10 килоом;
- тактовая кнопка (кнопка без фиксации).
Тактирование от внутреннего генератора 8 МГц.
Фюзы: LowValue – E4, HighValue – D9.
Для монтажа наиболее удобно использовать беспаечную макетную плату. Питание схемы – 5 вольт. Проект в Proteus, прошивка – в архиве.
2 комментария к “Проверка жидкокристаллического дисплея 1602 (HD44780)”
"По ходу обсуждения в одной из тем форума возникла необходимость проверки исправности жидкокристаллического дисплея 1602" -необходимость была в другом-проверить поддерживает ли 1602 кириллицу
Как проверить lcd 1602 дисплей на работоспособность
Wan-Derer
пельмешек
найди библиотеку для датчика bme180 BlueDot_BME280 .h.и в комментариях под проектом метеостанции от 10 апреля выложен измененный код с этой библиотекой.у меня тоже одни квадраты были на экране,а сделав эти изменения у меня всё заработало
Наступил на грабли. просто для заметки.
Изначально у меня был дисплей 1602 без модуля подключения по I2C.
Так как в заначке есть пачка PCF8574T, решил не покупать модуль, а сделать подключение самостоятельно.
Загуглил, нашёл схему и вперёд. После сбора схемы выяснил, что дисплей корректно не хочет работать. Убил время на проверку схему и работоспособности микросхемы, потом пошёл ещё раз гуглить.
Нашёл новую ссылку с другой схемой подключения (ссылка не первоисточник). Ниже вставил работающую схему подключения.
Пост создал тупо для того, чтобы другие на грабли не наступали, с сайта Алекса всё классно гуглится. Надеюсь что через пару недель эта схема будет гуглится первой. (Транзистор брал первый попавшийся npn из блока питания ПК).
FlyingCat98
Nikanor
Wan-Derer
SarmatK
День добрый, уважаемые!
- Если дисплей показывает чёрные прямоугольники или пустой экран – крутим контраст
- Если кроме чёрных прямоугольников и пустого экрана ничего не видно – меняем адрес в программе.
Смена адреса на 0x3f, как и д.б., приводит к тому, что дисплей перестает мигать подсветкой, так как команд не получает.
Ардуинка питается от USB, дисплей — от ардуинки (5v), может ему такого напряжения мало?
++:
Подавал питание от 5 до 15 вольт (ЛБП) — ничего не изменилось, во всем диапазоне контрастностей дисплей выводит черные квадраты или пустоту.
ТехнарьКто
Скетч у Вас рабочий. Напряжения в 5V должно быть достаточно. Встречал один раз, что при питании через стабилизатор ардуины как в Вашем случае, питания дисплею не хватало. Нехватка напряжения питания была в том, что окисленные контакты проводов и макетной платы приводили к большому падению напряжения. Подсветка работала, а вместо информации были черные квадраты. Изменение напряжения питания на Vin до стабилизатора напряжения на ситуацию не влияет. Просто подал 5V на дисплей (массы объединить обязательно) и все заработало.
SarmatK
Спасибо, попробую питать их отдельно. А макетка действительно так себе — очень слабенько держатся в ней проводки из набора.
Запараллелил питание — ардуинка и дисплей питаются от БП из набора, напряжение на дисплее = 5.28V. но на дисплее по-прежнему либо пусто, либо черные знакоместа в первой строке.
Как проверить lcd 1602 дисплей на работоспособность
Он мерт или я накосячил где то?
Меню пользователя driverz |
Посмотреть профиль |
Отправить личное сообщение для driverz |
Найти ещё сообщения от driverz |
Меню пользователя _guardianangel |
Посмотреть профиль |
Отправить личное сообщение для _guardianangel |
Найти ещё сообщения от _guardianangel |
если не считать внешнего вида 4-х последних знаков — то дисплей должен быть живой.
по напряжение питанию — если слаботочная 5в линия (например 4.7в вместо 5 получается ) — еще с проблемой отображения в 2 строки столкнешься
ПС. а с подключением — проверь распайку .
Меню пользователя DaLiV |
Посмотреть профиль |
Отправить личное сообщение для DaLiV |
Найти ещё сообщения от DaLiV |
Меню пользователя driverz |
Посмотреть профиль |
Отправить личное сообщение для driverz |
Найти ещё сообщения от driverz |
верить даташиту — 3.8 номинальное 5.2 максимум проверяй питание . а отображение символов показывает что он пытается запуститься . но чего то не совсем в порядке . битые обычно далее одной клетки не идут
и про то что многим дисплеям по линии контрастности вообще отрицательное напряжение в схему вводить приходиться посмотри .
Меню пользователя DaLiV |
Посмотреть профиль |
Отправить личное сообщение для DaLiV |
Найти ещё сообщения от DaLiV |
Меню пользователя heady69 |
Посмотреть профиль |
Отправить личное сообщение для heady69 |
Найти ещё сообщения от heady69 |
Меню пользователя heady69 |
Посмотреть профиль |
Отправить личное сообщение для heady69 |
Найти ещё сообщения от heady69 |
с схемой похоже что все ОК.
единственное что неизвестно, у вас подтяжки на порту включены?
одно время я перепробывал много индикаторов на HD44780 и KS0066, могу посоветовать несколько
— убедиться что правильное питание на индикаторе, часто включая на 3в не поднимались потому что они были на 5в
— пробовать на разных напряжениях на контрастности
— перед инициализаций , после появления на нем питания, дать индикатору простоять около 50-100мс.
— на разных индикаторах разные временные зарактеристики, часто попадались тормозисторы, приходилось большие задержки везде вставлять.
— некоторые не поддерживали 4х битный режим
И главное, почти все эти артефакты проявлялись на нонэймах.
проверьте все эти эти пункты.
Почему квадраты на дисплее 1602
В группах ВК по тематике Arduino часто встречаю вопросы о дисплеях 1602 (и подобных), построенных на контроллере HD44780. Один из них — почему на дисплее отображаются квадраты вместо того, что запрограммировано в скетче. И чтобы не повторять каждый раз всё это в комментариях, я решил написать эту статейку.
HD44780 (а также совместимый с ним KS0066) — контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев с параллельным 4- или 8-битным интерфейсом. Разработан фирмой Hitachi. Управляющий интерфейс и протокол являются де-факто стандартом для такого типа дисплеев. Эти контроллеры были фактически монополистами на рынке в 90-е годы.
На базе этого контроллера выпускалось огромное количество моделей с различным конструктивом и разрешением, начиная с 8×1 (восемь символов в одной строке), и заканчивая 40×4 (содержащих два независимых управляющих чипа). Часто встречаются 16×2 и 20×4, а также некоторые другие.
Википедия
Квадраты это не неисправность дисплея, а вполне адекватная его реакция на отсутствие инициализации. Своеобразный self-test. Отсутствовать инициализация может по нескольким причинам. Но для начала надо вспомнить, какие типы подключения бывают у дисплеев этого формфактора.
Вариант 1: подключение к микроконтроллеру по интерфейсу HD44780
В этом случае между дисплеем и МК идёт шина из, как минимум, шести проводов (не считая питания):
Код для Arduino в этом случае выглядит примерно так:
Причины отображения квадратов:
- Плохой контакт или неправильное подключение проводов (не те пины или перепутан порядок);
- Неправильно указаны номера пинов в коде
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);
Исправление ошибки сводится к проверке качества пайки контактов, а также соответствия пинов в коде.
Вариант 2: подключение к микроконтроллеру по интерфейсу I2C
Здесь используется всего два пина для подключения. И эти пины жёстко фиксированы:
- Arduino Uno, Arduino Ethernet — A4 (SDA), A5 (SCL)
- Arduino Mega2560 — 20 (SDA), 21 (SCL)
- Arduino Leonardo — 2 (SDA), 3 (SCL)
- Arduino Due — 20 (SDA), 21 (SCL)
На самом же дисплее уже впаян конвертор с I2C на HD44780, который по сути представляет из себя обычный I2C-расширитель на базе чипа PCF8574. Особенность шины в том, что по двум проводам можно параллельно подключить множество различных устройств. Каждое устройство имеет уникальный (в пределах одной шины) адрес, который либо жёстко установлен производителем, либо может менять в определённых пределах с помощью перемычек или джамперов:
Адрес для PCF8574 можно посмотреть по таблице:
Вход | Адрес на шине I2C | |||
---|---|---|---|---|
A2 | A1 | A0 | DEC | HEX |
0 | 0 | 0 | 32 | 0x20 |
0 | 0 | 1 | 33 | 0x21 |
0 | 1 | 0 | 34 | 0x22 |
0 | 1 | 1 | 35 | 0x23 |
1 | 0 | 0 | 36 | 0x24 |
1 | 0 | 1 | 37 | 0x25 |
1 | 1 | 0 | 38 | 0x26 |
1 | 1 | 1 | 39 | 0x27 |
Есть ещё PCF8574A. Для них адресация немного другая:
Вход | Адрес на шине I2C | |||
---|---|---|---|---|
A2 | A1 | A0 | DEC | HEX |
0 | 0 | 0 | 56 | 0x38 |
0 | 0 | 1 | 57 | 0x39 |
0 | 1 | 0 | 58 | 0x3A |
0 | 1 | 1 | 59 | 0x3B |
1 | 0 | 0 | 60 | 0x3C |
1 | 0 | 1 | 61 | 0x3D |
1 | 1 | 0 | 62 | 0x3E |
1 | 1 | 1 | 63 | 0x3F |
Код при подключении по I2C обычно выглядит примерно так:
Но есть ещё одна версия библиотеки, в которой указывается не только адрес дисплея, но и порядок подключения контактов дисплея к контактам чипа PCF8574. Тогда код выглядит так:
Обратите внимание на отличия в объявлении объекта дисплея и инициализации. И всё было бы хорошо, но разные дисплеи иногда имеют разный порядок подключения контактов между собственно самим дисплеем и чипом PCF8574. Я лично встречал два варианта. Первый указан в коде выше. Второй способ объявления выглядит так:
Соответственно возможны следующие причины появления квадратов:
- Плохой контакт или неправильное подключение проводов (перепутаны местами SDA и SCL);
- Неправильно указано соответствие пинов дисплея и I2C чипа в коде
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); - Неправильно указан адрес дисплея.
Порядок поиска неисправности в данном случае такой:
- Проверить правильность подключения SDA и SCL;
- Запустить сканер шины I2C: [drain file 98 url I2C scanner] ([drain file 98 size]);
- Если сканер выдал информацию об адресе устройства, то сверяем его с тем, который указан в скетче. Если сканер «молчит», то возвращаемся к первому пункту или делаем вывод о неисправности I2C модуля на дисплее;
- Пробуем менять в коде комбинации пинов (соответствия дисплей — I2C). Два варианта я привёл выше. Есть ли ещё другие — не знаю.
Иногда встречаются советы покрутить контрастность. На самом деле это не поможет, так как если вы видите отчётливо верхние квадраты, но не видите нижние (как на фото в статье) — значит контрастность УЖЕ настроена нормально.