Жк экран 16 контактов – Текстовый экран 16×2 [Амперка / Вики]

Содержание

Текстовый экран 16×2 [Амперка / Вики]

Текстовый экран 16×2 пригодится для вывода показаний датчиков, отображения простых меню, подсказок и приветствий.

Видеообзор

Подключение и настройка

Дисплей MT-16S2H предназначен для вывода текста на латинице и кириллице.

Экран имеет 16 контактов для питания логики, взаимодействия с управляющей электроникой и подсветки.

Вывод Обозначение Описание
1GNDОбщий вывод (земля)
2VccНапряжение питания (3,3—5 В)
3VoУправление контрастностью
4RSВыбор регистра
5R/WВыбор режима записи или чтения
6EРазрешение обращений к индикатору (а также строб данных)
7DB0Шина данных (8-ми битный режим)(младший бит в 8-ми битном режиме)
8
DB1Шина данных (8-ми битный режим)
9DB2Шина данных (8-ми битный режим)
10DB3Шина данных (8-ми и 4-х битные режимы)(младший бит в 4-х битном режиме)
11DB4Шина данных (8-ми и 4-х битные режимы)
12DB5Шина данных (8-ми и 4-х битные режимы)
13DB6Шина данных (8-ми и 4-х битные режимы)
14DB7Шина данных (8-ми и 4-х битные режимы)
15+LED+ питания подсветки
16–LED– питания подсветки

Дисплей может работать в двух режимах:

  • 8-битный режим — в нём используются и младшие и старшие биты (DB0DB7)

  • 4-битный режим — в нём используются только младшие биты (

    DB4DB7)

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

Подключение дисплея к управляющей плате

В качестве примера подключим дисплей к управляющей плате Arduino Uno. Для подключения понадобится Breadboard Half и соединительные провода «папа-папа».

Вывод Обозначение Пин Arduino Uno
1 GND GND
2 Vcc 5V
3 Vo GND
4 RS 12
5 R/W GND
6 E 11
7 DB0
8 DB1
9 DB2
10 DB3
11 DB4 5
12 DB5 4
13 DB6 3
14 DB7 2
15 Vcc 5V
16 GND GND

Аналогично можно подключить дисплей к платформе Iskra JS.

Вывод Обозначение Пин Iskra JS
1 GND GND
2 Vcc 5V
3 Vo GND
4 RS P12
5 R/W GND
6 E P11
7 DB0
8 DB1
9 DB2
10 DB3
11 DB4 P5
12 DB5 P4
13 DB6 P3
14 DB7 P2
15 Vcc 5V
16 GND GND

Примеры работы для Arduino

Для упрощения работы с LCD-дисплеем используйте встроенную библиотеку Liquid Crystal. В ней вы найдёте примеры кода с подробными комментариями.

Библиотека подходит как для работы с контроллерами на AVR-платформе, так и с ARM-контроллерами.

Вывод текста

Для вывода первой программы приветствия, воспользуйтесь кодом вроде этого:

helloWorld.ino
// подключаем стандартную библиотеку LiquidCrystal
#include <LiquidCrystal.h>
 
// инициализируем объект-экран, передаём использованные 
// для подключения контакты на Arduino в порядке:
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
void setup()
{
    // устанавливаем размер (количество столбцов и строк) экрана
    lcd.begin(16, 2);
    // печатаем первую строку
    lcd.print("Hello world");
    // устанавливаем курсор в колонку 0, строку 1
    // на самом деле это вторая строка, т.к. нумерация начинается с нуля
    lcd.setCursor(0, 1);
    // печатаем вторую строку
    lcd.print("Do It Yourself");
}
 
void loop()
{
}

Кириллица

Существует два способа вывода кириллицы на текстовые дисплеи:

Рассмотрим оба способа более подробно.

Таблица знакогенератора

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

Так букве Я соответствует код B1 в шестнадцатеричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:

lcd.print("\xB1ndex");

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

0-9 и A-F следом за двузначным кодом символа, иначе на дисплее отобразится неправильная информация. Чтобы обойти этот момент, можно использовать тот факт, что две строки записанные рядом склеиваются.

Сравните две строки кода для вывода надписи «Яeee»:

lcd.print("\xB1eee"); // ошибка
lcd.print("\xB1""eee"); // правильно

Используя полученную информацию выведем на дисплей сообщение «Привет, Амперка!»:

helloAmperkaRusCharacterGenerator.ino
// подключаем стандартную библиотеку LiquidCrystal
#include <LiquidCrystal.h>
 
// инициализируем объект-экран, передаём использованные 
// для подключения контакты на Arduino в порядке:
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
void setup()
{
    // устанавливаем размер (количество столбцов и строк) экрана
    lcd.begin(16, 2);
    // устанавливаем курсор в колонку 5, строку 0
    // на самом деле это первая строка, т.к. нумерация начинается с нуля
    lcd.setCursor(5, 0);
    // печатаем первую строку
    lcd.print("\xA8""p""\xB8\xB3""e\xBF");
    // устанавливаем курсор в колонку 3, строку 1
    // на самом деле это вторая строка, т.к. нумерация начинается с нуля
    lcd.setCursor(3, 1);
    // печатаем вторую строку
    lcd.print("o\xBF A\xBC\xBE""ep\xBA\xB8");
}
 
void loop()
{
}

Переключение страниц знакогенератора

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

// переключение с нулевой страницы на первую
command(0x101010);
// переключение с первой страницы на нулевую
command(0x101000);

Дисплей не может одновременно отображать символы разных страниц.

Рассмотрим пример, в котором одна и та же строка будет отображаться по-разному — в зависимости от выбранной страницы.

changePageCharacterGenerator.ino
// Подключаем стандартную библиотеку LiquidCrystal
#include <LiquidCrystal.h>
 
// Инициализируем объект-экран, передаём использованные 
// для подключения контакты на Arduino в порядке:
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
void setup() 
{
    // устанавливаем размер (количество столбцов и строк) экрана
    lcd.begin(16, 2);
    // устанавливаем курсор в колонку 5, строку 0
    // на самом деле это первая строка, т.к. нумерация начинается с нуля
    lcd.setCursor(5, 0);
    // печатаем  строку
    lcd.print("\x9b\x9c\x9d\x9e\x9f");
}
 
void loop() 
{
    // устанавливаем 0 станицу знакогенератора (стоит по умолчанию) 
    lcd.command(0b101000);
    // ждём 1 секунду
    delay(1000);
    // устанавливаем 1 станицу знакогенератора
    lcd.command(0b101010);
    // ждём 1 секунду
    delay(1000);
}

Полную таблицу символов с кодами можно найти в документации к экрану.

Использование библиотеки LiquidCrystalRus

Совсем не обязательно мучатся со знакогенератором, чтобы вывести русский символ. Для решения проблемы скачайте и установите библиотеку LiquidCrystalRus.

