Всем привет!
Настоящая инструкция является вольным переводом известной статьи, расположенной на портале Arduino.cc.
Подключение графического жк экрана к Arduino, является довольно простой задачей, что мы и докажем. Возьмём графический экран, например WinStar WG12864B-TML-T, и загрузим специальную библиотеку по работе с ЖК экранами GLCD v3 в Arduino IDE. Для установки библиотеки, её нужно просто скопировать в папку librares, которая находится в папке Arduino IDE.
Теперь приступим к подключению экранчика. Так как существует огромное множество различных экранчиков, то и подключение у них может быть разное. Распределим все экраны на четыре варианта:
Вариант A:
HDM64GS12L-4
Crystalfontz CFAG12864B
Sparkfun LCD-00710CM
NKC Electronics LCD-0022
WinStar WG12864B-TML-T
Вариант B:
HDM64GS12L-5
Lumex LCM-S12864GSF
Futurlec BLUE128X64LCD
AZ Displays AGM1264F
Displaytech 64128A BC
Adafruit GLCD
DataVision DG12864-88
Topway LM12864LDW
Satistronics RT12864J-1
Digitron SG12864J4
Неизвестный производитель QY-12864F
Неизвестный производитель TM12864L-2
Неизвестный производитель 12864J-1
Huahong Technology Ltd LMG12864 (LMG-SSC12A64DRY(-H) вариант, жёлто-зелёная подсветка, чёрное на зелёном)
Sure Electronics DE-LM105
Wide.hk «LCD Shield Pro + GLCD 128×64 LCD»
Вариант C:
Shenzhen Jinghua Displays Co Ltd. JM12864
Вариант D:
Дисплеи с разрешением 192 x 64:
Производитель/Модель/Чип/Ток
Wintek- Cascades/WD-G1906G/KS0108B/-7.5 to -10v
Wintek — GEN/WD-G1906G/KS0108B/-7.5 to -10v
Wintek/WD-G1906G/S6B0108A/-9.5 to -12v
TECDIS/Y19061/HD61202/-7.5 to -10v
Varitronix/MGLS19264/HD61202/-8.5 to -10.5v
Подсветке требуется 4.7v, рекомендуется использовать резистор на 10-12 Ом от +5v.
В ks0108_Manual_Config.h требуется изменить разрешение как показано ниже.
1. define DISPLAY_WIDTH 192
2. define DISPLAY_HEIGHT 64
и
1. elif glcd_CHIP_COUNT == 3
2. define glcd_CHIP0 glcdCSEL1,LOW, glcdCSEL2,LOW
3. define glcd_CHIP1 glcdCSEL1,LOW, glcdCSEL2,HIGH
4. define glcd_CHIP2 glcdCSEL1,HIGH, glcdCSEL2,LOW
В зависимости от используемого экранчика, осуществляем подключение к Arduino, согласно таблице:
Если вы используете экранчик WinStar WG12864B-TML-T, то поменяйте местами подключения 12 и 13 порта, получится что 12 пин подключается к alog1, а 13 пин подключается к alog0. Для подключения подсветки, используйте резистор на ~250 Ом. Пример подключения экранчика к плате Arduino:
Теперь настало время написать тестовый код.
Код программы:
#include <ks0108.h> // заголовки #include <Arial14.h> // шрифт Arial. #include "SystemFont5x7.h" // системный шрифт #include "ArduinoIcon.h" // картинка Arduino unsigned long startMillis; unsigned int iter = 0; void setup(){ GLCD.Init(NON_INVERTED); // инициализируем библиотеку GLCD.ClearScreen(); GLCD.DrawBitmap(ArduinoIcon, 32,0, BLACK); // рисуем картинку Arduino delay(3000); GLCD.ClearScreen(); GLCD.SelectFont(System5x7); // выбираем шрифт } void loop(){ // главный бесконечный цикл startMillis = millis(); while( millis() - startMillis < 1000){ // цикл для одной секунды GLCD.DrawRect(0, 0, 64, 61, BLACK); // рисуем квадрат в левой части экрана GLCD.DrawRoundRect(68, 0, 58, 61, 5, BLACK); // рисуем квадрат с округлыми краями в правой части экрана for(int i=0; i < 62; i += 4) // рисуем графику GLCD.DrawLine(1,1,63,i, BLACK); GLCD.DrawCircle(32,31,30,BLACK); GLCD.FillRect(92,40,16,16, WHITE); GLCD.CursorTo(5,5); // перемещаем курсор для вывода текста GLCD.PrintNumber(++iter); // печатаем текущую итерацию курсора } // вывод на экран чило кадров в секунду GLCD.ClearScreen(); // чистим экран GLCD.CursorTo(13,2); // перемещаем курсор GLCD.Puts("FPS= "); // печатаем текст GLCD.PrintNumber(iter); // печатаем число }
Если вы всё подключили правильно, то после загрузки программы на устройство на экране должна появиться анимация и подсчёт кадров.
Прежде чем заливать программу в Arduino, отсоедините экранчик от платы, чтобы прошивка прошла без сбоев (у меня процесс не пошёл, пока не отсоединил экранчик).
Для работы с экранчиком предназначен ряд процедур.
GLCD.Init(invert) — инициализация структур для нормального или инверсного режима.
GLCD.GotoXY(x,y) — перемещает курсор в указанную позицию. 0,0 — позиция крайнего верхнего левого пикселя.
GLCD.ClearScreen() - очистка экрана.
// Графические функции (цвет WHITE чистит пиксели, цвет BLACK заполняют пиксели)
GLCD.DrawCircle(x, y, radius, color) — рисование окружности с центром в позиции x,y.
GLCD.DrawLine(x1,y1,x2,y2,color) — рисование линии из точки x1,y1 в x2,y2.
GLCD.DrawVertLine(x, y, length, color) — рисование вертикальной линии
GLCD.DrawHoriLine(x, y, length, color) — рисование горизонтальной линии
GLCD.DrawRect(x, y, width, height, color) — рисование прямоугольника
GLCD.DrawRoundRect(x, y, width, height, radius, color) — рисование прямоугольника с закруглёнными краями
GLCD.FillRect(x, y, width, height, color) — рисование заполненного прямоугольника
GLCD.InvertRect(x, y, width, height) — инвертирование пикселей в области заданного прямоугольника
GLCD.SetInverted(invert) — установка режима рисования в инвертированном режиме
GLCD.SetDot(x, y, color) — рисование точки
GLCD.DrawBitmap(bitmap, x, y, color) — рисование картинки в указанном месте
// Функции по работе с текстом
GLCD.SelectFont(font, color ) - выбор шрифта, по умолчанию чёрного цвета
GLCD.PutChar(character) — печать символа в текущую позицию
GLCD.Puts(string) — печать строки в текущей позиции курсора
GLCD.Puts_P(string) — напечатать строку из программной памяти, в текущую позицию курсора
GLCD.PrintNumber(number) — печать цифры в текущую позицию курсора
GLCD.CursorTo(x, y) - перевод курсора в желаемую позицию
Вот и всё! Вместе с библиотекой поставляется набор интересных примеров, которые безусловно помогут вам в вашей работе!
Вместе с библиотекой идёт целый ряд интересных примеров, советую ознакомиться! 😉
Если немного поэкспериментировать, то можно сделать очень интересные вещи!
Если найдёте неточности, сообщайте!
0 комментариев на «“Подключение LCD экрана WG12864B (KS0108) к Arduino”»
а не подскажете что за музычка в ролике?
К сожалению не подскажу. Если интересно то подобного рода музыку можно услышать на каналеCyber Space .