Графические модули 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 | данные |
| RS | 0 — команда или чтение состояния, 1 — данные памяти |
| R/W | 0 — запись, 1 — чтение |
| E | строб: запись защёлкивается по спаду E |
| CS1B, CS2B, CS3 | выбор кристалла: активен при CS1B = 0, CS2B = 0, CS3 = 1 |
| RSTB | сброс |
У модуля 128 × 64 выводы выбора двух драйверов выведены как CS1 и CS2: один выбирает левую половину экрана, другой — правую. Команды и данные получает только выбранный драйвер, поэтому всё, что занимает обе половины, пишется в два приёма. Какой уровень на CS1 и CS2 модуля активен, зависит от его схемы, а у разных производителей бывает по-разному.
Основные временные параметры шины по даташиту:
| Параметр | Минимум |
|---|---|
| Период строба E | 1000 нс |
| Длительность высокого и низкого уровня E | 450 нс |
| Установка адреса (RS, R/W, CS) до E | 140 нс |
| Установка данных до спада E | 200 нс |
Память: страницы и столбцы
Память каждого драйвера — 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 = 1 | DB7 — занят, DB5 — дисплей выключен, DB4 — идёт сброс |
| Запись данных | RS = 1, R/W = 0 | байт в память по адресу X, Y; Y увеличивается |
| Чтение данных | RS = 1, R/W = 1 | байт из памяти — после фиктивного чтения |
Пока установлен флаг занятости (DB7 = 1), драйвер не принимает команды и данные; его проверяют чтением состояния или выдерживают паузу. Чтение памяти идёт в два обращения: первое переписывает байт из памяти в выходной регистр, второе выдаёт его на шину. Чтение состояния фиктивного обращения не требует.
Заполнение экрана
Чтобы записать изображение 128 × 64, для каждой половины экрана выбирают её драйвер и для каждой из восьми страниц:
- команда
B8h + страница; - команда
40h— столбец 0; - 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 байта и несколько команд выбора страниц.
Источники
- 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, строка начала отображения; таблица команд; временные параметры шины
- Hitachi. HD44780U (LCD-II) Dot Matrix Liquid Crystal Display Controller/Driver, ADE-207-272(Z), 1999 — для сравнения: у символьного контроллера HD44780 те же линии шины RS, R/W и E и строб по спаду E
Нашли ошибку?
Смотрите также
- ЖК-дисплеиHD44780, KS0108, ST7920, TFT и OLED: типы модулей и выбор
- ST7920 и модули 12864Питание, параллельный и последовательный интерфейс, команды, текст и графика
- HD44780 и LCD 1602Распиновка 1602, команды, инициализация, I²C, кириллица, CGRAM
- OLED на SSD1306Питание, I²C и SPI, адрес, память по страницам, команды, инициализация