- Необходим материал
- Електрическа схема
- 128 * 64 графичен LCD
- Преобразуване на изображение в шестнадесетичен код:
- Код на Arduino и работно обяснение
Има много видове LCD, използвани в електронни проекти. Вече използвахме 16X2 LCD в много от нашите проекти и също използвахме TFT LCD с Arduino. Можете да намерите целия ни проект, свързан с LCD 16X2, като следвате тази връзка, включително взаимодействие с 8051, AVR, Arduino и много други.
Най- ST9720 Графичен LCD е напълно различен от обикновените LCD монитори. Обикновеният LCD може да отпечатва само прост текст или цифри с фиксиран размер. Но в графичните LCD имаме 128 * 64, което е равно на 8192 точки или 8192/8 = 1024 пиксела, така че освен характер, можем да покажем всяко графично изображение на този GLCD.
Вече свързваме GLCD с 8051, днес ще свържем графичен LCD с Arduino, за да показваме текст и изображения върху него.
Необходим материал
- Arduino UNO
- 128 * 64 графичен LCD ST9720
- Потенциометър-10k
- Свързващи проводници
- Макет
Електрическа схема
128 * 64 графичен LCD
Този графичен LCD има ниска консумация на енергия и също така е подходящ за преносимо устройство с батерия. Той има широк диапазон на работно напрежение 2.2v до 5.5v и поддържа както серийни, така и 8/4-битови паралелни комуникации и се предлага със ST7290 LCD контролер / драйвер IC. Режимът на комуникация на интерфейса може да се превключва между паралелен и сериен с помощта на PSB PIN 15. Този графичен LCD има функция за автоматично включване на нулирането и може лесно да се контролира от MCU като 8051, AVR, ARM, Arduino и Raspberry Pi.
Можете да преминете към листа с данни за подробна информация за графичен LCD ST7290 128 * 64
Конфигурация на ПИН
ПИН No. |
Име на ПИН |
Описание |
1 |
Gnd |
Наземен терминал |
2 |
Vcc |
Входно захранващо напрежение (2.7v до 5.5v) |
3 |
Vo |
LCD контраст |
4 |
RS |
Регистрация Изберете RS = 0: Регистър на инструкциите RS = 1: Регистър на данни |
5 |
R / W |
Контрол на четене / запис |
6 |
Е. |
Активиране |
7,8,9,10,11,12,13,14 |
DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7 |
Пинчета за данни (използвани в паралелен 8/4-битов комуникационен режим) |
15 |
PSB |
Избор на интерфейс: Ниско (0) за режим на серийна комуникация Висока (1) за 8/4-битов режим на паралелна шина. |
16. |
NC |
Няма връзка |
17 |
RST |
Нулиране на ПИН |
18. |
Vout |
Изход за удвояване на LCD напрежение. VOUT ≦ 7V. |
19. |
BLA |
Позитивно захранване с подсветка |
20. |
ЧЕРНО |
Подсветка Отрицателно захранване |
Приложения
- Промишлено устройство
- Вградени системи
- Сигурност
- Медицински
- Ръчно оборудване
Преобразуване на изображение в шестнадесетичен код:
За да покажем каквото и да е изображение на графичен LCD, се нуждаем от шестнадесетичен код на това изображение, така че ето няколко стъпки за конвертиране на изображението в шестнадесетичен код. Преди това трябва да се уверите, че размерът на изображението не трябва да надвишава 128 * 64.
Стъпка 1: Намалете размера на нормалното изображение до 128 * 64 или по-малко, което можете да направите, като използвате всеки софтуер за редактиране на изображения като MS paint.
Както е показано на снимката по-горе, ние задаваме ширината и височината на изображението на 128 * 64.
Стъпка 2: След това трябва да запазите изображението във формат „image_name .bmp “.
Изберете формата, показан на горното изображение, и запазете файла за по-нататъшен процес.
Стъпка 3: След като го запазите във формат.bmp, трябва да конвертирате изображението в шестнадесетичен код за печат. За това използвам софтуера на име GIMP 2, който преобразува Bmp файла в шестнадесетичен код.
Както е показано на изображението по-горе, ние отворихме файла с формат.bmp в софтуера GIMP 2.
Стъпка 4: След като изтеглите софтуера, отворете BMP файл с формат на изображението, което искате да отпечатате и след това да запишете като него в " .xbm " (X растерна графика) формат. След като го запазите, отворете този файл с помощта на Notepad и ще получите шестнадесетичния код на изображението.
Както е показано на снимката по-долу, изберете опцията Експортиране, за да запишете файла във формат xbm :
Изберете формата, показан на снимката по-долу, и експортирайте файла с изображение.
След експортирането на файла ще получите файла във формат.xbm. Отворете xbm файла с помощта на Notepad и ще получите HEX кода, както е показано на снимката по-долу.
Код на Arduino и работно обяснение
За да свържем графичния LCD с Arduino, първо трябва да дефинираме библиотеката, използвана за графичния LCD. Arduino не разполага с тази библиотека, трябва да я изтеглите и инсталирате от тази връзка. След това можете да включите библиотеката, както по-долу:
#include "U8glib.h"
Тук ' u8g (10) ' определя връзката на RS (регистър за избор) щифт на графичен LCD с 10-ия пин на Arduino UNO. RS щифт, използван като „избор на чип“ и „Избор на регистър“, когато се използва съответно в сериен и паралелен режим. И така, ние използваме сериен режим и RS щифт, настроен на High (1) за чип с активиран и Low (0) за чип деактивиран.
U8GLIB_ST7920_128X64_4X u8g (10);
Сега, за отпечатване на изображението, трябва да поставим Hex кода на изображението в кода по-долу. Можете да отпечатате всяко друго изображение, а само трябва да поставите шестнадесетичния код на изображението.
const uint8_t rook_bitmap U8G_PROGMEM = { Поставете тук шестнадесетичния код на изображението };
Проверете пълния код на Arduino в края на този член.
Функцията по-долу се използва за отпечатване на изображение, командата, използвана за отпечатване е „u8g.drawXBMP (x, y, ширина на изображението, височина на изображението)“ . Където X и Y е началната позиция на изображението на LCD и също така трябва да напишем размера на изображението, който не трябва да надвишава 128 * 64 и в заключителен аргумент сме извикали функция, в която сме поставили HEX кода на изображението.
невалидна снимка (void) {u8g.drawXBMP (0, 0, 128, 64, rook_bitmap); }
Направихме две функции, наречени „draw“ и „next“, при които кодът за отпечатване на съдържанието се записва с помощта на командата „u8g.drawStr (x, y,„ abcd “)“. Тук x и y са позицията в LCD, където съдържанието ще бъде отпечатано, а ' abcd ' е съдържанието, което ще се отпечата.
невалидно теглене (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (07, 35, "ЦИФРОВА ЦИФРОВА"); } void next (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (0, 15, "Взаимодействие"); u8g.drawStr (0, 35, "Графичен LCD"); u8g.drawStr (0, 55, "с Arduino"); }
Функцията clearLCD () е създадена за изчистване на LCD, като просто дава нулева стойност на функцията.
void clearLCD () {u8g.firstPage (); направете {} while (u8g.nextPage ()); }
Настройване на пиксел, цвят и интензивност с помощта на кода по-долу
настройка за невалидни (void) {if (u8g.getMode () == U8G_MODE_R3G3B2) {u8g.setColorIndex (255); // бяло} else if (u8g.getMode () == U8G_MODE_GRAY2BIT) {u8g.setColorIndex (3); // максимална интензивност} else if (u8g.getMode () == U8G_MODE_BW) {u8g.setColorIndex (1); // пиксел на} else if (u8g.getMode () == U8G_MODE_HICOLOR) {u8g.setHiColorByRGB (255,255,255); }}
В невалидни линия продължава да отпечатате текст и изображение, след като се има предвид забавянето. Първо, отпечатахме “Circuit Digest”, използвайки функцията за изтегляне и след 2sec. на закъснение изчистихме екрана, използвайки функцията clearLCD и след това отпечатахме „ Интерфейсен графичен LCD с помощта на Arduino “, използвайки следващата функция. След това отпечатахме изображението с помощта на функцията picture (), която ще остане на екрана за 3 секунди. Това ще продължи, докато захранването бъде включено.
цикъл void (void) {u8g.firstPage (); do {draw (); } докато (u8g.nextPage ()); забавяне (2000); clearLCD (); u8g.firstPage (); направете {next (); } докато (u8g.nextPage ()); забавяне (2000); clearLCD (); u8g.firstPage (); do {picture (); } докато (u8g.nextPage ()); забавяне (3000); clearLCD (); забавяне (50); }
След програмиране на Arduino с помощта на дадения код, свържете графичния LCD според схемата с Arduino и доставете Arduino с помощта на адаптер или USB. Вие ще получите съдържание и изображение, отпечатани на графичния LCD, както е показано във видеото, дадено по-долу.
Също така проверете взаимодействието на Nokia 5110 Graphical LCD с Arduino,