ЖК экран 16х2 с двигателем LMD18201: схема, печатные платы

ПОДКЛЮЧЕНИЕ ДИСПЛЕЯ К МИКРОКОНТРОЛЛЕРУ

На сей раз хочу вам рассказать как подключить дисплей от мобильного телефона Nokia 1202 к микроконтроллеру Atmega8. Программируем в среде CodeVision. Кое где могу и ошибаться. Сам только не давно разобрался что к чему. Опыта в программировании не имею и библиотеки для работы с дисплеем писал не я. Они скопированы с одного проекта в интернете. Там прописаны все нужные функции и есть шрифт 5*8 латинские буквы и кириллица. Есть так же пару символов 12*16 и 24*32, которые использовал автор библиотек в своем устройстве. Если их удалить, то шрифт 5*8 будет занимать около 700 байт флеша микроконтроллера. Поэтому микроконтроллер для проекта надо брать “пожирней”. В моем случае использована Atmega8. Вполне достаточно. Все файлы – исходники, библиотеку и так далее, качаем здесь.

Схема подключения индикатора


Нарисовал схему подключения. Для питания дисплея нужно напряжение 3,3V. Если запитывать микроконтроллер от 5V, то ставим резисторные делители и микросхему 78L33. В случае питания всей схемы от 3,3V резисторные делители не нужны. Вроде Atmega8A может работать от 3,3V при условие, что частота не выше 8 МГц. Лично я не пробовал. У меня все собрано на отладочной плате с питанием от 5V. Перед самим дисплеем ставить по питанию электролит большой емкости ни в коем случае не надо. В самом начале работы контроллер подает на дисплей команды инициализации. Для заряда конденсатора нужно время. Пока он зарядится и дисплей начнет работать пройдет некоторое время, и команды инициализации он не получит. Конечно это миллисекунды, но в даном случае эффект ощутим.


Схема распиновки дисплея

У дисплея Nokia 1202 9-ти битный SPI интерфейс. У выбранного нами микроконтроллера такой роскоши нет. По этому для связи с дисплеем мы используем не аппаратный, а программный SPI, так сказать “ногодрыг”. Как создавать новые проекты в CodeVision рассказывать не буду – думайте сами. Скажу только, что все выводы PORTB надо настроить на выход. В настройках проекта нужно поставить галочку на “Store Global Constants in FLASH Memory”. Данное действие нужно для того, чтоб массивы шрифтов и наших картинок хранились во флеше.

Итак, проект мы создали. Выбрали микроконтроллер, задали тактовую частоту, настроили проект. Что дальше? А дальше нужно добавить библиотеки для работы с дисплеем и библиотеки задержек. Распаковываем архив. Там есть два файла. Их нужно скопировать в определенные папки. Надеюсь CodeVision вы установили прямо на диск C:. Если да, то файлы копируем по соответствующим путям:

C:cvavrevalinc для файла 1100.inc, и
C:cvavrevallib для файла 1100.h .

Еще хочу сказать, что назначение пинов микроконтроллера можно изменять в файле 1100.h. Тогда и схема подключения изменится. Начинаем кодить. Просто выведем какую-то надпись на дисплей основным шрифтом 5*8. В самом начале добавим библиотеки.

#include // библиотека дисплея
#include // библиотека задержек

В самом низу до основного цикла while(1)<> делаем инициализацию дисплея и его очистку.

lcd_init(); // инициализация дисплея
lcd_clear(); // очистка дисплея

Нашу надпись поставим так же до основного цикла. Пусть сперва контролер выведет послание на дисплей, а после крутится в основном цикле. Пишем вот это:

print_string(“Выводим надпись”,5,0);
print_string(“Какую сами хотим”,0,1);
print_string(“БУХАРЬ”,10,2);

Думаю здесь все понятно. Первая цифра – координата по оси x на дисплее. Она может принимать значение от 0 до 96. Вторая – строка. Она от 0 до 7. В принципе там помещается 8 с половиной строк, но на пол строки мы читать не будем. Компилируем и прошиваем. Смотрим результат. Можно так же установить Proteus, и протестировать в нем. Контроллер можно настроить для работы от внутреннего генератора на частоту заданную в проекте с задержкой при старте 64 мсек. Добавляю архив с скомпилированным проектом. Частота 8 Мгц.

Но как уже писал в начале, в библиотеке есть еще и другие символы. Правда там нет букв, а только цифры. Теперь немного усложним задачу. Пусть надпись не будет инертной, а изменяется. Допустим считает от 0 до 9 с интервалом в 1 секунду. Когда дойдет до 9, после обнулится и снова наново. Возьмем цифры большие размером 24*32. Ну чтож приступим. Можно взять предыдущий проект и удалить три строки “print_string”. Сразу после добавления библиотек объявим некую глобальную переменную m.

Можно и просто написать:

В даном случае ей автоматически присвоится значение 0. В основном цикле пишем вот это:

char_24_32(m,35,2); //функция вывода символа 24*32
delay_ms(1000); // ждем 1 секунду
m++; // добавляем 1 к переменной m
if(m>9)m=0; // Условие. Если переменная m больше 9, то m равняется 0.

Снял небольшое видео работы программы

В следующей статье попробую рассказать как рисовать картинки и выводить их на экран дисплея. Как создавать массивы и функции к их выводу и как инвертировать изображение. Библиотеки позаимствовал с сайта cxem.net. Материал подготовил Бухарь.

Обсудить статью ПОДКЛЮЧЕНИЕ ДИСПЛЕЯ К МИКРОКОНТРОЛЛЕРУ

Символьные ЖК дисплеи. Часть 2

Окончание
Начало читайте
здесь:

Введение

Данный материал является продолжением статьи «Символьные ЖК дисплеи. Часть 1». В этой части мы подключим ЖК модуль к микроконтроллеру Atmega8, а затем напишем некоторый код, чтобы управлять им.

Схема

Наша первая задача – собрать схему.

Мы будем использовать 28 контактную плату разработки от AVR. Для питания схемы используем кабель – переходник с USB на круглый разъем. Таким образом, нам не понадобится собирать схему источника питания 5 В. Вместо нее мы подключим провод от круглого разъема к линии положительного напряжения питания, как показано на фотографии ниже.

Так же нам не потребуется ни внешний кварцевый резонатор, ни фильтр для напряжения AVCC микроконтроллера. Мы просто соединим напряжение питания и контакт AVCC отрезком провода.

Поскольку мы не планируем запаивать ЖК модуль навсегда, и хотим иметь возможность извлечь его в дальнейшем, мы припаяем к плате 16-контактное гнездо.

Затем мы припаяем контакты VDD и BLA к плюсовой шине, а контакты VSS, RW, D0, D1, D2, D3 и BLK к общему проводу. Контакты D0…D3 подключены к общему проводу, поскольку мы будем управлять дисплеем в 4-битовом режиме. Это позволит нам использовать для управления всего 6 проводов.

Затем мы установим подстроечный резистор для регулировки контраста ЖК дисплея. Я использовал резистор сопротивлением 5 кОм, но вполне подходят и другие.

Теперь мы подключим контакты RS, EN (Enable) и D4…D7 к выводам PC0…PC5 микроконтроллера. Они могут быть подключены и к любым другим выводам контроллера Atmega8, но порт С кажется идеально подходящим, так как имеет 6 доступных линий ввода/вывода. Если вы решите использовать другие контакты, просто отредактируйте исходный код соответствующим образом.

Как и на макетной плате, мы припаяем 16-контактный разъем для к ЖК модулю.

Наконец, мы вставим ЖК модуль в соответствующий разъем на макетной плате.

Программа. Часть A

Наша первая программа «Hello World» представлена ниже. В ней реализована почти та же самая последовательность шагов, как в случае с 4-битным примером в первой части.

Программа. Часть Б

Предыдущий пример хорошо подходит для понимания принципов управления LCD дисплеем, но на практике программирование таким способом – мучительное занятие. Чтобы все упростить, нам надо отвлечься от деталей реализации и сфокусироваться на задачах, поставленных перед разработчиком. Простейший путь осуществить этос– использовать готовую библиотеку.

Очень популярная библиотека AVR для HD44780 – библиотека от PeterFleury. Это очень хорошая библиотека, но я решил использовать библиотеку от alank2. Причинами были:

  • Библиотека от Peter Fleury требует, чтобы контакт R/W был подключен к одному из портов ввода/вывода
  • Библиотека от alank2 выделяет настройки в отдельный .h файл. Я думаю, это делает программу более прозрачной и понятной
  • Библиотека от alank2 при компилируется более сжато
  • Библиотека от alank2 поддерживает до 4 LCD дисплеев, у них общие линии данных и RS, но разные линии EN.

Чтобы использовать библиотеку от alank2, необходимо

  • Добавить в ваш проект файлы hd44780.c и hd44780.h
  • Создать файл hd44780_settings.h (пример есть в alank2’s zip file) и добавить его к проекту
  • Использовать предоставляемые библиотекой функции

Используя библиотеку от alank, мы создали следующую версию программы. Эта программа делает намного больше чем предыдущая «Hello World», а состоит только из 30 строчек кода.

Подключение дисплея LCD 1602 к arduino по i2c / IIC

LCD дисплей – частый гость в проектах ардуино. Но в сложных схемах у нас может возникнуть проблема недостатка портов Arduino из-за необходимости подключить экран, у которого очень очень много контактов. Выходом в этой ситуации может стать I2C /IIC переходник, который подключает практически стандартный для Arduino экран 1602 к платам Uno, Nano или Mega всего лишь при помощи 4 пинов. В этой статье мы посмотрим, как можно подключить LCD экран с интерфейсом I2C, какие можно использовать библиотеки, напишем короткий скетч-пример и разберем типовые ошибки.

ЖК дисплей Arduino LCD 1602

Жидкокристаллический дисплей (Liquid Crystal Display) LCD 1602 является хорошим выбором для вывода строк символов в различных проектах. Он стоит недорого, есть различные модификации с разными цветами подсветки, вы можете легко скачать готовые библиотеки для скетчей Ардуино. Но самым главным недостатком этого экрана является тот факт, что дисплей имеет 16 цифровых выводов, из которых обязательными являются минимум 6. Поэтому использование этого LCD экрана без i2c добавляет серьезные ограничения для плат Arduino Uno или Nano. Если контактов не хватает, то вам придется покупать плату Arduino Mega или же сэкономить контакты, в том числе за счет подключения дисплея через i2c.

