Обзор lcd-дисплея 1602a (lcd1602a)

Объяснение работы программы

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

Сначала мы сообщаем микроконтроллеру ATmega32 какие порты ЖК дисплея мы собираемся использовать для передачи данных и команд управления. Затем мы сообщаем микроконтроллеру когда мы будем посылать данные ЖК дисплею устанавливая соответствующие значения контактов RS и E дисплея.

Короткое объяснение принципов работы программы:

  1. На контакт E подается высокое напряжение (сообщаем ЖК дисплею что он будет принимать данные), а на контакт RS подается низкое напряжение (сообщаем ЖК дисплею о том, что будет передаваться команда).
  2. Передаем значение 0x01 на порт данных – команда очистки экрана.
  3. На контакт E подается высокое напряжение (сообщаем ЖК дисплею что он будет принимать данные), на контакт RS также подается высокое напряжение (сообщаем ЖК дисплею о том, что будут передаваться данные).
  4. Передаем строку символов – по одному символу, один за другим.
  5. На контакт E подается низкое напряжение – сообщаем ЖК дисплею о том, что мы закончили передачу данных.
  6. После этой последней команды ЖК дисплей заканчивает процессы связи (передачи/приема данных), обрабатывает полученные данные и высвечивает полученную строку символов на экране.

В представленном сценарии работы программы мы передаем поочередно символы на ЖК дисплей – один за другим. Символы передаются на ЖК дсиплей в ASCII коде (American standard Code for Information Interchange — Американский стандартный код обмена информацией).

На следующем рисунке представлена таблица ASCII кодов. К примеру, чтобы ЖК дисплей отобразил символ “@” мы должны передать ему в шестнадцатеричном коде код “64”. Если мы передадим на ЖК дисплей значение ‘0x62’, то он отобразит на экране символ ‘>’. Таким образом, передавая необходимые ASCII коды на ЖК дисплей, мы заставим отображать его те символы, которые нам нужны.

Ниже представлен код программы на языке С с необходимыми пояснениями.

C++

