Наверное самый распространенный режим подключения дисплеев, но в том случае, когда у МК есть соответствующее количество свободных ног. А именно 10-12, в зависимости от нужд.
Если нет необходимости читать данные из дисплея, и сбрасывать его, то можно использовать только 10 выводов.
Рассматривать пожалуй начнем с параметров сигналов, поступающих на дисплей. Контроллер дисплея воспринимает напряжение сигнала от 2.7 до 5.5 В, что позволяет использовать его практически с любыми микроконтроллерами.
На рисунке 1 и 2, а также в таблице 1 можно увидеть какие данные предъявляются ко входным сигналам по времени при условии, что дисплей питается напряжением 4.5 В и более.
Таблица 1 - Тайминг записи/чтения команд/данных ST7920
Обработка каждой команды длится в среднем около 72 мкс - это данные, взятые из даташита. На деле же оказалось что каждая команда выполнялась всего за 32-33 мкс. При этом удалось получить частоту обновления графики на дисплее примерно 25 кадров в секунду, а это очень даже неплохой результат. Дальнейшее увеличение частоты обновления приводит к проскальзыванию различных артефактов.
Теперь можно перейти к описанию команд. Расскажу только о командах вывода графической информации, т.к. они, на мой взгляд, наиболее часто используемые. Начнем с команд управления самим дисплеем.
Таблица 2 - Команды управления ST7920 в режиме вывода графики 8 bit
Поэтому, когда мы записываем 16 слов в нулевую строку памяти дисплея, то на его экране появляется графическая информация в нулевой и тридцать второй строках. Вот такая непростая система.
Таблица 3 - Команды установки адреса графической памяти ST7920 в режиме вывода графики 8 bit
Таблица 4 - Запись графической информации в ST7920 в режиме вывода графики 8 bit
Если нет необходимости читать данные из дисплея, и сбрасывать его, то можно использовать только 10 выводов.
Рассматривать пожалуй начнем с параметров сигналов, поступающих на дисплей. Контроллер дисплея воспринимает напряжение сигнала от 2.7 до 5.5 В, что позволяет использовать его практически с любыми микроконтроллерами.
Рисунок 1 - Тайминг записи команд/данных ST7920 |
Рисунок 2 - Тайминг чтения данных ST7920 |
Таблица 1 - Тайминг записи/чтения команд/данных ST7920
Обозначение
|
Параметр
|
Минимальное значение
|
Tas
|
Время установки адреса
|
10 нс
|
Tah, Th
|
Задержка перед изменением адреса/данных
для нового цикла записи/чтения
|
20 нс
|
Tpw
|
Ширина импульса разрешения
чтения/записи
|
140 нс
|
Tdsw
|
Время установки данных на МК
|
40 нс
|
Tddr
|
Время установки данных на ST7920
|
|
Tc
|
Длина цикла импульса разрешения
чтения/записи
|
1200 нс
|
Обработка каждой команды длится в среднем около 72 мкс - это данные, взятые из даташита. На деле же оказалось что каждая команда выполнялась всего за 32-33 мкс. При этом удалось получить частоту обновления графики на дисплее примерно 25 кадров в секунду, а это очень даже неплохой результат. Дальнейшее увеличение частоты обновления приводит к проскальзыванию различных артефактов.
Теперь можно перейти к описанию команд. Расскажу только о командах вывода графической информации, т.к. они, на мой взгляд, наиболее часто используемые. Начнем с команд управления самим дисплеем.
Таблица 2 - Команды управления ST7920 в режиме вывода графики 8 bit
Команда
|
Код команды
|
Значение параметров
|
Описание
|
||||||||||||||||
Stand by
|
|
Не имеет параметров
|
Режим пониженного энергопотребления
|
||||||||||||||||
Extended function set
|
|
G:0 – дисплей выключен
G:1 – дисплей включен
|
Управление индикацией
|
Тут все предельно просто, всего две команды, использующиеся для вывода графической информации, одна из которых необходима для инициализации дисплея (Extended function set).
Команды в дисплей записываются при низком уровне сигнала на входах RS и R/W дисплея.
Следующие команды - это команды установки адреса памяти дисплея, в которую будет осуществлена запись самой графической информации. И тут хотелось бы рассказать поподробнее. Информация на дисплей выводится 16-битными словами, а память дисплея организована не 8x64 таких слова, а 16x32. Тоесть первая строка состоит из 256 бит (16 слов).
Рисунок 3 - Представление графической информации в памяти ST7920 |
Команда
|
Код команды
|
Значение параметров
|
Описание
|
||||||||||||||||
Set graphic ram addr.
|
|
AC3:AC0 - адрес
|
Горизонтальный адрес
|
||||||||||||||||
Set graphic ram addr.
|
|
AC6:AC0 - адрес
|
Вертикальный адрес
|
Таблица 4 - Запись графической информации в ST7920 в режиме вывода графики 8 bit
Команда
|
Код команды
|
Значение параметров
|
Описание
|
||||||||||||||||
Data high byte
|
|
D15-D8 - данные
|
Старший байт выводимой графики
|
||||||||||||||||
Data low byte
|
|
D7-D0 - данные
|
Младший байт выводимой графики
|
Все команды в дисплей записываются при низком уровне сигнала на входах RS и R/W дисплея, а данные при высоком уровне RS и низком R/W.
Обозначив все необходимые команды, можно перейти непосредственно к алгоритму работы с дисплеем. И первое, что необходимо сделать - это проинициализировать дисплей. Это делается управляющей командой Extended function set спустя минимум 40 мс после включения питания. После этого дисплей готов к работе. Если Вы увидели на нем кучу графического мусора, не стоит пугаться, дисплей не умер! Весь это мусор всего лишь произвольные значения в памяти ST7920, а его появление говорит о том, что инициализация прошла успешно и дисплей готов принимать дальнейшие указания.
Теперь можно приступать к выводу графической информации, и тут у нас два варианта:
- Первый - запись слов в произвольном порядке. Сначала записываем вертикальный адрес, затем горизонтальный, потом старший байт графики и младший байт графики. Такой алгоритм достаточно медленный, но позволяет редактировать лишь необходимые части изображения на дисплее
- Второй вариант - это запись слов построчно ( 1 строка - 16 слов (об этом я упоминал ранее)). При этом нам необходимо указать лишь начальный адрес нужной строки, а затем по-порядку записывать слова графической информации. Именно при использовании этого способа можно достичь скорости обновления графики на дисплее около 25 кадров в секунду.
Спасибо за инфо.Я электронщик со стажем,но программист новичок.У меня плата ардуино нано(атмега126).Не смогли ли Вы сделать небольшую программку(исходник) вывода информации(текстовую)на дисплей 12864В V2.0? Буду очень признателен.
ОтветитьУдалитьдень добрый. пытаюсь написать код для вывода графической информации, но пока только вижу мусор на экране. вроде все написано правильно и согласно даташит. Помогите найти ошибку.
ОтветитьУдалитьslavatw1979tw@gmail.com, вот моя почта. Давайте спишемся. Спасибо