Главная страница
Навигация по странице:

  • © МИРЭА, А.Н.Богаченков

  • Графические библиотеки

  • © МИРЭА, А.Н.Богаченков //Построение одного пиксела void DrawPixel(int16_t xpos, int16_t ypos, uint32_t color); //Построение линии

  • //Структура координат прямоугольника typedef struct { int16_t left; int16_t top; int16_t right; int16_t bottom;

  • Управление индикацией


    Скачать 1.95 Mb.
    НазваниеУправление индикацией
    Дата04.10.2021
    Размер1.95 Mb.
    Формат файлаpdf
    Имя файлаTsUMPY_Praktiki.pdf
    ТипЗадача
    #241407
    страница4 из 4
    1   2   3   4
    Сенсорный ввод (Touch Screen)
    В сенсорных экранах используются различные принципы реакции на нажа- тие/прикосновение — резистивный, емкостный, волновой и др. С устройством и другими подробностями предлагается ознакомиться самостоятельно по многочисленным публикаци- ям в Интернете. Для взаимодействия с такими устройствами ввода всегда используется спе- циализированный контроллер: в некоторых модификациях процессоров он является встро- енным, но, как правило, учитывая разнообразие сенсорных устройств, реализуется в виде от- дельной микросхемы или монтируется вместе с контроллером собственно дисплея. Контрол- лер обычно имеет один из стандартных интерфейсов (SPI или I
    2
    C), по которому в главный процессор передаются состояние сенсорной панели и координаты точки, на которую про- изошло воздействие [5]. Пример реальной схемы сопряжения с дисплеем приведен на рис. 8.
    Рис. 8.
    Для передачи данных в дисплей используется интерфейс SPI. Содержит основные сиг- налы SPI_SCK / SCK (тактовые импульсы), SPI_MOSI / DIN (данные из микроконтроллера в дисплей). Чтение информация из дисплея в большинстве случаев не требуется, поэтому со- ответствующая линия данных (SPI_MISO) не задействована. Сигнал выбора SPI_NSS / CS при подключении к интерфейсу только одного устройства также может быть исключен. В передаваемой от микроконтроллера информации требуется разделение на команды и видео- данные. Такую селекцию можно осуществлять, добавляя в передаваемый байт дополнитель- ный командный бит или используя дополнительный аппаратный сигнал D/C#, который в микроконтроллере может быть получен с одного из разрядов порта общего назначения. Сиг- нал RESET необходим для начальной установки устройства после его включения, перед по-

    6
    ЦУМП, Практические занятия,
    © МИРЭА, А.Н.Богаченков
    вторной инициализацией, в случае каких-либо сбоев, его в принципе можно совместить с од- ноименным сигналом самого микроконтроллера, но более гибкое решение — выдавать про- граммно с разряда порта.
    Дисплеи с TFT матрицей требуют дополнительной подсветки, необходимое для этого напряжение подводится к выводам LED+, LED-. Регулирования яркости подсветки обычно производится посредством широтно-импульсной модуляции питающего напряжения (тока), что удобно осуществлять с помощью выходного сигнала от таймера микроконтроллера.
    От контроллера сенсорной панели поступает небольшой объем информации: код состо- яния, координата X (в пикселах), координата Y (в пикселах). Для такого объема достаточно возможностей любого медленного интерфейса, поэтому чаще всего используется I
    2
    C. Поми- мо двух коммуникационных сигналов: тактирования SCL и данных SDA, контроллер имеет сигнал сброса RESET, и дополнительный сигнал запроса прерывания — поступает от кон- троллера панели при касании экрана, изменении координаты точки.
    Графические библиотеки
    Для вывода на дисплей можно самостоятельно написать необходимые функции, но в данном направлении существует большое число наработок, поэтому оптимальным выбором для графических построений является использование готовых библиотек. В таких библиоте- ках по минимуму реализовано: построение графических примитивов (линий, прямоугольни- ков, окружностей и тому подобных геометрических объектов), заливка цветом, вывод раст- ровых изображений, текстовой вывод с использованием различных шрифтов и др. В более сложных библиотеках предусмотрена работа с двух-/трехмерными объектами, их наложение, градиентная раскраска, масштабирование, повороты и многое другое.
    Для микроконтроллеров существует большое число готовых библиотек, часто они ори- ентированы и оптимизированы для работы с определенными семействами, например, для
    STM32 производитель рекомендует библиотеки STemWin, TouchGFX, Embedded wizard [6].
    Распространены универсальные библиотеки uGFX, MakiseGUI, u8glib, Adafruit-GFX и дру- гие. Какие-то из них являются свободно распространяемыми, какие-то лицензируемыми.
    Обычно в библиотеке выделяется 3 части:
    1. Аппаратный интерфейс — специфичен для определенного семейства процессоров, для определенного типа дисплея. В библиотеках невозможно предусмотреть все возможные варианты аппаратных средств, поэтому данные вопросы пользователю возможно придется решать самостоятельно, основываясь на технических описаниях и примерах для других ана- логичных устройств.
    2. Графические операции, специфичные для данного типа дисплея (контроллера дис- плея). Сюда входят: порядок начальной инициализации дисплея, управление рядом парамет- ров дисплея (яркостью, контрастностью, цветопередачей, слоями, энергосбережением и т.п.), вывод на экран точки с заданными координатами и цветом, построение вертикальной и гори- зонтальной линий. В некоторых контроллерах на аппаратном уровне заложены и более сложные операции, например, построение отдельных фигур, закраска, сглаживание и др. Эти возможности всегда приводятся в документации на дисплей обычно с примерами на различ- ных языках программирования.
    3. Графический интерфейс пользователя (GUI). Универсальная и самая большая часть библиотеки для реализации разнообразных графических эффектов. Этот интерфейс взаимо- действует с любыми типами устройств графического вывода, вызывая функции, объявлен- ные во 2 части. Функции графических построений в разных библиотеках могут называться по-разному. Вот некоторые из них:

    7
    ЦУМП, Практические занятия,
    © МИРЭА, А.Н.Богаченков
    //Построение одного пиксела
    void DrawPixel(int16_t xpos, int16_t ypos, uint32_t color);
    //Построение линии
    void DrawLine(int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint32_t color);
    //Построение окружности
    void DrawCircle(int16_t x0, int16_t y0, int16_t radius, uint32_t color);
    //Структура координат прямоугольника
    typedef struct
    {
    int16_t left;
    int16_t top;
    int16_t right;
    int16_t bottom;
    } RECT;
    //Построение прямоугольника
    void DrawRect(RECT* rect, uint32_t color);
    //Построение закрашенного прямоугольника
    void FillRect(RECT* rect, uint32_t color);
    Список литературы
    1. Гавриков В. TFT-дисплеи Winstar: новинки, характеристики и особенности подклю- чения [Электронный ресурс] // Новости электроники, 2017, № 11, 22 декабря 2017. URL: https://www.compel.ru/lib/87496 2. Внешние интерфейсы TFT панелей. Часть I. Параллельный интерфейс и TMDS
    [Электронный ресурс] // URL: http://www.mirpu.ru/lcd/75-shtmatrcnics/118-interftftp1.html
    3. Дмитриев А. STM32 + современный TFT-дисплей: варианты на любой вкус [Элек- тронный ресурс] // Новости электроники, 2018, № 1, 15 января 2018. URL: https://www.compel.ru/lib/88474 4. Внешние интерфейсы TFT панелей. Часть II. LVDS [Электронный ресурс] // URL: http://www.mirpu.ru/lcd/75-shtmatrcnics/119-interftftp2.html
    5. Штрапенин Г., Мишан М. Интегральные контроллеры сенсорных экранов Texas In- struments // Компоненты и технологии, 2007, № 9. URL: https://www.kit-e.ru/assets/files/pdf/2007_09_64.pdf
    6. Разработка графических устройств на STM32. Выбираем графическую библиотеку //
    Новости электроники, 2018, № 10, 23 октября 2018. URL: https://www.compel.ru/lib/94730
    1   2   3   4


    написать администратору сайта