// код программы для взаимодействия жидкокристаллического дисплея с микроконтроллером ATmega32
#include <avr/io.h>
#define F_CPU 1000000UL
#include <util/delay.h>
#define RS 6
#define E 5
void send_a_command (unsigned char command);
void send_a_character(unsigned char character);
int main(void)
{
DDRA = 0xFF;
DDRD = 0xFF;
_delay_ms(50);
send_a_command(0x01);// команда очистить экран
send_a_command(0x38);// устанавливаем режим 16*2 в ЖК дисплее
send_a_command(0x0E);// включить экран и курсор

send_a_character (0x44); // ASCII код для символа ‘D’
send_a_character (0x49); // ASCII код для символа ‘I’
send_a_character (0x4C); // ASCII код для символа ‘L’
send_a_character (0x49); // ASCII код для символа ‘I’
send_a_character (0x50); // ASCII код для символа ‘P’

}
void send_a_command (unsigned char command)
{
PORTA=command;
PORTD&= ~(1<<RS);
PORTD|= (1<<E);
_delay_ms(50);
PORTD&= ~(1<<E);
PORTA =0;
}
void send_a_character (unsigned char character)
{
PORTA=character;
PORTD|= (1<<RS);
PORTD|= (1<<E);
_delay_ms(50);
PORTD&= ~(1<<E);
PORTA =0;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

// код программы для взаимодействия жидкокристаллического дисплея с микроконтроллером ATmega32
#include <avr/io.h>
#define F_CPU 1000000UL
#include <util/delay.h>
#define RS 6
#define E  5

voidsend_a_command(unsignedcharcommand);

voidsend_a_character(unsignedcharcharacter);

intmain(void)

{

DDRA=0xFF;

DDRD=0xFF;

_delay_ms(50);

send_a_command(0x01);// команда очистить экран

send_a_command(0x38);// устанавливаем режим 16*2 в ЖК дисплее

send_a_command(0x0E);// включить экран и курсор

send_a_character(0x44);// ASCII код для символа ‘D’

send_a_character(0x49);// ASCII код для символа ‘I’

send_a_character(0x4C);// ASCII код для символа ‘L’

send_a_character(0x49);// ASCII код для символа ‘I’

send_a_character(0x50);// ASCII код для символа ‘P’

}

voidsend_a_command(unsignedcharcommand)

{

PORTA=command;

PORTD&=~(1<<RS);

PORTD|=(1<<E);

_delay_ms(50);

PORTD&=~(1<<E);

PORTA=;

}

voidsend_a_character(unsignedcharcharacter)

{

PORTA=character;

PORTD|=(1<<RS);

PORTD|=(1<<E);

_delay_ms(50);

PORTD&=~(1<<E);

PORTA=;

}

Step 3: Python-based HD44780 Emulation

Make sure to download the Python source files linked in the section of this guide.

Real-time data acquisition and analysis can be divided into steps. The multi-thread solution is a good choice. The demo has four threads:

  1. The GUI thread or main thread initializes equipment and is responsible for the GUI operation.
  2. The acquisition thread collects real-time data form Digital Discovery and puts data into a queue.
  3. The raw data processing thread reads data from the queue. Latching only at rising edges of EN and putting data into another queue.
  4. The data processing thread reads latched data from the second queue and simulates the behavior of the HD44780 display.

The data processing algorithm has some limitations:

  • The full finished state machine used by the original controller is not implemented. A simplified initialization procedure is used. The command mode to data mode transition, which is a rising edge on the RS line is used to determine when the LCD is initialized. This is used to set 4-bit mode as well as other parameter’s settings.
  • Some commands are implemented such as Clear Screen and Set DDRAM address which sets the cursor location.
  • The script is not optimized for performance.

All details about how the emulation functions are presented as comments in the script.

Распиновка 16х02 символов

Перед тем, приступить к сборке и написанию кода, давайте сначала взглянем на распиновку LCD 1602.

  • GND — должен быть подключен к земле Arduino.
  • VCC — это вывод питание для ЖК-дисплея, к которому мы подключаем 5-вольтовый контакт Arduino.
  • Vo (LCD Contrast) — вывод контролирует контрастность и яркость ЖК-дисплея. Используя простой делитель напряжения с потенциометром, мы можем точно отрегулировать контрастность.
  • RS (Register Select) — этот вывод позволяет Arduino сообщать ЖК-дисплею, отправляются команды или данные. В основном этот вывод используется для дифференциации команд от данных. Например, когда на выводе RS установлено значение LOW, мы отправляем команды на ЖК-дисплей (например, установить курсор в определенном месте, очистить дисплей, сдвинуть дисплей вправо и т. д.). Когда вывод RS установлено значение  HIGH, мы отправляем данные/символы на ЖК-дисплей.
  • R/W (Read/Write) — вывод предназначен для контроля того, что необходимо сделать — считать данные или передать их на ЖК-дисплй. Поскольку мы просто используем этот ЖК-дисплей в качестве устройства вывода, то достаточно на этот вывод подать HIGH уровень, тем самым мы перейдем в режим записи.
  • EN (Enable) — вывод используется для включения дисплея. Это означает, что когда на этом выводе  установлено значение LOW ЖК-дисплей не реагирует на то, что происходит с R/W, RS и линиями шины данных. Когда же на этом выводе HIGH ЖК-дисплей обрабатывает входящие данные.
  • D0-D7 (Data Bus) — это выводы, по которым передаются 8-битные данные на дисплей. Например, если мы хотим отобразить символ «A» в верхнем регистре, мы отправляем на LCD дисплей 0100 0001 (в соответствии с таблицей ASCII) .
  • AK (Anode & Cathode) используются для управления подсветкой LCD дисплея.

Генерация пользовательских символов для LCD

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

Как мы уже обсуждали ранее в этом руководстве, символ на дисплее формируется в матрице 5×8 пикселей, поэтому вам нужно определить свой пользовательский символ в этой матрице. Для определения символа необходимо использовать функцию createChar() библиотеки LiquidCrystal.

Для использования  createChar()  сначала необходимо назначить массив из 8 байт. Каждый байт (учитывается только 5 бит) в массиве определяет одну строку символа в матрице 5×8. В то время как нули и единицы в байте указывают, какие пиксели в строке должны быть включены, а какие-выключены.

Генератор символов LCD

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

Вы видите синюю сетку ниже? Вы можете нажать на любой из 5 × 8 пикселей, чтобы установить/очистить этот конкретный пиксель. И когда вы нажимаете на пиксели, код для символа генерируется рядом с сеткой. Этот код может быть непосредственно использован в вашем скетче Arduino.

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

Следующий скриншот демонстрирует, как вы можете использовать эти пользовательские символы на дисплее.

//  подключаем библиотеку LiquidCrystal:
#include <LiquidCrystal.h>

// Создаем LCD объект. Выводы: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// создадим несколько пользовательских символов
byte Heart = {
0b00000,
0b01010,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000,
0b00000
};

byte Bell = {
0b00100,
0b01110,
0b01110,
0b01110,
0b11111,
0b00000,
0b00100,
0b00000
};


byte Alien = {
0b11111,
0b10101,
0b11111,
0b11111,
0b01110,
0b01010,
0b11011,
0b00000
};

byte Check = {
0b00000,
0b00001,
0b00011,
0b10110,
0b11100,
0b01000,
0b00000,
0b00000
};

byte Speaker = {
0b00001,
0b00011,
0b01111,
0b01111,
0b01111,
0b00011,
0b00001,
0b00000
};


byte Sound = {
0b00001,
0b00011,
0b00101,
0b01001,
0b01001,
0b01011,
0b11011,
0b11000
};


byte Skull = {
0b00000,
0b01110,
0b10101,
0b11011,
0b01110,
0b01110,
0b00000,
0b00000
};

byte Lock = {
0b01110,
0b10001,
0b10001,
0b11111,
0b11011,
0b11011,
0b11111,
0b00000
};

void setup() 
{
  // инициализируем LCD и устанавливаем количество столбцов и строк: 
  lcd.begin(16, 2);

  // создание нового символа
  lcd.createChar(0, Heart);
  // создание нового символа
  lcd.createChar(1, Bell);
  // создание нового символа
  lcd.createChar(2, Alien);
  // создание нового символа
  lcd.createChar(3, Check);
  // создание нового символа
  lcd.createChar(4, Speaker);
  // создание нового символа
  lcd.createChar(5, Sound);
  // создание нового символа
  lcd.createChar(6, Skull);
  // создание нового символа
  lcd.createChar(7, Lock);

  // Очищаем LCD дисплей 
  lcd.clear();

  // Печатаем сообщение на LCD.
  lcd.print("Custom Character");
}

// Печатаем все пользовательские символы
void loop() 
{ 
  lcd.setCursor(0, 1);
  lcd.write(byte(0));

  lcd.setCursor(2, 1);
  lcd.write(byte(1));

  lcd.setCursor(4, 1);
  lcd.write(byte(2));

  lcd.setCursor(6, 1);
  lcd.write(byte(3));

  lcd.setCursor(8, 1);
  lcd.write(byte(4));

  lcd.setCursor(10, 1);
  lcd.write(byte(5));

  lcd.setCursor(12, 1);
  lcd.write(byte(6));

  lcd.setCursor(14, 1);
  lcd.write(byte(7));
}

После включения библиотеки нам нужно инициализировать пользовательский массив из восьми байтов.

byte Heart = {
0b00000,
0b01010,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000,
0b00000
};

В настройках мы должны создать пользовательский символ, используя функцию createChar(). Эта функция принимает два параметра. Первый — это число от 0 до 7, чтобы зарезервировать один из 8 поддерживаемых пользовательских символов. Второй параметр — это имя массива байтов.

// создание нового символа
lcd.createChar(0, Heart);

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

// byte(0) покажет символ Heart (сердце).
lcd.write(byte(0));

Лабораторный блок питания 30 В / 10 А

Подробнее

Step 4: Running the Example

To test the example, run the Python script. If the Raw buffer or Data buffer are filling very quickly, the sample rate should be reduced. Be aware that a too-low sample rate may not “catch” all EN pulses which can be as short as 450 ns according to specification.

# sample rate = system frequency / divider, 100 MHz / 400 = 0.25 MHz
dwf.FDwfDigitalInDividerSet(hdwf, c_int(400))

Establish a serial connection with the Arduino. You may need to reset the Arduino if the connection is already established.

The “Int” indicator shows if the initialization was detected by the script. A value of “2” means that initialization was completed successfully and values of “0” or “1” indicate an incomplete process. If the display is already initialized when starting-up, the script user can set the SI or reset the CI initialization flag. The “Nib” indicator represents if an even number of nibbles have been received. Even is indicated with a “0” and odd with a “1”. If errors are generated, the user can also use the CN and SN buttons to manually adjust that flag. After sending some data to the Arduino through the serial port, the data is displayed on the LCD and in the user interface created by the Python script.

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

В качестве примера подключим дисплей к управляющей плате Iskra JS.

Для коммуникации понадобится Breadboard Half и соединительные провода «папа-папа».

Вывод текста

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

hello-amperka.js
// Задаём имя пинов дисплея
var PIN_RS = P6;
var PIN_EN = P7;
var PIN_DB4 = P8;
var PIN_DB5 = P9;
var PIN_DB6 = P10;
var PIN_DB7 = P11;
 
// Создаём объект для работы с текстовым дисплеем
// HD44780 — контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев
var lcd = require("HD44780").connect(PIN_RS, PIN_EN, PIN_DB4, PIN_DB5, PIN_DB6, PIN_DB7);
 
// Устанавливаем курсор в колонку 0 и строку 0
lcd.setCursor(, );
// Печатаем первую строку
lcd.print("Hello, world!");
// Устанавливаем курсор в колонку 0 и строку 1
lcd.setCursor(, 1);
// Печатаем вторую строку
lcd.print("Do It Yourself");

Кирилица

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

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

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

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

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

lcd.print("\xB1ndex");

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

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

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

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

hello-amperka-rus.js
// Задаём имя пинов дисплея
var PIN_RS = P6;
var PIN_EN = P7;
var PIN_DB4 = P8;
var PIN_DB5 = P9;
var PIN_DB6 = P10;
var PIN_DB7 = P11;
 
// Создаём объект для работы с текстовым дисплеем
// HD44780 — контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев
var lcd = require("HD44780").connect(PIN_RS, PIN_EN, PIN_DB4, PIN_DB5, PIN_DB6, PIN_DB7);
 
// Устанавливаем курсор в колонку 5 и строку 0
lcd.setCursor(5, );
// Печатаем первую строку
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.js
// Задаём имя пинов дисплея
var PIN_RS = P6;
var PIN_EN = P7;
var PIN_DB4 = P8;
var PIN_DB5 = P9;
var PIN_DB6 = P10;
var PIN_DB7 = P11;
 
// Создаём объект для работы с текстовым дисплеем
// HD44780 — контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев
var lcd = require("HD44780").connect(PIN_RS, PIN_EN, PIN_DB4, PIN_DB5, PIN_DB6, PIN_DB7);
 
// Создаём переменную состояния
var state = false;
// Устанавливаем курсор в колонку 5 и строку 0
lcd.setCursor(5, );
// Печатаем первую строку
lcd.print("\x9b\x9c\x9d\x9e\x9f");
 
setInterval(function() {
  // Каждую секунду меняем переменную состояния
  state = !state;
  // Вызываем функцию смены адреса страницы
  lcdChangePage();
}, 1000);
 
function lcdChangePage () {
  if (state) {
    // Устанавливаем нулевую станицу знакогенератора (стоит по умолчанию) 
    lcd.write(0b101000, 1);
  } else {
    // устанавливаем первую станицу знакогенератора
    lcd.write(0b101010, 1);
  }
}


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

Обзор LCD 1602

Эти ЖК-дисплеи идеально подходят для отображения только текста/символов, отсюда у них есть и другое название — «символьные ЖК-дисплеи». Дисплей имеет светодиодную подсветку и может отображать 32 символа в кодировке ASCII в двух рядах по 16 символов в каждом ряду.

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

Хотя такие дисплеи отображают только текст, они бывают разных размеров и цветов: например, 16×1, 16×4, 20×4, с белым текстом на синем фоне, с черным текстом на зеленом и другие.

Хорошая новость заключается в том, что все эти дисплеи взаимозаменяемые — если вы строите свой проект с одним из них, вы можете просто отключить его и использовать другой (размер/цвет) ЖК-дисплей на свой выбор. Возможно, придется откорректировать код  в зависимости от количества строк, но по крайней мере проводка останется той же!

Step 2: Communication

Data sent to the HD44780-compatible display can be seen using WaveForms software and the Logic Analyzer instrument. In the Logic Analyzer, add a bus with clock on rising edge of the EN signal. Next, add the RS signal as a separate signal and set trigger mode to normal with triggering on a rising edge of the EN signal. After this is set up, run the Logic Analyzer and send one letter through the serial port. The letter will appear on the LCD and in the Logic Analyzer. At this point you will be able to see the four 4-bit nibbles that were transmitted, each on the rising edge of the EN line. Nibbles are “grouped” to form an 8-bit number. The state of the RS line determines whether this 8-bit number is command RS low or data RS high. The command 0x01 (“clear display”) is sent followed by data 0x50 which is the letter “P” encoded in ASCII.

Подключение 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 и загрузите в контроллер.

/*
Тестирование производилось на Arduino IDE 1.6.11
Дата тестирования 20.09.2016г.
*/

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

void setup()
{
lcd.begin(16, 2); // Инициализирует LCD 16×2
}

void loop()
{
lcd.setCursor(0,0); // Установить курсор на первыю строку
lcd.print(«Hello, world»); // Вывести текст
lcd.setCursor(0,1); // Установить курсор на вторую строку
lcd.print(«www.robotchip.ru»); // Вывести текст
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

/*
Тестирование производилось на Arduino IDE 1.6.11
Дата тестирования 20.09.2016г.
*/
 
#include <LiquidCrystal.h>
 

LiquidCrystal lcd(7,6,5,4,3,2);

voidsetup()

{

lcd.begin(16,2);// Инициализирует LCD 16×2

}
 

voidloop()

{

lcd.setCursor(,);// Установить курсор на первыю строку

lcd.print(«Hello, world»);// Вывести текст

lcd.setCursor(,1);// Установить курсор на вторую строку

lcd.print(«www.robotchip.ru»);// Вывести текст

}

Немного о программе.
Для облегчения связи между Arduino и LCD дисплеем, используется встроенный в библиотеке в IDE Arduino «LiquidCrystal.h« — которая написана для LCD дисплеев, использующих HD44780 (Hitachi) чипсет (или совместимые микросхемы). Эта библиотека может обрабатывать как 4 — битном режиме и 8 — битном режиме подключение LCD.

Ссылки  Документация к LCD1602A

Купить на Aliexpress  Контроллер Arduino UNO R3 на CH340G  Контроллер Arduino UNO R3 на Atmega16U2  Провода DuPont, 2,54 мм, 20 см  LCD-дисплей 1602A

Купить в Самаре и области  Контроллер Arduino UNO R3 на CH340G  Контроллер Arduino UNO R3 на Atmega16U2  Провода DuPont, 2,54 мм, 20 см  LCD-дисплей 1602A

Step 1: Hardware Setup

1. Make sure to download the Arduino sketch linked in the section of this guide.

2. Open the sketch and upload to the Arduino UNO. The sketch will display some short content received over the serial port on the LCD.
Then the LCD should be connected to the Arduino module. All the connections are standard for 4-bit operation without reading the busy flag and are described in example Arduino sketch. The circuit is as follows:

LCD RS pin to digital pin 8
LCD Enable pin to digital pin 9
LCD D4 pin to digital pin 4
LCD D5 pin to digital pin 5
LCD D6 pin to digital pin 6
LCD D7 pin to digital pin 7
Backlight control to digital pin 10
LCD R/W pin to ground
10K resistor to +5V and ground
Wiper to LCD VO pin (LCD pin 3)

3. If using a different LCD module then the Arduino code should be adjusted as required before uploading and connecting. Initialize the library by associating any needed LCD interface pin with the Arduino pin number it is connected to.

const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7, bl = 10;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

4. After resetting the device an “LCD TEST” message should appear on the display. If needed, a contrast should be adjusted. The following is how to connect the Digital Discovery to the HD44780 LCD:

Note: Ground should be connected before any other connections are made.

Digital Discovery GND to the LCD GND
Digital Discovery DIN0 to the LCD EN
Digital Discovery DIN1 to the LCD RS
Digital Discovery DIN2 to the LCD D4
Digital Discovery DIN3 to the LCD D5
Digital Discovery DIN4 to the LCD D6
Digital Discovery DIN5 to the LCD D7

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Семинар по технике
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: