ST7565: подключение и программирование графического ЖК-дисплея 128×64 с контроллером ST7565

Как подключить графический ЖК-дисплей ST7565 к микроконтроллеру. Каковы особенности интерфейса ST7565. Как инициализировать и программировать дисплей ST7565. Какие преимущества и недостатки у дисплеев на ST7565.

Содержание

Особенности и преимущества дисплеев на контроллере ST7565

Графические ЖК-дисплеи на базе контроллера ST7565 обладают рядом преимуществ по сравнению с другими типами дисплеев:

  • Простой последовательный интерфейс SPI, требующий всего 4-5 линий для подключения
  • Встроенный повышающий преобразователь напряжения для питания ЖК-панели
  • Программное управление контрастностью и ориентацией изображения
  • Поддержка высоких тактовых частот интерфейса
  • Широкий выбор цветов подсветки
  • Доступность дисплеев различных размеров (128×64, 132×32 и др.)

К недостаткам можно отнести:

  • Питание контроллера только от 3.3В (что уже не является проблемой для современных микроконтроллеров)
  • Необходимость буфера кадра в памяти микроконтроллера при работе по SPI

Аппаратное подключение дисплея ST7565

Для управления дисплеем ST7565 по интерфейсу SPI требуется подключить следующие линии:


  • /CS — выбор микросхемы
  • /RST — сброс
  • A0 — выбор данные/команда
  • SCLK — тактовый сигнал SPI
  • SID — линия данных SPI

Кроме того, необходимо подать питание 3.3В и подключить общий провод. Для работы подсветки требуется резистор на 100-270 Ом.

Особенности инициализации дисплея ST7565

Процедура инициализации дисплея ST7565 включает следующие шаги:

  1. Аппаратный сброс через линию /RST
  2. Настройка режима работы (1/7 или 1/9 мультиплексирование)
  3. Установка ориентации изображения
  4. Настройка встроенного повышающего преобразователя
  5. Включение питания ЖК-панели
  6. Установка начального уровня контрастности
  7. Сброс позиции вывода в левый верхний угол

Важно также очистить внутреннюю память дисплея, так как она энергонезависима и может содержать случайные данные после включения питания.

Организация памяти дисплея ST7565

Экран 128×64 пикселя организован в виде 8 страниц по 8 строк и 128 столбцов в каждой. Такая организация хорошо соответствует байтовой структуре данных:

  • 1 страница = 8 строк пикселей
  • 1 байт данных = 8 вертикальных пикселей
  • Для хранения всего кадра требуется 128 * 8 = 1024 байта

При отправке данных старший бит байта соответствует нижнему пикселю в 8-пиксельной вертикальной группе. Это нужно учитывать при формировании изображения.


Вывод графики на дисплей ST7565

Для вывода графики на дисплей ST7565 необходимо выполнить следующие шаги:

  1. Сформировать изображение в буфере кадра в памяти микроконтроллера
  2. Установить начальную позицию вывода командой
  3. Последовательно передать байты данных изображения
  4. При переходе на новую страницу отправить команду выбора страницы

Для вывода отдельных пикселей необходимо:

  1. Рассчитать адрес нужного байта в буфере кадра
  2. Определить номер бита в байте для заданной координаты
  3. Установить или сбросить бит с помощью логических операций
  4. Обновить измененный байт на дисплее

Программные библиотеки для работы с ST7565

Для упрощения работы с дисплеями ST7565 разработаны различные программные библиотеки. Они предоставляют удобные функции для:

  • Инициализации дисплея
  • Очистки экрана
  • Вывода отдельных пикселей
  • Рисования линий и фигур
  • Вывода текста различными шрифтами
  • Отображения растровых изображений

Популярные библиотеки:

  • u8g2 — универсальная библиотека для монохромных дисплеев
  • Adafruit ST7565 — библиотека от Adafruit
  • ST7565 — простая библиотека для Arduino

Преимущества использования дисплеев ST7565 в проектах

Графические ЖК-дисплеи на контроллере ST7565 обладают рядом преимуществ для применения в любительских и коммерческих проектах:


  • Низкая стоимость при хорошем качестве изображения
  • Малое энергопотребление
  • Хорошая читаемость при солнечном свете
  • Простота подключения и управления
  • Возможность выводить графику и текст
  • Наличие готовых программных библиотек

Это делает дисплеи ST7565 отличным выбором для портативных устройств, измерительных приборов, систем управления и других применений, где требуется компактный графический дисплей.

Типичные проблемы при работе с ST7565 и их решение

При работе с дисплеями ST7565 могут возникать некоторые проблемы:

  • Нечеткое или отсутствующее изображение — проверьте правильность инициализации и настройки контрастности
  • Искажение изображения — убедитесь в правильности тайминга SPI и отсутствии помех
  • Инверсия цветов — проверьте команду установки полярности изображения
  • Смещение изображения — настройте команды адресации страниц и столбцов
  • Артефакты при обновлении — используйте двойную буферизацию

