8 (800) 350-30-16

Символы на текстовом дисплее LCD1602

Дата: / Категория: Дисплеи / Автор: DOC_tr

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

Пример вы можете увидеть ниже.

 Каждая, так сказать, ячейка для символа состоит из 5х8 пикселей. Значит, в генераторе матрицы нужно выставить именно это значение. Выставив значение строка 

Для того, чтобы можно было создавать одномерный массив для добавления уникальных символов на LCD экраны сделайте матрицу 5x7 или 5x8

пропадет. Вместо нее появятся 2 текстовых окна с byte массивами.

Если сгенерировать массив на чистой матрице, то мы получим следующий массив

byte LcdMatrixArray[8] = {
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};

Как видите, после 0b в каждом элементе есть пять нулей. Именно они и отвечают за то, будет ли залит пиксель или нет.

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

 lcd.createChar(0, LcdMatrixArray);
lcd.write(0);

Первый аргумент в функции createChar это уникальный номер нашего символа, а второй - наш сгенерированный массив.

К сожалению из-за библиотеки LiquidCrystal мы ограничены только 8 символами (хотя возможно это ограничение не библиотеки, а экрана), и это значит что уникальный номер символа может быть только от 0 до 7.

num: which character to create (0 to 7)

Как видите, все не так уж и сложно.

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

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

byte buble[8] = {
0b01000,
0b00100,
0b00110,
0b01110,
0b10111,
0b10111,
0b10111,
0b01110
};
byte smile[8] = {
0b00000,
0b01010,
0b01010,
0b01010,
0b00000,
0b10001,
0b10001,
0b01110
};
byte arrow[8] = {
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b11111,
0b01110,
0b00100
};
byte ball[8] = {
0b00000,
0b01110,
0b11101,
0b11111,
0b11111,
0b01110,
0b00000,
0b00000
};
byte house[8] = {
0b00000,
0b00000,
0b00100,
0b01110,
0b11111,
0b01110,
0b01010,
0b01110
};

void setup() {
lcd.init();
lcd.backlight();
lcd.home();
lcd.createChar(0, smile);
lcd.createChar(1, arrow);
lcd.createChar(2, ball);
lcd.createChar(3, house);
lcd.createChar(4, buble);
lcd.begin(16, 2);
lcd.setCursor(5,0);
lcd.write(0);
lcd.write(1);
lcd.write(2);
lcd.write(3);
lcd.write(4);
lcd.setCursor(4,1);
lcd.print("ROBOM.ru");
}

void loop() {} 

Теги: #LCD1602, #LCD2004

Ваша оценка:

Рейтинг: 10.0 (Оценок: 2)

Комментарий:

Copyright © RobOM.ru 2016 г. Все права защищены