Краткое описание пинов LCD 1602

Давайте посмотрим на выводы LCD1602 повнимательней:

Каждый из выводов имеет свое назначение:

  1. Земля GND;
  2. Питание 5 В;
  3. Установка контрастности монитора;
  4. Команда, данные;
  5. Записывание и чтение данных;
  6. Enable;

7-14. Линии данных;

Технические характеристики дисплея:

  • Символьный тип отображения, есть возможность загрузки символов;
  • Светодиодная подсветка;
  • Контроллер HD44780;
  • Напряжение питания 5В;
  • Формат 16х2 символов;
  • Диапазон рабочих температур от -20С до +70С, диапазон температур хранения от -30С до +80 С;
  • Угол обзора 180 градусов.

Схема подключения LCD к плате Ардуино без i2C

Стандартная схема присоединения монитора напрямую к микроконтроллеру Ардуино без I2C выглядит следующим образом.

Из-за большого количества подключаемых контактов может не хватить места для присоединения нужных элементов. Использование I2C уменьшает количество проводов до 4, а занятых пинов до 2.

Где купить LCD экраны и шилды для ардуино

LCD экран 1602 (и вариант 2004) довольно популярен, поэтому вы без проблем сможете найти его как в отечественных интернет-магазинах, так и на зарубежных площадках. Приведем несколько ссылок на наиболее доступные варианты:

Описание протокола I2C

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

I2C / IIC(Inter-Integrated Circuit) – это протокол, изначально создававшийся для связи интегральных микросхем внутри электронного устройства. Разработка принадлежит фирме Philips. В основе i2c протокола является использование 8-битной шины, которая нужна для связи блоков в управляющей электронике, и системе адресации, благодаря которой можно общаться по одним и тем же проводам с несколькими устройствами. Мы просто передаем данные то одному, то другому устройству, добавляя к пакетам данных идентификатор нужного элемента.

Самая простая схема I2C может содержать одно ведущее устройство (чаще всего это микроконтроллер Ардуино) и несколько ведомых (например, дисплей LCD). Каждое устройство имеет адрес в диапазоне от 7 до 127. Двух устройств с одинаковым адресом в одной схеме быть не должно.

Плата Arduino поддерживает i2c на аппаратном уровне. Вы можете использовать пины A4 и A5 для подключения устройств по данному протоколу.

В работе I2C можно выделить несколько преимуществ:

  • Для работы требуется всего 2 линии – SDA (линия данных) и SCL (линия синхронизации).
  • Подключение большого количества ведущих приборов.
  • Уменьшение времени разработки.
  • Для управления всем набором устройств требуется только один микроконтроллер.
  • Возможное число подключаемых микросхем к одной шине ограничивается только предельной емкостью.
  • Высокая степень сохранности данных из-за специального фильтра подавляющего всплески, встроенного в схемы.
  • Простая процедура диагностики возникающих сбоев, быстрая отладка неисправностей.
  • Шина уже интегрирована в саму Arduino, поэтому не нужно разрабатывать дополнительно шинный интерфейс.
  • Существует емкостное ограничение на линии – 400 пФ.
  • Трудное программирование контроллера I2C, если на шине имеется несколько различных устройств.
  • При большом количестве устройств возникает трудности локализации сбоя, если одно из них ошибочно устанавливает состояние низкого уровня.

Модуль i2c для LCD 1602 Arduino

Самый быстрый и удобный способ использования i2c дисплея в ардуино – это покупка готового экрана со встроенной поддержкой протокола. Но таких экранов не очень много истоят они не дешево. А вот разнообразных стандартных экранов выпущено уже огромное количество. Поэтому самым доступным и популярным сегодня вариантом является покупка и использование отдельного I2C модуля – переходника, который выглядит вот так:

С одной стороны модуля мы видим выводы i2c – земля, питание и 2 для передачи данных. С другой переходника видим разъемы внешнего питания. И, естественно, на плате есть множество ножек, с помощью которых модуль припаивается к стандартным выводам экрана.

Для подключения к плате ардуино используются i2c выходы. Если нужно, подключаем внешнее питание для подстветки. С помощью встроенного подстроечного резистора мы можем настроить настраиваемые значения контрастности J

На рынке можно встретить LCD 1602 модули с уже припаянными переходниками, их использование максимально упощено. Если вы купили отдельный переходник, нужно будет предварительно припаять его к модулю.

Подключение ЖК экрана к Ардуино по I2C

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

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

Жидкокристаллический монитор с поддержкой i2c подключается к плате при помощи четырех проводов – два провода для данных, два провода для питания.

  • Вывод GND подключается к GND на плате.
  • Вывод VCC – на 5V.
  • SCL подключается к пину A5.
  • SDA подключается к пину A.

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

Библиотеки для работы с i2c LCD дисплеем

Для взаимодействие Arduino c LCD 1602 по шине I2C вам потребуются как минимум две библиотеки:

  • Библиотека Wire.h для работы с I2C уже имеется в стандартной программе Arduino IDE.
  • Библиотека LiquidCrystal_I2C.h, которая включает в себя большое разнообразие команд для управления монитором по шине I2C и позволяет сделать скетч проще и короче. Нужно дополнительно установить библиотеку После подключения дисплея нужно дополнительно установить библиотеку LiquidCrystal_I2C.h

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

