LCD 12864 на контроллере ST7920. Параллельный режим (8 бит)

Наверное самый распространенный режим подключения дисплеев, но в том случае, когда у МК есть соответствующее количество свободных ног. А именно 10-12, в зависимости от нужд.
Если нет необходимости читать данные из дисплея, и сбрасывать его, то можно использовать только 10 выводов.
Рассматривать пожалуй начнем с параметров сигналов, поступающих на дисплей. Контроллер дисплея воспринимает напряжение сигнала от 2.7 до 5.5 В, что позволяет использовать его практически с любыми микроконтроллерами.
Рисунок 1 - Тайминг записи команд/данных ST7920
 
Рисунок 2 - Тайминг чтения данных ST7920
На рисунке 1 и 2, а также в таблице 1 можно увидеть какие данные предъявляются ко входным сигналам по времени при условии, что дисплей питается напряжением 4.5 В и более.

Таблица 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
DB7DB6DB5DB4DB3DB2DB1DB0
00000001
Не имеет параметровРежим пониженного энергопотребления
Extended function set
DB7DB6DB5DB4DB3DB2DB1DB0
0011x1Gx
G:0 – дисплей выключенG:1 – дисплей включенУправление индикацией
Тут все предельно просто, всего две команды, использующиеся для вывода графической информации, одна из которых необходима для инициализации дисплея (Extended function set).Команды в дисплей записываются при низком уровне сигнала на входах RS и R/W дисплея.Следующие команды - это команды установки адреса памяти дисплея, в которую будет осуществлена запись самой графической информации. И тут хотелось бы рассказать поподробнее.  Информация на дисплей выводится 16-битными словами, а память дисплея организована не 8x64 таких слова, а 16x32. Тоесть первая строка состоит из 256 бит (16 слов).
 
Рисунок 3 - Представление графической информации в памяти ST7920  
Поэтому, когда мы записываем 16 слов в нулевую строку памяти дисплея, то на его экране появляется графическая информация в нулевой и тридцать второй строках. Вот такая непростая система.
Таблица 3 - Команды установки адреса графической памяти  ST7920 в режиме вывода графики 8 bit

Команда
Код команды
Значение параметров
Описание
Set graphicram addr.
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
1
0
0
0
AC3
AC2
AC1
AC0
AC3:AC0 - адрес
Горизонтальный адрес
Set graphic ram addr.
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
1
AC6
AC5
AC4
AC3
AC2
AC1
AC0
AC6:AC0 - адрес
Вертикальный адрес
Таблица 4 - Запись графической информации в  ST7920 в режиме вывода графики 8 bit
Команда
Код команды
Значение параметров
Описание
Data high byte
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
D15
D14
D13
D12
D11
D10
D9
D8
D15-D8 - данные
Старший байт выводимой графики
Data low byte
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
D7
D6
D5
D4
D3
D2
D1
D0
D7-D0 - данные
Младший байт выводимой графики
Все команды в дисплей записываются при низком уровне сигнала на входах RS и R/W дисплея, а данные при высоком уровне RS и низком R/W.
Обозначив все необходимые команды, можно перейти непосредственно к алгоритму работы с дисплеем. И первое, что необходимо сделать - это проинициализировать дисплей. Это делается управляющей командой  Extended function set спустя минимум 40 мс после включения питания. После этого дисплей готов к работе. Если Вы увидели на нем кучу графического мусора, не стоит пугаться, дисплей не умер! Весь это мусор всего лишь произвольные значения в памяти ST7920, а его появление говорит о том, что инициализация прошла успешно и дисплей готов принимать дальнейшие указания.
Теперь можно приступать к выводу графической информации, и тут у нас два варианта:
  • Первый - запись слов в произвольном порядке. Сначала записываем вертикальный адрес, затем горизонтальный, потом старший байт графики и младший байт графики. Такой алгоритм достаточно медленный, но позволяет редактировать лишь необходимые части изображения на дисплее
  • Второй вариант - это запись слов построчно ( 1 строка - 16 слов (об этом я упоминал ранее)). При этом нам необходимо указать лишь начальный адрес нужной строки, а затем по-порядку записывать слова графической информации. Именно при использовании этого способа можно достичь скорости обновления графики на дисплее около 25 кадров в секунду.


Обсудить на форуме
service-4

Комментарии

Добавить комментарий
    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent

    LCD 12864 на контроллере ST7920

      Написать эту серию статей я решил после приобретения дисплея 128x64. И, как наверное всех остальных, в ступор меня ввело отсутствие выводов CS1 и CS2 для переключения между двумя половинами (64x64 пикселя) дисплея.

    РАСПАЙКА USB

      USB на сегодняшний день, пожалуй, самый распространенный тип интерфейса передачи данных, поэтому распайка usb разъема — самый запрашиваемый запрос на нашем сайте.

    Стандартный параллельный интерфейс на PC

      Основным назначением интерфейса Centronics (аналог-ИРПР-М) является подключение к компьютеру принтеров различных типов.

    Теперь вы можете иметь надежную регистрацию данных бесплатно - часть 5

      Теперь мы начнем писать программу на визуальном уровне. (VB) Visual Basic является продуктом Microsoft. Он был разработан, чтобы программы могли быть легко записаны. 

    Магистрально-модульная архитектура

      Магистрально-модульная архитектура разделяется на 2 подвида: принстонская (фон Нейман) и гарвардская магистрально-модульная архитектура.

    OMRON CP1E программируемые логические контроллеры модульного типа

      Серия ПЛК CP1E представлена двумя моделями ПЛК: CP1E-N – для замены ПЛК серии CPM1A и CP1E-E – для задач автоматизации, в которых функциональные возможности  программируемых реле недостаточны, а применение более мощных блочных ПЛК серии CP1L