Большинство проблем решается корректной инициализацией дисплея и правильной настройкой временных параметров интерфейса.



28 COG матрицы точек ST7565 дисплея 128X64 Pin Monochrome графический LCD SPI STN

28 COG матрицы точек ST7565 дисплея 128X64 Pin Monochrome графический LCD SPI STN

описание

Monochrome графический дисплей COG Pin SPI STN матрицы точек ST7565 экрана 128X64 LCD 28

 

Пассивный дисплей 0,96″ OLED экран графиков SSD1306 дюйма 128×64 белый передний

 

0,96″ ОПИСАНИЕ экрана дюйма OLED графическое

 

Модель SF-OS96-12864-03 модуль дисплея COG OLED 0,96 дюймов 128×64. Этот графический дисплей встроен с SSD1306 IC; он может связывать через 6800/8080 интерфейсов, последовательный интерфейс 4 проводов, интерфейс I2C.  напряжение тока электропитания для логики 2.8V (типичного значения), управляя обязанностью 1/64. Дисплей SF-OS96-12864-03 OLED основан на технологии COG обломок-на-стекла; поэтому он очень тонок, только 1,40 mm глубокий. Этот модуль облегченн, низкая мощность, и очень тонких которая соответствующая для стены/метра приборов, домашних применений, систем POS, систем облака/IoT, handheld аппаратур, умных приборов технологии, энергетических систем, систем коммуникаций, медицинских служб, модуля etc.

SF-OS96-12864-03 смогите эксплуатироваться на температурах от -40℃ к +80℃; своя температурная амплитуда хранения от -40℃ к +85℃.

 

  • Более быстрое время на ответ «на +25 μsec ℃ 10.»
  • Неограниченный угол наблюдения «до 175 градусов»
  • Утончите – никакая потребность не освещает контржурным светом, испускать собственной личности
  • Высокая яркость
  • Сверхконтрастный коэффициент «до 2000:1»
  • Широкое ℃ 40 температуры деятельности «- | ℃ 85»
  • Более низкий расход энергии — уменьшите излучения СО2
  •  

вопросы и ответы:

 

Q1. Могу я иметь заказ образца?

: Да, мы приветствуем заказ образца для того чтобы испытать и проверить качество. Смешанные образцы различных номеров деталя приемлемы.

 

Q2. Как насчет времени выполнения?

: Для продуктов -полки, образцы в-запаса немедленно. 1-1. 5 wks для remaking образца. 4-6 wks для массового производства. Для дизайн-в продуктов, 2-3 дня для встречного рисуя предложения; 2 wks для образца делая на рисуя утверждении; 5-6 wks для осуществляемого проб/массового производства на утверждении образца.

 

Q3. Вы имеете предел MOQ для образца и заказа продукции?

: Низкое MOQ. 3-5pcs для проверки образца доступно. Массовое производство MOQ нормально 1K/lot. Мы поддерживаем qty более низкий чем MP MOQ для заказа trail-run/PP-run.

 

Q4. Как вы грузите товары и сколько времени оно принимаете для того чтобы приехать?

: Корабль DHL, UPS, Federal Express или TNT. Он принимает 5-7 дней для того чтобы приехать. Авиакомпания и море грузя также опционное.

 

Q5. Как осуществляются заказ для модуля LCD?

: Во первых позвольте нам знать ваши требования или применение.

Secondly мы закавычим согласно вашим требованиям или нашим предложениям.

В-третьих клиент подтверждает образцы и места депозируют для официального заказа.

В-четвертых мы аранжируем продукцию.

 

Q6. Оно В ПОРЯДКЕ напечатать мой логотип на продукте LCD?

: Да. Пожалуйста сообщите нас официально в стадии проектирования, и нас сделает образцы с вашим логотипом для ваших типового теста и утверждения. На утверждении образца, массовое производство следовать одобренными образцами.

 

Q7: Вы предлагаете гарантируете для продуктов?

: Да, мы предлагаем гарантию 1 года к нашим продуктам.

 

Q8: Как общаться с небезупречным?

: Во первых, наши продукты произведены в строгой системе проверки качества и неполноценный тариф будет чем 0,2%.

Secondly, во время гарантийного периода, мы отправим новые lcds с новым порядком для небольшого количества. Для неполноценных продуктов серии, мы отремонтируем их и отправлять их к вам или нам может обсудить решение включая отозвание согласно реальной ситуации.

 