Это копия оригинальной библиотеки LiquidCrystal с добавлением русского языка. Добавленный в библиотеку код трансформирует русские символы UTF8 в правильные коды для текстового экрана.

В качестве примера выведем фразу «Привет, Амперка» на дисплей.

helloAmperkaRus.ino
// подключаем библиотеку LiquidCrystalRus
#include <LiquidCrystalRus.h>
 
// инициализируем объект-экран, передаём использованные 
// для подключения контакты на Arduino в порядке:
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystalRus lcd(12, 11, 5, 4, 3, 2);
 
void setup()
{
    // устанавливаем размер (количество столбцов и строк) экрана
    lcd.begin(16, 2);
    // устанавливаем курсор в колонку 5, строку 0
    // на самом деле это первая строка, т.к. нумерация начинается с нуля
    lcd.setCursor(5, 0);
    // печатаем первую строку
    lcd.print("Привет");
    // устанавливаем курсор в колонку 3, строку 1
    // на самом деле это вторая строка, т.к. нумерация начинается с нуля
    lcd.setCursor(3, 1);
    // печатаем вторую строку
    lcd.print("от Амперки");
}
 
void loop()
{
}

Примеры работы для Iskra JS

Для работы с LCD-дисплеем из среды Espruino существует библиотека HD44780.

Вывод текста

Для вывода программы приветствия, воспользуйтесь скриптом:

hello-world.js
// создаём переменную для работы с дисплеем
// HD44780 — контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев
var lcd = require("HD44780").connect(P12,P11,P5,P4,P3,P2);
// печатем первую строку
lcd.print("Hello world");
// устанавливаем курсор в колонку 0, строку 1
// на самом деле это вторая строка, т.к. нумерация начинается с нуля
lcd.setCursor(0, 1);
// печатаем вторую строку
lcd.print("Do It Yourself");

Кирилица

Вывод кирилицы на дисплей с помощью платформы Iskra JS доступен через встроенную в дисплей таблицу знакогенератора.

Таблица знакогенератора

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

Так букве Я соответствует код B1 в шестнадцатеричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:

lcd.print("\xB1ndex");

Вы можете смешивать в одной строке обычные символы и явные коды как угодно. Единственный нюанс в том, что после того, как компилятор в строке видит последовательность \x, он считывает за ним все символы, которые могут являться разрядами шестнадцатеричной системы даже если их больше двух. Из-за этого нельзя использовать символы из диапазона 0–9 и A–F следом за двузначным кодом символа, иначе на дисплее отобразится неправильная информация. Чтобы обойти этот момент, можно использовать тот факт, что две строки записанные рядом склеиваются.

Сравните две строки кода для вывода надписи «Яeee»:

lcd.print("\xB1eee"); // ошибка
lcd.print("\xB1"+"eee"); // правильно

Используя полученную информацию выведем на дисплей сообщение «Привет, Амперка!»:

hello-amperka-rus-character-generator.js
// создаём переменную для работы с дисплеем
// HD44780 — контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев
var lcd = require("HD44780").connect(P12,P11,P5,P4,P3,P2);
// устанавливаем курсор в колонку 5, строку 0
// на самом деле это первая строка, т.к. нумерация начинается с нуля
lcd.setCursor(5, 0);
// печатаем первую строку
lcd.print("\xA8"+"p"+"\xB8\xB3"+"e\xBF");
// устанавливаем курсор в колонку 3, строку 1
// на самом деле это вторая строка, т.к. нумерация начинается с нуля
lcd.setCursor(3, 1);
// печатаем вторую строку
lcd.print("o\xBF"+" A\xBC\xBE"+"ep\xBA\xB8");;

Переключение страниц знакогенератора

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

// переключение с нулевой страницы на первую
command(0x101010);
// переключение с первой страницы на нулевую
command(0x101000);

Дисплей не может одновременно отображать символы разных страниц.

Рассмотрим пример, в котором одна и та же строка будет отображаться по-разному — в зависимости от выбранной страницы.

change-page-character-generator.js
// создаём переменную для работы с дисплеем
// HD44780 — контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев
var lcd = require("HD44780").connect(P12,P11,P5,P4,P3,P2);
// создаём переменную состояния
var state = false;
// устанавливаем курсор в колонку 5, строку 0
// на самом деле это первая строка, т.к. нумерация начинается с нуля
lcd.setCursor(5, 0);
// печатаем первую строку
lcd.print("\x9b\x9c\x9d\x9e\x9f");
 
setInterval(function() {
  // каждую секунду меняем переменую состояния
  state = !state;
  // вызываем функцию смены адреса страницы
  lcdChangePage();
}, 1000);
 
function lcdChangePage () {
  if (state) {
    // устанавливаем 0 станицу знакогенератора (стоит по умолчанию) 
    lcd.write(0b101000, 1);
  } else {
    // устанавливаем 1 станицу знакогенератора
    lcd.write(0b101010, 1);
  }
}

Полную таблицу символов с кодами можно найти в документации к экрану.

Комнатный термометр

Дисплей удобен для отображения показаний модулей и сенсоров. Сделаем задатки «Умного Дома», а именно «комнатный термометр».

Что понадобится

Как собрать

  1. Возьмите Troyka Shield и установите сверху на управляющую плату — Arduino или Iskra JS.

  2. Подключите аналоговый термометр к управляющей плате через 3-проводной шлейф к аналоговому пину A0. В итоге должна получится схема.
  3. Прошейте управляющую платформу кодом, приведённым ниже.

Скетч для Arduino

thermometerRoom.ino
// подключаем стандартную библиотеку LiquidCrystal
#include <LiquidCrystal.h>
 
// инициализируем объект-экран, передаём использованные 
// для подключения контакты на Arduino в порядке:
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
// пин датчика температуры
#define TEMPERATURE_PIN  A0
 
void setup()
{
  // устанавливаем размер (количество столбцов и строк) экрана
  lcd.begin(16, 2);
}
 
void loop()
{
  // очищаем дисплей
  lcd.clear();
  // устанавливаем курсор в колонку 3, строку 0
  // на самом деле это первая строка, т.к. нумерация начинается с нуля
  lcd.setCursor(3, 0);
  // считываем показания с датчика температуры
  int sensorADC = analogRead(A0);
  // переводим значения с АЦП в вольты
  float sensorVoltage = sensorADC * (5.0 / 1023.0);
  // переводим вольты в градусы цельсия
  int temperature = (sensorVoltage - 0.5) * 100;
  // выводим результат на дисплей
  lcd.print("Temp=");
  lcd.print(temperature);
  lcd.print("\x99""C");
  delay(500);
}

Скрипт для Iskra JS

thermometerRoom.js
// создаём переменную для работы с дисплеем
// HD44780 — контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев
var lcd = require("HD44780").connect(P12,P11,P5,P4,P3,P2);
 
// создаём переменную для работы с датчиком температуры
var thermometer = require('@amperka/thermometer')
 .connect(A0);
 
