Перейти к содержанию

Графические модули 128 × 64 на KS0108

KS0108 — драйвер 64 столбцов монохромного ЖК-дисплея, а модуль 128 × 64 собран из двух таких микросхем и драйвера строк. Разбираем по даташиту Samsung, как устроена память по страницам, какими командами она заполняется и как работать с двумя половинами экрана по параллельной шине.

Обновлено Редакция GAW

KS0108B — микросхема Samsung, драйвер 64 столбцов (сегментов) графического ЖК-дисплея со своей памятью на 512 байт. Строки (общие выводы) переключает отдельный драйвер KS0107B. Модули 128 × 64 с параллельной шиной, которые продаются под названием 12864 с контроллером KS0108, собраны из двух KS0108B — для левой и правой половины экрана — и одного драйвера строк. Модули с таким же разрешением на ST7920 устроены иначе: у них свой набор команд, встроенные шрифты и последовательный интерфейс.

Питание

Логика драйвера питается от 5 В ± 10 %. Для ЖК-панели нужно напряжение от 8 до 17 В между VDD и VEE, то есть отрицательное относительно земли: его либо подают снаружи, либо вырабатывает преобразователь на плате модуля — это зависит от модуля. Сброс — низкий уровень на выводе RSTB: дисплей выключается, а строка начала отображения становится нулевой.

Шина и выбор кристалла

KS0108B подключается по 8-битной параллельной шине:

ВыводНазначение
DB0–DB7данные
RS0 — команда или чтение состояния, 1 — данные памяти
R/W0 — запись, 1 — чтение
Eстроб: запись защёлкивается по спаду E
CS1B, CS2B, CS3выбор кристалла: активен при CS1B = 0, CS2B = 0, CS3 = 1
RSTBсброс

У модуля 128 × 64 выводы выбора двух драйверов выведены как CS1 и CS2: один выбирает левую половину экрана, другой — правую. Команды и данные получает только выбранный драйвер, поэтому всё, что занимает обе половины, пишется в два приёма. Какой уровень на CS1 и CS2 модуля активен, зависит от его схемы, а у разных производителей бывает по-разному.

Основные временные параметры шины по даташиту:

ПараметрМинимум
Период строба E1000 нс
Длительность высокого и низкого уровня E450 нс
Установка адреса (RS, R/W, CS) до E140 нс
Установка данных до спада E200 нс

Память: страницы и столбцы

Память каждого драйвера — 64 × 64 бита, разделённые на восемь страниц по 8 строк. Байт данных — вертикальный столбик из 8 точек выбранной страницы. Положение задают два регистра:

  • X — номер страницы 0–7. Сам он не меняется: следующую страницу нужно выбрать командой.
  • Y — номер столбца 0–63. После каждой записи или чтения он увеличивается на единицу.

Вывод ADC драйвера задаёт, с какого края начинается нумерация столбцов: при ADC = 1 адрес Y = 0 соответствует первому сегменту, при ADC = 0 — последнему. На модуле он уже подключён.

Команды

КомандаКодЧто делает
Дисплей вкл./выкл.3Fh / 3Ehвключает или гасит изображение, память не меняется
Адрес столбца40h + Y (0–63)устанавливает счётчик Y
СтраницаB8h + X (0–7)устанавливает регистр X
Строка начала отображенияC0h + Z (0–63)какая строка памяти показывается вверху экрана — так делают вертикальную прокрутку
Чтение состоянияRS = 0, R/W = 1DB7 — занят, DB5 — дисплей выключен, DB4 — идёт сброс
Запись данныхRS = 1, R/W = 0байт в память по адресу X, Y; Y увеличивается
Чтение данныхRS = 1, R/W = 1байт из памяти — после фиктивного чтения

Пока установлен флаг занятости (DB7 = 1), драйвер не принимает команды и данные; его проверяют чтением состояния или выдерживают паузу. Чтение памяти идёт в два обращения: первое переписывает байт из памяти в выходной регистр, второе выдаёт его на шину. Чтение состояния фиктивного обращения не требует.

Заполнение экрана

Чтобы записать изображение 128 × 64, для каждой половины экрана выбирают её драйвер и для каждой из восьми страниц:

  1. команда B8h + страница;
  2. команда 40h — столбец 0;
  3. 64 байта данных подряд.

Полный экран — 2 · 8 · 64 = 1024 байта. Обе половины включают командой 3Fh, отправленной каждому драйверу, и сбрасывают прокрутку командой C0h.

Частые вопросы

Почему у модуля на KS0108 два вывода CS?

Один KS0108 управляет только 64 столбцами, поэтому в модуле 128 × 64 стоят два таких драйвера: один отвечает за левую половину экрана, другой — за правую. Выводы выбора CS1 и CS2 модуля включают нужную микросхему, и команды и данные получает только она. Чтобы нарисовать что-то во всю ширину, левую половину записывают при одном выбранном кристалле, правую — при другом.

Как адресуется память KS0108?

Память каждого драйвера — 512 байт: восемь страниц (X = 0–7) по 64 столбца (Y = 0–63). Байт — это вертикальный столбик из 8 точек страницы. Команда B8h + X выбирает страницу, команда 40h + Y — столбец; после записи каждого байта столбец увеличивается сам, а страница не меняется.

Какое напряжение нужно для контраста KS0108?

Сама логика драйвера питается от 5 В ± 10 %, а для ЖК-панели нужно 8–17 В между VDD и VEE, то есть отрицательное напряжение относительно земли. Многие модули вырабатывают его сами и выводят на контакт VEE (VOUT), а контраст задают переменным резистором между VEE и питанием, но это зависит от модуля — смотрите его документацию.

Можно ли подключить модуль на KS0108 к Arduino Uno?

Да, но выводов нужно много: 8 линий данных, RS, R/W, E, два выбора кристалла и сброс — 14 выводов. Минимальный период строба E по даташиту — 1 мкс, поэтому быстрый микроконтроллер должен выдерживать паузы; запись полного экрана занимает 1024 байта и несколько команд выбора страниц.

Источники

  1. Samsung. KS0108B 64CH Segment Driver for Dot Matrix LCD (копия на сайте Electronic Assembly, lcd-module.de) — введение и возможности: 64 выхода, ОЗУ 512 байт, скважность 1/32–1/64, питание 5 В ± 10 %, напряжение ЖК 8–17 В, работа с драйвером строк KS0107B; выводы CS1B, CS2B, CS3, RS, R/W, E, RSTB, ADC; регистры, чтение с фиктивным циклом, сброс, флаг занятости, страницы X и счётчик Y, строка начала отображения; таблица команд; временные параметры шины
  2. Hitachi. HD44780U (LCD-II) Dot Matrix Liquid Crystal Display Controller/Driver, ADE-207-272(Z), 1999 — для сравнения: у символьного контроллера HD44780 те же линии шины RS, R/W и E и строб по спаду E

Нашли ошибку?