Продукт:0,96″ графический дисплей дюйма OLEDРазрешение:128×64
Оптика:Все углы наблюденияЦвет:Белый, опционный голубой цвет
Размер модуля:26,70 (w) mm×19.26 (h) mm×1.4 (t) mmСтекло:OLED
Регулятор:SSD1306Работая Temp:-40°C к +85°C
Секретный номер:30 штырейИнтерфейсы:6800/8080 параллельный, 4 провод SPI, и I2C
Время жизни:50 000 часовЯркость:180 Nits
Фактор контрастности:20 000: 1Соответствие:ДОСТИГАЕМОСТЬ & RoHS уступчивые


 

0,96″ ЧЕРТЕЖ экрана графиков дюйма OLED

 

 

 

0,96″ графики дюйма OLED экранирует РЕАЛЬНЫЙ ПРОДУКТ DEMOSTRATION

 

 

 

ФАБРИКА И ОБЪЕКТЫ

 

 

 

КОНТАКТ

 

Добро пожаловать, который нужно запросить через ck@saef. com.cn

 

Ключевое слово поиска: oled 0,96, oled 0,96, 0,96 oled дюйма, oled 0,96 дюйма, 0,96 oled i2c, 0,96 oled дюймов i2c, 0,96 oled дюйма белых, 0,96 oled дюйма голубых,

 

 

тег:

NM12864-550 128×64 ЖК-модуль Последовательный привод IC ST7565 Белая подсветка Поставщики и фабрика Китай — Оптовый прайс-лист

Описание

Общая спецификация

NM12864-550 — графический последовательный интерфейс Spi-модуля 128×64, контроллер st7565r, напряжение 3 В, ЖК-дисплей FSTN, белая светодиодная подсветка, широкая рабочая температура.

Спецификация:

1. Режим отображения: DFSTN пропускающий / отрицательный

2. Угол обзора: 6 часов

3. Метод привода: 1/64 Duty 1/9 Bias, Vop = 9.0V, Vdd = 3.3V

4. Верх: -20 ℃ ~ +70 ℃ , Tst: -30 ℃ ~ + 80 ℃

5. Разъем: COG + FPC

6. Привод IC: ST7567

7. Подсветка: 2 шт. Белый светодиод, 30 мА

8. Неназначенные допуски +/- 0,20 мм

 

Показать изображение

NM12864-550 128X64 графическая точечная матрица COG LCD модуль

NM12864-550 128×64 ЖК-модуль Последовательный привод IC ST7565 Белая подсветка

128×64 графический модуль COG LCD для Smart Watch

заявка

Фабрика ПАНАСИС

Упаковка и доставка

Упаковка:   Картонные коробки, шкаф, EPE, блистерный лоток, о том, сколько продуктов в одной упаковке, это до

размер продукции, по желанию заказчика.

Перевозка:   Экспресс-способ, как DHL, FedEx, EMS, UPS, авиаперевозки, морские перевозки, любой способ доставки вы предпочитаете.

 

 

Часто задаваемые вопросы

  1. Я хочу, чтобы на ЖК-дисплее отображалось 8 цифр, а размер контура составлял 65x30x2,8 мм ………?
Ответ: нет проблем. Во-первых, пожалуйста, пришлите нам свою бумагу для рисования или образцы; мы представим подходящий

если это стандартные продукты. Или мы можем изменить на основе одного из них.


2. Этот ЖК-модуль как раз то, что мы хотим, но он имеет большой размер, у вас есть какой-нибудь меньший размер? И

содержание дисплея нужно немного изменить.
Ответ: Для ЖК-модуля сегментированного типа, если вам нужно изменить размер контура или отображаемый контент, A

нужен новый стеклянный ЖК-модуль. Мы сообщим вам о загрузке пресс-формы после подтверждения, когда

Оплата, мы начнем чертеж бумаги для вашей проверки.


3. Подсветка этого ЖК-модуля желто-зеленая, но мне нужна синяя подсветка.
Ответ: нет проблем, мы можем изменить для вас.


4. Я хочу настроить новый ЖК-модуль. Ты можешь сделать?
Ответ: да, мы можем. Пожалуйста, пришлите свою бумагу для рисования. Если у вас нет, пожалуйста, сообщите мне размер схемы

ЖК-дисплей, отображать информацию, при необходимости подсветку или печатную плату с IC, мы будем оценивать

стоимость и дать вам цену в ближайшее время.


5. Что является ведущим временем для оснастки
Ответ: от 15 до 30 дней после подтверждения рисования бумаги и оплаты за оснастку, мы можем сказать,

Вы точное время, когда вы подтверждаете рисунок бумаги.


6. Можете ли вы прислать нам образцы для проверки?
Ответ: Да, заказ образцов доступен.


7. Что такое ведущее время?
Ответ: Если у нас есть запас для стандартных, ведущим временем является один день после оплаты. Если это

массовое производство для специальных, ведущее время составляет около 15-30 дней. Если мы можем закончить раньше,

Мы вышлем вам информацию заранее.