Описание функций и методов библиотеки LiquidCrystal_I2C:

  • home() и clear() – первая функция позволяет вернуть курсор в начало экрана, вторая тоже, но при этом удаляет все, что было на мониторе до этого.
  • write(ch) – позволяет вывести одиночный символ ch на экран.
  • cursor() и noCursor() – показывает/скрывает курсор на экране.
  • blink() и noBlink() – курсор мигает/не мигает (если до этого было включено его отображение).
  • display() и noDisplay() – позволяет подключить/отключить дисплей.
  • scrollDisplayLeft() и scrollDisplayRight() – прокручивает экран на один знак влево/вправо.
  • autoscroll() и noAutoscroll() – позволяет включить/выключить режим автопрокручивания. В этом режиме каждый новый символ записывается в одном и том же месте, вытесняя ранее написанное на экране.
  • leftToRight() и rightToLeft() – Установка направление выводимого текста – слева направо или справа налево.
  • createChar(ch, bitmap) – создает символ с кодом ch (0 – 7), используя массив битовых масок bitmap для создания черных и белых точек.

Альтернативная библиотека для работы с i2c дисплеем

В некоторых случаях при использовании указанной библиотеки с устройствами, оснащенными контроллерами PCF8574 могут возникать ошибки. В этом случае в качестве альтернативы можно предложить библиотеку LiquidCrystal_PCF8574.h. Она расширяет LiquidCrystal_I2C, поэтому проблем с ее использованием быть не должно.

Скачать библиотеку можно на нашем сайте. Библиотека также встроена в последние версии Arduino IDE.

Проблемы подключения i2c lcd дисплея

Если после загрузки скетча у вас не появилось никакой надписи на дисплее, попробуйте выполнить следующие действия.

Во-первых, можно увеличить или уменьшить контрастность монитора. Часто символы просто не видны из-за режима контрастности и подсветки.

Если это не помогло, то проверьте правильность подключения контактов, подключено ли питание подсветки. Если вы использовали отдельный i2c переходник, то проверьте еще раз качество пайки контактов.

Другой часто встречающейся причиной отсутствия текста на экране может стать неправильный i2c адрес. Попробуйте сперва поменять в скетче адрес устройства с 0x27 0x20 или на 0x3F. У разных производителей могут быть зашиты разные адреса по умолчанию. Если и это не помогло, можете запустить скетч i2c сканера, который просматривает все подключенные устройства и определяет их адрес методом перебора. Пример скетча i2c сканера.

Если экран все еще останется нерабочим, попробуйте отпаять переходник и подключить LCD обычным образом.

Заключение

В этой статье мы рассмотрели основные вопросы использования LCD экрана в сложных проектах ардуино, когда нам нужно экономить свободные пины на плате. Простой и недорогой переходник i2c позволит подключить LCD экран 1602, занимая всего 2 аналоговых пина. Во многих ситуациях это может быть очень важным. Плата за удобство – необходимость в использовании дополнительного модуля – конвертера и библиотеки. На наш взгляд, совсем не высокая цена за удобство и мы крайне рекомендуем использовать эту возможность в проектах.

Мир микроконтроллеров

Популярное

  • Устройство и программирование микроконтроллеров AVR для начинающих – 143
  • Трехканальный термостат, терморегулятор, таймер на ATmega8 – 70
  • Двухканальный термостат, терморегулятор на ATmega8 – 67

Подключение жидкокристаллического (ЖК) дисплея к Arduino

Для обеспечения хорошего взаимодействия между миром людей и миром машин необходимы дисплеи различного вида. Также дисплеи являются важной частью различных встраиваемых систем. Дисплеи, маленькие или большие, работают по аналогичным принципам. В радиолюбительской практике наиболее распространены жидкокристаллические (ЖК) дисплеи 16×1 и 16×2. ЖК дисплей 16×1 может отображать 16 символов, расположенных на одной строке. ЖК дисплей 16×2 может в сумме отображать 32 символа на двух строках – 16 символов на первой строке и 16 символов на второй. Здесь необходимо принимать во внимание тот факт, что каждый символ в подобных дисплеях состоит из 5×10=50 пикселов (точек). То есть чтобы отобразить 1 символ все эти 50 пикселов должны работать вместе. Но мы можем об этом не беспокоиться, потому что за их совместную работу отвечает контроллер HD44780 – его визуально можно увидеть на обратной стороне ЖК дисплея.

В данной статье мы будем подключать ЖК дисплей 16×2 к плате Arduino Uno. Как мы увидим далее подключить ЖК дисплей к этой плате значительно проще чем к большинству других аналогичных платформ. Нам не будет нужно беспокоиться о передаче данных и их приеме. Нам необходимо будет только определиться с номерами контактов и мы будем готовы к отображению данных на ЖК дисплее.

Необходимые компоненты

Плата Arduino UNO
Источник питаний 5 В
ЖК дисплей 16х2
Конденсатор 100 нФ

Работа схемы

Схема устройства представлена на следующем рисунке.

