ОТОБРАЖЕНИЕ СВОИХ СИМВОЛОВ И ПРОСТЫХ КАРТИНОК НА LCD 1602/LCD2004. ЧАСТЬ I.
Здравствуй, дорогой читатель! Сегодняшняя тема – отображение своих символов и простых картинок на символьном дисплее. Данная статья будет полезна, если вы не можете найти нужный символ в стандартном каталоге, доступном на дисплее, либо хотите отобразить простую графику.
В первой части будет рассмотрено простое отображение собственных символов.
СБОРКА СХЕМЫ
Про то, как подключить дисплей LCD1602/LCD2004 к Arduino было сказано уже много раз, в напоминание мы разместим небольшую схему. Если у вас нет потенциометра, то вы можете его исключить из схемы. В остальном – просто соедините требуемые контакты проводами.
СОЗДАНИЕ СИМВОЛОВ
Следующая задача, которая перед нами стоит – это создание собственного набора символов. Как вы могли заметить – символы на дисплее всё равно состоят из пикселей. И есть способ сделать так, чтобы можно было выводить свои наборы пикселей, вместо предустановленных.
Изображение, выводимое в каждой ячейке дисплея, кодируется как 7 (а в некоторых случаях 8) байтов. В каждом из байтов значение имеют только младшие 5 бит. Как вы уже смогли понять, каждый элемент массива – это строка, а каждый бит в нём – это отдельный пиксель.
А теперь порисуем! К счастью, есть сайт, где вы можете получить битовое представление требуемого изображения. (http://www.quinapalus.com/hd44780udg.html)
Просто щёлкая на изображение вы можете сформировать требуемый пиксель, к примеру:
Что позволит нам вывести вот такую жирненькую мордочку кошки:
Запомним эти данные и приступим к программированию.
ПРОГРАММИРОВАНИЕ
Дисплей 1602 позволят одновременно отображать не более 8 собственных символов (встроенных сколько-угодно).
Для того, чтобы создать символ, необходимо использовать команду createChar(num, data), где
- num – номер собственного символа (от 0 до 7 включительно)
- data – тот самый массив из 7(8) байтов.
Для того чтобы определить каждый символ достаточно записать.
<pre class="brush: cpp">Byte l[7] = {0, 2, 5, 24, 24, 0, 0};
Byte m[7] = {0, 0, 0, 14, 14, 0, 0};
Byte r[7] = {0, 8, 20, 3, 3, 0, 0};</pre>
А после инициализации дисплея следует написать:
lcd.createChar(0, l);
lcd.createChar(1, m);
lcd.createChar(2, r);
И, собственно, вывести символы командой:
lcd.write(byte(0));
lcd.write(byte(1));
lcd.write(byte(2));
Выражение byte(x) – преобразует число x к типу byte.
И в конце рассмотрим код для отображения символа Arduino на LCD1602 с размером символов (5x8).
// Подключаем библиотеку для работы с дисплеем
#include <LiquidCrystal.h
// Задаём пины, к которым подключен дисплей (по рисунку в начале статьи)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Задаём наши символы. Здесь префикс «B» говорит о том, что далее записано
// число в двоичном коде, т.е. B00011 = 5
byte a3[8]= { B00011,
B00111,
B01100,
B11000,
B10000,
B00000,
B00000
};
byte a2[8]= {B00000,
B00000,
B00000,
B00000,
B10001,
B11111,
B01110
};
byte a1[8]={B11000,
B01100,
B00110,
B00011,
B00001,
B00000,
B00000
};
byte a4[8]={ B00000,
B00000,
B00000,
B00001,
B00011,
B00110,
B01100,
B11000
};
byte a5[8]={ B00000,
B01110,
B11111,
B10001,
B00000,
B00000,
B00000,
B01110,
B00000,
};
byte a6[8]={ B00000,
B00000,
B00000,
B10000,
B11000,
B01100,
B00110,
B00011
};
byte a7[8]={ B00000,
B01110,
B11111,
B10001,
B00000,
B00000,
B00000,
B00000,
};
byte a8[8]={B00100,
B01110,
B00100,
B00000,
B10001,
B11111,
B01110
};
// Процедура инициализации
void setup()
{
lcd.begin(16, 2); // Запуск дисплея.
lcd.print("Arduino&