// каждую секунду считываем данные с датчика температуры и выводим на дисплей
setInterval(function() {
  var celsius = thermometer.read('C');
  lcd.setCursor(3, 0);
  lcd.print("Temp="+ celsius.toFixed(0) + "\x99"+"C");
}, 1000);

Характеристики

  • Напряжение питания: 3,3—5 В

  • Максимальный ток потребления: 1 мА

  • Потребляемый ток подсветки: 100 мА

  • Индикация: 2 строки по 16 символов. Символы отображаются в матрице 5×8 точек

  • Габариты: 84×44×13 мм

Ресурсы

wiki.amperka.ru

Миниатюрный дисплей 1602

Это обзор снова для самоделкиных. Сегодня я расскажу о миниатюрных LCD дисплеях. Недорогие экранчики на микросхеме Hitachi HD44780 (и их клонах) в 90-е годы практически завоевали рынок недорогих устройств отображения информации. Их ставили в принтеры, факсы, копиры, различное сетевое оборудование и в бытовую технику. Позднее эти дисплеи стали вытеснятся устройствами с последовательным интерфейсом I2C и SPI, а также цветными графическими дисплеями, но до сих пор они пользуются большой популярностью среди радиолюбителей благодаря низкой цене.
Дешевые модули «для Ардуино», прадающиеся во всех магазинах, имеют довольно большие габариты.
При размере области цифр 58 x 10 мм габариты платы такого модуля 80 x 36 мм, при толщине в 1 см. При встраивании в миниатюрные корпуса такие модули не всегда удобны. Как то наткнулся на интересные индикаторы от Microtips Technology — MTC-S16208XFYHSGY. О них и будет этот обзор

Нашел такие модули на ТАОБАО по $1.3. Стоимость доставки варьируется от общего объема посылки. У меня стоимость одного дисплея с доставкой составила около $2.5.

На Алиэкспресс нашел немного похожие по размеру индикаторы. Но цена, ИМХО, великовата.

Компания Microtips Technology Inc производит целую линейку миниатюрных текстовых дисплеев

Заказанные мной MTC-S16208XFYHSGY — монохромные дисплеи с желто-зеленой подсветкой экрана 16 символов на 2 строки очень компактного размера.



При размере цифр 47 x 10 мм габаритный размер 59 x 29 мм, а толщина всего 5 мм



В сравнении с «обычными» 1602 эти дисплеи очень маленькие


Напрягает только 15-контактный разъем с шагом 1.27мм, довольно сложный для макетирования. К счастью, как раз для таких случаев прикуплена «гребенка» с шагом 1.27мм

Для тестирования экранчика подпаиваюсь проводочками к «гребенке» и вставляю ее в разъем дисплея


Контакты как и у «взрослого 1602»: 8 разрядная шина данных (достаточно использовать только 4 старших разряда), три управляющих сигнала, питания, земля и аналоговый вход контрастности дисплея. Вместо двух выводов подсветки один контакт, который при подтягивании к земле включает подсветку. К микроконтроллерам данный дисплей подключается как и все, использующие Hitachi HD44780.

Схему подключение и описание работы можно взять с сайта arduino.cc

Библиотеку для Ардуино Adafruit_LiquidCrystal на github

После подключения и выставления пинов Ардуино в библиотеке получаем работающий такой вот работающий экранчик.

Переменным резистором выставляется нужная контрастность

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

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

Потребление дисплея с отключенной подсветкой — 1 мА

С включенной — порядка 22 мА

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

Проверка встроенных шрифтов чуда не принесла — европейские и кириллические шрифты данное устройство не поддерживает, как и большинство 1602 дисплеев, продающихся в Китае



Расширенная таблица символов такая

Загрузить свой знакогенератор в HD44780 полностью нельзя. Но есть восемь пользовательских символов с кодами 0-7, которые помогают организовать интерфейс в большинстве случаев

Код для загрузки своих символов можно взять у меня в блоге

Данный дисплей можно подключить по последовательному интерфейсу через микросхему-расширитель портов. К сожалению, обычная платка на PCF8574 не подойдет по контактам. Там разведена стандартная «гребенка» на 16 контактов 2.54мм. Но всегда можно сделать свою плату

Из обрезков тектолита быстро утюгом изготовил платку-переходник

Даже без расширителя портов по шести выводам данный дисплей можно напрямую подключить к тому же ESP8266. Я задействовал для подключения GPIO4,5,12,13,14,16. При этом, остается еще 3 свободных GPIO, аналоговый вход и последовательный интерфейс — более чем достаточно для подключения различных реле и датчиков.

Подведем итог

Достоинства дисплея
  • Весьма скромная стоимость
  • Компактный размер
  • Равномерная подсветка
  • Удобное управление подсветкой одним выводом
Недостатки неудобства
  • Разъемы 1.27мм неудобные для макетирования
  • Отсутствие последовательного интерфейса
Конкретное применение данный дисплейчик очень скоро найдет в переносной метеостанции, которую планирую брать с собой в походы.
Об этом я напишу на страницах своего блога

Традиции, традиции …

«Посмотрим что там за дисплейчик …»

«Ну что такой маленький то?»

«Давай лучше эти VFD обозревать!»

Но VFD — это уже совсем другая история

Полезные ссылки

mysku.ru

Подключение текстового экрана к Arduino [Амперка / Вики]

Существует большое количесвто разновидностей текстовых, или как их ещё называют знакосинтезирующих, жидкокристаллических экранов. Наиболее распространены дисплеи на базе чипов HD44780 от Hitachi, KS0066 от Samsung или совместимых с ними. Для работы с такими экранами существует стандартная Arduino-библиотека Liquid Crystal.

К таким дисплеям относятся в частности текстовые экраны от Мэлт. В этой статье детально описывается схема подключения этого экрана, однако она подойдёт и для множества других текстовых дисплеев.

Статья описывает общие принципы. Вы можете перейти к подробному описанию вашего дисплея:

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

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

Подключение

Закрепите экран на breadboard’е и подведите к рельсам питания breaboard’а питание +5 В и землю с Arduino.

Питание и земля понадобятся не один раз, поэтому удобнее пробросить их именно на рельсы.

Включение подсветки

Фоновая подсветка дисплея — это отдельный контур, не связанный с остальным. Включить её можно подав +5 В на 15-й контакт дисплея и подключив 16-й контакт к земле. Соединив эти два контакта с соответствующими рельсами, можно включить Arduino и увидеть, что дисплей засветился.

Обратите внимание, что на некоторых моделях нумерация контактов идёт не просто справа-налево от первого до шестнадцатого, а несколько более хитро. Так, например, на экране 16×2 от Мэлт первый контакт физически находится на 14-й позиций, второй на 13-й и так далее справа-налево вплоть до 14-го на первой позиции, а 15-й и 16-й расположены справа. Нумерация около контактов дисплея поможет не запутаться.

Включение питания знакосинтезатора

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

  • Первый — это земля. Соедините его с рельсой земли.

  • Второй — питание. Соедините его с рельсой +5 В.

  • Третий — контрастность. Для получение максимально контрастного изображения соедините его с рельсой земли. Вы можете подать на этот контакт произвольное напряжение от 0 до 5 В, чем оно выше, тем тусклее будет изображение, но вместе с этим снизится энергопотребление. Для возможности плавной регулировки контрастности можете подать на этот контакт выходной сигнал потенциометра.

После подключения, если включить Arduino, вы можете увидеть прямоугольные знакоместа. В зависимости от комбинации цветов текста и подсветки они могут быть как яркими и хорошо заметными, так и едва заметными. Это нормально: в любом случае, текст будет смотреться отлично.

Подключение шины данных

Для коммуникации между Arduino и экраном необходимо использовать несколько линий взаимодействия:

Таким образом занятыми окажутся от 6-ти до 11-ти контактов от обоих устройств. Если вам не требуется считывать с дисплея, что подходит под большинство сценариев использования, для команд понадобится 2 линии.

Если скорость обновления данных так же не является проблемой, для передачи данных достаточно 4-х линий.

Итак, для подключения дисплея достаточно истпользовать 6 линий, 6 контактов на Arduino. Рассмотрим именно этот сценарий.

Как упоминалось, нам не за чем считывать с дисплея, мы будем в него только писать. Поэтому соединим 5-й контакт дисплея, который отвечает за выбор чтение/запись с рельсой земли. Это означает «всегда писать».

Затем, соединяем Arduino и экран нашими 6-ю линиями коммуникации. Какие именно контакты будут выбраны на Arduino не имеет значения: мы зададим их в программе, но для примера была выбрана такая конфигурация:

  • 4-й контакт дисплея — 4-й контакт Arduino. Это линия адресного сигнала. Известная как A0 или RS. В зависимости от того, 0 она или 1, дисплей понимает имеем ли мы на линии данных команду вроде «передвинуть курсор» или код символа для отображения.

  • 6-й контакт дисплея — 5-й контакт Arduino. Это линия разрешения доступа к данным. Известная, как E или Enable. Когда эта линия становится единицей, дисплей исполняет команду или выводит символ с линии данных.

  • 11-й, 12-й, 13-й, 14-й контакт дисплея — 10-й, 11-й, 12-й, 13-й контакт Arduino соответственно. Это линии данных. Известные как DB4, DB5, DB6, DB7.

Экран подключен и готов к приёму данных. Осталось написать программу для Arduino.

Программирование

Для вывода текста с Arduino удобнее всего воспользоваться встроенной библиотекой Liquid Crystal. Для вывода приветствия и таймера, воспользуйтесь кодом вроде этого:

Hello.pde
// Подключаем стандартную библиотеку LiquidCrystal
#include <LiquidCrystal.h>
 
// Инициализируем объект-экран, передаём использованные 
// для подключения контакты на Arduino в порядке:
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(4, 5, 10, 11, 12, 13);
 
void setup() 
{
    // устанавливаем размер (количество столбцов и строк) экрана
    lcd.begin(16, 2);
    // печатаем первую строку
    lcd.print("Hello world!");
    // устанавливаем курсор в колонку 0, строку 1. То есть на
    // самом деле это вторая строка, т.к. нумерация начинается с нуля
    lcd.setCursor(0, 1);
    // печатаем вторую строку
    lcd.print("foo bar baz");
}
 
void loop() 
{
}

Всё довольно просто и должно быть понятно из комментариев.

Кириллица

Информация в этом разделе относится именно к дисплеям от Мэлт. Китайские и Европейские аналоги вряд ли имеют в своём наборе символов кириллицу, обратитесь к документации на дисплей, чтобы узнать об этом подробнее.

Вывод русских букв не совсем тривиален: вы не можете просто написать lcd.print("Вася"). Это связано с понятием кодировок. Вы знаете, что каждому символу соответствует код и при компиляции программы, если строка содержит кириллицу, она будет сконвертирована в коды по таблице utf-8, cp-1251 или какой-то другой в зависимости от настроек компилятора. Экран в свою очередь, ожидает увидеть данные в собственной кодировке.

Так например, букве «Я» соответствует код B1 в шестнадцатиричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:

lcd.print("\xB1ndex");

Можете смешивать в одной строке обычные символы и явные коды как угодно. Единственный нюанс в том, что после того, как компилятор в строке видит последовательность \x, он считывает за ним все символы, которые могут являться разрядами шестнадцатиричной системы даже если их больше двух. Из-за этого вы не можете просто использовать символы из диапазона 0-9, a-f следом за двузначным кодом символа: это вызовет ошибку компиляции. Чтобы обойти этот момент, можно использовать тот факт, что две строки записанные рядом склеиваются. Так, если вы хотите написать «Яeee»:

lcd.print("\xB1eee"); // ошибка
lcd.print("\xB1""eee"); // правильно

Например, чтобы написать «Привет от Амперки», использовался код:

cyrillic.pde
#include <LiquidCrystal.h>
 
LiquidCrystal lcd(4, 5, 10, 11, 12, 13);
 
void setup() 
{
    lcd.begin(16, 2);
    lcd.print("     \xA8p\xB8\xB3""e\xBF");
    lcd.setCursor(0, 1);
    lcd.print("   o\xBF A\xBC\xBE""ep\xBA\xB8");
}
 
void loop() 
{
}

Переключение страниц знакогенератора

Дисплейный модуль хранит в памяти две страницы знакогенератора. По умолчанию установлена нулевая страница. Для переключения страницы используйте метод command(0x101010), а обратно — command(0x101000).

Дисплей не может одновременно отображать символы с разных страниц.

Рассмотрим на примере, в котором одна и та же строка будет изменяться в зависимости от выбранной страницы.

change_page.ino
// Подключаем стандартную библиотеку LiquidCrystal
#include <LiquidCrystal.h>
 
// Инициализируем объект-экран, передаём использованные 
// для подключения контакты на Arduino в порядке:
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(4, 5, 10, 11, 12, 13);
 
void setup() 
{
    // устанавливаем размер (количество столбцов и строк) экрана
    lcd.begin(16, 2);
}
 
void loop() 
{
    // устанавливаем 0 станицу знакогенератора (стоит по умолчанию) 
    lcd.command(0b101000);
    // печатаем первую строку
    lcd.print("     \x9b\x9c\x9d\x9e\x9f");
    // ждём 1 секунду
    delay(1000);
    // устанавливаем 1 станицу знакогенератора
    lcd.command(0b101010);
    // ждём 1 секунду
    delay(1000);
    // очищаем дисплей
    lcd.clear();
}

Полную таблицу символов с кодами можно найти в документации к экрану.

wiki.amperka.ru

Ардуино дисплей: подключение к плате, программирование

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

В этом учебном пособии по Ардуино LCD вы найдете интерфейс с символами Arduino LCD i2c. Вы можете использовать информацию из этого текста для создания собственных проектов на основе ЖК-монитора.

