Это старая версия документа!


Эксперимент 46. Подключаем TFT дисплей

В комплектаицю конструктора в версии MAXI входит TFT дисплей. Thin Film Transistor (TFT) – это система производства жидкокристаллических дисплеев, в основе которой лежит активная матрица из тонкопленочных транзисторов. При подаче напряжения на такую матрицу, кристаллы поворачиваются друг к другу, что приводит к образованию черного цвета. Отключение электричества дает противоположный результат — кристаллы образовывают белый цвет. Изменения подаваемого напряжения позволяет формировать любой цвет на каждом отдельно взятом пикселе. Дисплей имеет сложное многослойное строение и чтобы понять его принцип действия потребуются некоторые знания физики, поэтому здесь мы не будем рассказывать это.

Управление матрицей кристаллов берет на себя встроенный в дисплей контроллер. А мы будем управлять этим контроллером. Для этого нам потребуется специальная библиотека. Кроме того нам потребуется библиотека со шрифтом, чтобы отображать текст.

Как и в прошлый раз, в архиве находятся два варианта файлов — в виде исходный текстов (в папке py) и предварительно откомпилированные (в папке mpy). Мы рекомендуем загружать в микроконтроллер откомпилированные версии файлов, а файлы в исходных кодах использовать только для самостоятельного изучения.

Для обмена данными с дисплеем используется шина SPI. SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным (англ. four-wire) интерфейсом.

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

Схема эксперимента

Рисунок 1. Монтажная схема эксперимента

Программный код эксперимента

Напишем приветственную надпись на дисплее.

Exp46.py
  1. from machine import Pin, SPI
  2. from tft import TFT_GREEN
  3. import font
  4. _init()
  5.  
  6. dc = Pin(4, Pin.OUT)
  7. cs = Pin(2, Pin.OUT)
  8. rst = Pin(5, Pin.OUT)
  9.  
  10. spi = SPI(1, baudrate=40000000, polarity=0, phase=0)
  11.  
  12. tft = TFT_GREEN(128, 160, spi, dc, cs, rst, rotate=0)
  13.  
  14. tft.initr()
  15.  
  16. tft.clear(tft.rgbcolor(0,0, 0))
  17. tft.text(0,0,"Hello, World!", font.terminalfont, tft.rgbcolor(255, 255, 255), 1)

Подключаем библиотеки для работы в портами ввода-вывода, шиной SPI, дисплеем и шрифт.

  1. from machine import Pin, SPI
  2. from tft import TFT_GREEN
  3. import font

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

Настраиваем выводы, используемые для дисплея

  1. dc = Pin(4, Pin.OUT)
  2. cs = Pin(2, Pin.OUT)
  3. rst = Pin(5, Pin.OUT)

Настраиваем шину SPI. Объявляем скорость шины и ее параметры.

  1. spi = SPI(1, baudrate=40000000, polarity=0, phase=0)

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

  1. tft = TFT_GREEN(128, 160, spi, dc, cs, rst, rotate=0)

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

  1. tft.initr()

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

  1. tft.clear(tft.rgbcolor(0, 0, 0))
  2. tft.text(0,0,"Hello, World!", font.terminalfont, tft.rgbcolor(255, 255, 255), 1)

Как мы уже знаем из эксперимента с RGB светодиодом любой цвет можно отобразить с помощью трех составляющих: красного, зеленого и синего. Для задания цвета мы используем tft.rgbcolor(0, 0, 0). В качестве параметров передаем соответственно красный, зеленый, синий. Если все нули, никакой цвет не светится — это черный.

Для вывода текста используем метод tft.text. Параметры:

  • координата X
  • координата Y
  • строка для отображения
  • шрифт
  • цвет шрифта
  • размер шрифты

Координата 0,0 находится в верхнем левом углу. Максимальная — в нижнем правом. Рисунок 2. Отсчет координат на дисплее

Дополнительное задание

  1. Выведи другой текст по середине дисплея
  2. Выведи несколько строк разными цветами друг под другом