Мы являемся одним из ведущих поставщиков серийных дисков 128×64 lcd-модулей nm12864-550 ic st7565 с белой подсветкой в Китае. Используя передовые технологии, мы можем гарантировать высокое разрешение и производительность наших продуктов. Добро пожаловать, чтобы получить бесплатный образец и прайс-лист от нашей фабрики.

горячая этикетка : nm12864-550 128×64 ЖК-модуль последовательного привода ic st7565 с белой подсветкой, Китай, поставщики, завод, оптовая торговля, прайс-лист, бесплатный образец

ST7565 Учебное пособие по ЖК-дисплею

  • Тип: Графический (128×64) монохромный ЖК-дисплей со светодиодной подсветкой
  • Интерфейс: Последовательный/SPI
  • Самое время прочитать техническое описание
  • Доступно через: Adafruit, конечно!

В этом мини-руководстве описан процесс настройки ЖК-дисплея ST7565. Эти ЖК-дисплеи являются графическими , что означает, что они могут отображать пиксели, а не только текст. Этот тип ЖК-дисплеев, в частности, имеет разрешение 128×64 пикселей, которые выглядят темно-серыми на зелено-синем фоне. Они имеют подсветку, но их также можно использовать без подсветки для видимости в дневное время.

Другой тип ЖК-дисплея — KS0108. Это не одинаковые и не совместимые! Вот несколько сравнений

  КС0108 СТ7565
Напряжение

3,3 В

Интерфейс

Параллельный

Серийный номер

Необходимы контакты данных

14

4 или 5

Размер дисплея

128×64

128×64

Регулировка контрастности.

требуется потенциометр

внутренний, без доп.

Требуется буфер?

Да

Как видите, есть несколько отличий.

  • Во-первых, ST7565 работает при напряжении 3,3 В, а не 5. Это означает, что необходим буферный чип или сдвиг уровня, вы можете использовать резисторы или чип, такой как 4050 (или аналогичный).
  • Во-вторых, используется последовательный интерфейс (один бит за раз) вместо параллельного (8 бит за раз). Это означает, что он использует гораздо меньше контактов (ура!)
  • Самым большим недостатком является то, что вы не можете читать с ЖК-дисплея в последовательном режиме, только писать. Это означает, что чип должен следить за дисплеем (KS0108 позволяет вам читать или писать). Таким образом, какой бы микроконтроллер вы ни использовали, ему потребуется потратить 1024 байта (1 КБ) ОЗУ на память дисплея. Для некоторых чипов это мало, а для некоторых много — нужно будет свериться с даташитом на микросхему.

Если вы используете ATmega168 или ATmega8, такие как используемые в более старых Arduinos, вы должны обновить до ‘328, чтобы использовать этот ЖК-дисплей. И если вы используете ‘328, обратите внимание, что половина ОЗУ уходит на дисплей, поэтому у вас не останется много лишнего. Это в значительной степени означает, что вы не можете использовать что-то с SD-картой (например, Wave Shield или Data logger Shield, в то же время у вас сразу закончится оперативная память, и это будет странно, так что не беспокойтесь).

 

Мы написали аккуратную библиотеку как для C, так и для Arduinoese. Если вы не используете AVR, код C очень переносим, ​​и его преобразование в ваш любимый микроконтроллер займет всего несколько минут.

Загрузите его с github — нажмите Download Source , чтобы получить все это. Если вы используете Arduino, установите папку ST7565 , содержащую библиотеку и пример эскиза

. Начнем с припайки проводов к ЖК-дисплею. Я буду использовать радужные провода, чтобы их было легче различать, но вы можете использовать все, что захотите. Шаг разъема составляет 2 мм, что означает, что он не подходит для макетной платы, но к нему легко добавить провода.

Вот цвета проводов и контакты, к которым они подходят:

  1. /CS — Набор микросхем — белый
  2. /RST — Сброс — Синий
  3. A0 — иногда называется RS — зеленый
  4. SCLK — серийные часы — желтый
  5. SID — серийный ввод данных — оранжевый
  6. VDD — питание 3,3 В — красный
  7. GND — земля — ​​черный
  8. K — Светодиодный катод — Коричневый
  9. A — Анод светодиода — белый

В этом руководстве мы предполагаем, что вы используете микроконтроллер 5 В, такой как Arduino, если ваш чип работает с напряжением 3 В, вы можете просто игнорировать 4050 и делать все остальное!

4050 — это микросхема, которая преобразует высокое напряжение 5 В в 3 В, вот схема. контакт 8 4050 (черный) до земля . На следующем изображении две боковые шины подключены к заземлению и контакту 3V от Arduino.

Затем подключите:

  • Цифровой 9 Arduino к контакту 9 4050 — оранжевый
  • Цифровой 8 Arduino к контакту 11 4050 — желтый
  • Цифровой 7 Arduino к контакту 7 4050 — зеленый
  • Цифровой 6 Arduino к контакту 5 4050 — синий
  • Цифровой 5 Arduino к контакту 3 4050 — белый

Нажмите на фото, чтобы увеличить его, если вам нужна помощь с проводкой. Начнем с подсветки (опционально). Коричневый ( K ) подключается к земле, а белый ( A ) подключается через резистор ~100 Ом к 3 В. Вы также можете подключить его к 5 В через резистор ~ 270. Обязательно наличие какого-нибудь резистора!

Наконец, линии питания и передачи данных ЖК-дисплея. Подключить красный ( VDD ) на 3,3 В и черный ( GND ) на землю. Затем подключите

  • оранжевый ( SID ) к контакту 10 4050
  • .
  • желтый ( SCLK ) к 12 контакту 4050
  • Зеленый ( A0 ) к 6 контакту 4050
  • Синий ( /RST ) к контакту 4 4050
  • Белый ( / CS ) для контакта 2 4050

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

Наслаждайтесь!

Контроллер дисплея ST7565 | edeca.net

На этой странице рассматривается теория использования графического ЖК-дисплея на базе контроллера ST7565. Они широко доступны с популярными размерами 132 x 32 и 128 x 64, а некоторые из них стоят менее 10 фунтов стерлингов.

(Изображение © Electronic Assembly, lcd-module.de)

Учебное пособие следует тому же пути, который я выбрал при разработке простой библиотеки для экрана, который я купил. Я поставил перед собой задачу сделать это с нуля, а не использовать код из Интернета.

Хотя в этом посте в качестве примера используется экран 128×64, он в равной степени применим к разным размерам.

Плюсы:

  • Простой интерфейс с использованием меньшего количества контактов, чем у других графических ЖК-дисплеев
  • Бортовой усилитель напряжения для жидкокристаллического дисплея
  • Контрастность и поворот с программным управлением
  • Работает на более высоких тактовых частотах
  • Хороший выбор цветов подсветки

Минусы:

  • Только логика 3,3 В (уже не проблема)
  • В режиме SPI требуется большой буфер в локальной памяти

Начало работы

Самое важное, что необходимо при разработке библиотеки, — это хорошее техническое описание. Информация, предоставляемая производителями экранов, часто недостаточно детализирована или качественна. Таблицу данных, которую я использовал, можно найти здесь.

Основные операции (аппаратные)

Ниже показана основная схема расположения выводов ST7565. Для управления им от микроконтроллера в режиме SPI требуется 5 пинов. Все эти контакты являются выходами микроконтроллера и входами на экран. Поскольку чтение с экрана невозможно, входные данные не требуются.

Необходимо подключить RESET к микроконтроллеру, так как процедура инициализации включает переключение этого вывода. Этот контакт не должен быть привязан к высокому или низкому уровню, иначе может быть невозможно правильно сбросить экран.

В зависимости от вашего модуля GLCD может потребоваться подключение нескольких конденсаторов, это обсуждается в следующем разделе.

Повышение напряжения и регулирование

ST7565 имеет встроенную схему повышения напряжения (подкачки заряда), которая может обеспечить высокое напряжение, необходимое для жидкокристаллического дисплея. Если схема имеет только один источник питания, например 3,3 В, то зарядный насос — самый простой способ питания экрана. Если цепь содержит источник напряжения от 9v и 12v, то можно уменьшить количество необходимых внешних компонентов, используя их напрямую.

Внутренний усилитель может увеличить входное напряжение от 2 до 6 раз в зависимости от того, как конденсаторы подключены между клеммами CAPxx. Полная информация представлена ​​на страницах с 31 по 34 таблицы данных выше. Единственным ограничением является то, что максимальное напряжение после форсирования не должно превышать Vout, что составляет 13,5 В.

Во многих технических описаниях ЖК-дисплеев указаны точные конденсаторы, необходимые для конкретной модели. Для некоторых модулей дисплея эти конденсаторы встроены в печатную плату, и их не нужно добавлять. Внимательно проверьте техпаспорт! Например, изображение ниже взято из таблицы данных для недорогой модели, доступной от Mouser, EA DOGM132-5:

(© Electronic Assembly, lcd-module.de)

В дополнение к усилителю напряжения ST7565 содержит встроенный стабилизатор напряжения. Он имеет 8 ступеней и регулирует опорное напряжение, используемое для управления жидкокристаллическим дисплеем. Необходимо найти значение от 0 до 7, которое хорошо работает с конкретным оборудованием, поскольку оно используется с функцией динамического контраста. Обычно «среднее» значение, такое как 3, будет работать с любым экраном.

Основные операции (программное обеспечение)

Режим SPI обеспечивает простой механизм управления экраном с помощью нескольких контактов. Один бит записывается на вывод данных, и тактовый импульс то высокий, то низкий. Реализация SPI в ST7565 довольно стандартна, дополнительную информацию можно найти на странице шины SPI в Википедии.

Одним из ограничений использования экрана в режиме SPI является то, что он поддерживает только запись команд или данных. Читать с экрана невозможно, поэтому необходимо хранить копию текущих экранных данных в памяти микроконтроллера. Размер этого программного буфера можно легко рассчитать, имеется 128 столбцов и 64 строки, всего 819 строк. 2 бита (1 бит на пиксель для черно-белого изображения). Таким образом, для хранения копии экрана требуется всего 1024 байта, что может быть большим объемом для многих микроконтроллеров меньшего размера.

С программным («битовым») SPI можно использовать экран на очень высоких тактовых частотах. На PIC 18F я использовал свой экран с внутренним генератором 64 МГц, и он работает абсолютно нормально. Можно рассчитать (или смоделировать/измерить), может ли микроконтроллер превысить минимальный тактовый период ST7565.

Компоновка экрана

В отличие от дисплеев, использующих KS0108, ST7565 имеет один контроллер для всего экрана. Нет необходимости переключаться между левым и правым для отправки команд.

Экран 128×64 состоит из 8 страниц, каждая из которых имеет высоту 8 пикселей и ширину 132 пикселя. Это хорошо соответствует программному буферу, необходимому для кэширования содержимого экрана, поскольку каждая страница имеет высоту байта.

Проще всего представить, что верхний левый угол экрана равен 0,0, а нижний правый — 127,63. Это значительно упрощает некоторые математические операции, необходимые в программном обеспечении. Для записи данных в (0,0) необходимо выбрать страницу 0, столбец 0, а затем установить отдельный бит. В отличие от этого, расположение (32,32) находится на странице 5.  Самый простой способ записи данных на экран — отправить всю страницу за раз, начиная слева в столбце 0 и продолжая вправо в столбце 127.

Отправка команды на экран

Выдача одной команды на экран — это основной строительный блок кода интерфейса. Необходимые шаги:

  • Установите низкий уровень на выводе A0, чтобы указать, что данные команды отправляются
  • Установите низкий уровень на выводе выбора микросхемы (CS)
  • Отправка каждого бита команды, начиная с старшего бита и заканчивая младшим значащим
  • Установите высокий уровень на выводе выбора микросхемы (CS), чтобы освободить шину

Поэтому команду «включить отображение» (0xAF или 0b10101111) следует отправлять как: 1, 0, 1, 0, 1, 1, 1, 1.

Пока не нарушена синхронизация SPI, нет необходимости вводить какие-либо задержки, так как экран никогда не будет «занят».

Инициализация экрана

Теперь, когда мы можем отправить одну команду, нам нужно выполнить ряд шагов для настройки экрана.

  • Стробирует контакт RESET низким, а затем высоким, чтобы инициировать аппаратный сброс
  • Установите рабочий цикл (либо 1 7 , либо 1 9 ) в зависимости от физического ЖК-дисплея
  • Установить горизонтальную и вертикальную ориентацию в известное состояние
  • Настройте делитель внутреннего резистора, который используется регулятором напряжения
  • Включите внутренний усилитель напряжения, чтобы обеспечить питание стекла ЖК-дисплея
  • Инициализировать динамическую контрастность до значения по умолчанию
  • Сбросить текущую позицию дисплея в левый верхний угол

Команды для них состоят из одного байта, за исключением динамического контраста, который будет объяснен позже. Ниже приведено изображение, снятое с логического анализатора во время выполнения кода инициализации.

В этой трассировке можно увидеть следующее:

  • Команда 0xA2 : установить смещение ЖК-дисплея на 1/9
  • Команда 0xA0 : горизонтально «нормально» (не перевернуто)
  • Команда 0xC8 : вертикально «перевернуто» (дополняет приведенную выше команду)
  • Команда 0x23 : делитель внутреннего резистора установлен на 3 (от 0 до 7)
  • Команда 0x2F : управление питанием, все внутренние блоки включены
  • Команда 0x81 : войти в режим динамической контрастности
  • Данные для режима динамической контрастности, установлены на 31 (от 0 до 63)
  • Команда 0x40 : вернуться в левый верхний угол дисплея

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

Отправка данных на экран

Единственная разница между отправкой команды и данных — вывод A0. При отправке данных контакт A0 должен быть высоким, чтобы отличить данные шины от команды.

Для начала отправляем команду на сброс позиции в левый верхний угол (0,0). После этого можно быстро записать один байт и посмотреть, как он отображается. Важно знать, в каком направлении на экране будут отображаться получаемые данные, независимо от того, отображается ли вверху «старший бит» или «младший бит». На рисунке ниже показан вывод, если байт 0x80 отправляется на экран четыре раза:

Из этого видно, что наиболее значащий бит отображается внизу страницы. Первый бит, который мы отправляем, находится внизу, затем последующие биты работают вверх по направлению к верхней части страницы. Это будет важно позже, когда мы попытаемся установить отдельный пиксель.

Отображение базовой тестовой таблицы

Самый простой способ проверить, работает ли код драйвера, — отправить очень простую тестовую таблицу. Быстрая проверка заключается в отправке постоянных байтов 0xFF для заполнения экрана. Если это сработает, можно попробовать варианты, например 0xF0 или 0xAA .

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

Запись в определенные пиксели

Запись в определенные пиксели открывает целый мир возможностей от линий, кругов, графики с разрешением 1 бит на пиксель и шрифтов переменной высоты. Поскольку эти графические функции не зависят от конкретного контроллера или экрана, лучше всего выделить их в отдельную библиотеку, переносимую на любой экран. Это, пожалуй, самая сложная часть при разработке библиотеки для работы с любым экраном.

Для установки определенного пикселя необходимо разбить процесс на несколько шагов:

  • Найти соответствующий байт в программном буфере
  • Вычислить бит в этом байте
  • Используйте логическое XOR (для установки бита) или AND (для очистки бита)

Найти правильный байт несложно. Первая позиция в нашем массиве находится в левом верхнем углу экрана. 128-й байт в массиве ( Array[127] ) находится на первой странице в правой части экрана. Следующий бит «переносится» на следующую страницу, на страницу 1, столбец 1.

Чтобы вычислить, какой байт нам нужно использовать, нужно разделить позицию Y на 8 и умножить результат на 128. К этому мы добавляем позицию X, а затем вычитаем 1 (поскольку массивы C начинаются с 0). Уравнение $ X + ({ \frac{Y}{8} \times 128 }) — 1 $ хорошо работает в C. Чтобы убедиться, что это правильно:

  • (1,1) на экране даст $ 1 + ( \frac{1}{8} \times 128 ) — 1 = 0 $
  • (61,52) на экране даст 61$ + ( \frac{52}{8} \times 128 ) — 1 = 828
  • $

Чтобы вычислить бит внутри этого байта, мы должны помнить, что 8-й (старший) бит находится внизу страницы. Итак, чтобы записать в ячейку Y 8, нам нужно установить 8-й бит байта на первой странице. Чтобы записать в ячейку Y 16, нам нужно записать в 8-й бит соответствующего байта на второй странице. Поэтому нам нужен остаток после деления позиции Y на 8, который можно найти с помощью оператора по модулю. Это так же просто, как Y % 8:

  • (1,1) означает установку 1 % 8 = 1-й бит
  • (61,49) означает установку 49 % 8 = 1-й бит
  • (61,53) означает установку 53 % 8 = 5-й бит

Теперь можно установить правильный бит внутри байта, на микроконтроллерах PIC это может быть достигнуто с помощью очень эффективных битовых операторов, таких как bsf или bcf.

Отображение текста

Как и многие другие графические ЖК-дисплеи, ST7565 не имеет встроенного шрифта. Самый быстрый и простой способ отображения текста на этом экране — определить шрифт высотой 8 пикселей. Это сопоставляется непосредственно с одной страницей (или «строкой») дисплея, и поэтому мы можем использовать очень быстрые инструкции для копирования данных из предопределенного шрифта в правую область экрана.

Однако это ограничивает нас фиксированной высотой и только 8 строками экрана. Теперь, когда мы знаем, как устанавливать отдельные пиксели, есть гораздо более приятные способы отображения текста. Рассмотрим следующее изображение:

Крупные шрифты занимают больше места, но их можно использовать для создания более приятного пользовательского интерфейса для проекта. Зная, что мы можем установить конкретный пиксель, легко создавать расширенные графические функции. Однако они отделены от самого экрана ST7565, поэтому я расскажу о них в следующем сообщении в блоге. Нетерпеливые читатели могут проверить мою графическую библиотеку (документацию Doxygen можно найти здесь).

Использование расширенных функций

На данный момент все функции являются общими для всех стандартных графических ЖК-дисплеев. Однако есть ряд дополнительных возможностей, которые могут предложить дисплеи на базе ST7565.

Инверсия экрана

С помощью одной команды ST7565 может инвертировать дисплей. Это может быть полезно для выделения или облегчения чтения экрана в определенных ситуациях. Команда «отобразить нормально или наоборот» — 0b1010011X , где X — это 1 для обратного или 0 для нормального.

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

Затемнение экрана

ST7565 может сделать все точки на экране черными, не затрагивая ОЗУ экрана. Хотя трудно представить себе ситуацию, в которой это могло бы быть полезно, команда «отобразить все точки» представляет собой один байт и может использоваться, чтобы сделать дисплей черным, если это необходимо.

Динамическая регулировка контрастности

В отличие от других распространенных графических ЖК-дисплеев, контрастность ST7565 устанавливается с помощью внутреннего резистивного делителя. Это означает, что его можно установить в программном обеспечении и динамически изменять. Для изменения контраста нам нужно отправить две команды. Первый входит в «набор режима громкости», а второй устанавливает контрастность от 0 до 63.