Суть соединения дисплея с Ардуино

Display для Аrduino – это одно из самых простых устройств, которое можно использовать для отображения результатов проектов. Однако есть два различных типа данного устройства: графические и символьные. В этой статье используется персональный экран, так как он легче всего работает. Кроме того, в зависимости от размера экрана, существуют разные типы:

  • 16×2 символьный – 16 колонок и 2 строки;
  • 20×4 символов – 20 колонок и 4 строки.

Они также доступны в разных цветах:

  1. Зеленые с черными символами.
  2. Синие с белыми символами.
  3. Красные с черными символами.

Тем не менее, зеленые и синие экраны являются наиболее распространенными. Другие цвета встречаются редко. В этом уроке используется Аrduino display с синим символом 20×4. Микропроцессор взаимодействует с экраном через четыре линии передачи данных. Мы задействуем цифровые контакты на микроконтроллере, чтобы взаимодействовать с дисплеем и отображать на нем то, что мы хотим.

Подсветка на ЖК-дисплее активируется, когда дается питание 5 В от микроконтроллера до 15 на мониторе и заземляющим штырем 16. Кроме того, для регулировки контрастности сенсорного дисплея для Ардуино нужен потенциометр 10K.

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

Для создания дисплея для Ардуино понадобится следующее оборудование:

  1. Микроконтроллер Ардуино или Genuino.
  2. ЖК-экран, совместимый с драйвером Hitachi HD44780.
  3. Штыревые разъемы для припаивания к выводам ЖК-дисплея.
  4. Потенциометр 10 кОм.
  5. 220 Ом резистор.
  6. Соединительные провода.
  7. Макет.

ЖК-мониторы, совместимые с Hitachi; ими можно управлять в двух режимах: 4-битном или 8-битном. Для 4-битного режима требуется семь выводов ввода/вывода от Arduino LCD, а для 8-разрядного режима требуется 11 контактов. Для отображения текста на экране вы можете делать все в 4-битном режиме, поэтому пример показывает, как управлять 2×16 ЖК-дисплеем в 4-битном режиме.

Программирование

Теперь мы можем попробовать отобразить что-то на дисплее через Arduino ssd1306. Прежде чем вы это сделаете, вам необходимо загрузить библиотеку Arduino по ссылке — LiquidCrystal. Затем нужно извлечь папку «LiquidCrystal» из файла загрузки. А после скопируйте и вставьте папку «LiquidCrystal» в каталог микропроцессора, пример конечной директории результатов должен выглядеть так: arduino-1.0.5librariesLiquidCrystal.

Код LiquidCrystal Ардуино

Затем откройте свою среду разработки и перейдите к:

Файл → Примеры → LiquidCrystal → HelloWorld

Загрузите код в микроконтроллер. Пользователь увидит следующую информацию:

ЖК-дисплей Ардуино

Обратите внимание, если вы используете экран 16×2, отредактируйте lcd.begin (20,4) на lcd.begin (16,2).

Процесс сборки

Первый шаг – припаять 16-контактные штыревые разъемы на Аrduino display. Затем вы можете использовать либо 16-контактный разъем для подключения к Ардуино, либо просто использовать разъем «женщина-женщина». Если вы впервые подключаетесь к микроконтроллеру, проще всего использовать макет.

Исходные соединения для светодиодного экрана и Arduino

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

  • Подключите контакт 15 на мониторе к контакту 5V от Arduino 128х64 lcd spi.
  • Затем подключите вывод 16 на устройстве к выходу GND.

Эти контакты используются для питания подсветки ЖК-дисплея. Затем вам нужно настроить логические операции для устройства.

  • Для этого подключите вывод 1 на мониторе к выходу GND Arduino. Затем подключите контакт 2 на экране к выходу 5V Ардуино.
  • Затем вам нужно настроить потенциометр регулировки контрастности.

Возьмите потенциометр 10K и подключите первую клемму к выходу 5V Arduino, а второй – к контакту 3 и третьему терминалу к выходу GND.

Затем включите микропроцессор. Вы заметите, что подсветка на ЖК-дисплее включена. Кроме того, когда вы поворачиваете ручку на потенциометре, блоки символов на ЖК-дисплее становятся яркими/тусклыми. Посмотрите картинку ниже, чтобы узнать, о чем я говорю. Если монитор отображает то, что показано на фотографии ниже, это означает, что ваш экран настроен правильно! Если вы не смогли этого достичь, проверьте свои соединения и потенциометр.

Регулировка контрастности на устройстве

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

Конечные соединения между Arduino, потенциометром и устройством

Начнем с подключения контрольных проводов для ЖК-дисплея. Подключите контакт 5 (RW) монитора к контакту GND от Arduino. Этот контакт не используется и служит для чтения/записи. Затем подключите контакт 4 (RS) экрана к цифровому выходу 7 Arduino. Штырек RS используется для указания на ЖК-дисплее, отправляем ли мы данные или команды (чтобы изменить положение курсора).

Затем подключите контакт 6 (EN) ЖК-дисплея к цифровому выходу Arduino 8. EN – это контактное гнездо на устройстве, оно используется, чтобы сообщить монитору, что данные готовы для чтения.

Затем мы должны подключить четыре вывода данных на устройстве. Подсоедините контакт 14 (DB7) экрана к цифровому выступу 12 Arduino. Затем подключите контакт 13 (DB6) монитора к цифровому выходу 11 Arduino. Затем вывод 12 на мониторе (DB5) на цифровой вывод 10, затем Вывод LCD № 11 (DB4) на цифровой вывод 9.

Вот и все, вы закончили подключать ЖК-дисплей к Arduino. Вы заметите, что между управляющими выводами и выводами данных на ЖК-дисплее есть четыре несвязанных контакта, как показано ниже.

Паяные 16-контактные разъемы

Запуск и тестирование

Попробуйте переделать код для сенсорного устройства. В принципе, для управления текстом на ЖК-дисплее есть три основные функции:

  1. begin (итоговые столбцы, общие строки). Эта функция используется внутри setup () для инициализации размера используемого дисплея. Если это 20×4, то: lcd.begin (20,4), иначе, если это 16×2, тогда: lcd.begin (16,2).
  2. setCursor (номер столбца, номер строки) – эта функция помещает курсор на устройстве в нужное положение. Любой текст, отображаемый после этой функции, начнется с указанной вами позиции. Например, используйте: lcd.setCursor (4,0), т. е. пятый столбец и первую строку (начиная с 0,0).
  3. print («текст») – эта функция используется для печати текста на ЖК-дисплее. Какая бы ни была строка внутри «», она отображается на дисплее.

Вот и все, теперь можно добавить полученное устройство к проектам.

arduinoplus.ru

Wh2602B 16×2 Cимвольный дисплей — Winstar Display

Описание

There are different interface options for Wh2602B series, details as below:
►Wh2602B : 6800 interface (ST7066 IC), thickness NO B/L:9.70, with backlight: 13.2~13.5 mm
►Wh2602B1: SPI interface (RW1063 IC), thickness NO B/L:9.70, with backlight: 13.2~13.5 mm
►Wh2602B2: 6800 interface (ST7066 IC), thickness 10.0 mm
►Wh2602B3: I2C interface (RW1063 IC), thickness NO B/L:9.70, with backlight: 13.2~13.5 mm

DRAWING

Техническое описание

Функции контроллера контактного интерфейса

Pin No. Символы Описание
1 VSS Ground
2 VDD Power supply for logic
3 VO Contrast Adjustment
4 RS Data/ Instruction  select signal
5 R/W Read/Write select signal
6 E Enable signal
7~14 DB0~DB7 Data bus line
15 A Power supply for B/L +
16 K Power supply for B/L —

Механические характеристики

Наименование Стандартное значение Единица
Измерения модуля 80.0 x 36.0 mm
Зона обзора 66.0 x 16.0 mm
Крепежное отверстие 75.0 x 31.0 mm
Размер символов 2.95 x 5.55 mm

Электронные характеристики

Наименование Символы Стандартное значение
Типичный
Единица
Входной  напряжения VDD 3/5 V
Рекомендованное напряжение(вольт) 
при нормальной температурею.
Версия модуля @25°C
VDD-VO 3.70 V

Display Character Address Code

Положение Дисплея 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
DD RAM Address 00 01                           0F
DD RAM Address 40 41                           4F

Search Keyword: lcd 16×2, lcd 16 x 2, 16×2 lcd, 16 x 2 lcd

www.winstar.com.tw

» Работаем с LCD дисплеем на основе микроконтроллера — HD44780 (ч.1)

 

 

ЖК дисплей на основе микроконтроллера HD44780 является наиболее часто используемым в электроники. Вы можете его встретить в кофейных автоматах, часах, копирах, принтерах, роутерах и т.п. Также данный дисплей используется в LCD шилдах для Arduino.

ЖК дисплей представляет из себя модуль, состоящий из микроконтроллера HD44780 разработанный фирмой Hitachi и непосредственно самим ЖК дисплеем. Микроконтроллер принимает команды и обрисовывает соответствующие символы на ЖК дисплее.

 

Существует огромное количество разновидностей данного ЖК модуля, он может быть 1,2, 4 –ех строчный с различным числом символов на строке, с подсветкой или без, с различным цветом подсветки и т.п. Объединяет их всех наличие микроконтроллера HD44780, зная команды которого позволит нам без проблем использовать в своих проектах ту или иную модификацию.

 

Предисловие

 

Для работы с дисплеями на основе HD44780 создано большое количество библиотек как на ассемблере так и на СИ, также для Arduino существует своя библиотека «LiquidCrystal».

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

 

Где взять первоисточник информации?

Если вы захотите сами разобраться как работать с LCD дисплеем на HD44780 и вникнуть глубже, то в этом вам поможет даташит на микроконтроллер HD44780, которые легко найти в интернете (но если вам лень, вы можете скачать с сайта).

 

Изучение я разобью на два этапа

1. Сначалая я приведу матчасть по работе с LCD на HD44780, этому посвящён данный пост

2. Далее, в следующем посте, я буду использовать модель дисплея LMO16L в Proteus. (LMO16L это один из типичный дисплеев на HD44780)

  • на данном этапе я отработаю протокол взаимодействия с дисплеем используя PATTERN GENERATOR.
  • после того, как отработаю протокол, я напишу прошивку для Arduino, попробую её на той же модели LMO16L и испытаю на реальном Arduino с подключенным LCD шилдом. Если дисплей будет работать также как и на модели, можно считать что мы умеем работать с ЖК дисплеем.
  • для закрепления, я напишу прошивку на ассемблере для Atmega8 и испробую её на LMO16L

 

 

В данном посте я расскажу:

P.S. разделы кликабельны, при нажатие вы спускаетесь к соответствующему разделу

 

 

Как подключить дисплей?

 

Все дисплеи на основе HD44780 имеет схожую распиновку

Где

  • GND – земля (иногда пишут Vss)
  • Vcc – напряжение питания +5В (иногда пишут Vdd)
  • Vo – напряжение контрастности от 0В до +5В, данный вывод надо подключить к потенциометру, для регулировки
  • RS –вывод с помощью которого, дисплей определяет что в него поступает данные или команды
  • RW – вывод с помощью которого, дисплей определяет передавать или получать данные
  • E – линия синхронизации
  • D0D7 – шина команд/данных
  • LED + , LED — – выводы для питания подсветки

 

Дисплей может работать в 2-ух режимах:

  • в 8-и разрядном (т.е. когда, для обмена информацией используются контакты от D0 до D7),  данные пересылаются за один такт
  •  в 4-ех разрядном (для обмена используются только контакты D4 – D7),  в этом случае данные пересылаются за 2-а такта, сначала старшие 4-е бита, потом младшие 4-е бита.

 

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

 

 

В качестве примера я показал подключение дисплея к ATmega8, хотя, можно использовать любой другой микроконтроллер. Выводы D4-D7, RS, E подключаются к любому цифровому порту микроконтроллера. Вывод RW мы использовать не будем, т.к. нам нет практической нужды принимать данные из ЖК (это обычная практика), наша задача — только передавать. По этому, свободные выводы RW, D0 – D3 посадим на землю.

Заметьте что Ve (управление контрастностью) подключается через реостат (можно через делитель напряжения), вполне уверен, что вы проигнорируете и подключите его или к или к земле. Сразу скажу, что тогда, на экране вы ничего не увидите, т.к. при минимальной или максимальной контрастности дисплей не способен вывести что ни будь различимое.

 

 

Как происходит обмен информаций с ЖК?

 

Мы будем говорить о 4-ех разрядном режиме ЖК, поэтому для работы нам потребуется минимум 6 линий микроконтроллера.

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

RS – логическая единица ЖК принимает данные, логический ноль ЖК принимает команды;

С помощью линий данных:

D4 – D7 — разряды идут от младшего к старшему

И с помощью вывода стобирующих импульсов:

E

ЖК принимает информацию с помощью D4-D7, которая может быть данными (ASCII код выводимого символа)  если на RS логическая единица или командой (очистить экран, перенести курсор и т.п.) если на RS логический ноль. О том, какие бывают команды я расскажу позже, сейчас сконцентрируем внимание на физическом уровне взаимодействия.

Обмен информацией происходит по байтно, т.к. мы говорим 4-ех разрядном режиме, то микроконтроллер выставляет на D4-D7 логические единицы и логические нули, которые соответствуют старшему передаваемому полубайту, далее на E формируется стробирующий импульс, по заднем фронту которого ЖК считывает данные.

Далее микроконтроллер заново выставляет на D4-D7 логические единицы и логические нули, которые соответствуют младшему передаваемому полубайту и опять на E формируется стробирующий импульс, по заднем фронту которого ЖК считывает данные. После некоторой временной паузы (зависит от команды) цикл передачи байта данных или команды повторяется, ничего сложного.

 

Если работать в 8-и разрядном режиме, то будут задействованы D0 – D7 и данные/команды будут передаваться за один такт, а не за два.

 

 

Какие бывают команды?

 

Команды ЖК на HD44780 можно разделить на две группы:

  • команды настройки и записи в ЖК (9 команд)
  • команды чтения из ЖК (2-е команды)

 

Т.к. мы не будем считывать с ЖК (вывод RW посадили на ноль), то, я рассмотрю команды для настройки и записи, которые для удобства я свел в таблицу и пронумеровал, весь список вы можете посмотреть в даташите на странице 191.

 

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

 

По порядку разберем, какая память есть в HD44780 и как работают команды…

Микроконтроллер HD44780 содержит следующую память:

  1. DDRAM;
  2. CGROM;
  3. CGRAM.

 

1.  В DDRAM памяти содержится ASCII коды символов которые в данный момент отображаются на экране, еще её называют видеопамять. Для 16-и символьных 2-ух строчных дисплеев её размер составляет 80 байт, т.е. по 40 байт на каждую строку. Каждый символ занимает 1 байт. У вас может возникнуть вопрос, почему 40 байт, ведь символов на строке 16? Дело в том, что на дисплеи отображается только часть DDRAM, с 0х80 по 0х8F включительно для 1-ой строки и с 0хС0 по 0хСF включительно для 2-ой строки, остальную часть не видно.

 

Перенести черту видимости вправо или влево, можно с помощью команды №5. Для этого, нужно выставить S/C=1 и R/L в зависимости от направления, если вправо —R/L=1, если влево — R/L=0. Таким образом мы можем передвигать видимую часть по DDRAM, ширина её все равно останется равным 16-и символам для 1-й строки и 16-и символам для 2-й строки.

С помощью команды №5 передвигая видимую часть DDRAM, мы получаем эффект бегущей строки, например команда №5 была послана ЖК модулю 7 раз:

 

 

В дисплеи есть так называемый счетчик адреса или курсор, который начинает считать с 0x80 (в экране это левый верхний угол), при записи нового символа в DDRAM счетчик инкрементируется или декрементируется.

Помимо этого, с помощью команды №5 можно перемещать сам курсор, если выставить S/C=0 и R/L в зависимости от направления, если вправо —R/L=1, если влево — R/L=0.

 

Команда №1 служит для очистки памяти DDRAM, следовательно, всех текущих отображающихся символов и  установки курсора в начальное положение, т.е. в верхний левый угол дисплея.

 

Команда №2 не очищает DDRAM, а только устанавливает курсор в начальное положение, т.е. в верхний левый угол дисплея.

 

Дисплей по умолчанию не знает, в какую сторону сдвигать курсор при записи, для этого существует команда №3. Если бит ID=1, то курсор после записи символа сдвигается вправо (инкрементируется), если ID=0 (декрементируется), то влево.

Например, пусть курсор установлен в начальное положение (в левый верхний угол), то, для случая, когда ID=1 – курсор смещается при записи вправо, буква за буквой выводится слева на право (это типичный случай).

 

 

Пусть курсор также установлен в начальное положение (в левый верхний угол), но ID=0 – курсор смещается при записи влево, буква за буквой выводиться справа налево, то, мы получим следующее:

 

 

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

Установив бит S=1 в этой-же команде, вы разрешаете сдвигать экран при записи символов. Если курсор инкрементируется (т.е. пишем слева на право), то экран будет сдвигаться влево. Если пишем справа налево, то экран будет сдвигаться вправо. Запутались? =)

Например, если мы установим курсор в правый нижний угол (команда №5), далее в команде №3 установим ID=1 (пишем слева направо) и S=1 (разрешаем сдвигать экран при записи), то при записи s-engineer.ru мы получим следующий результат.

 

 

Текст выводился слева на право (как обычно) и сдвигался влево.

 

С помощью команды №4 мы можем включать и отключать отображение DDRAM памяти на дисплеи. Установив бит D=0, дисплей прекращает отображать символы, но в памяти DDRAM они остаются, при D=1 дисплей отображает содержимое DDRAM.

 

 

Бит С позволяет отобразить курсор, если С=1, то курсор в виде символа “_”, если С=0 курсор не виден.

 

 

Если установить бит В=1, то курсор будет мигать, если В=0 курсор не мигает.

 

 

Команда №6 используется при инициализации ЖК, если бит DL=1, то, дисплей использует с DB0 по DB7, а при DL=0, только 4-е вывода шины, т.е. с DB5 по DB7.

Бит N указывает сколько строк мы будем использовать (N=1 две строки, N=0 одну строку).

Разряд F позволяет указать размер шрифта, обычно используется 5х7 при F=1, но можно использовать и 5х10 при F=0 используя только одну строку (обычно, данный функционал не работает).

 

С помощью команды №8 можно указать в какую ячейку DDRAM мы будем записывать ASCII код символа. Она похожа на команду №5, т.к. в ней мы тоже управляем перемещением курсора, но только уже по адресам. Командой №8, мы можем использовать для своих нужд часть памяти DDRAM, которая не отображается на дисплеи.

 

Команда №9 переставляет собой просто данные. С её помощью производится запись ASCII кода символа в DDRAM память для его отображения на ЖК дисплеи. Для 4-ех разрядного режима, запись производится в два такта, сначала старший полубайт, потом младший полубайт.

Например, пошлем код 0x53, что соответствует знаку ‘S’.

 

 

2. В памяти CGROM храниться «битовое изображение» выводимых символов. См. таблицу ниже

 

 

Т.е. когда мы посылаем в DDRAM код 0x53, микроконтроллер HD44780 ищет ячейку 0x53 в CGROM и отрисовывает символ в соответствие с 1-и и 0-и данной ячейки.

(не всегда микроконтроллер содержит в CGROM кириллицу, там могут быть латинские или японские символы)

 

3. Память  CGRAM является частью CGROM. Главное её свойство заключается в том, что мы можем записывать в неё свои символы. Для этого нужно воспользоваться командой №7, в которой мы указываем адрес ячейки и далее командой №9 отправить 8 байт под ряд с «битовым изображением символа»

 

 

Я решил создать символ состоящий из ‘s e’ по вертикали.

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

 

 

 

Как инициализировать дисплей на HD44780?

 

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

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

Я вывел для себя универсальную последовательность команд для инициализации, я проверил её на модели ЖК дисплея LM016L в Proteus и на реальном ЖК дисплеи Wh2602B (LCD шилд для Arduino).

Итак для успешной инициализации нам необходимо послать следующую последовательность команд и выдержать паузы:

(картинка кликабельна)

Вы могли заметить, что для первой команды 0x30 не нужно выдавать младший полубайт, это потому, что, дисплей сразу принимает данные в 8и битном режиме, а т.к. DB0-DB4 у нас посажены на ноль, мы не можем ими управлять, да это и не нужно.

 

Если кратко, то инициализация это последовательность команд

  1. Команда №6 — 0x30 – установить режим 8 бит
  2. Команда №6 — 0x28 – установить режим 4 бита
  3. Команда №4 — 0x08 – выключить дисплей
  4. Команда №1 — 0x01–  сброс дисплея
  5. Команда №3 — 0x06–  при записи, курсор сдвигать вправо
  6. Команда №4 — 0x0C – включить дисплей

Вторая, практическая часть

Вам будет интересно:


Буду признателен если вы поделитесь данным постом

s-engineer.ru

Жк Экран 16 Контактов | Шопеликс

Музыкальный центр Mystery MMK-825U blackЖк Экран 16 КонтактовОписание товара: Поворотный Жк экран 8”

Бренд: Mystery / Цена: 8312 ₽

DataKam 6 ECOЖк Экран 16 КонтактовОписание товара: Видеорегистратор с отличным качеством записи днем и ночью. Съемка 30 к/с, угол 150°, битрейт 35 Мб/с. ЖК экран 1,6″, сквозное крепление на магните, поляризационный фильтр. Чтение номеров до 16 метров. G-сенсор и датчик движения. HDMI, miniUSB, 2 карт…

Бренд: DataKam / Цена: 9890 ₽

Joy Toy Планшетный компьютер 7242Жк Экран 16 КонтактовОписание товара: Планшет русско-английский, синий Жк экран, 32 функции обучения, музыка, развлечения. упаковка: коробка размер упаковки: 26х22х3 см

Бренд: Joy Toy / Цена: 765.77 ₽

CANSONIC Z1 ZOOMЖк Экран 16 КонтактовОписание товара: Регистратор с 2-я камерами, запись видео 1920×1080, ЖК-экран 2дюйма, G-сенсор, аккумулятор, угол обзора 140°, микрофон, видеовыход, microSD (microSDHC).

Бренд: Cansonic / Цена: 11990 ₽

Инструмент 5bites LY-T2021 для разделки контактов типа KroneЖк Экран 16 КонтактовОписание товара:

Бренд: 5bites / Цена: 150 ₽

Нож для разделки контактов (НТ-14TBK) (BK)Жк Экран 16 КонтактовОписание товара:

Бренд: Gembird2 / Цена: 230 ₽

розетка силовая 16А 3 полюса IP44Жк Экран 16 КонтактовОписание товара: Номинальное напряжение: 200-250ВНоминальный ток: 16 АКоличество контактов: 3Тип контактов: 2P+EСтепень защиты, IP: 44Цвет: серый/синий

Бренд: SCHWABE / Цена: 719 ₽

вилка силовая 16А 5 полюсов IP44Жк Экран 16 КонтактовОписание товара: Номинальное напряжение: 200-250 ВНоминальный ток: 16 АКоличество контактов: 5Тип контактов: 3P+N+EСтепень защиты, IP: 44Цвет: красный

Бренд: SCHWABE / Цена: 550 ₽

гнездо 16А д/силовой вилки 5 полюсов IP44Жк Экран 16 КонтактовОписание товара: Номинальное напряжение: 200-250ВНоминальный ток: 16 АКоличество контактов: 5Тип контактов: 3P+N+EСтепень защиты, IP: 44Цвет: красный

Бренд: SCHWABE / Цена: 650 ₽

Адаптер проводки прицепа (13 контактов — 7 контактов) KIA E919999137 для KIA Ceed 2018 — 2019Жк Экран 16 КонтактовОписание товара: Адаптер проводки прицепа (13 контактов — 7 контактов) KIA E919999137 для KIA Ceed 2018 — 2019 Производитель: KIAКаталожный номер: E919999137Количество: 1 шт. 

Бренд: / Цена: 1419 ₽

Адаптер проводки прицепа (7 контактов — 13 контактов) KIA 55622ADB00 для KIA Ceed 2018 — 2019Жк Экран 16 КонтактовОписание товара: Адаптер проводки прицепа (7 контактов — 13 контактов) KIA 55622ADB00 для KIA Ceed 2018 — 2019 Производитель: KIAКаталожный номер: 55622ADB00Количество: 1 шт. 

Бренд: / Цена: 1419 ₽

розетка силовая двойная 16А 3+5 полюсов IP44Жк Экран 16 КонтактовОписание товара: Номинальное напряжение: 200-250 ВНоминальный ток: 16 АКоличество контактов: 5,3Тип контактов: 3P+N+E, 2P+EСтепень защиты, IP: 44Цвет: серый/красный/синий

Бренд: SCHWABE / Цена: 1390 ₽

розетка силовая 16А 5 полюсов IP44Жк Экран 16 КонтактовОписание товара: Номинальное напряжение: 380-415 ВНоминальный ток: 16 АКоличество контактов: 5Тип контактов: 3P+N+EСтепень защиты, IP: 44Цвет: серый/красный

Бренд: SCHWABE / Цена: 719 ₽

вилка силовая 16А 3 полюса IP44Жк Экран 16 КонтактовОписание товара: Номинальное напряжение: 200-250ВНоминальный ток: 16 АКоличество контактов: 3Тип контактов: 2P+EСтепень защиты, IP: 44Цвет: синий

Бренд: SCHWABE / Цена: 270 ₽

штекер силовой 16А 5 полюсов IP44Жк Экран 16 КонтактовОписание товара: Номинальное напряжение: 380-415 ВНоминальный ток: 16 АКоличество контактов: 5Тип контактов: 3P+N+EСтепень защиты, IP: 44Цвет: серый/красный

Бренд: SCHWABE / Цена: 760 ₽

гнездо 16А д/силовой вилки 3 полюса IP44Жк Экран 16 КонтактовОписание товара: Номинальное напряжение: 200-250ВНоминальный ток: 16 АКоличество контактов: 3Тип контактов: 2P+EСтепень защиты, IP: 44Цвет: серый/синий

Бренд: SCHWABE / Цена: 360 ₽

Планшет для рисования Назад к истокам Pic-Pad с ЖК экраномЖк Экран 16 КонтактовОписание товара: Назад к истокам PPW10 Бумага больше не нужна! Просто пишите и стирайте! Прочный, ультралегкий ЖК-экран спроектирован таким образом, чтобы вас не покидало чувство, как будто вы пишите на обычной бумаге. Изображение или надпись остаются до тех пор, пок…

Бренд: Назад к истокам / Цена: 2290 ₽

Монитор Acer V196HQLAbЖк Экран 16 КонтактовОписание товара: Тип Жк-монитор, широкоформатный Диагональ 18.5″ Разрешение 1366×768 (16:9) Тип Жк-матрицы Tft Tn Подсветка Wled Экран Шаг точки по горизонтали 0.3 мм Шаг точки по вертикали 0.3 мм Яркость 200 кд/м2 Динамическая контрастность 100000000:1 Время от…

Бренд: Acer / Цена: 4860 ₽

shopelix.ru