В ЖК дисплее 16×2 если мы хотим задействовать черный цвет, то нам будут нужны все его 16 контактов, в противном случае нам будет достаточно 14 контактов. Эти 2 контакта, отвечающие за черный цвет, можно оставить неиспользованными. Среди оставшихся 14 контактов мы имеем 8 контактов данных (7-14 или D0-D7), 2 контакта для подачи питания (1&2 или VSS&VDD или GND&+5v), 3-й контакт для управления контрастностью (определяет насколько «жирными» будут выглядеть символы на экране дисплея) и 3 управляющих контакта (RS&RW&E).

На представленной схеме можно увидеть, что мы использовали только 2 управляющих контакта – это обеспечивает гибкость в управлении. Бит контраста и READ/WRITE используются редко, поэтому в нашем случае их можно замкнуть на землю – это обеспечивает ЖК дисплею максимальную контрастность и режим чтения. Таким образом, нам необходимо будет контролировать только контакты ENABLE и RS чтобы передавать на ЖК дисплей символы и данные.

В схеме необходимо будет сделать следующие соединения с ЖК дисплеем:
PIN1 или VSS на землю
PIN2 или VDD или VCC к источнику питания +5В
PIN3 или VEE на землю (обеспечивает максимальную контрастность – хорошо для начинающих)
PIN4 или RS (Register Selection) к контакту PIN0 ARDUINO UNO
PIN5 или RW (Read/Write) на землю (переводит ЖК дисплей в режим чтения, что упрощает взаимодействие с ним для начинающих)
PIN6 или E (Enable) к контакту PIN1 of ARDUINO UNO
PIN11 или D4 к контакту PIN8 of ARDUINO UNO
PIN12 или D5 к контакту PIN9 of ARDUINO UNO
PIN13 или D6 к контакту PIN10 of ARDUINO UNO
PIN14 или D7 к контакту PIN11 of ARDUINO UNO

Программная среда ARDUINO IDE позволяет пользователю использовать ЖК дисплей в 4-битном режиме. Этот тип взаимодействия с ЖК дисплеем позволяет сократить использование контактов ARDUINO, к тому же этот режим взаимодействия (4-битный) по умолчанию заложен в ARDUINO. На представленной схеме мы использовали 4-битный режим взаимодействия (контакты D4-D7).

То есть в сумме мы подсоединили 6 контактов ЖК дисплея к нашей плате Arduino, из которых 4 контакта будут использоваться для передачи данных и 2 контакта для целей управления.

Исходный код программы

Чтобы в программе подключить ЖК дисплей к ARDUINO UNO, необходимо сделать следующие несколько вещей:

#include

lcd.begin(16, 2);
LiquidCrystal lcd(0, 1, 8, 9, 10, 11);
lcd.print(“hello, world!”);

В первую очередь мы должны подключить заголовочный файл ( #include
’), в котором находятся все необходимые инструкции для взаимодействия с ЖК дисплеем, что значительно упростит взаимодействие с ним в 4 битном режиме. Используя этот заголовочный файл нам не нужно будет передавать в ЖК дисплей бит за битом и нам не нужно будет самим программировать какие-либо функции для взаимодействия с ЖК дисплеем.

Во второй строчке мы должны сказать плате ARDUINO UNO какой тип ЖК дисплея мы собираемся использовать, поскольку существует достаточно большое число типов подобных дисплеев, например, 20×4, 16×2, 16×1 и т.д. В нашем проекте мы собираемся подключать к ARDUINO UNO ЖК дисплей 16х2, поэтому мы и должны записать команду ‘ lcd.begin(16, 2); ’. А если бы мы подключали ЖК дисплей 16х1, то в этом случае изменилась бы и команда соответствующим образом — ‘lcd.begin(16, 1);’.

В следующей инструкции мы сообщаем плате ARDUINO UNO к каким контактам мы подсоединили ЖК дисплей. В нашем случае мы использовали контакты ЖК дисплея “RS, En, D4, D5, D6, D7”, которые подсоединены к контактам «0, 1, 8, 9, 10, 11» ARDUINO UNO, поэтому и приведенная команда выглядит следующим образом — “ LiquidCrystal lcd(0, 1, 8, 9, 10, 11); ”.

Для того, чтобы напечатать на экране дисплея строку символов, мы использовали команду lcd.print(«hello, world!») , которая выводит на экран дисплея строку ‘hello, world!’.

Как мы видим из представленного кода, нам не нужно заботиться больше ни о каких аспектах взаимодействия с ЖК дисплеем, нам нужно просто инициализировать ЖК дисплей в программе и тогда плата ARDUINO UNO будет готова к отображению информации на экране дисплея.

Далее представлен исходный код программы (с комментариями) для взаимодействия платы ARDUINO UNO с ЖК дисплеем 16х2.

#include

// инициализируем библиотеку для взаимодействия с ЖК дисплеем
LiquidCrystal lcd(0, 1, 8, 9, 10, 11); /// сообщаем Arduino номера контактов, к которым подключен ЖК дисплей – REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN
void setup()
<
// устанавливаем число столбцов и строк для ЖК дисплея
lcd.begin(16, 2);
>

void loop()
<
// устанавливаем курсор в нулевой столбец первой строки
lcd.print(” CIRCUIT DIGEST”); //печатаем строку
lcd.setCursor(0, 1); // устанавливаем курсор в нулевой столбец второй строки
lcd.print(“http://www.circuitdigest.com/”); //печатаем строку
delay(750); //задержка на 0.75 сек
lcd.scrollDisplayLeft(); // переключаем данные на ЖК дисплее
lcd.setCursor(0, 0); // устанавливаем курсор в нулевой столбец первой строки
>

Видео, демонстрирующее работу схемы

Обзор LCD-дисплея 1602A (LCD1602A)

Автор: Сергей · Опубликовано 23.09.2016 · Обновлено 05.11.2019

Жидкокристаллический дисплей (Liquid Crystal Display) сокращенно LCD построен на технологии жидких кристаллов. При проектировании электронные устройства, нам нужно недорогое устройство для отображения информации и второй не менее важный фактор наличии готовых библиотек для Arduino. Из всех доступных LCD дисплеев на рынке, наиболее часто используемой является LCD 1602A, который может отображать ASCII символа в 2 строки (16 знаков в 1 строке) каждый символ в виде матрицы 5х7 пикселей. В этой статье рассмотрим основы подключения дисплея к Arduino.

Технические параметры

Описание дисплея

LCD 1602A представляет собой электронный модуль основанный на драйвере HD44780 от Hitachi. LCD1602 имеет 16 контактов и может работать в 4-битном режиме (с использованием только 4 линии данных) или 8-битном режиме (с использованием всех 8 строк данных), так же можно использовать интерфейс I2C. В этой статье я расскажу о подключении в 4-битном режиме.

Назначение контактов:
► VSS: «-» питание модуля
► VDD: «+» питание модуля
► VO: Вывод управления контрастом
► RS: Выбор регистра
► RW: Выбор режима записи или чтения (при подключении к земле, устанавливается режим записи)
► E: Строб по спаду
► DB0-DB3: Биты интерфейса
► DB4-DB7: Биты интерфейса
► A: «+» питание подсветки
► K: «-» питание подсветки

На лицевой части модуля располагается LCD дисплей и группа контактов.

На задней части модуля расположено два чипа в «капельном» исполнении (ST7066U и ST7065S) и электрическая обвязка, рисовать принципиальную схему не вижу смысла, только расскажу о резисторе R8 (100 Ом), который служит ограничительным резистором для светодиодной подсветки, так что можно подключить 5В напрямую к контакту A. Немного попозже напишу статью в которой расскажу как можно менять подсветку LCD дисплея с помощью ШИП и транзистора.

Подключение LCD 1602A к Arduino (4-битном режиме)

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► LCD-дисплей 1602A (2×16, 5V, Синий) x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-F (Female — Female) x 1 шт.
► Потенциометр 10 кОм x 1 шт.
► Разъем PLS-16 x 1 шт.
► Макетная плата MB-102 x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Подключение:
Для подключения будем использовать макетную плату, схема и таблица подключение LCD1602a к Arduino в 4-битном режиме можно посмотреть на рисунке ниже.

Подключение дисплея к макетной плате будет осуществляться через штыревые контакты PLS-16 (их необходимо припаять к дисплею). Установим модуль дисплея в плату breadboard и подключим питание VDD (2-й контакт) к 5В (Arduino) и VSS (1-й контакт) к GND (Arduino), далее RS (4-й контакт) подключаем к цифровому контакту 8 (Arduino). RW (5-й контакт) заземляем, подключив его к GND (Arduino), затем подключить вывод E к контакту 8 (Arduino). Для 4-разрядного подключения необходимо четыре контакта (DB4 до DB7). Подключаем контакты DB4 (11-й контакт), DB5 (12-й контакт), DB6 (13-й контакт) и DB7 (14-й контакт) с цифровыми выводами Arduino 4, 5, 6 и 7. Потенциометр 10K используется для регулировки контрастности дисплея, схема подключения LCD дисплея 1602а, показана ниже

Библиотека уже входит в среду разработки IDE Arduino и нет необходимости ее устанавливать. Скопируйте и вставьте этот пример кода в окно программы IDE Arduino и загрузите в контроллер.

Устройство, описание принципа работы узлов монитора.

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

Итак, вскроем крышку первого попавшегося под руку ЖК монитора и на практике разберёмся в его устройстве.

ЖК монитор. Основные функциональные блоки.

Жидкокристаллический монитор состоит из нескольких функциональных блоков, а именно:

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

Рассмотрим состав ЖК-панели компьютерного монитора ACER AL1716. ЖК-панель является завершённым функциональным устройством и, как правило, при ремонте разбирать её не надо, за исключением замены вышедших из строя ламп подсветки.

Маркировка ЖК-панели: CHUNGHWA CLAA170EA

На тыльной стороне ЖК-панели расположена довольно большая печатная плата, к которой от основной платы управления подключен многоконтактный шлейф. Сама печатная плата скрыта под металлической планкой.

ЖК-панель компьютерного монитора Acer AL1716

На печатной плате установлена многовыводная микросхема NT7168F-00010. Данная микросхема подключается к TFT матрице и участвует в формировании изображения на дисплее. От микросхемы NT7168F-00010 отходит множество выводов, которые сформированы в десять шлейфов под обозначением S1-S10. Эти шлейфы довольно тонкие и на вид как бы приклеены к печатной плате, на которой находиться микросхема NT7168F.

Печатная плата ЖК-панели и её элементы

Плату управления по-другому называют основной платой (Main board). На основной плате размещены два микропроцессора. Один из них управляющий 8-битный микроконтроллер SM5964 с ядром типа 8052 и 64 кбайт программируемой Flash-памяти.

Микропроцессор SM5964 выполняет довольно небольшое число функций. К нему подключена кнопочная панель и индикатор работы монитора. Этот процессор управляет включением/выключением монитора, запуском инвертора ламп подсветки. Для сохранения пользовательских настроек к микроконтроллеру по шине I2C подключена микросхема памяти. Обычно, это восьмивыводные микросхемы энергонезависимой памяти серии 24LCxx.

Основная плата (Main board) ЖК-монитора.

Вторым микропроцессором на плате управления является так называемый мониторный скалер (контроллер ЖКИ) TSU16AK. Задач у данной микросхемы много. Она выполняет большинство функций, связанных с преобразованием и обработкой аналогового видеосигнала и подготовке его к подаче на панель ЖКИ.

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

В задачи контроллера ЖКИ входят такие как пересчёт (масштабирование) изображения для различных разрешений, формирование экранного меню OSD, обработка аналоговых сигналов RGB и синхроимпульсов. В контроллере аналоговые сигналы RGB преобразуются в цифровые посредством 3-х канальных 8-битных АЦП, которые работают на частоте 80 МГц.

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

Микроконтроллер TSU16AK через шлейф связан с микросхемой NT7168F-00010 на плате ЖК-панели.

При неисправностях графического контроллера у монитора, как правило появляются дефекты, связанные с правильным отображением картинки на дисплее (на экране могут появляться полосы и т.п). В некоторых случаях дефект можно устранить пропайкой выводов скалера. Особенно это актуально для мониторов, которые работают круглосуточно в жёстких условиях.

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

Блок питания и инвертор ламп подсветки.

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

Блок питания ЖК монитора состоит из двух. Первый – это AC/DC адаптер или по-другому сетевой импульсный блок питания (импульсник). Второй – DC/AC инвертор. По сути это два преобразователя. AC/DC адаптер служит для преобразования переменного напряжения сети 220 В в постоянное напряжение небольшой величины. Обычно на выходе импульсного блока питания формируются напряжения от 3,3 до 12 вольт.

Инвертор DC/AC наоборот преобразует постоянное напряжение (DC) в переменное (AC) величиной около 600 — 700 В и частотой около 50 кГц. Переменное напряжение подаётся на электроды люминесцентных ламп, встроенных в ЖК-панель.

Вначале рассмотрим AC/DC адаптер. Большинство импульсных блоков питания строится на базе специализированных микросхем контроллеров (за исключением дешёвых зарядников для мобильного, например).

Так в блоке питания ЖК монитора Acer AL1716 применена микросхема TOP245Y. Документацию (datasheet) по данной микросхеме легко найти из открытых источников.

В документации на микросхему TOP245Y можно найти типовые примеры принципиальных схем блоков питания. Это можно использовать при ремонте блоков питания ЖК мониторов, так как схемы во многом соответствуют типовым, которые указаны в описании микросхемы.

Вот несколько примеров принципиальных схем блоков питания на базе микросхем серии TOP242-249.

Рис 1 .Пример принципиальной схемы блока питания

В следующей схеме применены сдвоенные диоды с барьером Шоттки (MBR20100). Аналогичные диодные сборки (SRF5-04) применены в рассматриваемом нами блоке монитора Acer AL1716.

Рис 2. Принципиальная схема блока питания на базе микросхемы из серии TOP242-249

Заметим, что приведённые принципиальные схемы являются примерами. Реальные схемы импульсных блоков могут несколько отличаться.

Микросхема TOP245Y представляет собой законченный функциональный прибор, в корпусе которого имеется ШИМ – контроллер и мощный полевой транзистор, который переключается с огромной частотой от десятков до сотен килогерц. Отсюда и название — импульсный блок питания.

Блок питания ЖК монитора (AC/DC адаптер)

Схема работы импульсного блока питания сводится к следующему:

Выпрямление переменного сетевого напряжения 220В.

Эту операцию выполняет диодный мост и фильтрующий конденсатор. После выпрямления на конденсаторе напряжение чуть больше чем сетевое. На фото показан диодный мост, а рядом фильтрующий электролитический конденсатор (82 мкФ 450 В) – синий бочонок.

Преобразование напряжения и его понижение с помощью трансформатора.

Коммутация с частотой в несколько десятков – сотен килогерц постоянного напряжения (>220 B) через обмотку высокочастотного импульсного трансформатора. Эту операцию выполняет микросхема TOP245Y. Импульсный трансформатор выполняет ту же роль, что и трансформатор в обычных сетевых адаптерах, за одним исключением. Работает он на более высоких частотах, во много раз больше, чем 50 герц.

Поэтому для изготовления его обмоток требуется меньшее число витков, а, следовательно, и меди. Но необходим сердечник из феррита, а не из трансформаторной стали как у трансформаторов на 50 герц. Те, кто не знает, что такое трансформатор и зачем он применяется, сперва ознакомьтесь со статьёй про трансформатор.

В результате трансформатор получается очень компактным. Также стоит отметить, что импульсные блоки питания очень экономичны, у них высокий КПД.

Выпрямление пониженного трансформатором переменного напряжения.

Эту функцию выполняют мощные выпрямительные диоды. В данном случае применены диодные сборки с маркировкой SRF5-04.

Для выпрямления токов высокой частоты используют диоды Шоттки и обычные силовые диоды с p-n переходом. Обычные низкочастотные диоды для выпрямления токов высокой частоты менее предпочтительны, но используются для выпрямления больших напряжений (20 – 50 вольт). Это нужно учитывать при замене дефектных диодов.

У диодов Шоттки есть некоторые особенности, которые нужно знать. Во-первых, эти диоды имеют малую ёмкость перехода и способны быстро переключаться – переходить из открытого состояния в закрытое. Это свойство и используется для работы на высоких частотах. Диоды Шоттки имеют малое падения напряжения около 0,2-0,4 вольт, против 0,6 – 0,7 вольт у обычных диодов. Это свойство повышает их КПД.

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

Обычный же диод переходит в режим обратимого пробоя и может восстановиться после превышения допустимого значения обратного напряжения. Именно это обстоятельство и является ахиллесовой пятой, которое служит причиной выгорания диодов Шоттки в выпрямительных цепях всевозможных импульсных блоках питания. Это стоит учитывать в проведении диагностики и ремонте.

Для устранения опасных для диодов Шоттки всплесков напряжения, образующихся в обмотках трансформатора на фронтах импульсов, применяются так называемые демпфирующие цепи. На схеме обозначена как R15C14 (см.рис.1).

При анализе схемотехники блока питания ЖК монитора Acer AL1716 на печатной плате также обнаружены демпфирующие цепи, состоящие из smd резистора номиналом 10 Ом (R802, R806) и конденсатора (C802, C811). Они защищают диоды Шоттки (D803, D805).

Демпфирующие цепи на плате блока питания

Также стоит отметить, что диоды Шоттки используются в низковольтных цепях с обратным напряжением, ограниченным единицами – несколькими десятками вольт. Поэтому, если требуется получение напряжения в несколько десятков вольт (20-50), то применяются диоды на основе p-n перехода. Это можно заметить, если просмотреть datasheet на микросхему TOP245, где приводятся несколько типовых схем блоков питания с разными выходными напряжениями (3,3 B; 5 В; 12 В; 19 В; 48 В).

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

Отличить диод на основе p-n перехода от диода на барьере Шоттки можно по условному графическому обозначению на схеме.

Условное обозначение диода с барьером Шоттки.

Условное обозначение диода на основе p-n перехода.

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

По своему назначению инвертор схож с электронными пуско-регулирующими аппаратами (ЭПРА), которые нашли широкое применение в осветительной технике для питания бытовых осветительных люминесцентных ламп. Но, между ЭПРА и инвертором ЖК монитора есть существенные различия.

Инвертор ЖК монитора, как правило, построен на специализированной микросхеме, что расширяет набор функций и повышает надёжность. Так, например, инвертор ламп подсветки ЖК монитора Acer AL1716 построен на базе ШИМ контроллера OZ9910G. Микросхема контроллера смонтирована на печатной плате планарным монтажом.

Микросхема контроллера OZ9910G

Инвертор преобразует постоянное напряжение, значение которого составляет 12 вольт (зависит от схемотехники) в переменное 600-700 вольт и частотой 50 кГц.

Контроллер инвертора способен изменять яркость люминесцентных ламп. Сигналы для изменения яркости ламп поступают от контроллера ЖКИ. К микросхеме-контроллеру подключены полевые транзисторы или их сборки. В данном случае к контроллеру OZ9910G подключены две сборки комплементарных полевых транзисторов AP4501SD (На корпусе микросхемы указано только 4501S).

Сборка полевых транзисторов AP4501SD и её цоколёвка

Также на плате блока питания установлено два высокочастотных трансформатора, служащих для повышения переменного напряжения и подачи его на электроды люминесцентных ламп. Кроме основных элементов, на плате установлены всевозможные радиоэлементы, служащие для защиты от короткого замыкания и неисправности ламп.

Плата инвертора и её элементы

Информацию по ремонту ЖК мониторов можно найти в специализированных журналах по ремонту. Так, например, в журнале “Ремонт и сервис электронной техники” №1 2005 года (стр.35 – 40), подробно рассмотрено устройство и принципиальная схема LCD-монитора “Rover Scan Optima 153”.

Среди неисправностей мониторов довольно часто встречаются такие, которые легко устранить своими руками за несколько минут. Например, уже упомянутый ЖК монитор Acer AL1716 пришёл на стол ремонта по причине нарушения контакта вывода розетки для подключения сетевого шнура. В результате монитор самопроизвольно выключался.

После разборки ЖК монитора было обнаружено, что на месте плохого контакта образовывалась мощная искра, следы которой легко обнаружить на печатной плате блока питания. Мощная искра образовывалась ещё и потому, что в момент контакта заряжается электролитический конденсатор в фильтре выпрямителя. Причина неисправности — деградация пайки.

Деградация пайки, вызвавщая неисправность монитора

Также стоит заметить, что порой причиной неисправности может служить пробой диодов выпрямительного диодного моста.

Читайте также:  Многоканальное управление сенсорными кнопками
Ссылка на основную публикацию