Количество полезных шагов может быть меньше 64, на моем тестовом экране видимые шаги от 12 (очень светлые) до 40 (очень темные). Более низкие значения не видны, поскольку напряжение слишком низкое, более высокие значения делают экран полностью черным, поскольку нет различия между выключенными и включенными пикселями.

Эту функцию можно использовать с датчиком освещенности для затемнения экрана в зависимости от условий окружающей среды. Его также можно использовать для затемнения экрана.

Поворот экрана и зеркальное отображение

Точно так же, как экран можно инвертировать, не влияя на отображаемые данные, можно перевернуть экран в горизонтальном или вертикальном направлении. Это означает, что экран можно использовать в любом направлении без каких-либо изменений в программном обеспечении, за исключением отправки на экран двух дополнительных команд.

Переворот экрана по горизонтали (слева направо) осуществляется с помощью команды со странным названием «Выбор ADC». Переворот экрана по вертикали (сверху вниз) возможен с помощью команды «Выбор режима вывода COM». Если вы не хотите смотреть на экран в зеркало, необходимо использовать обе команды одновременно!

Как упоминалось ранее, память на экране фактически имеет ширину 132 столбца для поддержки максимального размера экрана 132×64. На моделях с шириной экрана 128 пикселей важно учитывать поворот дисплея. Если экран не повернут, так как дополнительные 4 строки находятся справа и не видны, как показано ниже:

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

Чтобы исправить это, необходимо отслеживать в программе, повернут ли экран или нет. Когда он вращается, адрес столбца должен увеличиваться на 4 каждый раз, когда на экран отправляется новая строка, пропуская дополнительные столбцы, которые в противном случае отображались бы.

Повышение эффективности

Обновление экрана включает отправку всего локального буфера в оперативную память экрана. Если было внесено всего несколько изменений, то это очень неэффективный способ обновления экрана.

Можно было бы отправлять каждую отдельную запись на экран, просто копируя один байт, который изменяется каждый раз, когда записывается пиксель. Однако это неэффективно, если в одном и том же байте в последующих операциях установлено более одного бита (или пикселя). Изменения на экране также будут очень заметны на более медленных скоростях.

Поскольку на экране 8 страниц, наиболее эффективным методом на маленьком микроконтроллере является отправка только тех страниц, которые изменились. Каждый раз, когда пиксель устанавливается или очищается, соответствующая страница в локальном буфере помечается как «грязная». Когда дело доходит до обновления экрана, переносятся только грязные страницы.

В приведенном выше примере изменения были внесены только на страницы 2 и 5. Поэтому они будут отправлены на экран, что занимает 1 4 времени отправки всех 8 страниц.

Экран можно разделить на еще более мелкие области, например, на 16 половинных страниц. Следует внимательно рассмотреть компромисс между дополнительным кодом каждый раз, когда устанавливается пиксель, и сокращением времени передачи данных по шине.

Проверка скоростей

Выше я прокомментировал, что можно запустить PIC на частоте 64Mhz и не нарушить тайминги SPI. Важные значения показаны в таблице 28 таблицы данных:

Нас интересуют Tscyc, Tshw и Tslw. Они относятся к полному тактовому циклу, HIGH части цикла и LOW части соответственно. Общий тактовый импульс должен быть не менее 50 нс, а верхняя и нижняя части должны быть не менее 25 нс каждая.

Перемалывание чисел

Предположим, что код SPI включает тактовый вывод, а затем сразу же выключает его за 2 инструкции. Вывод будет ВЫСОКИМ в конце первой инструкции и снова НИЗКИМ после второй, поэтому он будет ВЫСОКИМ только в течение периода 1 инструкции.

В микроконтроллерах семейства PIC 12/16/18 каждая инструкция занимает 4 такта. На частоте 64 МГц это означает, что каждая инструкция занимает 1/( 64000000 4 ) секунд или 62,5 нс. Отсюда мы можем ожидать, что ВЫСОКИЙ период тактового импульса должен составлять около 62,5 нс, легко в пределах требуемых таймингов.

Проверка логическим анализатором

Также можно измерить и посмотреть, сколько длится импульс на реальном оборудовании. На приведенном ниже снимке экрана показана ВЫСОКАЯ часть измеряемого тактового импульса, это самая короткая часть цикла. Используемый PIC — 18F25K22, работающий на частоте 64 МГц. Код включает и выключает контакт в двух инструкциях.

Помните, что оно должно быть не менее 25 нс, чтобы быть приемлемым. Измерение показывает 41,7 нс, что меньше расчетного, но все же приемлемо. Ряд причин может привести к расхождению между нашим расчетом и физическим измерением:

  • Разрешение логического анализатора (в данном примере 24 МГц) может оказаться недостаточным для измерения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *